@@ -75,29 +75,29 @@
75 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt++;
76 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "<li>");
77 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zTitle[0] == '_' ){
78 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "%s", zTitle);
79 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&ril, "%z%h</a>", href("%R/rptview?rn=%d", rn), zTitle);
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&ril, "%z%h</a>", href("%R/rptview/%d", rn), zTitle);
81 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, " ");
83 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Write && zOwner && zOwner[0] ){
84 84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "(by <i>%h</i>) ", zOwner);
85 85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.TktFmt ){
87 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "[%zcopy</a>] ",
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/rptedit?rn=%d©=1", rn));
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/rptedit/%d?copy=1", rn));
89 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Admin
91 91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (g.perm.WrTkt && zOwner && fossil_strcmp(g.zLogin,zOwner)==0)
92 92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
93 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "[%zedit</a>]",
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/rptedit?rn=%d", rn));
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/rptedit/%d", rn));
95 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.TktFmt ){
97 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "[%zsql</a>]",
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/rptsql?rn=%d", rn));
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/rptsql/%d", rn));
99 99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100 100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(zTitle, defaultReport)==0 ){
101 101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, " ← default");
102 102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103 103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ril, "</li>\n");
@@ -253,10 +253,24 @@
253 253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
254 254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
255 255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
256 256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
257 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Make sure the reportfmt table is up-to-date. It should contain
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the "jx" column (as of version 2.21). If it does not, add it.
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The "jx" column is intended to hold a JSON object containing optional
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key-value pairs.
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void report_update_reportfmt_table(void){
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_table_has_column("repository","reportfmt","jx")==0 ){
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("ALTER TABLE repository.reportfmt"
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ADD COLUMN jx TEXT DEFAULT '{}';");
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
258 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
259 273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
260 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Activate the ticket report query authorizer. Must be followed by an
261 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** eventual call to report_unrestrict_sql().
262 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -321,17 +335,53 @@
321 335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pStmt);
322 336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
323 337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
report_unrestrict_sql();
324 338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zErr;
325 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Get a report number from query parameters. This can be done in various
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ways:
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) (legacy) rn=NNN where NNN is the reportfmt.rn integer primary key.
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) name=NNN where NNN is the rn.
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) name=TAG where TAG matches reportfmt.jx->>tag
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Regardless of how the report is specified, return the primary key, rn.
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return 0 if not found.
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int report_number(void){
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rn;
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName;
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zEnd;
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Case (1) */
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rn = atoi(PD("rn","0"));
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rn>0 ) return rn;
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = P("name");
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName==0 || zName[0]==0 ) return 0;
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_isdigit(zName[0])
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (rn = strtol(zName, &zEnd, 10))>0
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && zEnd[0]==0
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Case 2 */
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rn;
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rn = db_int(0, "SELECT rn FROM reportfmt WHERE jx->>'tag'==%Q", zName);
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rn;
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
326 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
327 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
328 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: rptsql
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** URL: /rptsql?rn=N
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** URL: /rptsql/N
330 380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Display the SQL query used to generate a ticket report. The rn=N
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** query parameter identifies the specific report number to be displayed.
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Display the SQL query used to generate a ticket report. The N value
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is either the report number of a report tag.
333 383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
334 384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void view_see_sql(void){
335 385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rn;
336 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTitle;
337 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSQL;
@@ -342,11 +392,11 @@
342 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
343 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.TktFmt ){
344 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_needed(g.anon.TktFmt);
345 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
346 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rn = atoi(PD("rn","0"));
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rn = report_number();
348 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "SELECT title, sqlcode, owner, cols "
349 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"FROM reportfmt WHERE rn=%d",rn);
350 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_feature("report");
351 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("SQL For Report Format Number %d", rn);
352 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_step(&q)!=SQLITE_ROW ){
@@ -382,39 +432,51 @@
382 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: rptedit
383 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
384 434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create (/rptnew) or edit (/rptedit) a ticket report format.
385 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Query parameters:
386 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** rn=N Ticket report number. (required)
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** name=N Ticket report number or tag.
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rn=N Ticket report number (legacy).
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^^^-- one of the two previous is required.
388 440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** t=TITLE Title of the report format
389 441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** w=USER Owner of the report format
390 442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** s=SQL SQL text used to implement the report
391 443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** k=KEY Color key
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** d=DESC Optional descriptive text
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** m=MIMETYPE Mimetype for DESC
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=TAG Symbolic name for the report
392 447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
393 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void view_edit(void){
394 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rn;
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zTitle;
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTitle; /* Title of the report */
396 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zOwner;
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zClrKey;
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zSQL;
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zErr = 0;
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zOwner; /* Owner of the report */
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zClrKey; /* Color key - used to add colors to lines */
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zSQL; /* The SQL text that gnerates the report */
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zErr = 0; /* An error message */
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDesc; /* Extra descriptive text about the report */
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zMimetype; /* Mimetype for zDesc */
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTag; /* Symbolic name for this report */
401 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int dflt = P("dflt") ? 1 : 0;
402 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
403 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
404 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.TktFmt ){
405 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_needed(g.anon.TktFmt);
406 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
407 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
408 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_feature("report");
409 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*view_add_functions(0);*/
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rn = atoi(PD("rn","0"));
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rn = report_number();
411 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = P("t");
412 470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOwner = PD("w",g.zLogin);
413 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = P("s");
414 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSQL = z ? trim_string(z) : 0;
415 473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zClrKey = trim_string(PD("k",""));
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDesc = trim_string(PD("d",""));
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMimetype = P("m");
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTag = P("x");
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ report_update_reportfmt_table();
416 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rn>0 && P("del2") ){
417 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_verify_csrf_secret();
418 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM reportfmt WHERE rn=%d", rn);
419 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_redirect("reportlist");
420 482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -456,18 +518,26 @@
456 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
457 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = mprintf("There is already another report named \"%h\"", zTitle);
458 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
459 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr==0 ){
460 522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_verify_csrf_secret();
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTag && zTag[0]==0 ) zTag = 0;
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDesc && zDesc[0]==0 ){ zDesc = 0; zMimetype = 0; }
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zMimetype && zMimetype[0]==0 ){ zDesc = 0; zMimetype = 0; }
461 526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rn>0 ){
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("UPDATE reportfmt SET title=%Q, sqlcode=%Q,"
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " owner=%Q, cols=%Q, mtime=now() WHERE rn=%d",
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTitle, zSQL, zOwner, zClrKey, rn);
527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "UPDATE reportfmt SET title=%Q, sqlcode=%Q,"
529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " owner=%Q, cols=%Q, mtime=now(), "
530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " jx=json_patch(jx,json_object('desc',%Q,'descmt',%Q,'tag',%Q))"
531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE rn=%d",
532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTitle, zSQL, zOwner, zClrKey, zDesc, zMimetype, zTag, rn);
465 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("INSERT INTO reportfmt(title,sqlcode,owner,cols,mtime) "
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "VALUES(%Q,%Q,%Q,%Q,now())",
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTitle, zSQL, zOwner, zClrKey);
534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT INTO reportfmt(title,sqlcode,owner,cols,mtime,jx) "
536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "VALUES(%Q,%Q,%Q,%Q,now(),"
537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "json_object('desc',%Q,'descmt',%Q,'tag',%Q))",
538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTitle, zSQL, zOwner, zClrKey, zDesc, zMimetype, zTag);
469 539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rn = db_last_insert_rowid();
470 540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
471 541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dflt ){
472 542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_set("ticket-default-report", zTitle, 0);
473 543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -474,40 +544,55 @@
474 544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *defaultReport = db_get("ticket-default-report", 0);
475 545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(zTitle, defaultReport)==0 ){
476 546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_set("ticket-default-report", "", 0);
477 547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
478 548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_redirect(mprintf("rptview?rn=%d", rn));
549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_redirect(mprintf("rptview/%d", rn));
480 550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
481 551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
482 552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( rn==0 ){
483 553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = "";
484 554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSQL = ticket_report_template();
485 555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zClrKey = ticket_key_template();
486 556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
487 557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q, "SELECT title, sqlcode, owner, cols "
558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int hasJx;
559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDesc = 0;
560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMimetype = 0;
561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTag = 0;
562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q, "SELECT title, sqlcode, owner, cols, json_valid(jx) "
489 563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"FROM reportfmt WHERE rn=%d",rn);
490 564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_step(&q)==SQLITE_ROW ){
491 565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *defaultReport = db_get("ticket-default-report", 0);
492 566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = db_column_malloc(&q, 0);
493 567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSQL = db_column_malloc(&q, 1);
494 568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOwner = db_column_malloc(&q, 2);
495 569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zClrKey = db_column_malloc(&q, 3);
496 570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dflt = fossil_strcmp(zTitle, defaultReport)==0;
571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hasJx = db_column_int(&q, 4);
497 572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
498 573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( hasJx ){
575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q, "SELECT jx->>'desc', jx->>'descmt', jx->>'tag'"
576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM reportfmt WHERE rn=%d", rn);
577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_step(&q)==SQLITE_ROW ){
578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDesc = db_column_malloc(&q, 0);
579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMimetype = db_column_malloc(&q, 1);
580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTag = db_column_malloc(&q, 2);
581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
499 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("copy") ){
500 585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rn = 0;
501 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = mprintf("Copy Of %s", zTitle);
502 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOwner = g.zLogin;
503 588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
504 589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
505 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOwner==0 ) zOwner = g.zLogin;
506 591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Cancel", "reportlist");
507 592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rn>0 ){
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Delete", "rptedit?rn=%d&del1=1", rn);
593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Delete", "rptedit/%d?del1=1", rn);
509 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
510 595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("%s", rn>0 ? "Edit Report Format":"Create New Report Format");
511 596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr ){
512 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <blockquote class="reportError">%h(zErr)</blockquote>
513 598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -521,19 +606,33 @@
521 606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_insert_csrf_secret();
522 607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Admin ){
523 608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p>Report owner:
524 609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="text" name="w" size="20" value="%h(zOwner)" />
525 610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </p>
611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>Tag:
612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="text" name="x" size="20" value="%h(zTag?zTag:"")" />
613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </p>
526 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
527 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="hidden" name="w" value="%h(zOwner)" />
616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTag && zTag[0] ){
617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="hidden" name="x" value="%h(zTag)" />
618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
528 619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
529 620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p>Enter an optional color key in the following box. (If blank, no
530 621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ color key is displayed.) Each line contains the text for a single
531 622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ entry in the key. The first token of each line is the background
532 623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ color for that line.<br />
533 624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea>
534 625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </p>
626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>Optional human-readable description for this report<br />
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ %z(href("%R/markup_help"))Markup style</a>:
629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mimetype_option_menu(zMimetype, "m");
630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <br><textarea aria-label="Description:" name="d" class="wikiedit" \
631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ cols="80" rows="15" wrap="virtual">%h(zDesc)</textarea>
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </p>
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
535 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p><label><input type="checkbox" name="dflt" %s(dflt?"checked":"")> \
536 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ Make this the default report</label></p>
537 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Admin && fossil_strcmp(zOwner,g.zLogin)!=0 ){
538 637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p>This report format is owned by %h(zOwner). You are not allowed
539 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ to change it.</p>
@@ -753,13 +852,13 @@
753 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->zWikiEnd = "";
754 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("plaintext") ){
755 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->wikiFlags |= WIKI_LINKSONLY;
756 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->zWikiStart = "<pre class='verbatim'>";
757 856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->zWikiEnd = "</pre>";
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Formatted", "%R/rptview?rn=%d", pState->rn);
857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Formatted", "%R/rptview/%d", pState->rn);
759 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Plaintext", "%R/rptview?rn=%d&plaintext",
859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Plaintext", "%R/rptview/%d?plaintext",
761 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->rn);
762 861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
763 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
764 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->nCol++;
765 864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1025,29 +1124,34 @@
1025 1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rn, rc;
1026 1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSql;
1027 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTitle;
1028 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zOwner;
1029 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zClrKey;
1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDesc;
1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zMimetype;
1030 1131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tabs;
1031 1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
1032 1133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr1 = 0;
1033 1134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr2 = 0;
1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1035 1136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
1036 1137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.RdTkt ){ login_needed(g.anon.RdTkt); return; }
1138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ report_update_reportfmt_table();
1139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rn = report_number();
1037 1140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tabs = P("tablist")!=0;
1038 1141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT title, sqlcode, owner, cols, rn FROM reportfmt WHERE rn=%d",
1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- atoi(PD("rn","0")));
1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT title, sqlcode, owner, cols, rn, jx->>'desc', jx->>'descmt'"
1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM reportfmt WHERE rn=%d", rn);
1041 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = db_step(&q);
1042 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_ROW ){
1043 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *titleSearch =
1044 1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
defaultTitleSearch==0 || trim_string(defaultTitleSearch)[0]==0 ?
1045 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
P("title") : defaultTitleSearch;
1046 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1047 1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,
1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT title, sqlcode, owner, cols, rn FROM reportfmt WHERE title GLOB %Q",
1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT title, sqlcode, owner, cols, rn, jx->>'desc', jx->>'descmt'"
1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM reportfmt WHERE title GLOB %Q",
1049 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
titleSearch);
1050 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = db_step(&q);
1051 1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1052 1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_ROW ){
1053 1157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
@@ -1059,10 +1163,12 @@
1059 1163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = db_column_malloc(&q, 0);
1060 1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSql = db_column_malloc(&q, 1);
1061 1165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOwner = db_column_malloc(&q, 2);
1062 1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zClrKey = db_column_malloc(&q, 3);
1063 1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rn = db_column_int(&q,4);
1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDesc = db_column_malloc(&q, 5);
1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMimetype = db_column_malloc(&q, 6);
1064 1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1065 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1066 1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("order_by") ){
1067 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1068 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the user wants to do a column sort, wrap the query into a sub
@@ -1094,19 +1200,26 @@
1094 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Raw","%R/%s?tablist=1",g.zPath);
1095 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Reports","%R/reportlist");
1096 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1097 1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Admin
1098 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (g.perm.TktFmt && g.zLogin && fossil_strcmp(g.zLogin,zOwner)==0) ){
1099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Edit", "rptedit?rn=%d", rn);
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Edit", "rptedit/%d", rn);
1100 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1101 1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.TktFmt ){
1102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("SQL", "rptsql?rn=%d",rn);
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("SQL", "rptsql/%d",rn);
1103 1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1104 1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.NewTkt ){
1105 1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("New Ticket", "%R/tktnew");
1106 1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1107 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("%s", zTitle);
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDesc && zMimetype ){
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob src;
1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&src, zDesc, -1);
1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_render_by_mimetype(&src, zMimetype);
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&src);
1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>
1108 1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1109 1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_color_key(zClrKey, 1,
1110 1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"border=\"0\" cellpadding=\"3\" cellspacing=\"0\" class=\"report\"");
1111 1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <table border="1" cellpadding="2" cellspacing="0" class="report sortable"
1112 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ data-column-types='' data-init-sort='0'>
1113 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!