302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
+
+
+
+
|
const char *zScript;
login_check_credentials();
if( !g.okRdTkt ){ login_needed(); return; }
if( g.okWrTkt ){
style_submenu_element("Edit", "Edit The Ticket", "%s/tktedit?name=%T",
g.zTop, PD("name",""));
}
if( g.okHistory ){
style_submenu_element("History", "History Of This Ticket",
"%s/tkthistory/%T", g.zTop, PD("name",""));
}
style_header("View Ticket");
ticket_init();
initializeVariablesFromDb();
zScript = ticket_viewpage_code();
Th_Render(zScript);
style_footer();
}
|
545
546
547
548
549
550
551
|
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
zErr = mprintf("schema fails to define a valid ticket table "
"containing all required fields");
return zErr;
}
}
return 0;
}
/*
** WEBPAGE: tkthistory
** URL: /tkthistory?name=TICKETUUID
**
** Show the complete change history for a single ticket
*/
void tkthistory_page(void){
Stmt q;
char *zTitle;
char *zSQL;
const char *zUuid;
int tagid;
login_check_credentials();
if( !g.okHistory || !g.okRdTkt ){ login_needed(); return; }
zUuid = PD("name","");
zTitle = mprintf("History Of Ticket %h", zUuid);
style_header(zTitle);
free(zTitle);
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zUuid);
if( tagid==0 ){
@ No such ticket: %h(zUuid)
style_footer();
return;
}
zSQL = mprintf("%s AND event.objid IN "
" (SELECT rid FROM tagxref WHERE tagid=%d) "
"ORDER BY mtime DESC",
timeline_query_for_www(), tagid);
db_prepare(&q, zSQL);
free(zSQL);
www_print_timeline(&q);
db_finalize(&q);
style_footer();
}
|