Artifact 78144925dba3634f948a20ccf9d2fa358a98e2e7d31fbaad7833e2822a3be46b:
- File
www/custom_ticket.wiki
— part of check-in
[54977e14]
at
2024-02-04 04:29:29
on branch inskinerator-modern-backport
— Replaced nearly all explicit uses of the "blockquote" tag in the
embedded docs:
- Constructs like "<blockquote><pre>" are now simply "<pre>"
- Ditto "<blockquote><b>" for command examples, which then allowed me to get rid of explicit "br" elements; pre does that for us.
- Where it was used merely to get an indent for a code block, we're now using pre or verbatim instead, depending on whether we need embedded HTML and/or pre-wrap handling. (Not the same thing as the prior item.) In some places, this let us replace use of HTML-escaped code blocks in pre with verbatim equivalents, not needing the escaping, allownig the doc source to read more like the rendered HTML.
- Use of blockquotes to get hierarchical indenting is no longer necessary; the skin does that. A good example is indenting ol and ul lists under the parent paragraph; additional manual indenting is no longer necessary.
The only remaining instances of "blockquote" under www/ are necessary:
- The copyright release doc is plain HTML, without the fossil-doc wrapper, giving it no access to the new skin improvements.
- One MD doc wants a blockquote in the middle of a list, and the current parsing rules don't let us use ">" there.
- The skinning docs talk about styling blockquote elements at one point; it isn't a use of the tag, it is a prose reference to it.
Customizing The Ticket System
Introduction
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.
First modify the TICKET table
Click on the "Admin" menu, then "Tickets", then "Table". After the other fields and before the final ")", insert:
, assigned_to TEXT, opened_by TEXT
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?
Next add assignees
Back to the "Tickets" admin page, and click "Common". Add something like this:
set assigned_choices { unassigned tom dick harriet }
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).
Now modify the 'new ticket' page
Back to the "Tickets" admin page, and click "New Ticket Page". This is a little more tricky. Edit the top part:
if {[info exists submit]} { set status Open set opened_by $login set assigned_to "unassigned" submit_ticket }
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:
<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>
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.
Modify the 'view ticket' page
Look for the text "Contact:" (about halfway through). Then insert these lines after the closing tr tag and before the "enable_output" line:
<td align="right">Assigned to:</td><td bgcolor="#d0d0d0"> $<assigned_to> </td> <td align="right">Opened by:</td><td bgcolor="#d0d0d0"> $<opened_by> </td>
This will add a row which displays these two fields, in the event the user has ticket "edit" capability.
Modify the 'edit ticket' page
Before the "Severity:" line, add this:
<tr> <td align="right">Assigned to:</td> <td> <th1>combobox assigned_to $assigned_choices 1</th1> </td> </tr>
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 TH1 documentation for details).
Now, similar to the previous section, look for "Contact:" and add this:
<tr> <td align="right">Reported by:</td> <td> <input type="text" name="opened_by" size="40" value="$<opened_by>"> </td> </tr>
What next?
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:
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()