diff options
Diffstat (limited to 'www/custom_ticket.wiki')
| -rw-r--r-- | www/custom_ticket.wiki | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/www/custom_ticket.wiki b/www/custom_ticket.wiki new file mode 100644 index 0000000..eac0532 --- /dev/null +++ b/www/custom_ticket.wiki @@ -0,0 +1,153 @@ +<title>Customizing The Ticket System</title> + +<h2>Introduction</h2> + +This guide will explain how to add the "assigned_to" and "submitted_by" fields +to the ticket system in Fossil, as well as making the system more useful. You +must have "admin" access to the repository to implement these instructions. + +<h2>First modify the TICKET table</h2> + +Click on the "Admin" menu, then "Tickets", then "Table". After the other fields +and before the final ")", insert: +<pre> + , + assigned_to TEXT, + opened_by TEXT +</pre> + +And "Apply Changes". You have just added two more fields to the ticket +database! NOTE: I won't tell you to "Apply Changes" after each step from here +on out. Now, how do you use these fields? + +<h2>Next add assignees</h2> + +Back to the "Tickets" admin page, and click "Common". Add something like this: +<pre> +set assigned_choices { + unassigned + tom + dick + harriet +} +</pre> + +Obviously, choose names corresponding to the logins on your system. The +'unassigned' entry is important, as it prevents you from having a NULL in that +field (which causes problems later when editing). + +<h2>Now modify the 'new ticket' page</h2> + +Back to the "Tickets" admin page, and click "New Ticket Page". This is a little +more tricky. Edit the top part: + +<verbatim> +if {[info exists submit]} { + set status Open + set opened_by $login + set assigned_to "unassigned" + submit_ticket +} +</verbatim> + +Note the "set opened_by" bit -- that will automatically set the "opened_by" +field to the login name of the bug reporter. Now, skip to the part with "EMail" +and modify it like so: + +<verbatim> +<th1>enable_output expr { "$login" eq "anonymous"}</th1> +<tr> +<td align="right"> + EMail: + <input type="text" name="private_contact" value="$<private_contact>" size="30"> +</td> +<td> + <u>Not publicly visible</u>. Used by developers to contact you with questions. +</td> +</tr> +<th1>enable_output 1</th1> +</verbatim> + +This bit of code will get rid of the "email" field entry for logged-in users. +Since we know the user's information, we don't have to ask for it. NOTE: it +might be good to automatically scoop up the user's email and put it here. + +You might also want to enable people to actually assign the ticket to a specific +person during creation. For this to work, you need to add the code +for "assigned_to" as shown below under the heading "Modify the 'edit ticket' page". +This will give you an additional combobox where you can choose a person during +ticket creation. + +<h2>Modify the 'view ticket' page</h2> + +Look for the text "Contact:" (about halfway through). Then insert these lines +after the closing tr tag and before the "enable_output" line: + +<verbatim> +<tr> + <td align="right">Assigned to:</td><td bgcolor="#d0d0d0"> + $<assigned_to> + </td> + <td align="right">Opened by:</td><td bgcolor="#d0d0d0"> + $<opened_by> + </td> +</tr> +</verbatim> + +This will add a row which displays these two fields, in the event the user has +<a href="./caps/ref.html#w">ticket "edit" capability</a>. + +<h2>Modify the 'edit ticket' page</h2> + +Before the "Severity:" line, add this: + +<verbatim> +<tr> + <td align="right">Assigned to:</td> + <td> + <th1>combobox assigned_to $assigned_choices 1</th1> + </td> +</tr> +</verbatim> + +That will give you a drop-down list of assignees. The first argument to the TH1 +command 'combobox' is the database field which the combobox is associated to. +The next argument is the list of choices you want to show in the combobox (and +that you specified in the second step above.) The last argument should be 1 for +a true combobox (see the <a href="th1.md#combobox">TH1 documentation</a> for +details). + +Now, similar to the previous +section, look for "Contact:" and add this: + +<verbatim> +<tr> + <td align="right">Reported by:</td> + <td> + <input type="text" name="opened_by" size="40" value="$<opened_by>"> + </td> +</tr> +</verbatim> + +<h2>What next?</h2> + +Now you can add custom reports which select based on the person to whom the +ticket is assigned. For example, an "Assigned to me" report could be: + +<verbatim> +SELECT + CASE WHEN status IN ('Open','Verified') THEN '#f2dcdc' + WHEN status='Review' THEN '#e8e8e8' + WHEN status='Fixed' THEN '#cfe8bd' + WHEN status='Tested' THEN '#bde5d6' + WHEN status='Deferred' THEN '#cacae5' + ELSE '#c8c8c8' END AS 'bgcolor', + substr(tkt_uuid,1,10) AS '#', + datetime(tkt_mtime) AS 'mtime', + type, + status, + subsystem, + title +FROM ticket +WHERE assigned_to=user() +</verbatim> |
