File Annotation
Not logged in
0edee97370 2007-10-03       drh: /*
0edee97370 2007-10-03       drh: ** Copyright (c) 2007 D. Richard Hipp
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: ** This program is free software; you can redistribute it and/or
0edee97370 2007-10-03       drh: ** modify it under the terms of the GNU General Public
0edee97370 2007-10-03       drh: ** License version 2 as published by the Free Software Foundation.
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: ** This program is distributed in the hope that it will be useful,
0edee97370 2007-10-03       drh: ** but WITHOUT ANY WARRANTY; without even the implied warranty of
0edee97370 2007-10-03       drh: ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0edee97370 2007-10-03       drh: ** General Public License for more details.
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: ** You should have received a copy of the GNU General Public
0edee97370 2007-10-03       drh: ** License along with this library; if not, write to the
0edee97370 2007-10-03       drh: ** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0edee97370 2007-10-03       drh: ** Boston, MA  02111-1307, USA.
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: ** Author contact information:
0edee97370 2007-10-03       drh: **   drh@hwaci.com
0edee97370 2007-10-03       drh: **   http://www.hwaci.com/drh/
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: *******************************************************************************
0edee97370 2007-10-03       drh: **
0edee97370 2007-10-03       drh: ** This file contains code to implement the ticket configuration
0edee97370 2007-10-03       drh: ** setup screens.
0edee97370 2007-10-03       drh: */
0edee97370 2007-10-03       drh: #include "config.h"
0edee97370 2007-10-03       drh: #include "tktsetup.h"
0edee97370 2007-10-03       drh: #include <assert.h>
0edee97370 2007-10-03       drh: 
0edee97370 2007-10-03       drh: /*
0edee97370 2007-10-03       drh: ** Main sub-menu for configuring the ticketing system.
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup
0edee97370 2007-10-03       drh: */
0edee97370 2007-10-03       drh: void tktsetup_page(void){
0edee97370 2007-10-03       drh:   login_check_credentials();
0edee97370 2007-10-03       drh:   if( !g.okSetup ){
0edee97370 2007-10-03       drh:     login_needed();
0edee97370 2007-10-03       drh:   }
0edee97370 2007-10-03       drh: 
0edee97370 2007-10-03       drh:   style_header("Ticket Setup");
ce277cadda 2008-05-25       drh:   @ <table border="0" cellspacing="20">
ce277cadda 2008-05-25       drh:   setup_menu_entry("Table", "tktsetup_tab",
ce277cadda 2008-05-25       drh:     "Specify the schema of the  \"ticket\" table in the database.");
ce277cadda 2008-05-25       drh:   setup_menu_entry("Common", "tktsetup_com",
ce277cadda 2008-05-25       drh:     "Common TH1 code run before all ticket processing.");
ce277cadda 2008-05-25       drh:   setup_menu_entry("New Ticket Page", "tktsetup_newpage",
ce277cadda 2008-05-25       drh:     "HTML with embedded TH1 code for the \"new ticket\" webpage.");
ce277cadda 2008-05-25       drh:   setup_menu_entry("View Ticket Page", "tktsetup_viewpage",
ce277cadda 2008-05-25       drh:     "HTML with embedded TH1 code for the \"view ticket\" webpage.");
ce277cadda 2008-05-25       drh:   setup_menu_entry("Edit Ticket Page", "tktsetup_editpage",
ce277cadda 2008-05-25       drh:     "HTML with embedded TH1 code for the \"edit ticket\" webpage.");
49380d500a 2008-05-28       drh:   setup_menu_entry("Report Template", "tktsetup_rpttplt",
ce277cadda 2008-05-25       drh:     "The default ticket report format.");
49380d500a 2008-05-28       drh:   setup_menu_entry("Key Template", "tktsetup_keytplt",
49380d500a 2008-05-28       drh:     "The default color key for reports.");
ce277cadda 2008-05-25       drh:   @ </table>
0edee97370 2007-10-03       drh:   style_footer();
0edee97370 2007-10-03       drh: }
0edee97370 2007-10-03       drh: 
ce277cadda 2008-05-25       drh: /* @-comment: ** */
86db6fa150 2008-05-28       drh: static const char zDefaultTicketTable[] =
ce277cadda 2008-05-25       drh: @ CREATE TABLE ticket(
ce277cadda 2008-05-25       drh: @   -- Do not change any column that begins with tkt_
ce277cadda 2008-05-25       drh: @   tkt_id INTEGER PRIMARY KEY,
ce277cadda 2008-05-25       drh: @   tkt_uuid TEXT,
ce277cadda 2008-05-25       drh: @   tkt_mtime DATE,
ce277cadda 2008-05-25       drh: @   -- Add as many field as required below this line
ce277cadda 2008-05-25       drh: @   type TEXT,
ce277cadda 2008-05-25       drh: @   status TEXT,
ce277cadda 2008-05-25       drh: @   subsystem TEXT,
ce277cadda 2008-05-25       drh: @   priority TEXT,
ce277cadda 2008-05-25       drh: @   severity TEXT,
ce277cadda 2008-05-25       drh: @   foundin TEXT,
ce277cadda 2008-05-25       drh: @   contact TEXT,
ce277cadda 2008-05-25       drh: @   resolution TEXT,
ce277cadda 2008-05-25       drh: @   title TEXT,
ce277cadda 2008-05-25       drh: @   comment TEXT,
ce277cadda 2008-05-25       drh: @   -- Do not alter this UNIQUE clause:
ce277cadda 2008-05-25       drh: @   UNIQUE(tkt_uuid, tkt_mtime)
ce277cadda 2008-05-25       drh: @ );
ce277cadda 2008-05-25       drh: ;
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
86db6fa150 2008-05-28       drh: ** Return the ticket table definition
86db6fa150 2008-05-28       drh: */
86db6fa150 2008-05-28       drh: const char *ticket_table_schema(void){
86db6fa150 2008-05-28       drh:   return db_get("ticket-table", (char*)zDefaultTicketTable);
86db6fa150 2008-05-28       drh: }
86db6fa150 2008-05-28       drh: 
86db6fa150 2008-05-28       drh: /*
ce277cadda 2008-05-25       drh: ** Common implementation for the ticket setup editor pages.
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: static void tktsetup_generic(
ce277cadda 2008-05-25       drh:   const char *zTitle,           /* Page title */
ce277cadda 2008-05-25       drh:   const char *zDbField,         /* Configuration field being edited */
86db6fa150 2008-05-28       drh:   const char *zDfltValue,       /* Default text value */
ce277cadda 2008-05-25       drh:   const char *zDesc,            /* Description of this field */
86db6fa150 2008-05-28       drh:   char *(*xText)(const char*),  /* Validitity test or NULL */
86db6fa150 2008-05-28       drh:   void (*xRebuild)(void),       /* Run after successulf update */
ce277cadda 2008-05-25       drh:   int height                    /* Height of the edit box */
ce277cadda 2008-05-25       drh: ){
ce277cadda 2008-05-25       drh:   const char *z;
ce277cadda 2008-05-25       drh:   int isSubmit;
0edee97370 2007-10-03       drh: 
0edee97370 2007-10-03       drh:   login_check_credentials();
0edee97370 2007-10-03       drh:   if( !g.okSetup ){
0edee97370 2007-10-03       drh:     login_needed();
0edee97370 2007-10-03       drh:   }
ce277cadda 2008-05-25       drh:   if( P("setup") ){
0edee97370 2007-10-03       drh:     cgi_redirect("tktsetup");
0edee97370 2007-10-03       drh:   }
ce277cadda 2008-05-25       drh:   isSubmit = P("submit")!=0;
ce277cadda 2008-05-25       drh:   z = P("x");
ce277cadda 2008-05-25       drh:   if( z==0 ){
86db6fa150 2008-05-28       drh:     z = db_get(zDbField, (char*)zDfltValue);
ce277cadda 2008-05-25       drh:   }
ce277cadda 2008-05-25       drh:   style_header("Edit %s", zTitle);
ce277cadda 2008-05-25       drh:   if( P("clear")!=0 ){
ce277cadda 2008-05-25       drh:     db_unset(zDbField, 0);
86db6fa150 2008-05-28       drh:     if( xRebuild ) xRebuild();
ce277cadda 2008-05-25       drh:     z = zDfltValue;
ce277cadda 2008-05-25       drh:   }else if( isSubmit ){
86db6fa150 2008-05-28       drh:     char *zErr = 0;
86db6fa150 2008-05-28       drh:     if( xText && (zErr = xText(z))!=0 ){
86db6fa150 2008-05-28       drh:       @ <p><font color="red"><b>ERROR: %h(zErr)</b></font></p>
1e9c0e287e 2007-10-03       drh:     }else{
86db6fa150 2008-05-28       drh:       db_set(zDbField, z, 0);
86db6fa150 2008-05-28       drh:       if( xRebuild ) xRebuild();
86db6fa150 2008-05-28       drh:     }
1e9c0e287e 2007-10-03       drh:   }
ce277cadda 2008-05-25       drh:   @ <form action="%s(g.zBaseURL)/%s(g.zPath)" method="POST">
b7588eb2f7 2008-07-19       drh:   @ <p>%s(zDesc)</p>
86db6fa150 2008-05-28       drh:   @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
b7588eb2f7 2008-07-19       drh:   @ <blockquote>
ce277cadda 2008-05-25       drh:   @ <input type="submit" name="submit" value="Apply Changes">
ce277cadda 2008-05-25       drh:   @ <input type="submit" name="clear" value="Revert To Default">
b7588eb2f7 2008-07-19       drh:   @ <input type="submit" name="setup" value="Cancel">
b7588eb2f7 2008-07-19       drh:   @ </blockquote>
ce277cadda 2008-05-25       drh:   @ </form>
ce277cadda 2008-05-25       drh:   @ <hr>
ce277cadda 2008-05-25       drh:   @ <h2>Default %s(zTitle)</h2>
ce277cadda 2008-05-25       drh:   @ <blockquote><pre>
ce277cadda 2008-05-25       drh:   @ %h(zDfltValue)
ce277cadda 2008-05-25       drh:   @ </pre></blockquote>
1e9c0e287e 2007-10-03       drh:   style_footer();
ce277cadda 2008-05-25       drh: }
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup_tab
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: void tktsetup_tab_page(void){
ce277cadda 2008-05-25       drh:   static const char zDesc[] =
ce277cadda 2008-05-25       drh:   @ <p>Enter a valid CREATE TABLE statement for the "ticket" table.  The
ce277cadda 2008-05-25       drh:   @ table must contain columns named "tkt_id", "tkt_uuid", and "tkt_mtime"
ce277cadda 2008-05-25       drh:   @ with an unique index on "tkt_uuid" and "tkt_mtime".</p>
ce277cadda 2008-05-25       drh:   ;
ce277cadda 2008-05-25       drh:   tktsetup_generic(
ce277cadda 2008-05-25       drh:     "Ticket Table Schema",
ce277cadda 2008-05-25       drh:     "ticket-table",
86db6fa150 2008-05-28       drh:     zDefaultTicketTable,
ce277cadda 2008-05-25       drh:     zDesc,
86db6fa150 2008-05-28       drh:     ticket_schema_check,
86db6fa150 2008-05-28       drh:     ticket_rebuild,
ce277cadda 2008-05-25       drh:     20
ce277cadda 2008-05-25       drh:   );
ce277cadda 2008-05-25       drh: }
ce277cadda 2008-05-25       drh: 
86db6fa150 2008-05-28       drh: static const char zDefaultTicketCommon[] =
ce277cadda 2008-05-25       drh: @ set type_choices {
ce277cadda 2008-05-25       drh: @    Code_Defect
ce277cadda 2008-05-25       drh: @    Build_Problem
ce277cadda 2008-05-25       drh: @    Documentation
ce277cadda 2008-05-25       drh: @    Feature_Request
ce277cadda 2008-05-25       drh: @    Incident
ce277cadda 2008-05-25       drh: @ }
ce277cadda 2008-05-25       drh: @ set priority_choices {
ce277cadda 2008-05-25       drh: @   Immediate
ce277cadda 2008-05-25       drh: @   High
ce277cadda 2008-05-25       drh: @   Medium
ce277cadda 2008-05-25       drh: @   Low
ce277cadda 2008-05-25       drh: @   Zero
ce277cadda 2008-05-25       drh: @ }
ce277cadda 2008-05-25       drh: @ set severity_choices {
ce277cadda 2008-05-25       drh: @   Critical
ce277cadda 2008-05-25       drh: @   Severe
ce277cadda 2008-05-25       drh: @   Important
ce277cadda 2008-05-25       drh: @   Minor
ce277cadda 2008-05-25       drh: @   Cosmetic
ce277cadda 2008-05-25       drh: @ }
ce277cadda 2008-05-25       drh: @ set resolution_choices {
ce277cadda 2008-05-25       drh: @   Open
ce277cadda 2008-05-25       drh: @   Fixed
ce277cadda 2008-05-25       drh: @   Rejected
ce277cadda 2008-05-25       drh: @   Unable_To_Reproduce
ce277cadda 2008-05-25       drh: @   Works_As_Designed
ce277cadda 2008-05-25       drh: @   External_Bug
ce277cadda 2008-05-25       drh: @   Not_A_Bug
ce277cadda 2008-05-25       drh: @   Duplicate
ce277cadda 2008-05-25       drh: @   Overcome_By_Events
ce277cadda 2008-05-25       drh: @   Drive_By_Patch
ce277cadda 2008-05-25       drh: @ }
ce277cadda 2008-05-25       drh: @ set status_choices {
ce277cadda 2008-05-25       drh: @   Open
ce277cadda 2008-05-25       drh: @   Verified
49380d500a 2008-05-28       drh: @   Review
ce277cadda 2008-05-25       drh: @   Deferred
ce277cadda 2008-05-25       drh: @   Fixed
ce277cadda 2008-05-25       drh: @   Tested
ce277cadda 2008-05-25       drh: @   Closed
ce277cadda 2008-05-25       drh: @ }
ce277cadda 2008-05-25       drh: @ set subsystem_choices {one two three}
ce277cadda 2008-05-25       drh: ;
86db6fa150 2008-05-28       drh: 
86db6fa150 2008-05-28       drh: /*
86db6fa150 2008-05-28       drh: ** Return the ticket common code.
86db6fa150 2008-05-28       drh: */
86db6fa150 2008-05-28       drh: const char *ticket_common_code(void){
86db6fa150 2008-05-28       drh:   return db_get("ticket-common", (char*)zDefaultTicketCommon);
86db6fa150 2008-05-28       drh: }
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup_com
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: void tktsetup_com_page(void){
ce277cadda 2008-05-25       drh:   static const char zDesc[] =
ce277cadda 2008-05-25       drh:   @ <p>Enter TH1 script that initializes variables prior to generating
ce277cadda 2008-05-25       drh:   @ any of the ticket view, edit, or creation pages.</p>
ce277cadda 2008-05-25       drh:   ;
ce277cadda 2008-05-25       drh:   tktsetup_generic(
ce277cadda 2008-05-25       drh:     "Ticket Common Script",
ce277cadda 2008-05-25       drh:     "ticket-common",
86db6fa150 2008-05-28       drh:     zDefaultTicketCommon,
ce277cadda 2008-05-25       drh:     zDesc,
86db6fa150 2008-05-28       drh:     0,
86db6fa150 2008-05-28       drh:     0,
ce277cadda 2008-05-25       drh:     30
ce277cadda 2008-05-25       drh:   );
ce277cadda 2008-05-25       drh: }
ce277cadda 2008-05-25       drh: 
86db6fa150 2008-05-28       drh: static const char zDefaultNew[] =
ce277cadda 2008-05-25       drh: @ <th1>
ce277cadda 2008-05-25       drh: @   if {[info exists submit]} {
ce277cadda 2008-05-25       drh: @      set status Open
ce277cadda 2008-05-25       drh: @      submit_ticket
ce277cadda 2008-05-25       drh: @   }
ce277cadda 2008-05-25       drh: @ </th1>
49380d500a 2008-05-28       drh: @ <h1 align="center">Enter A New Bug Report</h1>
ce277cadda 2008-05-25       drh: @ <table cellpadding="5">
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td colspan="2">
ce277cadda 2008-05-25       drh: @ Enter a one-line summary of the problem:<br>
ce277cadda 2008-05-25       drh: @ <input type="text" name="title" size="60" value="$<title>">
ce277cadda 2008-05-25       drh: @ </td>
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td align="right">Type:
ce277cadda 2008-05-25       drh: @ <th1>combobox type $type_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td>
ce277cadda 2008-05-25       drh: @ <td>What type of ticket is this?</td>
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td align="right">Version:
ce277cadda 2008-05-25       drh: @ <input type="text" name="foundin" size="20" value="$<foundin>">
ce277cadda 2008-05-25       drh: @ </td>
ce277cadda 2008-05-25       drh: @ <td>In what version or build number do you observe the problem?</td>
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td align="right">Severity:
ce277cadda 2008-05-25       drh: @ <th1>combobox severity $severity_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td>
ce277cadda 2008-05-25       drh: @ <td>How debilitating is the problem?  How badly does the problem
ce277cadda 2008-05-25       drh: @ effect the operation of the product?</td>
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td align="right">EMail:
ce277cadda 2008-05-25       drh: @ <input type="text" name="contact" value="$<contact>" size="30">
ce277cadda 2008-05-25       drh: @ </td>
49380d500a 2008-05-28       drh: @ <td><u>Not publicly visible</u>. Used by developers to contact you with
ce277cadda 2008-05-25       drh: @ questions.</td>
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td colspan="2">
ce277cadda 2008-05-25       drh: @ Enter a detailed description of the problem.
ce277cadda 2008-05-25       drh: @ For code defects, be sure to provide details on exactly how
ce277cadda 2008-05-25       drh: @ the problem can be reproduced.  Provide as much detail as
ce277cadda 2008-05-25       drh: @ possible.
ce277cadda 2008-05-25       drh: @ <br>
ce277cadda 2008-05-25       drh: @ <th1>set nline [linecount $comment 50 10]</th1>
ce277cadda 2008-05-25       drh: @ <textarea name="comment" cols="80" rows="$nline"
ce277cadda 2008-05-25       drh: @  wrap="virtual" class="wikiedit">$<comment></textarea><br>
ce277cadda 2008-05-25       drh: @ <input type="submit" name="preview" value="Preview">
ce277cadda 2008-05-25       drh: @ </tr>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <th1>enable_output [info exists preview]</th1>
ce277cadda 2008-05-25       drh: @ <tr><td colspan="2">
ce277cadda 2008-05-25       drh: @ Description Preview:<br><hr>
ce277cadda 2008-05-25       drh: @ <th1>wiki $comment</th1>
ce277cadda 2008-05-25       drh: @ <hr>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <th1>enable_output 1</th1>
ce277cadda 2008-05-25       drh: @
ce277cadda 2008-05-25       drh: @ <tr>
ce277cadda 2008-05-25       drh: @ <td align="right">
ce277cadda 2008-05-25       drh: @ <input type="submit" name="submit" value="Submit">
ce277cadda 2008-05-25       drh: @ </td>
ce277cadda 2008-05-25       drh: @ <td>After filling in the information above, press this button to create
ce277cadda 2008-05-25       drh: @ the new ticket</td>
ce277cadda 2008-05-25       drh: @ </tr>
27d2e6e458 2008-05-28       drh: @ <tr>
27d2e6e458 2008-05-28       drh: @ <td align="right">
27d2e6e458 2008-05-28       drh: @ <input type="submit" name="cancel" value="Cancel">
27d2e6e458 2008-05-28       drh: @ </td>
27d2e6e458 2008-05-28       drh: @ <td>Abandon and forget this bug report</td>
86db6fa150 2008-05-28       drh: @ </tr>
ce277cadda 2008-05-25       drh: @ </table>
ce277cadda 2008-05-25       drh: ;
86db6fa150 2008-05-28       drh: 
86db6fa150 2008-05-28       drh: /*
86db6fa150 2008-05-28       drh: ** Return the code used to generate the new ticket page
86db6fa150 2008-05-28       drh: */
86db6fa150 2008-05-28       drh: const char *ticket_newpage_code(void){
86db6fa150 2008-05-28       drh:   return db_get("ticket-newpage", (char*)zDefaultNew);
86db6fa150 2008-05-28       drh: }
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup_newpage
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: void tktsetup_newpage_page(void){
ce277cadda 2008-05-25       drh:   static const char zDesc[] =
ce277cadda 2008-05-25       drh:   @ <p>Enter HTML with embedded TH1 script that will render the "new ticket"
ce277cadda 2008-05-25       drh:   @ page</p>
ce277cadda 2008-05-25       drh:   ;
ce277cadda 2008-05-25       drh:   tktsetup_generic(
ce277cadda 2008-05-25       drh:     "HTML For New Tickets",
ce277cadda 2008-05-25       drh:     "ticket-newpage",
ce277cadda 2008-05-25       drh:     zDefaultNew,
ce277cadda 2008-05-25       drh:     zDesc,
86db6fa150 2008-05-28       drh:     0,
86db6fa150 2008-05-28       drh:     0,
ce277cadda 2008-05-25       drh:     40
ce277cadda 2008-05-25       drh:   );
ce277cadda 2008-05-25       drh: }
ce277cadda 2008-05-25       drh: 
86db6fa150 2008-05-28       drh: static const char zDefaultView[] =
ce277cadda 2008-05-25       drh: @ <table cellpadding="5">
49380d500a 2008-05-28       drh: @ <tr><td align="right">Ticket&nbsp;UUID:</td><td bgcolor="#d0d0d0" colspan="3">
49380d500a 2008-05-28       drh: @ $<tkt_uuid>
49380d500a 2008-05-28       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Title:</td>
49380d500a 2008-05-28       drh: @ <td bgcolor="#d0d0d0" colspan="3" valign="top">
ce277cadda 2008-05-25       drh: @ $<title>
ce277cadda 2008-05-25       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Status:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<status>
49380d500a 2008-05-28       drh: @ </td>
49380d500a 2008-05-28       drh: @ <td align="right">Type:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<type>
ce277cadda 2008-05-25       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Severity:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<severity>
49380d500a 2008-05-28       drh: @ </td>
49380d500a 2008-05-28       drh: @ <td align="right">Priority:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<priority>
ce277cadda 2008-05-25       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Subsystem:</td><td bgcolor="#d0d0d0">
49380d500a 2008-05-28       drh: @ $<subsystem>
49380d500a 2008-05-28       drh: @ </td>
49380d500a 2008-05-28       drh: @ <td align="right">Resolution:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<resolution>
ce277cadda 2008-05-25       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Last&nbsp;Modified:</td><td bgcolor="#d0d0d0">
49380d500a 2008-05-28       drh: @ $<tkt_datetime>
49380d500a 2008-05-28       drh: @ </td>
ce277cadda 2008-05-25       drh: @ <th1>enable_output [hascap e]</th1>
49380d500a 2008-05-28       drh: @   <td align="right">Contact:</td><td bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @   $<contact>
49380d500a 2008-05-28       drh: @   </td>
ce277cadda 2008-05-25       drh: @ <th1>enable_output 1</th1>
49380d500a 2008-05-28       drh: @ </tr>
49380d500a 2008-05-28       drh: @ <tr><td align="right">Version&nbsp;Found&nbsp;In:</td>
49380d500a 2008-05-28       drh: @ <td colspan="3" valign="top" bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ $<foundin>
ce277cadda 2008-05-25       drh: @ </td></tr>
49380d500a 2008-05-28       drh: @ <tr><td>Description &amp; Comments:</td></tr>
49380d500a 2008-05-28       drh: @ <tr><td colspan="4" bgcolor="#d0d0d0">
ce277cadda 2008-05-25       drh: @ Description And Comments:<br>
49380d500a 2008-05-28       drh: @ <span  bgcolor="#d0d0d0"><th1>wiki $comment</th1></span>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ </table>
ce277cadda 2008-05-25       drh: ;
ce277cadda 2008-05-25       drh: 
86db6fa150 2008-05-28       drh: 
86db6fa150 2008-05-28       drh: /*
86db6fa150 2008-05-28       drh: ** Return the code used to generate the view ticket page
86db6fa150 2008-05-28       drh: */
86db6fa150 2008-05-28       drh: const char *ticket_viewpage_code(void){
86db6fa150 2008-05-28       drh:   return db_get("ticket-viewpage", (char*)zDefaultView);
86db6fa150 2008-05-28       drh: }
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup_viewpage
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: void tktsetup_viewpage_page(void){
ce277cadda 2008-05-25       drh:   static const char zDesc[] =
ce277cadda 2008-05-25       drh:   @ <p>Enter HTML with embedded TH1 script that will render the "view ticket"
ce277cadda 2008-05-25       drh:   @ page</p>
ce277cadda 2008-05-25       drh:   ;
ce277cadda 2008-05-25       drh:   tktsetup_generic(
ce277cadda 2008-05-25       drh:     "HTML For Viewing Tickets",
ce277cadda 2008-05-25       drh:     "ticket-viewpage",
ce277cadda 2008-05-25       drh:     zDefaultView,
ce277cadda 2008-05-25       drh:     zDesc,
86db6fa150 2008-05-28       drh:     0,
86db6fa150 2008-05-28       drh:     0,
ce277cadda 2008-05-25       drh:     40
ce277cadda 2008-05-25       drh:   );
ce277cadda 2008-05-25       drh: }
ce277cadda 2008-05-25       drh: 
86db6fa150 2008-05-28       drh: static const char zDefaultEdit[] =
ce277cadda 2008-05-25       drh: @ <th1>
ce277cadda 2008-05-25       drh: @   if {![info exists username]} {set username $login}
ce277cadda 2008-05-25       drh: @   if {[info exists submit]} {
ce277cadda 2008-05-25       drh: @     if {[info exists cmappnd]} {
ce277cadda 2008-05-25       drh: @       if {[string length $cmappnd]>0} {
ce277cadda 2008-05-25       drh: @         set ctxt "\n\n<hr><i>[htmlize $login]"
ce277cadda 2008-05-25       drh: @         if {$username ne $login} {
ce277cadda 2008-05-25       drh: @           set ctxt "$ctxt claiming to be [htmlize $username]"
ce277cadda 2008-05-25       drh: @         }
ce277cadda 2008-05-25       drh: @         set ctxt "$ctxt added on [date]:</i><br>\n$cmappnd"
ce277cadda 2008-05-25       drh: @         append_field comment $ctxt
ce277cadda 2008-05-25       drh: @       }
ce277cadda 2008-05-25       drh: @     }
ce277cadda 2008-05-25       drh: @     submit_ticket
ce277cadda 2008-05-25       drh: @   }
ce277cadda 2008-05-25       drh: @ </th1>
ce277cadda 2008-05-25       drh: @ <table cellpadding="5">
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Title:</td><td>
ce277cadda 2008-05-25       drh: @ <input type="text" name="title" value="$<title>" size="60">
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Status:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox status $status_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Type:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox type $type_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Severity:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox severity $severity_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Priority:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox priority $priority_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Resolution:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox resolution $resolution_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Subsystem:</td><td>
ce277cadda 2008-05-25       drh: @ <th1>combobox subsystem $subsystem_choices 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <th1>enable_output [hascap e]</th1>
ce277cadda 2008-05-25       drh: @   <tr><td align="right">Contact:</td><td>
ce277cadda 2008-05-25       drh: @   <input type="text" name="contact" size="40" value="$<contact>">
ce277cadda 2008-05-25       drh: @   </td></tr>
ce277cadda 2008-05-25       drh: @ <th1>enable_output 1</th1>
ce277cadda 2008-05-25       drh: @ <tr><td align="right">Version&nbsp;Found&nbsp;In:</td><td>
ce277cadda 2008-05-25       drh: @ <input type="text" name="foundin" size="50" value="$<foundin>">
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td colspan="2">
ce277cadda 2008-05-25       drh: @ <th1>
ce277cadda 2008-05-25       drh: @   if {![info exists eall]} {set eall 0}
ce277cadda 2008-05-25       drh: @   if {[info exists aonlybtn]} {set eall 0}
ce277cadda 2008-05-25       drh: @   if {[info exists eallbtn]} {set eall 1}
ce277cadda 2008-05-25       drh: @   if {![hascap w]} {set eall 0}
ce277cadda 2008-05-25       drh: @   if {![info exists cmappnd]} {set cmappnd {}}
ce277cadda 2008-05-25       drh: @   set nline [linecount $comment 15 10]
ce277cadda 2008-05-25       drh: @   enable_output $eall
ce277cadda 2008-05-25       drh: @ </th1>
ce277cadda 2008-05-25       drh: @   Description And Comments:<br>
ce277cadda 2008-05-25       drh: @   <textarea name="comment" cols="80" rows="$nline"
ce277cadda 2008-05-25       drh: @    wrap="virtual" class="wikiedit">$<comment></textarea><br>
ce277cadda 2008-05-25       drh: @   <input type="hidden" name="eall" value="1">
ce277cadda 2008-05-25       drh: @   <input type="submit" name="aonlybtn" value="Append Remark">
ce277cadda 2008-05-25       drh: @ <th1>enable_output [expr {!$eall}]</th1>
ce277cadda 2008-05-25       drh: @   Append Remark from
ce277cadda 2008-05-25       drh: @   <input type="text" name="username" value="$<username>" size="30">:<br>
ce277cadda 2008-05-25       drh: @   <textarea name="cmappnd" cols="80" rows="15"
ce277cadda 2008-05-25       drh: @    wrap="virtual" class="wikiedit">$<cmappnd></textarea><br>
ce277cadda 2008-05-25       drh: @ <th1>enable_output [expr {[hascap w] && !$eall}]</th1>
ce277cadda 2008-05-25       drh: @   <input type="submit" name="eallbtn" value="Edit All">
ce277cadda 2008-05-25       drh: @ <th1>enable_output 1</th1>
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ <tr><td align="right"></td><td>
ce277cadda 2008-05-25       drh: @ <input type="submit" name="submit" value="Submit Changes">
27d2e6e458 2008-05-28       drh: @ <input type="submit" name="cancel" value="Cancel">
ce277cadda 2008-05-25       drh: @ </td></tr>
ce277cadda 2008-05-25       drh: @ </table>
ce277cadda 2008-05-25       drh: ;
86db6fa150 2008-05-28       drh: 
86db6fa150 2008-05-28       drh: /*
86db6fa150 2008-05-28       drh: ** Return the code used to generate the edit ticket page
86db6fa150 2008-05-28       drh: */
86db6fa150 2008-05-28       drh: const char *ticket_editpage_code(void){
86db6fa150 2008-05-28       drh:   return db_get("ticket-editpage", (char*)zDefaultEdit);
86db6fa150 2008-05-28       drh: }
ce277cadda 2008-05-25       drh: 
ce277cadda 2008-05-25       drh: /*
ce277cadda 2008-05-25       drh: ** WEBPAGE: tktsetup_editpage
ce277cadda 2008-05-25       drh: */
ce277cadda 2008-05-25       drh: void tktsetup_editpage_page(void){
ce277cadda 2008-05-25       drh:   static const char zDesc[] =
ce277cadda 2008-05-25       drh:   @ <p>Enter HTML with embedded TH1 script that will render the "edit ticket"
ce277cadda 2008-05-25       drh:   @ page</p>
ce277cadda 2008-05-25       drh:   ;
ce277cadda 2008-05-25       drh:   tktsetup_generic(
ce277cadda 2008-05-25       drh:     "HTML For Editing Tickets",
ce277cadda 2008-05-25       drh:     "ticket-editpage",
ce277cadda 2008-05-25       drh:     zDefaultEdit,
ce277cadda 2008-05-25       drh:     zDesc,
86db6fa150 2008-05-28       drh:     0,
86db6fa150 2008-05-28       drh:     0,
ce277cadda 2008-05-25       drh:     40
49380d500a 2008-05-28       drh:   );
49380d500a 2008-05-28       drh: }
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** The default template ticket report format:
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: static char zDefaultReport[] =
49380d500a 2008-05-28       drh: @ SELECT
49380d500a 2008-05-28       drh: @   CASE WHEN status IN ('Open','Verified') THEN '#f2dcdc'
49380d500a 2008-05-28       drh: @        WHEN status='Review' THEN '#e8e8e8'
49380d500a 2008-05-28       drh: @        WHEN status='Fixed' THEN '#cfe8bd'
49380d500a 2008-05-28       drh: @        WHEN status='Tested' THEN '#bde5d6'
49380d500a 2008-05-28       drh: @        WHEN status='Deferred' THEN '#cacae5'
49380d500a 2008-05-28       drh: @        ELSE '#c8c8c8' END AS 'bgcolor',
49380d500a 2008-05-28       drh: @   substr(tkt_uuid,1,10) AS '#',
49380d500a 2008-05-28       drh: @   datetime(tkt_mtime) AS 'mtime',
49380d500a 2008-05-28       drh: @   type,
49380d500a 2008-05-28       drh: @   status,
49380d500a 2008-05-28       drh: @   subsystem,
49380d500a 2008-05-28       drh: @   title,
49380d500a 2008-05-28       drh: @   comment AS '_comments'
49380d500a 2008-05-28       drh: @ FROM ticket
49380d500a 2008-05-28       drh: ;
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** Return the template ticket report format:
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: char *ticket_report_template(void){
49380d500a 2008-05-28       drh:   return db_get("ticket-report-template", zDefaultReport);
49380d500a 2008-05-28       drh: }
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** WEBPAGE: tktsetup_rpttplt
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: void tktsetup_rpttplt_page(void){
49380d500a 2008-05-28       drh:   static const char zDesc[] =
49380d500a 2008-05-28       drh:   @ <p>Enter the default ticket report format template.  This is the
b7588eb2f7 2008-07-19       drh:   @ the template report format that initially appears when creating a
49380d500a 2008-05-28       drh:   @ new ticket summary report.</p>
49380d500a 2008-05-28       drh:   ;
49380d500a 2008-05-28       drh:   tktsetup_generic(
49380d500a 2008-05-28       drh:     "Default Report Template",
49380d500a 2008-05-28       drh:     "ticket-report-template",
49380d500a 2008-05-28       drh:     zDefaultReport,
49380d500a 2008-05-28       drh:     zDesc,
49380d500a 2008-05-28       drh:     0,
49380d500a 2008-05-28       drh:     0,
49380d500a 2008-05-28       drh:     20
49380d500a 2008-05-28       drh:   );
49380d500a 2008-05-28       drh: }
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** The default template ticket key:
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: static const char zDefaultKey[] =
49380d500a 2008-05-28       drh: @ #ffffff Key:
49380d500a 2008-05-28       drh: @ #f2dcdc Active
49380d500a 2008-05-28       drh: @ #e8e8e8 Review
49380d500a 2008-05-28       drh: @ #cfe8bd Fixed
49380d500a 2008-05-28       drh: @ #bde5d6 Tested
49380d500a 2008-05-28       drh: @ #cacae5 Deferred
49380d500a 2008-05-28       drh: @ #c8c8c8 Closed
49380d500a 2008-05-28       drh: ;
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** Return the template ticket report format:
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: const char *ticket_key_template(void){
49380d500a 2008-05-28       drh:   return db_get("ticket-key-template", (char*)zDefaultKey);
49380d500a 2008-05-28       drh: }
49380d500a 2008-05-28       drh: 
49380d500a 2008-05-28       drh: /*
49380d500a 2008-05-28       drh: ** WEBPAGE: tktsetup_keytplt
49380d500a 2008-05-28       drh: */
49380d500a 2008-05-28       drh: void tktsetup_keytplt_page(void){
49380d500a 2008-05-28       drh:   static const char zDesc[] =
b7588eb2f7 2008-07-19       drh:   @ <p>Enter the default ticket report color-key template.  This is the
b7588eb2f7 2008-07-19       drh:   @ the color-key that initially appears when creating a
49380d500a 2008-05-28       drh:   @ new ticket summary report.</p>
49380d500a 2008-05-28       drh:   ;
49380d500a 2008-05-28       drh:   tktsetup_generic(
b7588eb2f7 2008-07-19       drh:     "Default Report Color-Key Template",
b7588eb2f7 2008-07-19       drh:     "ticket-key-template",
b7588eb2f7 2008-07-19       drh:     zDefaultKey,
49380d500a 2008-05-28       drh:     zDesc,
49380d500a 2008-05-28       drh:     0,
49380d500a 2008-05-28       drh:     0,
b7588eb2f7 2008-07-19       drh:     10
ce277cadda 2008-05-25       drh:   );
0edee97370 2007-10-03       drh: }