@@ -179,11 +179,11 @@
179 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. Date/Time
180 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3. Comment string
181 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4. User
182 182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 5. True if is a leaf
183 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 6. background color
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 7. type ("ci", "w", "t", "e", "div")
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 7. type ("ci", "w", "t", "e", "g", "div")
185 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 8. list of symbolic tags.
186 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 9. tagid for ticket or wiki or event
187 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 10. Short comment to user for repeated tickets and wiki
188 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
189 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void www_print_timeline(
@@ -316,10 +316,13 @@
316 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@</td>
317 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBgClr && zBgClr[0] ){
318 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td class="timelineTableCell" style="background-color: %h(zBgClr);">
319 319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
320 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td class="timelineTableCell">
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pGraph && zType[0]!='c' ){
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ •
321 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
322 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zType[0]=='c' ){
323 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hyperlink_to_uuid(zUuid);
324 327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isLeaf ){
325 328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_exists("SELECT 1 FROM tagxref"
@@ -892,15 +895,23 @@
892 895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int from_rid = name_to_typed_rid(P("from"),"ci"); /* from= for paths */
893 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int to_rid = name_to_typed_rid(P("to"),"ci"); /* to= for path timelines */
894 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int noMerge = P("nomerge")!=0; /* Do not follow merge links */
895 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int me_rid = name_to_typed_rid(P("me"),"ci"); /* me= for common ancestory */
896 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int you_rid = name_to_typed_rid(P("you"),"ci");/* you= for common ancst */
900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pd_rid;
897 901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
898 902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* To view the timeline, must have permission to read project data.
899 903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pd_rid = name_to_typed_rid(P("dp"),"ci");
905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pd_rid ){
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p_rid = d_rid = pd_rid;
907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
900 908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !g.perm.Read && !g.perm.RdTkt && !g.perm.RdWiki ){ login_needed(); return; }
909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.perm.Read && !g.perm.RdTkt && !g.perm.RdWiki ){
910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed();
911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
902 913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zTagName && g.perm.Read ){
903 914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'", zTagName);
904 915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zThisTag = zTagName;
905 916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zBrName && g.perm.Read ){
906 917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",zBrName);
@@ -1075,19 +1086,20 @@
1075 1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1076 1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (zType[0]=='w' && !g.perm.RdWiki)
1077 1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (zType[0]=='t' && !g.perm.RdTkt)
1078 1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (zType[0]=='e' && !g.perm.RdWiki)
1079 1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (zType[0]=='c' && !g.perm.Read)
1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (zType[0]=='g' && !g.perm.Read)
1080 1092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1081 1093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zType = "all";
1082 1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1083 1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zType[0]=='a' ){
1084 1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Read || !g.perm.RdWiki || !g.perm.RdTkt ){
1085 1097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cSep = '(';
1086 1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&sql, " AND event.type IN ");
1087 1099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Read ){
1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&sql, "%c'ci'", cSep);
1100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&sql, "%c'ci','g'", cSep);
1089 1101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cSep = ',';
1090 1102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1091 1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.RdWiki ){
1092 1104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&sql, "%c'w','e'", cSep);
1093 1105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cSep = ',';
@@ -1107,10 +1119,12 @@
1107 1119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEType = "wiki edit";
1108 1120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zType[0]=='t' ){
1109 1121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEType = "ticket change";
1110 1122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zType[0]=='e' ){
1111 1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEType = "event";
1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zType[0]=='g' ){
1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zEType = "tag";
1112 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1113 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1114 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zUser ){
1115 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&sql, " AND (event.user=%Q OR event.euser=%Q)",
1116 1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUser, zUser);
@@ -1226,10 +1240,13 @@
1226 1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "Tickets Only", "y", "t", 0);
1227 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1228 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zType[0]!='e' && g.perm.RdWiki ){
1229 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "Events Only", "y", "e", 0);
1230 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]!='g' && g.perm.Read ){
1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ timeline_submenu(&url, "Tags Only", "y", "g", 0);
1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1231 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1232 1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nEntry>20 ){
1233 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timeline_submenu(&url, "20 Entries", "n", "20", 0);
1234 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1235 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nEntry<200 ){
1236 1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!