How to add a custom field using Layout DesignerAdding a custom field using Layout Designer (version 2.22 or newer) does not require editing the newticket.html template at all. Just define a custom field using System Setup form (setup.cgi) and watch the custom field instantly available. The following procedure will add 2 custom fields - Phone and Priority. Step 1. Login to System Setup form (setup.cgi), scroll down to Layout Designer section and define two fields as shown below. Step 2. Watch the result. Navigate to the contact form (ttx.cgi). Here is what you should see: How the magic happens? If you open the newticket.html template you will notice the (%CUSTOMVARS%) macro. When generating a contact form page the Trouble Ticket Express reads custom field definitions and builds html code for each custom field as a two columns row. For each custom field it fills left colum with the field's label and the right one - with the form input formatted according to the field's type. The (%CUSTOMVARS%) macro is replaced with the resulting html code. But what if you need more control over custom fields appearance? For example you may want the Priority to be a hidden field and default to Normal. Here is how: Step 1. Edit newticket.html template. Replace the (%CUSTOMVARS%) macro with the following code (%CUSTOMROW0%) <input type="hidden" name="xPriority" value="Normal"> (%CUSTOMROW2%) (%CUSTOMROW3%) (%CUSTOMROW4%) (%CUSTOMROW5%) (%CUSTOMROW6%) (%CUSTOMROW7%) (%CUSTOMROW8%) (%CUSTOMROW9%) Step 2. Watch the result. Navigate to the contact form (ttx.cgi). Here is what you should see: The (%CUSTOMVARS%) macro is the same as a concatenation of (%CUSTOMROW0%) .. (%CUSTOMROW9%) macros. As you may see the (%CUSTOMROWn%) macro is being replaced by an html code for the n-th custom field. And what if you want the Phone field to be mandatory and use Phone Number as a label? Let us introduce the (%CUSTOMn%) macro. Step 1. Edit newticket.html template. Replace the (%CUSTOMROW0%) macro with the following code <tr><td align="right" class="lbl">Phone Number<font color="red"><sup>*</sup></font></td> <td align="left">(%CUSTOM0%) <input type="hidden" name="mandatory" value="xPhone"> </td></tr> Step 2. Watch the result. Navigate to the contact form (ttx.cgi). Here is what you should see: The (%CUSTOMn%) macro provides no html formatting, just an input tag for the n-th custom field. Marking custom fields as mandatory. (Note: the feature requires rel.2.10 or newer). In order to mark any or all custom fields as mandatory use a 'mandatory' input in your form. Value of the input must contain a list of all the custom fields, what may not be left blank. Example: <input type=hidden name=mandatory value="xPhone,xDepartment">You may also define multiple 'mandatory' inputs: <input type=hidden name=mandatory value=xPhone> <input type=hidden name=mandatory value=xDepartment>The later approach allows assigning mandatory status dynamically, for example: <input type=checkbox name=mandatory value="xPhone"> Please call me back. |