Diff
Not logged in

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&nbsp;Found&nbsp;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&nbsp;Found&nbsp;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&nbsp;Found&nbsp;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