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."); ce277cadda 2008-05-25 drh: setup_menu_entry("Report Format", "tktsetup_drep", ce277cadda 2008-05-25 drh: "The default ticket report format."); 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: 1e9c0e287e 2007-10-03 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); 1e9c0e287e 2007-10-03 drh: } 1e9c0e287e 2007-10-03 drh: 0edee97370 2007-10-03 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"> ce277cadda 2008-05-25 drh: @ %s(zDesc) 86db6fa150 2008-05-28 drh: @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea> ce277cadda 2008-05-25 drh: @ <br /> 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"> ce277cadda 2008-05-25 drh: @ <input type="submit" name="setup" value="Ticket Setup Menu"> 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 ce277cadda 2008-05-25 drh: @ In_Process 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: ; ce277cadda 2008-05-25 drh: ce277cadda 2008-05-25 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: } 86db6fa150 2008-05-28 drh: 86db6fa150 2008-05-28 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> 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> ce277cadda 2008-05-25 drh: @ <td>Not publically visible. 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> ce277cadda 2008-05-25 drh: @ </table> ce277cadda 2008-05-25 drh: ; ce277cadda 2008-05-25 drh: ce277cadda 2008-05-25 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: } 86db6fa150 2008-05-28 drh: 86db6fa150 2008-05-28 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"> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Title:</td><td> ce277cadda 2008-05-25 drh: @ $<title> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Status:</td><td> ce277cadda 2008-05-25 drh: @ $<status> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Type:</td><td> ce277cadda 2008-05-25 drh: @ $<type> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Severity:</td><td> ce277cadda 2008-05-25 drh: @ $<severity> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Priority:</td><td> ce277cadda 2008-05-25 drh: @ $<priority> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Resolution:</td><td> ce277cadda 2008-05-25 drh: @ $<resolution> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td align="right">Subsystem:</td><td> ce277cadda 2008-05-25 drh: @ $<subsystem> 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: @ $<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 Found In:</td><td> ce277cadda 2008-05-25 drh: @ $<foundin> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ <tr><td colspan="2"> ce277cadda 2008-05-25 drh: @ Description And Comments:<br> ce277cadda 2008-05-25 drh: @ <th1>wiki $comment</th1> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ </table> 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 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: } 86db6fa150 2008-05-28 drh: 86db6fa150 2008-05-28 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 Found 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"> ce277cadda 2008-05-25 drh: @ </td></tr> ce277cadda 2008-05-25 drh: @ </table> ce277cadda 2008-05-25 drh: ; ce277cadda 2008-05-25 drh: ce277cadda 2008-05-25 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: } 86db6fa150 2008-05-28 drh: 86db6fa150 2008-05-28 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 ce277cadda 2008-05-25 drh: ); 0edee97370 2007-10-03 drh: }