Differences From:
File
src/sample-config1.txt
part of check-in
[929d28e358]
- Added the "e" capability for viewing ticket submitter email addresses.
Additional tinkering toward the design of tickets. This check-in is only
thinly tested.
by
drh on
2007-11-05 02:42:58.
[view]
To:
File
src/sample-config1.txt
part of check-in
[8c96ed62f5]
- Continuing work on the infrastructure for tickets.
by
drh on
2007-11-17 17:48:46.
[view]
@@ -1,6 +1,92 @@
-{Default Ticket Configuration} /config_title set
-{type status subsystem priority severity contact title comment} setfields
+# This is a sample "ticket configuration" file for fossil.
+#
+# There is considerable flexibility in how tickets are defined
+# in fossil. Each repository can define its own ticket setup
+# differently. Each repository has an instance of a file, like
+# this one that defines how that repository deals with tickets.
+#
+# This file is in the form of a script in an exceedingly
+# minimalist scripting language called "subscript". Here are
+# the rules:
+#
+# SYNTAX
+#
+# * The script consists of a sequence of whitespace
+# separated tokens. Whitespace is ignored, except
+# as its role as a token separator.
+#
+# * Lines that begin with '#' are considered to be whitespace.
+#
+# * Text within matching {...} is consider to be a single "string"
+# token, even if the text spans multiple lines and includes
+# embedded whitespace. The outermost {...} are not part of
+# the text of the token.
+#
+# * A token that begins with "/" is a string token.
+#
+# * A token that looks like a number is a string token.
+#
+# * Tokens that do not fall under the previous three rules
+# are "verb" tokens.
+#
+# PROCESSING:
+#
+# * When a script is processed, the engine reads tokens
+# one by one.
+#
+# * String tokens are pushed onto the stack.
+#
+# * Verb tokens which correspond to the names of variables
+# cause the corresponding variable to be pushed onto the
+# stack.
+#
+# * Verb tokens which correspond to procedures cause the
+# procedures to run. The procedures might push or pull
+# values from the stack.
+#
+# There are just a handful of verbs. For the purposes of this
+# configuration script, there is only a single verb: "set". The
+# "set" verb pops two arguments from the stack. The topmost is
+# the name of a variable. The second element is the value. The
+# "set" verb sets the value of the named variable.
+#
+# VALUE NAME set
+#
+# This configuration file just sets the values of various variables.
+# Some of the variables have special meanings. The content of some
+# of the variables are additional subscript scripts.
+#
+############################################################################
+#
+# Every ticket configuration file should have a title. When you
+# come up with a new ticket configuration, please change the title
+# to something descriptive.
+#
+{Default Ticket Configuration} /ticket_config_title set
+
+############################################################################
+# Every ticket configuration *must* define a set of columns for the
+# "ticket" table of the database. These column names will also be
+# used as CGI parameter names, so to avoid problems it is best that
+# the names be all lower-case alphabetic characters. The names must
+# be unique and must not begin with "tkt_".
+#
+{
+ type
+ status
+ subsystem
+ priority
+ severity
+ contact
+ title
+ comment
+} /ticket_fields
+
+#############################################################################
+# You can define additional variables here. These variables will be
+# accessible to the page templates when they run.
+#
{Code Build_Problem Documentation Feature_Request Incident} /type_choices set
{High Medium Low} /priority_choices set
{Critical Severe Important Minor Cosmetic} /severity_choices set
{
@@ -23,15 +109,24 @@
Fixed
Tested
Closed
} /status_choices set
-######################################################################
+
+############################################################################
+# The "tktnew_template" variable is set to text which is a template for
+# the HTML of the "New Ticket" page. Within this template, text contained
+# within [...] is subscript. That subscript runs when the page is
+# rendered.
+#
{
+ <!-- load database field names not found in CGI with an empty string -->
+ <!-- start a form -->
+ [{Open} /status set /submit submit_new_ticket]
<table cellpadding="5">
<tr>
<td cellpadding="2">
Enter a one-line summary of the problem:<br>
- [/title 60 textedit]
+ <input type="text" name="title" size="60" value="[title html]">
</td>
</tr>
<tr>
@@ -42,9 +137,9 @@
</tr>
<tr>
<td align="right">Version:
- [/foundin 20 textedit]
+ <input type="text" name="foundin" size="20" value="[foundin html]">
</td>
<td>In what version or build number do you observer the problem?</td>
</tr>
@@ -62,176 +157,134 @@
For code defects, be sure to provide details on exactly how
the problem can be reproduced. Provide as much detail as
possible.
<br>
- [/cmpv 0 cgi_parameter enable_output]
- [/comment wikiview]
- <hr>
- [1 enable_output]
- [/comment 70 /comment linecount 15 max multilineedit]
+ <textarea name="comment" cols="80" rows="[comment linecount 50 max 10 min]"
+ wrap="virtual" class="wikiedit">[comment html]</textarea><br>
<br>
- [/cmpv {Preview} auxbutton]
+ <input type="submit" name="preview" value="Preview">
</tr>
+
+ [0 /preview get enable_output]
+ <tr><td colspan="2">
+ Description Preview:<br><hr>
+ [/comment html]
+ <hr>
+ </td></tr>
+ [1 enable_output]
<tr>
<td align="right">
- [submitbutton]
+ <input type="submit" name="submit" value="Submit">
</td>
<td>After filling in the information above, press this button to create
the new ticket</td>
</tr>
</table>
- [/status /Open default_value]
-} /new setpage
-######################################################################
-{
- [
- # Extract the current information from the ticket table
- {SELECT type, status, subsystem, priority,
- severity, contact, title, comment
- FROM ticket
- WHERE tktid=:name} db_prepare
- /name {} cgi_parameter {:name} db_bind
- db_exec
- if /title exists not {
- {<i>No such ticket: } puts
- /name {} cgi_parameter htmlize puts
- {</i>} puts
- return
- } endif
- /title title cgiparam /vtitle store
- /status status cgiparam /vstatus store
- /type type cgiparam /vtype store
+ <!-- end of form -->
+} /tktnew_template set
- if /submit cgiexists {
- /name {} cgi_parameter login ticketchng_begin
- if /apndcom cgiexists {
- {+comment}
- {<hr><i>Added by }
- login htmlize concat
- { on } concat
- datetime concat
- {:</i><br} concat
- /apndcom {} cgi_parameter htmlize concat
- ticketchng_field
- } else {
- if vcomment comment eq not {/comment vcomment ticketchng_field} endif
- } endif
- if vtitle title eq not {/title vtitle ticketchng_field} endif
- ticketchng_submit
- baseurl /tktview?name= concat /name {} cgi_parameter concat redirect
- } endif
- ]
- <form method="POST" action="[baseurl]/tktedit">
+######################################################################
+# The template for the "edit ticket" page
+{
+ <!-- database field names not found as CGI parameters are loaded
+ from the database automatically -->
+ <!-- start a form -->
+ [{<hr><i>%USER% added on %DATE%:</i><br>}
+ /cmappnd /comment append_remark]
+ [/submit submit_ticket_change]
<table cellpadding="5">
<tr><td align="right">Title:</td><td>
- <input type="text" name="title" value="[vtitle htmlize puts] size=60">
+ <input type="text" name="title" value="[title html] size=60">
+ </td></tr>
+ <tr><td align="right">Status:</td><td>
+ [/status status_choices 20 combobox]
+ </td></tr>
+ <tr><td align="right">Type:</td><td>
+ [/type type_choices 20 combobox]
+ </td></tr>
+ <tr><td align="right">Severity:</td><td>
+ [/severity {High Medium Low} 10 combobox]
+ </td></tr>
+ <tr><td align="right">Priority:</td><td>
+ [/priority {High Medium Low} 10 combobox]
+ </td></tr>
+ <tr><td align="right">Resolution:</td><td>
+ [/resolution resolution_choices 20 combobox]
+ </td></tr>
+ <tr><td align="right">Subsystem:</td><td>
+ [/subsystem subsystem_choices 30 combobox]
+ </td></tr>
+ [/e hascap enable_output]
+ <tr><td align="right">Contact:</td><td>
+ <input type="text" name="contact" size="40" value="[contact html]">
+ </td></tr>
+ [1 enable_output]
+ <tr><td align="right">Version Found In:</td><td>
+ <input type="text" name="foundin" size="50" value="[foundin html]">
</td></tr>
- <tr><td align="right">Status:</td><td>
- [vstatus /status status_choices 20 combobox]
- </td></tr>
- <tr><td align="right">Type:</td><td>
- [vtype /type type_choices 20 combobox]
- </td></tr>
- <tr><td align="right">Severity:</td><td>
- [vseverity /severity {High Medium Low} 10 combobox]
- </td></tr>
- <tr><td align="right">Priority:</td><td>
- [vpriority /priority {High Medium Low} 10 combobox]
- </td></tr>
- <tr><td align="right">Resolution:</td><td>
- [vresolution /resolution resolution_choices 20 combobox]
- </td></tr>
- <tr><td align="right">Subsystem:</td><td>
- [vsubsystem /subsystem subsystem_choices 30 combobox]
- </td></tr>
- [{e} hascap enable_output]
- <tr><td align="right">Contact:</td><td>
- <input type="text" name="contact" size="40" value="[vcontact htmlize puts]">
- </td></tr>
- [1 enable_output]
- <tr><td align="right">Version Found In:</td><td>
- <input type="text" name="foundin" size="50" value="[foundin htmlize puts]">
- </td></tr>
<tr><td colspan="2">
- [w hascap /eall 0 paramget and /eall store]
+ [0 /eall 0 get /eall set]
+ [/aonlybtn exists not /eall set]
+ [/eallbtn exists /eall set]
+ [/w hascap eall and /eall set]
[eall enable_output]
Description And Comments:<br>
<textarea name="comment" cols="80" rows="[comment linecount 15 max 10 min]"
- wrap="virtual" class="wikiedit">[comment htmlize puts]</textarea><br>
- <input type="submit" name="aonly" value="Append Remark">
+ wrap="virtual" class="wikiedit">[comment html]</textarea><br>
+ <input type="hidden" name="eall" value="1">
+ <input type="submit" name="aonlybtn" value="Append Remark">
[eall not enable_output]
Append Remark:<br>
- [/comment /cmappnd 70 /cmappnd linecount 10 max multilineappend]<br>
- [ok_wrtkt enable_output /eall {Edit All} auxbutton]
+ <textarea name="cmappnd" cols="80" rows="15"
+ wrap="virtual" class="wikiedit">[cmappnd html]</textarea><br>
+ [ok_wrtkt enable_output]
+ <input type="submit" name="eallbtn" value="Edit All">
[1 enable_output]
</td></tr>
<tr><td align="right"></td><td>
- [{Submit Changes} submitbutton]
+ <input type="submit" name="submit" value="Submit Changes">
</td></tr>
</table>
-} /edit setpage
+ <!-- end-form inserted automatically -->
+} /tktedit_template set
+
######################################################################
+# The template for the "view ticket" page
{
+ <!-- load database fields automatically loaded into variables -->
<table cellpadding="5">
<tr><td align="right">Title:</td><td>
- [/title htmlize]
+ [/title html]
</td></tr>
<tr><td align="right">Status:</td><td>
- [/status textview]
+ [/status html]
</td></tr>
<tr><td align="right">Type:</td><td>
- [/type textview]
+ [/type html]
</td></tr>
<tr><td align="right">Severity:</td><td>
- [/severity textview]
+ [/severity html]
</td></tr>
<tr><td align="right">Priority:</td><td>
- [/priority textview]
+ [/priority html]
</td></tr>
<tr><td align="right">Resolution:</td><td>
- [/priority textview]
+ [/priority html]
</td></tr>
<tr><td align="right">Subsystem:</td><td>
- [/subsystem textview]
+ [/subsystem html]
</td></tr>
[{e} hascap enable_output]
<tr><td align="right">Contact:</td><td>
- [/contact textview]
+ [/contact html]
</td></tr>
[1 enable_output]
<tr><td align="right">Version Found In:</td><td>
- [/foundin textview]
+ [/foundin html]
</td></tr>
<tr><td colspan="2">
Description And Comments:<br>
- [/comment wikiview]
+ [/comment html]
</td></tr>
</table>
-} /view setpage
-
-##############
-# Verb list:
-#
-# CNEV
-# **** VALUE NAME set
-# *--- LIST setfields
-#
-# -*-- FIELD STRING default_value
-# -**- FIELD WIDTH textedit
-# -**- FIELD CHOICELIST WIDTH combobox
-# -**- FIELD WIDTH HEIGHT multilineedit
-# --*- FIELD CGIFIELD WIDTH HEIGHT multilineappend
-# -**- CGIFIELD LABEL auxbutton
-# -**- LABEL submitbutton
-#
-# -*** FIELD wikiview
-# -*** FIELD textview
-# -*** FIELD linecount INT
-# -**- CGIFIELD DEFAULT paramget VALUE
-# -*** BOOLEAN enable_output
-# -*** ok_wrtkt BOOLEAN
-# -*** is_anon BOOLEAN
-#
-# -*** INT INT max INT
-# -*** BOOLEAN not BOOLEAN
-# -*** BOOLEAN BOOLEAN and BOOLEAN
+} /tktview_template set