Fossil SCM

Add the ability to cancel existing tags from the web interface, on the "vedit" page. Disable the display of "Leaf" on the timeline for closed leaves.

drh 2009-01-22 13:52 trunk
Commit 73c23a4279b97ad3198f907770eb4efeadc3d104
2 files changed +76 -21 +4 -1
+76 -21
--- src/info.c
+++ src/info.c
@@ -1165,12 +1165,15 @@
11651165
const char *zNewComment;
11661166
const char *zUser;
11671167
const char *zNewUser;
11681168
const char *zColor;
11691169
const char *zNewColor;
1170
+ const char *zNewTagFlag;
11701171
const char *zNewTag;
1172
+ const char *zNewBrFlag;
11711173
const char *zNewBranch;
1174
+ const char *zCloseFlag;
11721175
int fPropagateColor;
11731176
char *zUuid;
11741177
Blob comment;
11751178
Stmt q;
11761179
static const struct SampleColors {
@@ -1188,10 +1191,11 @@
11881191
{ "#ffc0ff", "#ffc0ff" },
11891192
{ "#ffc0d0", "#ffc0d0" },
11901193
{ "#fff0c0", "#fff0c0" },
11911194
{ "#c0c0c0", "#c0c0c0" },
11921195
};
1196
+ int nColor = sizeof(aColor)/sizeof(aColor[0]);
11931197
int i;
11941198
11951199
login_check_credentials();
11961200
if( !g.okWrite ){ login_needed(); return; }
11971201
rid = atoi(PD("r","0"));
@@ -1209,14 +1213,15 @@
12091213
zNewUser = PD("u",zUser);
12101214
zColor = db_text("", "SELECT bgcolor"
12111215
" FROM event WHERE objid=%d", rid);
12121216
zNewColor = PD("clr",zColor);
12131217
fPropagateColor = P("pclr")!=0;
1214
- zNewTag = P("newtag")!=0 ? P("tagname") : 0;
1215
- if( zNewTag && zNewTag[0]==0 ) zNewTag = 0;
1216
- zNewBranch = P("newbr")!=0 ? P("brname") : 0;
1217
- if( zNewBranch && zNewBranch[0]==0 ) zNewBranch = 0;
1218
+ zNewTagFlag = P("newtag") ? " checked" : "";
1219
+ zNewTag = PD("tagname","");
1220
+ zNewBrFlag = P("newbr") ? " checked" : "";
1221
+ zNewBranch = PD("brname","");
1222
+ zCloseFlag = P("close") ? " checked" : "";
12181223
if( P("apply") ){
12191224
Blob ctrl;
12201225
char *zDate;
12211226
int nChng = 0;
12221227
@@ -1242,14 +1247,32 @@
12421247
zNewComment);
12431248
}
12441249
if( strcmp(zUser,zNewUser)!=0 ){
12451250
db_multi_exec("REPLACE INTO newtags VALUES('user','+',%Q)", zNewUser);
12461251
}
1247
- if( zNewTag ){
1252
+ db_prepare(&q,
1253
+ "SELECT tag.tagid, tagname FROM tagxref, tag"
1254
+ " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid",
1255
+ rid
1256
+ );
1257
+ while( db_step(&q)==SQLITE_ROW ){
1258
+ int tagid = db_column_int(&q, 0);
1259
+ const char *zTag = db_column_text(&q, 1);
1260
+ char zLabel[30];
1261
+ sprintf(zLabel, "c%d", tagid);
1262
+ if( P(zLabel) ){
1263
+ db_multi_exec("REPLACE INTO newtags VALUES(%Q,'-',NULL)", zTag);
1264
+ }
1265
+ }
1266
+ db_finalize(&q);
1267
+ if( zCloseFlag[0] ){
1268
+ db_multi_exec("REPLACE INTO newtags VALUES('closed','+',NULL)");
1269
+ }
1270
+ if( zNewTagFlag[0] ){
12481271
db_multi_exec("REPLACE INTO newtags VALUES('sym-%q','+',NULL)", zNewTag);
12491272
}
1250
- if( zNewBranch ){
1273
+ if( zNewBrFlag[0] ){
12511274
db_multi_exec(
12521275
"REPLACE INTO newtags "
12531276
" SELECT tagname, '-', NULL FROM tagxref, tag"
12541277
" WHERE tagxref.rid=%d AND tagtype==2"
12551278
" AND tagname GLOB 'sym-*'"
@@ -1344,12 +1367,19 @@
13441367
@ </td></tr>
13451368
13461369
@ <tr><td align="right" valign="top"><b>Background Color:</b></td>
13471370
@ <td valign="top">
13481371
@ <table border=0 cellpadding=0 cellspacing=1>
1372
+ @ <tr><td colspan="6" align="left">
1373
+ if( fPropagateColor ){
1374
+ @ <input type="checkbox" name="pclr" checked>
1375
+ }else{
1376
+ @ <input type="checkbox" name="pclr">
1377
+ }
1378
+ @ Propagate color to descendants</input></td></tr>
13491379
@ <tr>
1350
- for(i=0; i<sizeof(aColor)/sizeof(aColor[0]); i++){
1380
+ for(i=0; i<nColor; i++){
13511381
if( aColor[i].zColor[0] ){
13521382
@ <td bgcolor="%h(aColor[i].zColor)">
13531383
}else{
13541384
@ <td>
13551385
}
@@ -1357,42 +1387,67 @@
13571387
@ <input type="radio" name="clr" value="%h(aColor[i].zColor)" checked>
13581388
}else{
13591389
@ <input type="radio" name="clr" value="%h(aColor[i].zColor)">
13601390
}
13611391
@ %h(aColor[i].zCName)</input></td>
1362
- }
1363
- @ </tr><tr><td colspan="9" align="left">
1364
- if( fPropagateColor ){
1365
- @ <input type="checkbox" name="pclr" checked>
1366
- }else{
1367
- @ <input type="checkbox" name="pclr">
1368
- }
1369
- @ Propagate color to descendants</input></td></tr>
1392
+ if( (i%6)==5 && i+1<nColor ){
1393
+ @ </tr><tr>
1394
+ }
1395
+ }
1396
+ @ </tr>
13701397
@ </table>
13711398
@ </td></tr>
13721399
13731400
@ <tr><td align="right" valign="top"><b>Tags:</b></td>
13741401
@ <td valign="top">
1375
- @ <input type="checkbox" name="newtag">
1402
+ @ <input type="checkbox" name="newtag"%s(zNewTagFlag)>
13761403
@ Add the following new tag name to this check-in:
1377
- @ <input type="text" width="15" name="tagname">
1404
+ @ <input type="text" width="15" name="tagname" value="%h(zNewTag)">
1405
+ db_prepare(&q,
1406
+ "SELECT tag.tagid, tagname FROM tagxref, tag"
1407
+ " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid"
1408
+ " ORDER BY CASE WHEN tagname GLOB 'sym-*' THEN substr(tagname,5)"
1409
+ " ELSE tagname END",
1410
+ rid
1411
+ );
1412
+ while( db_step(&q)==SQLITE_ROW ){
1413
+ int tagid = db_column_int(&q, 0);
1414
+ const char *zTagName = db_column_text(&q, 1);
1415
+ char zLabel[30];
1416
+ sprintf(zLabel, "c%d", tagid);
1417
+ if( P(zLabel) ){
1418
+ @ <br><input type="checkbox" name="c%d(tagid)" checked>
1419
+ }else{
1420
+ @ <br><input type="checkbox" name="c%d(tagid)">
1421
+ }
1422
+ if( strncmp(zTagName, "sym-", 4)==0 ){
1423
+ @ Cancel tag <b>%h(&zTagName[4])</b>
1424
+ }else{
1425
+ @ Cancel special tag <b>%h(zTagName)</b>
1426
+ }
1427
+ }
1428
+ db_finalize(&q);
13781429
@ </td></tr>
13791430
13801431
if( db_exists("SELECT 1 FROM tagxref WHERE rid=%d AND tagid=%d AND srcid>0",
13811432
rid, TAG_BRANCH)==0 ){
13821433
@ <tr><td align="right" valign="top"><b>Branching:</b></td>
13831434
@ <td valign="top">
1384
- @ <input type="checkbox" name="newbr">
1435
+ @ <input type="checkbox" name="newbr"%s(zNewBrFlag)>
13851436
@ Make this check-in the start of a new branch named:
1386
- @ <input type="text" width="15" name="brname">
1437
+ @ <input type="text" width="15" name="brname" value="%h(zNewBranch)">
13871438
@ </td></tr>
13881439
}
13891440
1390
- if( is_a_leaf(rid) ){
1441
+ if( is_a_leaf(rid)
1442
+ && !db_exists("SELECT 1 FROM tagxref "
1443
+ " WHERE tagid=%d AND rid=%d AND tagtype>0",
1444
+ TAG_CLOSED, rid)
1445
+ ){
13911446
@ <tr><td align="right" valign="top"><b>Leaf Closure:</b></td>
13921447
@ <td valign="top">
1393
- @ <input type="checkbox" name="close">
1448
+ @ <input type="checkbox" name="close"%s(zCloseFlag)>
13941449
@ Mark this leaf as "closed" so that it no longer appears on the
13951450
@ "leaves" page and is no longer labeled as a "<b>Leaf</b>".
13961451
@ </td></tr>
13971452
}
13981453
13991454
--- src/info.c
+++ src/info.c
@@ -1165,12 +1165,15 @@
1165 const char *zNewComment;
1166 const char *zUser;
1167 const char *zNewUser;
1168 const char *zColor;
1169 const char *zNewColor;
 
1170 const char *zNewTag;
 
1171 const char *zNewBranch;
 
1172 int fPropagateColor;
1173 char *zUuid;
1174 Blob comment;
1175 Stmt q;
1176 static const struct SampleColors {
@@ -1188,10 +1191,11 @@
1188 { "#ffc0ff", "#ffc0ff" },
1189 { "#ffc0d0", "#ffc0d0" },
1190 { "#fff0c0", "#fff0c0" },
1191 { "#c0c0c0", "#c0c0c0" },
1192 };
 
1193 int i;
1194
1195 login_check_credentials();
1196 if( !g.okWrite ){ login_needed(); return; }
1197 rid = atoi(PD("r","0"));
@@ -1209,14 +1213,15 @@
1209 zNewUser = PD("u",zUser);
1210 zColor = db_text("", "SELECT bgcolor"
1211 " FROM event WHERE objid=%d", rid);
1212 zNewColor = PD("clr",zColor);
1213 fPropagateColor = P("pclr")!=0;
1214 zNewTag = P("newtag")!=0 ? P("tagname") : 0;
1215 if( zNewTag && zNewTag[0]==0 ) zNewTag = 0;
1216 zNewBranch = P("newbr")!=0 ? P("brname") : 0;
1217 if( zNewBranch && zNewBranch[0]==0 ) zNewBranch = 0;
 
1218 if( P("apply") ){
1219 Blob ctrl;
1220 char *zDate;
1221 int nChng = 0;
1222
@@ -1242,14 +1247,32 @@
1242 zNewComment);
1243 }
1244 if( strcmp(zUser,zNewUser)!=0 ){
1245 db_multi_exec("REPLACE INTO newtags VALUES('user','+',%Q)", zNewUser);
1246 }
1247 if( zNewTag ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1248 db_multi_exec("REPLACE INTO newtags VALUES('sym-%q','+',NULL)", zNewTag);
1249 }
1250 if( zNewBranch ){
1251 db_multi_exec(
1252 "REPLACE INTO newtags "
1253 " SELECT tagname, '-', NULL FROM tagxref, tag"
1254 " WHERE tagxref.rid=%d AND tagtype==2"
1255 " AND tagname GLOB 'sym-*'"
@@ -1344,12 +1367,19 @@
1344 @ </td></tr>
1345
1346 @ <tr><td align="right" valign="top"><b>Background Color:</b></td>
1347 @ <td valign="top">
1348 @ <table border=0 cellpadding=0 cellspacing=1>
 
 
 
 
 
 
 
1349 @ <tr>
1350 for(i=0; i<sizeof(aColor)/sizeof(aColor[0]); i++){
1351 if( aColor[i].zColor[0] ){
1352 @ <td bgcolor="%h(aColor[i].zColor)">
1353 }else{
1354 @ <td>
1355 }
@@ -1357,42 +1387,67 @@
1357 @ <input type="radio" name="clr" value="%h(aColor[i].zColor)" checked>
1358 }else{
1359 @ <input type="radio" name="clr" value="%h(aColor[i].zColor)">
1360 }
1361 @ %h(aColor[i].zCName)</input></td>
1362 }
1363 @ </tr><tr><td colspan="9" align="left">
1364 if( fPropagateColor ){
1365 @ <input type="checkbox" name="pclr" checked>
1366 }else{
1367 @ <input type="checkbox" name="pclr">
1368 }
1369 @ Propagate color to descendants</input></td></tr>
1370 @ </table>
1371 @ </td></tr>
1372
1373 @ <tr><td align="right" valign="top"><b>Tags:</b></td>
1374 @ <td valign="top">
1375 @ <input type="checkbox" name="newtag">
1376 @ Add the following new tag name to this check-in:
1377 @ <input type="text" width="15" name="tagname">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1378 @ </td></tr>
1379
1380 if( db_exists("SELECT 1 FROM tagxref WHERE rid=%d AND tagid=%d AND srcid>0",
1381 rid, TAG_BRANCH)==0 ){
1382 @ <tr><td align="right" valign="top"><b>Branching:</b></td>
1383 @ <td valign="top">
1384 @ <input type="checkbox" name="newbr">
1385 @ Make this check-in the start of a new branch named:
1386 @ <input type="text" width="15" name="brname">
1387 @ </td></tr>
1388 }
1389
1390 if( is_a_leaf(rid) ){
 
 
 
 
1391 @ <tr><td align="right" valign="top"><b>Leaf Closure:</b></td>
1392 @ <td valign="top">
1393 @ <input type="checkbox" name="close">
1394 @ Mark this leaf as "closed" so that it no longer appears on the
1395 @ "leaves" page and is no longer labeled as a "<b>Leaf</b>".
1396 @ </td></tr>
1397 }
1398
1399
--- src/info.c
+++ src/info.c
@@ -1165,12 +1165,15 @@
1165 const char *zNewComment;
1166 const char *zUser;
1167 const char *zNewUser;
1168 const char *zColor;
1169 const char *zNewColor;
1170 const char *zNewTagFlag;
1171 const char *zNewTag;
1172 const char *zNewBrFlag;
1173 const char *zNewBranch;
1174 const char *zCloseFlag;
1175 int fPropagateColor;
1176 char *zUuid;
1177 Blob comment;
1178 Stmt q;
1179 static const struct SampleColors {
@@ -1188,10 +1191,11 @@
1191 { "#ffc0ff", "#ffc0ff" },
1192 { "#ffc0d0", "#ffc0d0" },
1193 { "#fff0c0", "#fff0c0" },
1194 { "#c0c0c0", "#c0c0c0" },
1195 };
1196 int nColor = sizeof(aColor)/sizeof(aColor[0]);
1197 int i;
1198
1199 login_check_credentials();
1200 if( !g.okWrite ){ login_needed(); return; }
1201 rid = atoi(PD("r","0"));
@@ -1209,14 +1213,15 @@
1213 zNewUser = PD("u",zUser);
1214 zColor = db_text("", "SELECT bgcolor"
1215 " FROM event WHERE objid=%d", rid);
1216 zNewColor = PD("clr",zColor);
1217 fPropagateColor = P("pclr")!=0;
1218 zNewTagFlag = P("newtag") ? " checked" : "";
1219 zNewTag = PD("tagname","");
1220 zNewBrFlag = P("newbr") ? " checked" : "";
1221 zNewBranch = PD("brname","");
1222 zCloseFlag = P("close") ? " checked" : "";
1223 if( P("apply") ){
1224 Blob ctrl;
1225 char *zDate;
1226 int nChng = 0;
1227
@@ -1242,14 +1247,32 @@
1247 zNewComment);
1248 }
1249 if( strcmp(zUser,zNewUser)!=0 ){
1250 db_multi_exec("REPLACE INTO newtags VALUES('user','+',%Q)", zNewUser);
1251 }
1252 db_prepare(&q,
1253 "SELECT tag.tagid, tagname FROM tagxref, tag"
1254 " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid",
1255 rid
1256 );
1257 while( db_step(&q)==SQLITE_ROW ){
1258 int tagid = db_column_int(&q, 0);
1259 const char *zTag = db_column_text(&q, 1);
1260 char zLabel[30];
1261 sprintf(zLabel, "c%d", tagid);
1262 if( P(zLabel) ){
1263 db_multi_exec("REPLACE INTO newtags VALUES(%Q,'-',NULL)", zTag);
1264 }
1265 }
1266 db_finalize(&q);
1267 if( zCloseFlag[0] ){
1268 db_multi_exec("REPLACE INTO newtags VALUES('closed','+',NULL)");
1269 }
1270 if( zNewTagFlag[0] ){
1271 db_multi_exec("REPLACE INTO newtags VALUES('sym-%q','+',NULL)", zNewTag);
1272 }
1273 if( zNewBrFlag[0] ){
1274 db_multi_exec(
1275 "REPLACE INTO newtags "
1276 " SELECT tagname, '-', NULL FROM tagxref, tag"
1277 " WHERE tagxref.rid=%d AND tagtype==2"
1278 " AND tagname GLOB 'sym-*'"
@@ -1344,12 +1367,19 @@
1367 @ </td></tr>
1368
1369 @ <tr><td align="right" valign="top"><b>Background Color:</b></td>
1370 @ <td valign="top">
1371 @ <table border=0 cellpadding=0 cellspacing=1>
1372 @ <tr><td colspan="6" align="left">
1373 if( fPropagateColor ){
1374 @ <input type="checkbox" name="pclr" checked>
1375 }else{
1376 @ <input type="checkbox" name="pclr">
1377 }
1378 @ Propagate color to descendants</input></td></tr>
1379 @ <tr>
1380 for(i=0; i<nColor; i++){
1381 if( aColor[i].zColor[0] ){
1382 @ <td bgcolor="%h(aColor[i].zColor)">
1383 }else{
1384 @ <td>
1385 }
@@ -1357,42 +1387,67 @@
1387 @ <input type="radio" name="clr" value="%h(aColor[i].zColor)" checked>
1388 }else{
1389 @ <input type="radio" name="clr" value="%h(aColor[i].zColor)">
1390 }
1391 @ %h(aColor[i].zCName)</input></td>
1392 if( (i%6)==5 && i+1<nColor ){
1393 @ </tr><tr>
1394 }
1395 }
1396 @ </tr>
 
 
 
1397 @ </table>
1398 @ </td></tr>
1399
1400 @ <tr><td align="right" valign="top"><b>Tags:</b></td>
1401 @ <td valign="top">
1402 @ <input type="checkbox" name="newtag"%s(zNewTagFlag)>
1403 @ Add the following new tag name to this check-in:
1404 @ <input type="text" width="15" name="tagname" value="%h(zNewTag)">
1405 db_prepare(&q,
1406 "SELECT tag.tagid, tagname FROM tagxref, tag"
1407 " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid"
1408 " ORDER BY CASE WHEN tagname GLOB 'sym-*' THEN substr(tagname,5)"
1409 " ELSE tagname END",
1410 rid
1411 );
1412 while( db_step(&q)==SQLITE_ROW ){
1413 int tagid = db_column_int(&q, 0);
1414 const char *zTagName = db_column_text(&q, 1);
1415 char zLabel[30];
1416 sprintf(zLabel, "c%d", tagid);
1417 if( P(zLabel) ){
1418 @ <br><input type="checkbox" name="c%d(tagid)" checked>
1419 }else{
1420 @ <br><input type="checkbox" name="c%d(tagid)">
1421 }
1422 if( strncmp(zTagName, "sym-", 4)==0 ){
1423 @ Cancel tag <b>%h(&zTagName[4])</b>
1424 }else{
1425 @ Cancel special tag <b>%h(zTagName)</b>
1426 }
1427 }
1428 db_finalize(&q);
1429 @ </td></tr>
1430
1431 if( db_exists("SELECT 1 FROM tagxref WHERE rid=%d AND tagid=%d AND srcid>0",
1432 rid, TAG_BRANCH)==0 ){
1433 @ <tr><td align="right" valign="top"><b>Branching:</b></td>
1434 @ <td valign="top">
1435 @ <input type="checkbox" name="newbr"%s(zNewBrFlag)>
1436 @ Make this check-in the start of a new branch named:
1437 @ <input type="text" width="15" name="brname" value="%h(zNewBranch)">
1438 @ </td></tr>
1439 }
1440
1441 if( is_a_leaf(rid)
1442 && !db_exists("SELECT 1 FROM tagxref "
1443 " WHERE tagid=%d AND rid=%d AND tagtype>0",
1444 TAG_CLOSED, rid)
1445 ){
1446 @ <tr><td align="right" valign="top"><b>Leaf Closure:</b></td>
1447 @ <td valign="top">
1448 @ <input type="checkbox" name="close"%s(zCloseFlag)>
1449 @ Mark this leaf as "closed" so that it no longer appears on the
1450 @ "leaves" page and is no longer labeled as a "<b>Leaf</b>".
1451 @ </td></tr>
1452 }
1453
1454
+4 -1
--- src/timeline.c
+++ src/timeline.c
@@ -253,10 +253,13 @@
253253
@ datetime(event.mtime,'localtime') AS timestamp,
254254
@ coalesce(ecomment, comment),
255255
@ coalesce(euser, user),
256256
@ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1),
257257
@ (SELECT count(*) FROM plink WHERE cid=blob.rid),
258
+ @ NOT EXISTS(SELECT 1 FROM tagxref
259
+ @ WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)
260
+ @ AND
258261
@ NOT EXISTS(SELECT 1 FROM plink
259262
@ WHERE pid=blob.rid
260263
@ AND coalesce((SELECT value FROM tagxref
261264
@ WHERE tagid=%d AND rid=plink.pid), 'trunk')
262265
@ = coalesce((SELECT value FROM tagxref
@@ -268,11 +271,11 @@
268271
@ AND tagxref.rid=blob.rid AND tagxref.tagtype>0)
269272
@ FROM event JOIN blob
270273
@ WHERE blob.rid=event.objid
271274
;
272275
if( zBase==0 ){
273
- zBase = mprintf(zBaseSql, TAG_BRANCH, TAG_BRANCH);
276
+ zBase = mprintf(zBaseSql, TAG_CLOSED, TAG_BRANCH, TAG_BRANCH);
274277
}
275278
return zBase;
276279
}
277280
278281
/*
279282
--- src/timeline.c
+++ src/timeline.c
@@ -253,10 +253,13 @@
253 @ datetime(event.mtime,'localtime') AS timestamp,
254 @ coalesce(ecomment, comment),
255 @ coalesce(euser, user),
256 @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1),
257 @ (SELECT count(*) FROM plink WHERE cid=blob.rid),
 
 
 
258 @ NOT EXISTS(SELECT 1 FROM plink
259 @ WHERE pid=blob.rid
260 @ AND coalesce((SELECT value FROM tagxref
261 @ WHERE tagid=%d AND rid=plink.pid), 'trunk')
262 @ = coalesce((SELECT value FROM tagxref
@@ -268,11 +271,11 @@
268 @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0)
269 @ FROM event JOIN blob
270 @ WHERE blob.rid=event.objid
271 ;
272 if( zBase==0 ){
273 zBase = mprintf(zBaseSql, TAG_BRANCH, TAG_BRANCH);
274 }
275 return zBase;
276 }
277
278 /*
279
--- src/timeline.c
+++ src/timeline.c
@@ -253,10 +253,13 @@
253 @ datetime(event.mtime,'localtime') AS timestamp,
254 @ coalesce(ecomment, comment),
255 @ coalesce(euser, user),
256 @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim=1),
257 @ (SELECT count(*) FROM plink WHERE cid=blob.rid),
258 @ NOT EXISTS(SELECT 1 FROM tagxref
259 @ WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)
260 @ AND
261 @ NOT EXISTS(SELECT 1 FROM plink
262 @ WHERE pid=blob.rid
263 @ AND coalesce((SELECT value FROM tagxref
264 @ WHERE tagid=%d AND rid=plink.pid), 'trunk')
265 @ = coalesce((SELECT value FROM tagxref
@@ -268,11 +271,11 @@
271 @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0)
272 @ FROM event JOIN blob
273 @ WHERE blob.rid=event.objid
274 ;
275 if( zBase==0 ){
276 zBase = mprintf(zBaseSql, TAG_CLOSED, TAG_BRANCH, TAG_BRANCH);
277 }
278 return zBase;
279 }
280
281 /*
282

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button