@@ -445,14 +445,20 @@
445 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zString = P("s"); /* String text search of comment and brief */
446 446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HQuery url; /* URL for various branch links */
447 447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tagid; /* Tag ID */
448 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tmFlags; /* Timeline flags */
449 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* To view the timeline, must have permission to read project data.
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* To view the timeline, must have permission to project history.*/
452 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !g.okRead ){ login_needed(); return; }
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okHistory ){ login_needed(); return; }
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Prevent them from getting an empty list due to security constraints */
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p_rid || d_rid) && !g.okRead ){ login_needed(); return; }
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]=='c' && zType[1]=='i' && !g.okRead){ login_needed(); return; }
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]=='t' && !g.okRdTkt){ login_needed(); return; }
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]=='w' && !g.okRdWiki){ login_needed(); return; }
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
454 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zTagName ){
455 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'", zTagName);
456 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
457 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid = 0;
458 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -467,10 +473,20 @@
467 473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_temp_table();
468 474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql);
469 475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&desc);
470 476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&sql, "INSERT OR IGNORE INTO timeline ", -1);
471 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&sql, timeline_query_for_www(), -1);
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* limit the types of objects found in history */
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okRead ){
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&sql, " AND event.type<>'ci'");
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okRdTkt ){
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&sql, " AND event.type<>'t'");
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okRdWiki ){
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&sql, " AND event.type<>'w'");
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
472 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p_rid || d_rid ){
473 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If p= or d= is present, ignore all other parameters other than n= */
474 490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zUuid;
475 491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int np, nd;
476 492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -636,17 +652,17 @@
636 652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zDate);
637 653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( tagid==0 ){
638 654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zType[0]!='a' ){
639 655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "All Types", "y", "all", 0);
640 656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zType[0]!='w' ){
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]!='w' && g.okRdWiki ){
642 658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "Wiki Only", "y", "w", 0);
643 659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zType[0]!='c' ){
660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]!='c' && g.okRead ){
645 661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "Checkins Only", "y", "ci", 0);
646 662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zType[0]!='t' ){
663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]!='t' && g.okRdTkt ){
648 664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "Tickets Only", "y", "t", 0);
649 665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
650 666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
651 667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nEntry>20 ){
652 668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "20 Events", "n", "20", 0);
653 669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!