Hex Artifact Content
Not logged in

Artifact 0661d23511c0aca51bda2bb44d9b455372b980bc:

File src/tkt.c part of check-in [39aa870f8f] - Work toward a new mechanism for configuring the ticket subsystem and rendering ticket entry, editing, and viewing screens. Nothing works, but it is all commented out so the code code compile. by drh on 2007-10-14 00:29:14.

0000: 2f 2a 0a 2a 2a 20 43 6f 70 79 72 69 67 68 74 20  /*.** Copyright 
0010: 28 63 29 20 32 30 30 37 20 44 2e 20 52 69 63 68  (c) 2007 D. Rich
0020: 61 72 64 20 48 69 70 70 0a 2a 2a 0a 2a 2a 20 54  ard Hipp.**.** T
0030: 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66  his program is f
0040: 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f  ree software; yo
0050: 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75  u can redistribu
0060: 74 65 20 69 74 20 61 6e 64 2f 6f 72 0a 2a 2a 20  te it and/or.** 
0070: 6d 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 20  modify it under 
0080: 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65  the terms of the
0090: 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62   GNU General Pub
00a0: 6c 69 63 0a 2a 2a 20 4c 69 63 65 6e 73 65 20 76  lic.** License v
00b0: 65 72 73 69 6f 6e 20 32 20 61 73 20 70 75 62 6c  ersion 2 as publ
00c0: 69 73 68 65 64 20 62 79 20 74 68 65 20 46 72 65  ished by the Fre
00d0: 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64  e Software Found
00e0: 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  ation..**.** Thi
00f0: 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73  s program is dis
0100: 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20  tributed in the 
0110: 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c  hope that it wil
0120: 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 2a 2a 20  l be useful,.** 
0130: 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20  but WITHOUT ANY 
0140: 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75  WARRANTY; withou
0150: 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69  t even the impli
0160: 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 2a  ed warranty of.*
0170: 2a 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54  * MERCHANTABILIT
0180: 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52  Y or FITNESS FOR
0190: 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55   A PARTICULAR PU
01a0: 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 20  RPOSE.  See the 
01b0: 47 4e 55 0a 2a 2a 20 47 65 6e 65 72 61 6c 20 50  GNU.** General P
01c0: 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f  ublic License fo
01d0: 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a  r more details..
01e0: 2a 2a 20 0a 2a 2a 20 59 6f 75 20 73 68 6f 75 6c  ** .** You shoul
01f0: 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20  d have received 
0200: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e  a copy of the GN
0210: 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63  U General Public
0220: 0a 2a 2a 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e  .** License alon
0230: 67 20 77 69 74 68 20 74 68 69 73 20 6c 69 62 72  g with this libr
0240: 61 72 79 3b 20 69 66 20 6e 6f 74 2c 20 77 72 69  ary; if not, wri
0250: 74 65 20 74 6f 20 74 68 65 0a 2a 2a 20 46 72 65  te to the.** Fre
0260: 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64  e Software Found
0270: 61 74 69 6f 6e 2c 20 49 6e 63 2e 2c 20 35 39 20  ation, Inc., 59 
0280: 54 65 6d 70 6c 65 20 50 6c 61 63 65 20 2d 20 53  Temple Place - S
0290: 75 69 74 65 20 33 33 30 2c 0a 2a 2a 20 42 6f 73  uite 330,.** Bos
02a0: 74 6f 6e 2c 20 4d 41 20 20 30 32 31 31 31 2d 31  ton, MA  02111-1
02b0: 33 30 37 2c 20 55 53 41 2e 0a 2a 2a 0a 2a 2a 20  307, USA..**.** 
02c0: 41 75 74 68 6f 72 20 63 6f 6e 74 61 63 74 20 69  Author contact i
02d0: 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 2a 2a 20 20  nformation:.**  
02e0: 20 64 72 68 40 68 77 61 63 69 2e 63 6f 6d 0a 2a   drh@hwaci.com.*
02f0: 2a 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 68  *   http://www.h
0300: 77 61 63 69 2e 63 6f 6d 2f 64 72 68 2f 0a 2a 2a  waci.com/drh/.**
0310: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .***************
0320: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0330: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0340: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0350: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0360: 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c 65  .**.** This file
0370: 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20 75   contains code u
0380: 73 65 64 20 72 65 6e 64 65 72 20 61 6e 64 20 63  sed render and c
0390: 6f 6e 74 72 6f 6c 20 74 69 63 6b 65 74 20 65 6e  ontrol ticket en
03a0: 74 72 79 0a 2a 2a 20 61 6e 64 20 64 69 73 70 6c  try.** and displ
03b0: 61 79 20 70 61 67 65 73 2e 0a 2a 2f 0a 23 69 66  ay pages..*/.#if
03c0: 20 30 0a 23 69 6e 63 6c 75 64 65 20 22 63 6f 6e   0.#include "con
03d0: 66 69 67 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20  fig.h".#include 
03e0: 22 74 6b 74 2e 68 22 0a 23 69 6e 63 6c 75 64 65  "tkt.h".#include
03f0: 20 3c 61 73 73 65 72 74 2e 68 3e 0a 0a 2f 2a 0a   <assert.h>../*.
0400: 2a 2a 20 46 6c 61 67 73 20 74 6f 20 69 6e 64 69  ** Flags to indi
0410: 63 61 74 65 20 77 68 61 74 20 6b 69 6e 64 20 6f  cate what kind o
0420: 66 20 74 69 63 6b 65 74 20 73 74 72 69 6e 67 20  f ticket string 
0430: 69 73 20 62 65 69 6e 67 20 67 65 6e 65 72 61 74  is being generat
0440: 65 64 2e 0a 2a 2a 20 41 20 62 69 74 6d 61 73 6b  ed..** A bitmask
0450: 20 6f 66 20 74 68 65 73 65 20 69 73 20 61 73 73   of these is ass
0460: 6f 63 69 61 74 65 64 20 77 69 74 68 20 65 61 63  ociated with eac
0470: 68 20 76 65 72 62 20 69 6e 20 6f 72 64 65 72 20  h verb in order 
0480: 74 6f 20 69 6e 64 69 63 61 74 65 0a 2a 2a 20 77  to indicate.** w
0490: 68 69 63 68 20 76 65 72 62 73 20 67 6f 20 6f 6e  hich verbs go on
04a0: 20 77 68 69 63 68 20 70 61 67 65 73 2e 0a 2a 2f   which pages..*/
04b0: 0a 23 64 65 66 69 6e 65 20 4d 5f 4e 45 57 20 20  .#define M_NEW  
04c0: 30 78 30 31 0a 23 64 65 66 69 6e 65 20 4d 5f 45  0x01.#define M_E
04d0: 44 49 54 20 30 78 30 32 0a 23 64 65 66 69 6e 65  DIT 0x02.#define
04e0: 20 4d 5f 56 49 45 57 20 30 78 30 34 0a 0a 2f 2a   M_VIEW 0x04../*
04f0: 0a 2a 2a 20 54 68 65 20 53 75 62 73 63 72 69 70  .** The Subscrip
0500: 74 20 69 6e 74 65 72 70 72 65 74 65 72 20 75 73  t interpreter us
0510: 65 64 20 74 6f 20 70 61 72 73 65 20 74 68 65 20  ed to parse the 
0520: 74 69 63 6b 65 74 20 63 6f 6e 66 69 67 75 72 65  ticket configure
0530: 0a 2a 2a 20 61 6e 64 20 74 6f 20 72 65 6e 64 65  .** and to rende
0540: 72 20 74 69 63 6b 65 74 20 73 63 72 65 65 6e 73  r ticket screens
0550: 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 73 74 72 75  ..*/.static stru
0560: 63 74 20 53 75 62 73 63 72 69 70 74 20 2a 70 49  ct Subscript *pI
0570: 6e 74 65 72 70 20 3d 20 30 3b 0a 0a 2f 2a 0a 2a  nterp = 0;../*.*
0580: 2a 20 54 68 65 20 6c 69 73 74 20 6f 66 20 64 61  * The list of da
0590: 74 61 62 61 73 65 20 66 69 65 6c 64 73 20 69 6e  tabase fields in
05a0: 20 74 68 65 20 74 69 63 6b 65 74 20 74 61 62 6c   the ticket tabl
05b0: 65 2e 0a 2a 2a 20 54 68 69 73 20 69 73 20 74 68  e..** This is th
05c0: 65 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 6c  e user-defined l
05d0: 69 73 74 20 69 6e 20 74 68 65 20 63 6f 6e 66 69  ist in the confi
05e0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0a 2a  guration file..*
05f0: 2a 20 41 64 64 20 74 68 65 20 22 74 6b 74 5f 22  * Add the "tkt_"
0600: 20 70 72 65 66 69 78 20 74 6f 20 61 6c 6c 20 6f   prefix to all o
0610: 66 20 74 68 65 73 65 20 6e 61 6d 65 73 20 69 6e  f these names in
0620: 20 74 68 65 20 72 65 61 6c 20 74 61 62 6c 65 2e   the real table.
0630: 0a 2a 2a 20 54 68 65 20 72 65 61 6c 20 74 61 62  .** The real tab
0640: 6c 65 20 61 6c 73 6f 20 63 6f 6e 74 61 69 6e 73  le also contains
0650: 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 20 66   some addition f
0660: 69 65 6c 64 73 20 6e 6f 74 20 66 6f 75 6e 64 0a  ields not found.
0670: 2a 2a 20 68 65 72 65 2e 0a 2a 2f 0a 73 74 61 74  ** here..*/.stat
0680: 69 63 20 69 6e 74 20 6e 46 69 65 6c 64 20 3d 20  ic int nField = 
0690: 30 3b 0a 73 74 61 74 69 63 20 42 6c 6f 62 20 66  0;.static Blob f
06a0: 69 65 6c 64 4c 69 73 74 3b 0a 73 74 61 74 69 63  ieldList;.static
06b0: 20 63 68 61 72 20 2a 2a 61 7a 46 69 65 6c 64 20   char **azField 
06c0: 3d 20 30 3b 0a 0a 2f 2a 0a 2a 2a 20 53 75 62 73  = 0;../*.** Subs
06d0: 63 72 69 70 74 20 63 6f 6d 6d 61 6e 64 3a 20 20  cript command:  
06e0: 20 20 20 20 4c 49 53 54 20 73 65 74 66 69 65 6c      LIST setfiel
06f0: 64 73 0a 2a 2a 0a 2a 2a 20 50 61 72 73 65 20 75  ds.**.** Parse u
0700: 70 20 74 68 65 20 6c 69 73 74 20 61 6e 64 20 70  p the list and p
0710: 6f 70 75 6c 61 74 65 20 74 68 65 20 6e 46 69 65  opulate the nFie
0720: 6c 64 20 61 6e 64 20 61 7a 46 69 65 6c 64 20 76  ld and azField v
0730: 61 72 69 61 62 6c 65 73 2e 0a 2a 2f 0a 73 74 61  ariables..*/.sta
0740: 74 69 63 20 69 6e 74 20 73 65 74 46 69 65 6c 64  tic int setField
0750: 73 43 6d 64 28 73 74 72 75 63 74 20 53 75 62 73  sCmd(struct Subs
0760: 63 72 69 70 74 20 2a 70 2c 20 76 6f 69 64 20 2a  cript *p, void *
0770: 70 4e 6f 74 55 73 65 64 29 7b 0a 20 20 69 66 28  pNotUsed){.  if(
0780: 20 53 62 53 5f 52 65 71 75 69 72 65 53 74 61 63   SbS_RequireStac
0790: 6b 28 70 2c 20 31 29 20 29 20 72 65 74 75 72 6e  k(p, 1) ) return
07a0: 20 31 3b 0a 20 20 69 66 28 20 6e 46 69 65 6c 64   1;.  if( nField
07b0: 3d 3d 30 20 29 7b 0a 20 20 20 20 63 68 61 72 20  ==0 ){.    char 
07c0: 2a 7a 46 69 65 6c 64 4c 69 73 74 3b 0a 20 20 20  *zFieldList;.   
07d0: 20 69 6e 74 20 6e 46 69 65 6c 64 4c 69 73 74 2c   int nFieldList,
07e0: 20 69 3b 0a 20 20 20 20 42 6c 6f 62 20 66 69 65   i;.    Blob fie
07f0: 6c 64 3b 0a 20 20 20 20 62 6c 6f 62 5f 7a 65 72  ld;.    blob_zer
0800: 6f 28 26 66 69 65 6c 64 4c 69 73 74 29 3b 0a 20  o(&fieldList);. 
0810: 20 20 20 7a 46 69 65 6c 64 4c 69 73 74 20 3d 20     zFieldList = 
0820: 53 62 53 5f 53 74 61 63 6b 56 61 6c 75 65 28 70  SbS_StackValue(p
0830: 2c 20 30 2c 20 26 6e 46 69 65 6c 64 4c 69 73 74  , 0, &nFieldList
0840: 29 3b 0a 20 20 20 20 62 6c 6f 62 5f 61 70 70 65  );.    blob_appe
0850: 6e 64 66 28 26 66 69 65 6c 64 4c 69 73 74 2c 20  ndf(&fieldList, 
0860: 7a 46 69 65 6c 64 4c 69 73 74 2c 20 6e 46 69 65  zFieldList, nFie
0870: 6c 64 4c 69 73 74 29 3b 0a 20 20 20 20 77 68 69  ldList);.    whi
0880: 6c 65 28 20 62 6c 6f 62 5f 74 6f 6b 65 6e 28 26  le( blob_token(&
0890: 66 69 65 6c 64 4c 69 73 74 2c 20 26 66 69 65 6c  fieldList, &fiel
08a0: 64 29 20 29 7b 0a 20 20 20 20 20 20 6e 46 69 65  d) ){.      nFie
08b0: 6c 64 2b 2b 3b 0a 20 20 20 20 7d 0a 20 20 20 20  ld++;.    }.    
08c0: 61 7a 46 69 65 6c 64 20 3d 20 6d 61 6c 6c 6f 63  azField = malloc
08d0: 28 20 73 69 7a 65 6f 66 28 61 7a 46 69 65 6c 64  ( sizeof(azField
08e0: 5b 30 5d 29 2a 6e 46 69 65 6c 64 20 29 3b 0a 20  [0])*nField );. 
08f0: 20 20 20 62 6c 6f 62 5f 72 65 77 69 6e 64 28 26     blob_rewind(&
0900: 66 69 65 6c 64 4c 69 73 74 29 3b 0a 20 20 20 20  fieldList);.    
0910: 69 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65  i = 0;.    while
0920: 28 20 62 6c 6f 62 5f 74 6f 6b 65 6e 28 26 66 69  ( blob_token(&fi
0930: 65 6c 64 4c 69 73 74 2c 20 26 66 69 65 6c 64 29  eldList, &field)
0940: 20 29 7b 0a 20 20 20 20 20 20 61 7a 46 69 65 6c   ){.      azFiel
0950: 64 5b 69 5d 20 3d 20 62 6c 6f 62 5f 74 65 72 6d  d[i] = blob_term
0960: 69 6e 61 74 65 28 26 66 69 65 6c 64 29 3b 0a 20  inate(&field);. 
0970: 20 20 20 7d 0a 20 20 7d 0a 20 20 53 62 53 5f 50     }.  }.  SbS_P
0980: 6f 70 28 70 2c 20 31 29 3b 0a 20 20 72 65 74 75  op(p, 1);.  retu
0990: 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 53  rn 0;.}../*.** S
09a0: 75 62 73 63 72 69 70 74 20 63 6f 6d 6d 61 6e 64  ubscript command
09b0: 3a 20 20 20 20 20 20 49 4e 54 45 47 45 52 20 6e  :      INTEGER n
09c0: 6f 74 20 49 4e 54 45 47 45 52 0a 2a 2f 0a 73 74  ot INTEGER.*/.st
09d0: 61 74 69 63 20 69 6e 74 20 6e 6f 74 43 6d 64 28  atic int notCmd(
09e0: 73 74 72 75 63 74 20 53 75 62 73 63 72 69 70 74  struct Subscript
09f0: 20 2a 70 2c 20 76 6f 69 64 20 2a 70 4e 6f 74 55   *p, void *pNotU
0a00: 73 65 64 29 7b 0a 20 20 69 6e 74 20 6e 3b 0a 20  sed){.  int n;. 
0a10: 20 69 66 28 20 53 62 53 5f 52 65 71 75 69 72 65   if( SbS_Require
0a20: 53 74 61 63 6b 28 70 2c 20 31 29 20 29 20 72 65  Stack(p, 1) ) re
0a30: 74 75 72 6e 20 31 3b 0a 20 20 6e 20 3d 20 53 62  turn 1;.  n = Sb
0a40: 53 5f 53 74 61 63 6b 56 61 6c 75 65 49 6e 74 28  S_StackValueInt(
0a50: 70 2c 20 30 29 3b 0a 20 20 53 62 53 5f 50 6f 70  p, 0);.  SbS_Pop
0a60: 28 70 2c 20 31 29 3b 0a 20 20 53 62 53 5f 50 75  (p, 1);.  SbS_Pu
0a70: 73 68 49 6e 74 28 70 2c 20 21 6e 29 3b 0a 20 20  shInt(p, !n);.  
0a80: 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a  return 0;.}../*.
0a90: 2a 2a 20 53 75 62 73 63 72 69 70 74 20 63 6f 6d  ** Subscript com
0aa0: 6d 61 6e 64 3a 20 20 20 20 20 20 49 4e 54 45 47  mand:      INTEG
0ab0: 45 52 20 49 4e 54 45 47 45 52 20 6d 61 78 20 49  ER INTEGER max I
0ac0: 4e 54 45 47 45 52 0a 2a 2f 0a 73 74 61 74 69 63  NTEGER.*/.static
0ad0: 20 69 6e 74 20 6d 61 78 43 6d 64 28 73 74 72 75   int maxCmd(stru
0ae0: 63 74 20 53 75 62 73 63 72 69 70 74 20 2a 70 2c  ct Subscript *p,
0af0: 20 76 6f 69 64 20 2a 70 4e 6f 74 55 73 65 64 29   void *pNotUsed)
0b00: 7b 0a 20 20 69 6e 74 20 61 2c 20 62 3b 0a 20 20  {.  int a, b;.  
0b10: 69 66 28 20 53 62 53 5f 52 65 71 75 69 72 65 53  if( SbS_RequireS
0b20: 74 61 63 6b 28 70 2c 20 32 29 20 29 20 72 65 74  tack(p, 2) ) ret
0b30: 75 72 6e 20 31 3b 0a 20 20 61 20 3d 20 53 62 53  urn 1;.  a = SbS
0b40: 5f 53 74 61 63 6b 56 61 6c 75 65 49 6e 74 28 70  _StackValueInt(p
0b50: 2c 20 30 29 3b 0a 20 20 62 20 3d 20 53 62 53 5f  , 0);.  b = SbS_
0b60: 53 74 61 63 6b 56 61 6c 75 65 49 6e 74 28 70 2c  StackValueInt(p,
0b70: 20 31 29 3b 0a 20 20 53 62 53 5f 50 6f 70 28 70   1);.  SbS_Pop(p
0b80: 2c 20 32 29 3b 0a 20 20 53 62 53 5f 50 75 73 68  , 2);.  SbS_Push
0b90: 49 6e 74 28 70 2c 20 61 3e 62 20 3f 20 61 20 3a  Int(p, a>b ? a :
0ba0: 20 62 29 3b 0a 20 20 72 65 74 75 72 6e 20 30 3b   b);.  return 0;
0bb0: 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 53 75 62 73 63 72  .}../*.** Subscr
0bc0: 69 70 74 20 63 6f 6d 6d 61 6e 64 3a 20 20 20 20  ipt command:    
0bd0: 20 20 49 4e 54 45 47 45 52 20 49 4e 54 45 47 45    INTEGER INTEGE
0be0: 52 20 61 6e 64 20 49 4e 54 45 47 45 52 0a 2a 2f  R and INTEGER.*/
0bf0: 0a 73 74 61 74 69 63 20 69 6e 74 20 61 6e 64 43  .static int andC
0c00: 6d 64 28 73 74 72 75 63 74 20 53 75 62 73 63 72  md(struct Subscr
0c10: 69 70 74 20 2a 70 2c 20 76 6f 69 64 20 2a 70 4e  ipt *p, void *pN
0c20: 6f 74 55 73 65 64 29 7b 0a 20 20 69 6e 74 20 61  otUsed){.  int a
0c30: 2c 20 62 3b 0a 20 20 69 66 28 20 53 62 53 5f 52  , b;.  if( SbS_R
0c40: 65 71 75 69 72 65 53 74 61 63 6b 28 70 2c 20 32  equireStack(p, 2
0c50: 29 20 29 20 72 65 74 75 72 6e 20 31 3b 0a 20 20  ) ) return 1;.  
0c60: 61 20 3d 20 53 62 53 5f 53 74 61 63 6b 56 61 6c  a = SbS_StackVal
0c70: 75 65 49 6e 74 28 70 2c 20 30 29 3b 0a 20 20 62  ueInt(p, 0);.  b
0c80: 20 3d 20 53 62 53 5f 53 74 61 63 6b 56 61 6c 75   = SbS_StackValu
0c90: 65 49 6e 74 28 70 2c 20 31 29 3b 0a 20 20 53 62  eInt(p, 1);.  Sb
0ca0: 53 5f 50 6f 70 28 70 2c 20 32 29 3b 0a 20 20 53  S_Pop(p, 2);.  S
0cb0: 62 53 5f 50 75 73 68 49 6e 74 28 70 2c 20 61 20  bS_PushInt(p, a 
0cc0: 26 26 20 62 29 3b 0a 20 20 72 65 74 75 72 6e 20  && b);.  return 
0cd0: 30 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 53 75 62 73  0;.}../*.** Subs
0ce0: 63 72 69 70 74 20 63 6f 6d 6d 61 6e 64 3a 20 20  cript command:  
0cf0: 20 20 20 20 46 49 45 4c 44 20 77 69 6b 69 76 69      FIELD wikivi
0d00: 65 77 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74  ew.*/.static int
0d10: 20 77 69 6b 69 56 69 65 77 43 6d 64 28 73 74 72   wikiViewCmd(str
0d20: 75 63 74 20 53 75 62 73 63 72 69 70 74 20 2a 70  uct Subscript *p
0d30: 2c 20 76 6f 69 64 20 2a 70 4e 6f 74 55 73 65 64  , void *pNotUsed
0d40: 29 7b 0a 20 20 69 66 28 20 53 62 53 5f 52 65 71  ){.  if( SbS_Req
0d50: 75 69 72 65 53 74 61 63 6b 28 70 2c 20 32 29 20  uireStack(p, 2) 
0d60: 29 20 72 65 74 75 72 6e 20 31 3b 0a 20 20 0a 20  ) return 1;.  . 
0d70: 20 53 62 53 5f 50 6f 70 28 70 2c 20 31 29 3b 0a   SbS_Pop(p, 1);.
0d80: 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 0a    return 0;.}...
0d90: 2f 2a 0a 2a 2a 20 43 72 65 61 74 65 20 61 6e 20  /*.** Create an 
0da0: 53 75 62 73 63 72 69 70 74 20 69 6e 74 65 72 70  Subscript interp
0db0: 72 65 74 65 72 20 61 70 70 72 6f 70 72 69 61 74  reter appropriat
0dc0: 65 20 66 6f 72 20 70 72 6f 63 65 73 73 69 6e 67  e for processing
0dd0: 0a 2a 2a 20 54 69 63 6b 65 74 20 70 61 67 65 73  .** Ticket pages
0de0: 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64  ..*/.static void
0df0: 20 74 6b 74 5f 73 63 72 65 65 6e 5f 69 6e 69 74   tkt_screen_init
0e00: 28 69 6e 74 20 66 6c 61 67 73 29 7b 0a 20 20 63  (int flags){.  c
0e10: 68 61 72 20 2a 7a 43 6f 6e 66 69 67 3b 0a 20 20  har *zConfig;.  
0e20: 69 6e 74 20 69 3b 0a 20 20 73 74 61 74 69 63 20  int i;.  static 
0e30: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 7b 0a 20  const struct {. 
0e40: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a      const char *
0e50: 7a 4e 61 6d 65 3b 0a 20 20 20 20 20 69 6e 74 20  zName;.     int 
0e60: 28 2a 78 56 65 72 62 29 3b 0a 20 20 20 20 20 69  (*xVerb);.     i
0e70: 6e 74 20 6d 61 73 6b 3b 0a 20 20 7d 20 61 56 65  nt mask;.  } aVe
0e80: 72 62 5b 5d 20 3d 20 7b 0a 20 20 20 20 7b 20 22  rb[] = {.    { "
0e90: 6e 6f 74 22 2c 20 20 20 20 20 20 20 20 20 20 20  not",           
0ea0: 20 20 20 6e 6f 74 43 6d 64 2c 20 20 20 20 20 20     notCmd,      
0eb0: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
0ec0: 4d 5f 45 44 49 54 7c 4d 5f 56 49 45 57 20 7d 2c  M_EDIT|M_VIEW },
0ed0: 0a 20 20 20 20 7b 20 22 6d 61 78 22 2c 20 20 20  .    { "max",   
0ee0: 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 43 6d             maxCm
0ef0: 64 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d,              
0f00: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 7c 4d    M_NEW|M_EDIT|M
0f10: 5f 56 49 45 57 20 7d 2c 0a 20 20 20 20 7b 20 22  _VIEW },.    { "
0f20: 61 6e 64 22 2c 20 20 20 20 20 20 20 20 20 20 20  and",           
0f30: 20 20 20 61 6e 64 43 6d 64 2c 20 20 20 20 20 20     andCmd,      
0f40: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
0f50: 4d 5f 45 44 49 54 7c 4d 5f 56 49 45 57 20 7d 2c  M_EDIT|M_VIEW },
0f60: 0a 20 20 20 20 7b 20 22 77 69 6b 69 76 69 65 77  .    { "wikiview
0f70: 22 2c 20 20 20 20 20 20 20 20 20 77 69 6b 69 56  ",         wikiV
0f80: 69 65 77 43 6d 64 2c 20 20 20 20 20 20 20 20 20  iewCmd,         
0f90: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 7c 4d    M_NEW|M_EDIT|M
0fa0: 5f 56 49 45 57 20 7d 2c 0a 20 20 20 20 7b 20 22  _VIEW },.    { "
0fb0: 74 65 78 74 76 69 65 77 22 2c 20 20 20 20 20 20  textview",      
0fc0: 20 20 20 74 65 78 74 56 69 65 77 43 6d 64 2c 20     textViewCmd, 
0fd0: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
0fe0: 4d 5f 45 44 49 54 7c 4d 5f 56 49 45 57 20 7d 2c  M_EDIT|M_VIEW },
0ff0: 0a 20 20 20 20 7b 20 22 6c 69 6e 65 63 6f 75 6e  .    { "linecoun
1000: 74 22 2c 20 20 20 20 20 20 20 20 6c 69 6e 65 43  t",        lineC
1010: 6f 75 6e 74 43 6d 64 2c 20 20 20 20 20 20 20 20  ountCmd,        
1020: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 7c 4d    M_NEW|M_EDIT|M
1030: 5f 56 49 45 57 20 7d 2c 0a 20 20 20 20 7b 20 22  _VIEW },.    { "
1040: 63 67 69 70 61 72 61 6d 22 2c 20 20 20 20 20 20  cgiparam",      
1050: 20 20 20 63 67 69 50 61 72 61 6d 43 6d 64 2c 20     cgiParamCmd, 
1060: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
1070: 4d 5f 45 44 49 54 7c 4d 5f 56 49 45 57 20 7d 2c  M_EDIT|M_VIEW },
1080: 0a 20 20 20 20 7b 20 22 65 6e 61 62 6c 65 5f 6f  .    { "enable_o
1090: 75 74 70 75 74 22 2c 20 20 20 20 65 6e 61 62 6c  utput",    enabl
10a0: 65 4f 75 74 70 75 74 43 6d 64 2c 20 20 20 20 20  eOutputCmd,     
10b0: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 7c 4d    M_NEW|M_EDIT|M
10c0: 5f 56 49 45 57 20 7d 2c 0a 20 20 20 20 7b 20 22  _VIEW },.    { "
10d0: 69 73 5f 61 6e 6f 6e 22 2c 20 20 20 20 20 20 20  is_anon",       
10e0: 20 20 20 69 73 41 6e 6f 6e 43 6d 64 2c 20 20 20     isAnonCmd,   
10f0: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
1100: 4d 5f 45 44 49 54 7c 4d 5f 56 49 45 57 20 7d 2c  M_EDIT|M_VIEW },
1110: 0a 20 20 20 20 7b 20 22 6f 6b 5f 77 72 74 6b 74  .    { "ok_wrtkt
1120: 22 2c 20 20 20 20 20 20 20 20 20 6f 6b 57 72 54  ",         okWrT
1130: 6b 74 43 6d 64 2c 20 20 20 20 20 20 20 20 20 20  ktCmd,          
1140: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 7c 4d    M_NEW|M_EDIT|M
1150: 5f 56 49 45 57 20 7d 2c 0a 20 20 20 20 7b 20 22  _VIEW },.    { "
1160: 64 65 66 61 75 6c 74 5f 76 61 6c 75 65 22 2c 20  default_value", 
1170: 20 20 20 64 66 6c 74 56 61 6c 75 65 43 6d 64 2c     dfltValueCmd,
1180: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 20            M_NEW 
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c                },
11a0: 0a 20 20 20 20 7b 20 22 74 65 78 74 65 64 69 74  .    { "textedit
11b0: 22 2c 20 20 20 20 20 20 20 20 20 74 65 78 74 45  ",         textE
11c0: 64 69 74 43 6d 64 2c 20 20 20 20 20 20 20 20 20  ditCmd,         
11d0: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 20 20    M_NEW|M_EDIT  
11e0: 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 7b 20 22        },.    { "
11f0: 63 6f 6d 62 6f 62 6f 78 22 2c 20 20 20 20 20 20  combobox",      
1200: 20 20 20 63 6f 6d 62 6f 42 6f 78 43 6d 64 2c 20     comboBoxCmd, 
1210: 20 20 20 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c            M_NEW|
1220: 4d 5f 45 44 49 54 20 20 20 20 20 20 20 20 7d 2c  M_EDIT        },
1230: 0a 20 20 20 20 7b 20 22 6d 75 6c 74 69 6c 69 6e  .    { "multilin
1240: 65 65 64 69 74 22 2c 20 20 20 20 6d 75 6c 74 69  eedit",    multi
1250: 4c 69 6e 65 45 64 69 74 43 6d 64 2c 20 20 20 20  LineEditCmd,    
1260: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 20 20    M_NEW|M_EDIT  
1270: 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 7b 20 22        },.    { "
1280: 6d 75 6c 74 69 6c 69 6e 65 61 70 70 65 6e 64 22  multilineappend"
1290: 2c 20 20 6d 75 6c 74 69 41 70 70 65 6e 64 43 6d  ,  multiAppendCm
12a0: 64 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d,              
12b0: 4d 5f 45 44 49 54 20 20 20 20 20 20 20 20 7d 2c  M_EDIT        },
12c0: 0a 20 20 20 20 7b 20 22 61 75 78 62 75 74 74 6f  .    { "auxbutto
12d0: 6e 22 2c 20 20 20 20 20 20 20 20 61 75 78 42 75  n",        auxBu
12e0: 74 74 6f 6e 43 6d 64 2c 20 20 20 20 20 20 20 20  ttonCmd,        
12f0: 20 20 4d 5f 4e 45 57 7c 4d 5f 45 44 49 54 20 20    M_NEW|M_EDIT  
1300: 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 7b 20 22        },.    { "
1310: 73 75 62 6d 69 74 62 75 74 74 6f 6e 22 2c 20 20  submitbutton",  
1320: 20 20 20 73 75 62 6d 69 74 42 75 74 74 6f 6e 43     submitButtonC
1330: 6d 64 2c 20 20 20 20 20 20 20 4d 5f 4e 45 57 7c  md,       M_NEW|
1340: 4d 5f 45 44 49 54 20 20 20 20 20 20 20 20 7d 2c  M_EDIT        },
1350: 0a 20 20 7d 3b 0a 0a 20 20 70 49 6e 74 65 72 70  .  };..  pInterp
1360: 20 3d 20 53 62 53 5f 43 72 65 61 74 65 28 29 3b   = SbS_Create();
1370: 0a 20 20 53 62 53 5f 41 64 64 56 65 72 62 28 70  .  SbS_AddVerb(p
1380: 49 6e 74 65 72 70 2c 20 22 73 65 74 66 69 65 6c  Interp, "setfiel
1390: 64 73 22 2c 20 73 65 74 46 69 65 6c 64 73 43 6d  ds", setFieldsCm
13a0: 64 2c 20 30 29 3b 0a 20 20 7a 43 6f 6e 66 69 67  d, 0);.  zConfig
13b0: 20 3d 20 64 62 5f 67 65 74 28 22 74 69 63 6b 65   = db_get("ticke
13c0: 74 2d 63 6f 6e 66 69 67 22 2c 22 22 29 3b 0a 20  t-config","");. 
13d0: 20 53 62 53 5f 45 76 61 6c 28 70 49 6e 74 65 72   SbS_Eval(pInter
13e0: 2c 20 7a 43 6f 6e 66 69 67 2c 20 2d 31 29 3b 0a  , zConfig, -1);.
13f0: 20 20 66 6f 72 28 69 3d 30 3b 20 69 3c 73 69 7a    for(i=0; i<siz
1400: 65 6f 66 28 61 56 65 72 62 29 2f 73 69 7a 65 6f  eof(aVerb)/sizeo
1410: 66 28 61 56 65 72 62 5b 30 5d 29 3b 20 69 2b 2b  f(aVerb[0]); i++
1420: 29 7b 0a 20 20 20 20 53 62 53 5f 41 64 64 56 65  ){.    SbS_AddVe
1430: 72 62 28 70 49 6e 74 65 72 70 2c 20 61 56 65 72  rb(pInterp, aVer
1440: 62 5b 69 5d 2e 7a 4e 61 6d 65 2c 20 61 56 65 72  b[i].zName, aVer
1450: 62 5b 69 5d 2e 78 56 65 72 62 2c 20 30 29 3b 0a  b[i].xVerb, 0);.
1460: 20 20 7d 0a 20 20 2f 2a 20 45 78 74 72 61 63 74    }.  /* Extract
1470: 20 61 70 70 72 6f 70 72 69 61 74 65 20 74 65 6d   appropriate tem
1480: 70 6c 61 74 65 20 2a 2f 0a 20 20 72 65 74 75 72  plate */.  retur
1490: 6e 20 70 49 6e 74 65 72 70 3b 0a 7d 0a 0a 2f 2a  n pInterp;.}../*
14a0: 0a 2a 2a 20 50 41 47 45 3a 20 74 6b 74 6e 65 77  .** PAGE: tktnew
14b0: 0a 2a 2f 0a 76 6f 69 64 20 74 6b 74 6e 65 77 5f  .*/.void tktnew_
14c0: 70 61 67 65 28 76 6f 69 64 29 7b 0a 20 20 73 74  page(void){.  st
14d0: 72 75 63 74 20 53 75 62 73 63 72 69 70 74 20 2a  ruct Subscript *
14e0: 70 49 6e 74 65 72 70 3b 0a 20 20 63 6f 6e 73 74  pInterp;.  const
14f0: 20 63 68 61 72 20 2a 7a 50 61 67 65 3b 0a 20 20   char *zPage;.  
1500: 69 6e 74 20 6e 50 61 67 65 3b 0a 0a 20 20 74 6b  int nPage;..  tk
1510: 74 5f 73 63 72 65 65 6e 5f 69 6e 69 74 28 4d 5f  t_screen_init(M_
1520: 4e 45 57 29 3b 0a 20 20 73 74 79 6c 65 5f 68 65  NEW);.  style_he
1530: 61 64 65 72 28 22 4e 65 77 20 54 69 63 6b 65 74  ader("New Ticket
1540: 22 29 3b 0a 20 20 40 20 54 68 69 73 20 77 69 6c  ");.  @ This wil
1550: 6c 20 62 65 63 6f 6d 65 20 61 20 70 61 67 65 20  l become a page 
1560: 66 6f 72 20 65 6e 74 65 72 69 6e 67 20 6e 65 77  for entering new
1570: 20 74 69 63 6b 65 74 73 2e 0a 20 20 73 74 79 6c   tickets..  styl
1580: 65 5f 66 6f 6f 74 65 72 28 29 3b 0a 7d 0a 0a 2f  e_footer();.}../
1590: 2a 0a 2a 2a 20 50 41 47 45 3a 20 74 6b 74 76 69  *.** PAGE: tktvi
15a0: 65 77 0a 2a 2a 20 55 52 4c 3a 20 74 6b 74 76 69  ew.** URL: tktvi
15b0: 65 77 3f 6e 61 6d 65 3d 55 55 49 44 0a 2a 2a 0a  ew?name=UUID.**.
15c0: 2a 2f 0a 76 6f 69 64 20 74 6b 74 6e 65 77 5f 70  */.void tktnew_p
15d0: 61 67 65 28 76 6f 69 64 29 7b 0a 20 20 73 74 72  age(void){.  str
15e0: 75 63 74 20 53 75 62 73 63 72 69 70 74 20 2a 70  uct Subscript *p
15f0: 49 6e 74 65 72 70 3b 0a 20 20 63 6f 6e 73 74 20  Interp;.  const 
1600: 63 68 61 72 20 2a 7a 50 61 67 65 3b 0a 20 20 69  char *zPage;.  i
1610: 6e 74 20 6e 50 61 67 65 3b 0a 0a 20 20 74 6b 74  nt nPage;..  tkt
1620: 5f 73 63 72 65 65 6e 5f 69 6e 69 74 28 4d 5f 4e  _screen_init(M_N
1630: 45 57 29 3b 0a 20 20 73 74 79 6c 65 5f 68 65 61  EW);.  style_hea
1640: 64 65 72 28 22 4e 65 77 20 54 69 63 6b 65 74 22  der("New Ticket"
1650: 29 3b 0a 20 20 40 20 54 68 69 73 20 77 69 6c 6c  );.  @ This will
1660: 20 62 65 63 6f 6d 65 20 61 20 70 61 67 65 20 66   become a page f
1670: 6f 72 20 65 6e 74 65 72 69 6e 67 20 6e 65 77 20  or entering new 
1680: 74 69 63 6b 65 74 73 2e 0a 20 20 73 74 79 6c 65  tickets..  style
1690: 5f 66 6f 6f 74 65 72 28 29 3b 0a 7d 0a 23 65 6e  _footer();.}.#en
16a0: 64 69 66 0a                                      dif.