Fossil SCM
Use long UUID's in more hyperlinks, without affecting UI display.
Commit
b0d9468bff8fbfca8dbb883622915840453c68e3
Parent
c94df7244a96c67…
2 files changed
+6
-10
+28
-28
+6
-10
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -374,11 +374,11 @@ | ||
| 374 | 374 | } |
| 375 | 375 | blob_reset(&sql); |
| 376 | 376 | blob_zero(&title); |
| 377 | 377 | if( baseCheckin ){ |
| 378 | 378 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 379 | - char *zLink = href("%R/info/%S", zUuid); | |
| 379 | + char *zLink = href("%R/info/%s", zUuid); | |
| 380 | 380 | blob_appendf(&title, "Ancestors of file "); |
| 381 | 381 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 382 | 382 | blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid); |
| 383 | 383 | fossil_free(zUuid); |
| 384 | 384 | }else{ |
| @@ -404,12 +404,10 @@ | ||
| 404 | 404 | const char *zBr = db_column_text(&q, 9); |
| 405 | 405 | int fmid = db_column_int(&q, 10); |
| 406 | 406 | int pfnid = db_column_int(&q, 11); |
| 407 | 407 | int gidx; |
| 408 | 408 | char zTime[10]; |
| 409 | - char zShort[20]; | |
| 410 | - char zShortCkin[20]; | |
| 411 | 409 | if( zBr==0 ) zBr = "trunk"; |
| 412 | 410 | if( uBg ){ |
| 413 | 411 | zBgClr = hash_color(zUser); |
| 414 | 412 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 415 | 413 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -430,12 +428,10 @@ | ||
| 430 | 428 | if( zBgClr && zBgClr[0] ){ |
| 431 | 429 | @ <td class="timelineTableCell" style="background-color: %h(zBgClr);"> |
| 432 | 430 | }else{ |
| 433 | 431 | @ <td class="timelineTableCell"> |
| 434 | 432 | } |
| 435 | - sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid); | |
| 436 | - sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin); | |
| 437 | 433 | if( zUuid ){ |
| 438 | 434 | if( fpid==0 ){ |
| 439 | 435 | @ <b>Added</b> |
| 440 | 436 | }else if( pfnid ){ |
| 441 | 437 | char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d", |
| @@ -458,23 +454,23 @@ | ||
| 458 | 454 | fossil_free(zNewName); |
| 459 | 455 | }else{ |
| 460 | 456 | @ <b>Deleted</b> by check-in |
| 461 | 457 | } |
| 462 | 458 | } |
| 463 | - hyperlink_to_uuid(zShortCkin); | |
| 459 | + hyperlink_to_uuid(zCkin); | |
| 464 | 460 | @ %w(zCom) (user: |
| 465 | 461 | hyperlink_to_user(zUser, zDate, ""); |
| 466 | 462 | @ branch: %h(zBr)) |
| 467 | 463 | if( g.perm.Hyperlink && zUuid ){ |
| 468 | 464 | const char *z = zFilename; |
| 469 | - @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) | |
| 465 | + @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin)) | |
| 470 | 466 | @ [annotate]</a> |
| 471 | - @ %z(href("%R/blame?checkin=%S&filename=%h",zCkin,z)) | |
| 467 | + @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin)) | |
| 472 | 468 | @ [blame]</a> |
| 473 | - @ %z(href("%R/timeline?n=200&uf=%S",zUuid))[checkins using]</a> | |
| 469 | + @ %z(href("%R/timeline?n=200&uf=%s",zUuid))[checkins using]</a> | |
| 474 | 470 | if( fpid ){ |
| 475 | - @ %z(href("%R/fdiff?v1=%S&v2=%S&sbs=1",zPUuid,zUuid))[diff]</a> | |
| 471 | + @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a> | |
| 476 | 472 | } |
| 477 | 473 | } |
| 478 | 474 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 479 | 475 | int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid); |
| 480 | 476 | int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid); |
| 481 | 477 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -374,11 +374,11 @@ | |
| 374 | } |
| 375 | blob_reset(&sql); |
| 376 | blob_zero(&title); |
| 377 | if( baseCheckin ){ |
| 378 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 379 | char *zLink = href("%R/info/%S", zUuid); |
| 380 | blob_appendf(&title, "Ancestors of file "); |
| 381 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 382 | blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid); |
| 383 | fossil_free(zUuid); |
| 384 | }else{ |
| @@ -404,12 +404,10 @@ | |
| 404 | const char *zBr = db_column_text(&q, 9); |
| 405 | int fmid = db_column_int(&q, 10); |
| 406 | int pfnid = db_column_int(&q, 11); |
| 407 | int gidx; |
| 408 | char zTime[10]; |
| 409 | char zShort[20]; |
| 410 | char zShortCkin[20]; |
| 411 | if( zBr==0 ) zBr = "trunk"; |
| 412 | if( uBg ){ |
| 413 | zBgClr = hash_color(zUser); |
| 414 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 415 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -430,12 +428,10 @@ | |
| 430 | if( zBgClr && zBgClr[0] ){ |
| 431 | @ <td class="timelineTableCell" style="background-color: %h(zBgClr);"> |
| 432 | }else{ |
| 433 | @ <td class="timelineTableCell"> |
| 434 | } |
| 435 | sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid); |
| 436 | sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin); |
| 437 | if( zUuid ){ |
| 438 | if( fpid==0 ){ |
| 439 | @ <b>Added</b> |
| 440 | }else if( pfnid ){ |
| 441 | char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d", |
| @@ -458,23 +454,23 @@ | |
| 458 | fossil_free(zNewName); |
| 459 | }else{ |
| 460 | @ <b>Deleted</b> by check-in |
| 461 | } |
| 462 | } |
| 463 | hyperlink_to_uuid(zShortCkin); |
| 464 | @ %w(zCom) (user: |
| 465 | hyperlink_to_user(zUser, zDate, ""); |
| 466 | @ branch: %h(zBr)) |
| 467 | if( g.perm.Hyperlink && zUuid ){ |
| 468 | const char *z = zFilename; |
| 469 | @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) |
| 470 | @ [annotate]</a> |
| 471 | @ %z(href("%R/blame?checkin=%S&filename=%h",zCkin,z)) |
| 472 | @ [blame]</a> |
| 473 | @ %z(href("%R/timeline?n=200&uf=%S",zUuid))[checkins using]</a> |
| 474 | if( fpid ){ |
| 475 | @ %z(href("%R/fdiff?v1=%S&v2=%S&sbs=1",zPUuid,zUuid))[diff]</a> |
| 476 | } |
| 477 | } |
| 478 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 479 | int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid); |
| 480 | int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid); |
| 481 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -374,11 +374,11 @@ | |
| 374 | } |
| 375 | blob_reset(&sql); |
| 376 | blob_zero(&title); |
| 377 | if( baseCheckin ){ |
| 378 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 379 | char *zLink = href("%R/info/%s", zUuid); |
| 380 | blob_appendf(&title, "Ancestors of file "); |
| 381 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 382 | blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid); |
| 383 | fossil_free(zUuid); |
| 384 | }else{ |
| @@ -404,12 +404,10 @@ | |
| 404 | const char *zBr = db_column_text(&q, 9); |
| 405 | int fmid = db_column_int(&q, 10); |
| 406 | int pfnid = db_column_int(&q, 11); |
| 407 | int gidx; |
| 408 | char zTime[10]; |
| 409 | if( zBr==0 ) zBr = "trunk"; |
| 410 | if( uBg ){ |
| 411 | zBgClr = hash_color(zUser); |
| 412 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 413 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -430,12 +428,10 @@ | |
| 428 | if( zBgClr && zBgClr[0] ){ |
| 429 | @ <td class="timelineTableCell" style="background-color: %h(zBgClr);"> |
| 430 | }else{ |
| 431 | @ <td class="timelineTableCell"> |
| 432 | } |
| 433 | if( zUuid ){ |
| 434 | if( fpid==0 ){ |
| 435 | @ <b>Added</b> |
| 436 | }else if( pfnid ){ |
| 437 | char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d", |
| @@ -458,23 +454,23 @@ | |
| 454 | fossil_free(zNewName); |
| 455 | }else{ |
| 456 | @ <b>Deleted</b> by check-in |
| 457 | } |
| 458 | } |
| 459 | hyperlink_to_uuid(zCkin); |
| 460 | @ %w(zCom) (user: |
| 461 | hyperlink_to_user(zUser, zDate, ""); |
| 462 | @ branch: %h(zBr)) |
| 463 | if( g.perm.Hyperlink && zUuid ){ |
| 464 | const char *z = zFilename; |
| 465 | @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin)) |
| 466 | @ [annotate]</a> |
| 467 | @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin)) |
| 468 | @ [blame]</a> |
| 469 | @ %z(href("%R/timeline?n=200&uf=%s",zUuid))[checkins using]</a> |
| 470 | if( fpid ){ |
| 471 | @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a> |
| 472 | } |
| 473 | } |
| 474 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 475 | int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid); |
| 476 | int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid); |
| 477 |
+28
-28
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -399,11 +399,11 @@ | ||
| 399 | 399 | } |
| 400 | 400 | if( diffFlags ){ |
| 401 | 401 | append_diff(zOld, zNew, diffFlags, pRe); |
| 402 | 402 | }else if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 403 | 403 | @ |
| 404 | - @ %z(href("%R/fdiff?v1=%S&v2=%S&sbs=1",zOld,zNew))[diff]</a> | |
| 404 | + @ %z(href("%R/fdiff?v1=%s&v2=%s&sbs=1",zOld,zNew))[diff]</a> | |
| 405 | 405 | } |
| 406 | 406 | } |
| 407 | 407 | } |
| 408 | 408 | |
| 409 | 409 | /* |
| @@ -612,19 +612,19 @@ | ||
| 612 | 612 | if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){ |
| 613 | 613 | zPJ[jj] = '_'; |
| 614 | 614 | } |
| 615 | 615 | } |
| 616 | 616 | @ <tr><th>Timelines:</th><td> |
| 617 | - @ %z(href("%R/timeline?f=%S&unhide",zUuid))family</a> | |
| 617 | + @ %z(href("%R/timeline?f=%s&unhide",zUuid))family</a> | |
| 618 | 618 | if( zParent ){ |
| 619 | - @ | %z(href("%R/timeline?p=%S&unhide",zUuid))ancestors</a> | |
| 619 | + @ | %z(href("%R/timeline?p=%s&unhide",zUuid))ancestors</a> | |
| 620 | 620 | } |
| 621 | 621 | if( !isLeaf ){ |
| 622 | - @ | %z(href("%R/timeline?d=%S&unhide",zUuid))descendants</a> | |
| 622 | + @ | %z(href("%R/timeline?d=%s&unhide",zUuid))descendants</a> | |
| 623 | 623 | } |
| 624 | 624 | if( zParent && !isLeaf ){ |
| 625 | - @ | %z(href("%R/timeline?dp=%S&unhide",zUuid))both</a> | |
| 625 | + @ | %z(href("%R/timeline?dp=%s&unhide",zUuid))both</a> | |
| 626 | 626 | } |
| 627 | 627 | db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag " |
| 628 | 628 | " WHERE rid=%d AND tagtype>0 " |
| 629 | 629 | " AND tag.tagid=tagxref.tagid " |
| 630 | 630 | " AND +tag.tagname GLOB 'sym-*'", rid); |
| @@ -647,16 +647,16 @@ | ||
| 647 | 647 | fossil_free(zUrl); |
| 648 | 648 | } |
| 649 | 649 | @ </td></tr> |
| 650 | 650 | @ <tr><th>Other Links:</th> |
| 651 | 651 | @ <td> |
| 652 | - @ %z(href("%R/tree?ci=%S",zUuid))files</a> | |
| 653 | - @ | %z(href("%R/fileage?name=%S",zUuid))file ages</a> | |
| 654 | - @ | %z(href("%R/tree?ci=%S&nofiles",zUuid))folders</a> | |
| 655 | - @ | %z(href("%R/artifact/%S",zUuid))manifest</a> | |
| 652 | + @ %z(href("%R/tree?ci=%s",zUuid))files</a> | |
| 653 | + @ | %z(href("%R/fileage?name=%s",zUuid))file ages</a> | |
| 654 | + @ | %z(href("%R/tree?ci=%s&nofiles",zUuid))folders</a> | |
| 655 | + @ | %z(href("%R/artifact/%s",zUuid))manifest</a> | |
| 656 | 656 | if( g.perm.Write ){ |
| 657 | - @ | %z(href("%R/ci_edit?r=%S",zUuid))edit</a> | |
| 657 | + @ | %z(href("%R/ci_edit?r=%s",zUuid))edit</a> | |
| 658 | 658 | } |
| 659 | 659 | @ </td> |
| 660 | 660 | @ </tr> |
| 661 | 661 | blob_reset(&projName); |
| 662 | 662 | } |
| @@ -699,11 +699,11 @@ | ||
| 699 | 699 | @ Show Unified Diffs</a> |
| 700 | 700 | @ %z(xhref("class='button'","%R/%s/%T?sbs=1",zPage,zName)) |
| 701 | 701 | @ Show Side-by-Side Diffs</a> |
| 702 | 702 | } |
| 703 | 703 | if( zParent ){ |
| 704 | - @ %z(xhref("class='button'","%R/vpatch?from=%S&to=%S",zParent,zUuid)) | |
| 704 | + @ %z(xhref("class='button'","%R/vpatch?from=%s&to=%s",zParent,zUuid)) | |
| 705 | 705 | @ Patch</a> |
| 706 | 706 | } |
| 707 | 707 | @</div> |
| 708 | 708 | if( pRe ){ |
| 709 | 709 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| @@ -770,11 +770,11 @@ | ||
| 770 | 770 | } |
| 771 | 771 | } |
| 772 | 772 | style_header("Update of \"%h\"", pWiki->zWikiTitle); |
| 773 | 773 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 774 | 774 | zDate = db_text(0, "SELECT datetime(%.17g)", pWiki->rDate); |
| 775 | - style_submenu_element("Raw", "Raw", "artifact/%S", zUuid); | |
| 775 | + style_submenu_element("Raw", "Raw", "artifact/%s", zUuid); | |
| 776 | 776 | style_submenu_element("History", "History", "whistory?name=%t", |
| 777 | 777 | pWiki->zWikiTitle); |
| 778 | 778 | style_submenu_element("Page", "Page", "wiki?name=%t", |
| 779 | 779 | pWiki->zWikiTitle); |
| 780 | 780 | login_anonymous_available(); |
| @@ -798,11 +798,11 @@ | ||
| 798 | 798 | if( pWiki->nParent>0 ){ |
| 799 | 799 | int i; |
| 800 | 800 | @ <tr><th>Parent%s(pWiki->nParent==1?"":"s"):</th><td> |
| 801 | 801 | for(i=0; i<pWiki->nParent; i++){ |
| 802 | 802 | char *zParent = pWiki->azParent[i]; |
| 803 | - @ %z(href("info/%S",zParent))%s(zParent)</a> | |
| 803 | + @ %z(href("info/%s",zParent))%s(zParent)</a> | |
| 804 | 804 | } |
| 805 | 805 | @ </td></tr> |
| 806 | 806 | } |
| 807 | 807 | @ </table> |
| 808 | 808 | |
| @@ -1188,14 +1188,14 @@ | ||
| 1188 | 1188 | @ on branch %z(href("%R/timeline?r=%T",zBr))%h(zBr)</a> |
| 1189 | 1189 | } |
| 1190 | 1190 | @ - %!w(zCom) (user: |
| 1191 | 1191 | hyperlink_to_user(zUser,zDate,")"); |
| 1192 | 1192 | if( g.perm.Hyperlink ){ |
| 1193 | - @ %z(href("%R/finfo?name=%T&ci=%S",zName,zVers))[ancestry]</a> | |
| 1194 | - @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) | |
| 1193 | + @ %z(href("%R/finfo?name=%T&ci=%s",zName,zVers))[ancestry]</a> | |
| 1194 | + @ %z(href("%R/annotate?checkin=%s&filename=%T",zVers,zName)) | |
| 1195 | 1195 | @ [annotate]</a> |
| 1196 | - @ %z(href("%R/blame?checkin=%S&filename=%T",zVers,zName)) | |
| 1196 | + @ %z(href("%R/blame?filename=%T&checkin=%s",zName,zVers)) | |
| 1197 | 1197 | @ [blame]</a> |
| 1198 | 1198 | } |
| 1199 | 1199 | cnt++; |
| 1200 | 1200 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1201 | 1201 | blob_append(pDownloadName, zName, -1); |
| @@ -1302,11 +1302,11 @@ | ||
| 1302 | 1302 | @ Attachment "%h(zFilename)" to |
| 1303 | 1303 | } |
| 1304 | 1304 | objType |= OBJTYPE_ATTACHMENT; |
| 1305 | 1305 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| 1306 | 1306 | if( g.perm.Hyperlink && g.perm.RdTkt ){ |
| 1307 | - @ ticket [%z(href("%R/tktview?name=%S",zTarget))%S(zTarget)</a>] | |
| 1307 | + @ ticket [%z(href("%R/tktview?name=%s",zTarget))%S(zTarget)</a>] | |
| 1308 | 1308 | }else{ |
| 1309 | 1309 | @ ticket [%S(zTarget)] |
| 1310 | 1310 | } |
| 1311 | 1311 | }else{ |
| 1312 | 1312 | if( g.perm.Hyperlink && g.perm.RdWiki ){ |
| @@ -1328,11 +1328,11 @@ | ||
| 1328 | 1328 | @ Control artifact. |
| 1329 | 1329 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1330 | 1330 | blob_appendf(pDownloadName, "%.10s.txt", zUuid); |
| 1331 | 1331 | } |
| 1332 | 1332 | }else if( linkToView && g.perm.Hyperlink ){ |
| 1333 | - @ %z(href("%R/artifact/%S",zUuid))[view]</a> | |
| 1333 | + @ %z(href("%R/artifact/%s",zUuid))[view]</a> | |
| 1334 | 1334 | } |
| 1335 | 1335 | return objType; |
| 1336 | 1336 | } |
| 1337 | 1337 | |
| 1338 | 1338 | |
| @@ -1404,17 +1404,17 @@ | ||
| 1404 | 1404 | g.zTop, P("v1"), P("v2"), zW); |
| 1405 | 1405 | } |
| 1406 | 1406 | |
| 1407 | 1407 | if( P("smhdr")!=0 ){ |
| 1408 | 1408 | @ <h2>Differences From Artifact |
| 1409 | - @ %z(href("%R/artifact/%S",zV1))[%S(zV1)]</a> To | |
| 1410 | - @ %z(href("%R/artifact/%S",zV2))[%S(zV2)]</a>.</h2> | |
| 1409 | + @ %z(href("%R/artifact/%s",zV1))[%S(zV1)]</a> To | |
| 1410 | + @ %z(href("%R/artifact/%s",zV2))[%S(zV2)]</a>.</h2> | |
| 1411 | 1411 | }else{ |
| 1412 | 1412 | @ <h2>Differences From |
| 1413 | - @ Artifact %z(href("%R/artifact/%S",zV1))[%S(zV1)]</a>:</h2> | |
| 1413 | + @ Artifact %z(href("%R/artifact/%s",zV1))[%S(zV1)]</a>:</h2> | |
| 1414 | 1414 | object_description(v1, 0, 0); |
| 1415 | - @ <h2>To Artifact %z(href("%R/artifact/%S",zV2))[%S(zV2)]</a>:</h2> | |
| 1415 | + @ <h2>To Artifact %z(href("%R/artifact/%s",zV2))[%S(zV2)]</a>:</h2> | |
| 1416 | 1416 | object_description(v2, 0, 0); |
| 1417 | 1417 | } |
| 1418 | 1418 | if( pRe ){ |
| 1419 | 1419 | @ <b>Only differences that match regular expression "%h(zRe)" |
| 1420 | 1420 | @ are shown.</b> |
| @@ -1761,13 +1761,13 @@ | ||
| 1761 | 1761 | @ <pre> |
| 1762 | 1762 | @ %h(z) |
| 1763 | 1763 | @ </pre> |
| 1764 | 1764 | } |
| 1765 | 1765 | }else if( strncmp(zMime, "image/", 6)==0 ){ |
| 1766 | - @ <img src="%R/raw/%S(zUuid)?m=%s(zMime)" /> | |
| 1766 | + @ <img src="%R/raw/%s(zUuid)?m=%s(zMime)" /> | |
| 1767 | 1767 | style_submenu_element("Image", "Image", |
| 1768 | - "%R/raw/%S?m=%s", zUuid, zMime); | |
| 1768 | + "%R/raw/%s?m=%s", zUuid, zMime); | |
| 1769 | 1769 | }else{ |
| 1770 | 1770 | @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i> |
| 1771 | 1771 | } |
| 1772 | 1772 | @ </blockquote> |
| 1773 | 1773 | } |
| @@ -1819,19 +1819,19 @@ | ||
| 1819 | 1819 | } |
| 1820 | 1820 | zTktTitle = db_table_has_column( "ticket", "title" ) |
| 1821 | 1821 | ? db_text("(No title)", "SELECT title FROM ticket WHERE tkt_uuid=%Q", zTktName) |
| 1822 | 1822 | : 0; |
| 1823 | 1823 | style_header("Ticket Change Details"); |
| 1824 | - style_submenu_element("Raw", "Raw", "%R/artifact/%S", zUuid); | |
| 1824 | + style_submenu_element("Raw", "Raw", "%R/artifact/%s", zUuid); | |
| 1825 | 1825 | style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName); |
| 1826 | 1826 | style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName); |
| 1827 | 1827 | style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName); |
| 1828 | 1828 | if( P("plaintext") ){ |
| 1829 | - style_submenu_element("Formatted", "Formatted", "%R/info/%S", zUuid); | |
| 1829 | + style_submenu_element("Formatted", "Formatted", "%R/info/%s", zUuid); | |
| 1830 | 1830 | }else{ |
| 1831 | 1831 | style_submenu_element("Plaintext", "Plaintext", |
| 1832 | - "%R/info/%S?plaintext", zUuid); | |
| 1832 | + "%R/info/%s?plaintext", zUuid); | |
| 1833 | 1833 | } |
| 1834 | 1834 | |
| 1835 | 1835 | @ <div class="section">Overview</div> |
| 1836 | 1836 | @ <p><table class="label-value"> |
| 1837 | 1837 | @ <tr><th>Artifact ID:</th> |
| @@ -2341,11 +2341,11 @@ | ||
| 2341 | 2341 | } |
| 2342 | 2342 | @ <p>Make changes to attributes of check-in |
| 2343 | 2343 | @ [%z(href("%R/ci/%s",zUuid))%s(zUuid)</a>]:</p> |
| 2344 | 2344 | form_begin(0, "%R/ci_edit"); |
| 2345 | 2345 | login_insert_csrf_secret(); |
| 2346 | - @ <div><input type="hidden" name="r" value="%S(zUuid)" /> | |
| 2346 | + @ <div><input type="hidden" name="r" value="%s(zUuid)" /> | |
| 2347 | 2347 | @ <table border="0" cellspacing="10"> |
| 2348 | 2348 | |
| 2349 | 2349 | @ <tr><th align="right" valign="top">User:</th> |
| 2350 | 2350 | @ <td valign="top"> |
| 2351 | 2351 | @ <input type="text" name="u" size="20" value="%h(zNewUser)" /> |
| 2352 | 2352 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -399,11 +399,11 @@ | |
| 399 | } |
| 400 | if( diffFlags ){ |
| 401 | append_diff(zOld, zNew, diffFlags, pRe); |
| 402 | }else if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 403 | @ |
| 404 | @ %z(href("%R/fdiff?v1=%S&v2=%S&sbs=1",zOld,zNew))[diff]</a> |
| 405 | } |
| 406 | } |
| 407 | } |
| 408 | |
| 409 | /* |
| @@ -612,19 +612,19 @@ | |
| 612 | if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){ |
| 613 | zPJ[jj] = '_'; |
| 614 | } |
| 615 | } |
| 616 | @ <tr><th>Timelines:</th><td> |
| 617 | @ %z(href("%R/timeline?f=%S&unhide",zUuid))family</a> |
| 618 | if( zParent ){ |
| 619 | @ | %z(href("%R/timeline?p=%S&unhide",zUuid))ancestors</a> |
| 620 | } |
| 621 | if( !isLeaf ){ |
| 622 | @ | %z(href("%R/timeline?d=%S&unhide",zUuid))descendants</a> |
| 623 | } |
| 624 | if( zParent && !isLeaf ){ |
| 625 | @ | %z(href("%R/timeline?dp=%S&unhide",zUuid))both</a> |
| 626 | } |
| 627 | db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag " |
| 628 | " WHERE rid=%d AND tagtype>0 " |
| 629 | " AND tag.tagid=tagxref.tagid " |
| 630 | " AND +tag.tagname GLOB 'sym-*'", rid); |
| @@ -647,16 +647,16 @@ | |
| 647 | fossil_free(zUrl); |
| 648 | } |
| 649 | @ </td></tr> |
| 650 | @ <tr><th>Other Links:</th> |
| 651 | @ <td> |
| 652 | @ %z(href("%R/tree?ci=%S",zUuid))files</a> |
| 653 | @ | %z(href("%R/fileage?name=%S",zUuid))file ages</a> |
| 654 | @ | %z(href("%R/tree?ci=%S&nofiles",zUuid))folders</a> |
| 655 | @ | %z(href("%R/artifact/%S",zUuid))manifest</a> |
| 656 | if( g.perm.Write ){ |
| 657 | @ | %z(href("%R/ci_edit?r=%S",zUuid))edit</a> |
| 658 | } |
| 659 | @ </td> |
| 660 | @ </tr> |
| 661 | blob_reset(&projName); |
| 662 | } |
| @@ -699,11 +699,11 @@ | |
| 699 | @ Show Unified Diffs</a> |
| 700 | @ %z(xhref("class='button'","%R/%s/%T?sbs=1",zPage,zName)) |
| 701 | @ Show Side-by-Side Diffs</a> |
| 702 | } |
| 703 | if( zParent ){ |
| 704 | @ %z(xhref("class='button'","%R/vpatch?from=%S&to=%S",zParent,zUuid)) |
| 705 | @ Patch</a> |
| 706 | } |
| 707 | @</div> |
| 708 | if( pRe ){ |
| 709 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| @@ -770,11 +770,11 @@ | |
| 770 | } |
| 771 | } |
| 772 | style_header("Update of \"%h\"", pWiki->zWikiTitle); |
| 773 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 774 | zDate = db_text(0, "SELECT datetime(%.17g)", pWiki->rDate); |
| 775 | style_submenu_element("Raw", "Raw", "artifact/%S", zUuid); |
| 776 | style_submenu_element("History", "History", "whistory?name=%t", |
| 777 | pWiki->zWikiTitle); |
| 778 | style_submenu_element("Page", "Page", "wiki?name=%t", |
| 779 | pWiki->zWikiTitle); |
| 780 | login_anonymous_available(); |
| @@ -798,11 +798,11 @@ | |
| 798 | if( pWiki->nParent>0 ){ |
| 799 | int i; |
| 800 | @ <tr><th>Parent%s(pWiki->nParent==1?"":"s"):</th><td> |
| 801 | for(i=0; i<pWiki->nParent; i++){ |
| 802 | char *zParent = pWiki->azParent[i]; |
| 803 | @ %z(href("info/%S",zParent))%s(zParent)</a> |
| 804 | } |
| 805 | @ </td></tr> |
| 806 | } |
| 807 | @ </table> |
| 808 | |
| @@ -1188,14 +1188,14 @@ | |
| 1188 | @ on branch %z(href("%R/timeline?r=%T",zBr))%h(zBr)</a> |
| 1189 | } |
| 1190 | @ - %!w(zCom) (user: |
| 1191 | hyperlink_to_user(zUser,zDate,")"); |
| 1192 | if( g.perm.Hyperlink ){ |
| 1193 | @ %z(href("%R/finfo?name=%T&ci=%S",zName,zVers))[ancestry]</a> |
| 1194 | @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) |
| 1195 | @ [annotate]</a> |
| 1196 | @ %z(href("%R/blame?checkin=%S&filename=%T",zVers,zName)) |
| 1197 | @ [blame]</a> |
| 1198 | } |
| 1199 | cnt++; |
| 1200 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1201 | blob_append(pDownloadName, zName, -1); |
| @@ -1302,11 +1302,11 @@ | |
| 1302 | @ Attachment "%h(zFilename)" to |
| 1303 | } |
| 1304 | objType |= OBJTYPE_ATTACHMENT; |
| 1305 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| 1306 | if( g.perm.Hyperlink && g.perm.RdTkt ){ |
| 1307 | @ ticket [%z(href("%R/tktview?name=%S",zTarget))%S(zTarget)</a>] |
| 1308 | }else{ |
| 1309 | @ ticket [%S(zTarget)] |
| 1310 | } |
| 1311 | }else{ |
| 1312 | if( g.perm.Hyperlink && g.perm.RdWiki ){ |
| @@ -1328,11 +1328,11 @@ | |
| 1328 | @ Control artifact. |
| 1329 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1330 | blob_appendf(pDownloadName, "%.10s.txt", zUuid); |
| 1331 | } |
| 1332 | }else if( linkToView && g.perm.Hyperlink ){ |
| 1333 | @ %z(href("%R/artifact/%S",zUuid))[view]</a> |
| 1334 | } |
| 1335 | return objType; |
| 1336 | } |
| 1337 | |
| 1338 | |
| @@ -1404,17 +1404,17 @@ | |
| 1404 | g.zTop, P("v1"), P("v2"), zW); |
| 1405 | } |
| 1406 | |
| 1407 | if( P("smhdr")!=0 ){ |
| 1408 | @ <h2>Differences From Artifact |
| 1409 | @ %z(href("%R/artifact/%S",zV1))[%S(zV1)]</a> To |
| 1410 | @ %z(href("%R/artifact/%S",zV2))[%S(zV2)]</a>.</h2> |
| 1411 | }else{ |
| 1412 | @ <h2>Differences From |
| 1413 | @ Artifact %z(href("%R/artifact/%S",zV1))[%S(zV1)]</a>:</h2> |
| 1414 | object_description(v1, 0, 0); |
| 1415 | @ <h2>To Artifact %z(href("%R/artifact/%S",zV2))[%S(zV2)]</a>:</h2> |
| 1416 | object_description(v2, 0, 0); |
| 1417 | } |
| 1418 | if( pRe ){ |
| 1419 | @ <b>Only differences that match regular expression "%h(zRe)" |
| 1420 | @ are shown.</b> |
| @@ -1761,13 +1761,13 @@ | |
| 1761 | @ <pre> |
| 1762 | @ %h(z) |
| 1763 | @ </pre> |
| 1764 | } |
| 1765 | }else if( strncmp(zMime, "image/", 6)==0 ){ |
| 1766 | @ <img src="%R/raw/%S(zUuid)?m=%s(zMime)" /> |
| 1767 | style_submenu_element("Image", "Image", |
| 1768 | "%R/raw/%S?m=%s", zUuid, zMime); |
| 1769 | }else{ |
| 1770 | @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i> |
| 1771 | } |
| 1772 | @ </blockquote> |
| 1773 | } |
| @@ -1819,19 +1819,19 @@ | |
| 1819 | } |
| 1820 | zTktTitle = db_table_has_column( "ticket", "title" ) |
| 1821 | ? db_text("(No title)", "SELECT title FROM ticket WHERE tkt_uuid=%Q", zTktName) |
| 1822 | : 0; |
| 1823 | style_header("Ticket Change Details"); |
| 1824 | style_submenu_element("Raw", "Raw", "%R/artifact/%S", zUuid); |
| 1825 | style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName); |
| 1826 | style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName); |
| 1827 | style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName); |
| 1828 | if( P("plaintext") ){ |
| 1829 | style_submenu_element("Formatted", "Formatted", "%R/info/%S", zUuid); |
| 1830 | }else{ |
| 1831 | style_submenu_element("Plaintext", "Plaintext", |
| 1832 | "%R/info/%S?plaintext", zUuid); |
| 1833 | } |
| 1834 | |
| 1835 | @ <div class="section">Overview</div> |
| 1836 | @ <p><table class="label-value"> |
| 1837 | @ <tr><th>Artifact ID:</th> |
| @@ -2341,11 +2341,11 @@ | |
| 2341 | } |
| 2342 | @ <p>Make changes to attributes of check-in |
| 2343 | @ [%z(href("%R/ci/%s",zUuid))%s(zUuid)</a>]:</p> |
| 2344 | form_begin(0, "%R/ci_edit"); |
| 2345 | login_insert_csrf_secret(); |
| 2346 | @ <div><input type="hidden" name="r" value="%S(zUuid)" /> |
| 2347 | @ <table border="0" cellspacing="10"> |
| 2348 | |
| 2349 | @ <tr><th align="right" valign="top">User:</th> |
| 2350 | @ <td valign="top"> |
| 2351 | @ <input type="text" name="u" size="20" value="%h(zNewUser)" /> |
| 2352 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -399,11 +399,11 @@ | |
| 399 | } |
| 400 | if( diffFlags ){ |
| 401 | append_diff(zOld, zNew, diffFlags, pRe); |
| 402 | }else if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 403 | @ |
| 404 | @ %z(href("%R/fdiff?v1=%s&v2=%s&sbs=1",zOld,zNew))[diff]</a> |
| 405 | } |
| 406 | } |
| 407 | } |
| 408 | |
| 409 | /* |
| @@ -612,19 +612,19 @@ | |
| 612 | if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){ |
| 613 | zPJ[jj] = '_'; |
| 614 | } |
| 615 | } |
| 616 | @ <tr><th>Timelines:</th><td> |
| 617 | @ %z(href("%R/timeline?f=%s&unhide",zUuid))family</a> |
| 618 | if( zParent ){ |
| 619 | @ | %z(href("%R/timeline?p=%s&unhide",zUuid))ancestors</a> |
| 620 | } |
| 621 | if( !isLeaf ){ |
| 622 | @ | %z(href("%R/timeline?d=%s&unhide",zUuid))descendants</a> |
| 623 | } |
| 624 | if( zParent && !isLeaf ){ |
| 625 | @ | %z(href("%R/timeline?dp=%s&unhide",zUuid))both</a> |
| 626 | } |
| 627 | db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag " |
| 628 | " WHERE rid=%d AND tagtype>0 " |
| 629 | " AND tag.tagid=tagxref.tagid " |
| 630 | " AND +tag.tagname GLOB 'sym-*'", rid); |
| @@ -647,16 +647,16 @@ | |
| 647 | fossil_free(zUrl); |
| 648 | } |
| 649 | @ </td></tr> |
| 650 | @ <tr><th>Other Links:</th> |
| 651 | @ <td> |
| 652 | @ %z(href("%R/tree?ci=%s",zUuid))files</a> |
| 653 | @ | %z(href("%R/fileage?name=%s",zUuid))file ages</a> |
| 654 | @ | %z(href("%R/tree?ci=%s&nofiles",zUuid))folders</a> |
| 655 | @ | %z(href("%R/artifact/%s",zUuid))manifest</a> |
| 656 | if( g.perm.Write ){ |
| 657 | @ | %z(href("%R/ci_edit?r=%s",zUuid))edit</a> |
| 658 | } |
| 659 | @ </td> |
| 660 | @ </tr> |
| 661 | blob_reset(&projName); |
| 662 | } |
| @@ -699,11 +699,11 @@ | |
| 699 | @ Show Unified Diffs</a> |
| 700 | @ %z(xhref("class='button'","%R/%s/%T?sbs=1",zPage,zName)) |
| 701 | @ Show Side-by-Side Diffs</a> |
| 702 | } |
| 703 | if( zParent ){ |
| 704 | @ %z(xhref("class='button'","%R/vpatch?from=%s&to=%s",zParent,zUuid)) |
| 705 | @ Patch</a> |
| 706 | } |
| 707 | @</div> |
| 708 | if( pRe ){ |
| 709 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| @@ -770,11 +770,11 @@ | |
| 770 | } |
| 771 | } |
| 772 | style_header("Update of \"%h\"", pWiki->zWikiTitle); |
| 773 | zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 774 | zDate = db_text(0, "SELECT datetime(%.17g)", pWiki->rDate); |
| 775 | style_submenu_element("Raw", "Raw", "artifact/%s", zUuid); |
| 776 | style_submenu_element("History", "History", "whistory?name=%t", |
| 777 | pWiki->zWikiTitle); |
| 778 | style_submenu_element("Page", "Page", "wiki?name=%t", |
| 779 | pWiki->zWikiTitle); |
| 780 | login_anonymous_available(); |
| @@ -798,11 +798,11 @@ | |
| 798 | if( pWiki->nParent>0 ){ |
| 799 | int i; |
| 800 | @ <tr><th>Parent%s(pWiki->nParent==1?"":"s"):</th><td> |
| 801 | for(i=0; i<pWiki->nParent; i++){ |
| 802 | char *zParent = pWiki->azParent[i]; |
| 803 | @ %z(href("info/%s",zParent))%s(zParent)</a> |
| 804 | } |
| 805 | @ </td></tr> |
| 806 | } |
| 807 | @ </table> |
| 808 | |
| @@ -1188,14 +1188,14 @@ | |
| 1188 | @ on branch %z(href("%R/timeline?r=%T",zBr))%h(zBr)</a> |
| 1189 | } |
| 1190 | @ - %!w(zCom) (user: |
| 1191 | hyperlink_to_user(zUser,zDate,")"); |
| 1192 | if( g.perm.Hyperlink ){ |
| 1193 | @ %z(href("%R/finfo?name=%T&ci=%s",zName,zVers))[ancestry]</a> |
| 1194 | @ %z(href("%R/annotate?checkin=%s&filename=%T",zVers,zName)) |
| 1195 | @ [annotate]</a> |
| 1196 | @ %z(href("%R/blame?filename=%T&checkin=%s",zName,zVers)) |
| 1197 | @ [blame]</a> |
| 1198 | } |
| 1199 | cnt++; |
| 1200 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1201 | blob_append(pDownloadName, zName, -1); |
| @@ -1302,11 +1302,11 @@ | |
| 1302 | @ Attachment "%h(zFilename)" to |
| 1303 | } |
| 1304 | objType |= OBJTYPE_ATTACHMENT; |
| 1305 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| 1306 | if( g.perm.Hyperlink && g.perm.RdTkt ){ |
| 1307 | @ ticket [%z(href("%R/tktview?name=%s",zTarget))%S(zTarget)</a>] |
| 1308 | }else{ |
| 1309 | @ ticket [%S(zTarget)] |
| 1310 | } |
| 1311 | }else{ |
| 1312 | if( g.perm.Hyperlink && g.perm.RdWiki ){ |
| @@ -1328,11 +1328,11 @@ | |
| 1328 | @ Control artifact. |
| 1329 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1330 | blob_appendf(pDownloadName, "%.10s.txt", zUuid); |
| 1331 | } |
| 1332 | }else if( linkToView && g.perm.Hyperlink ){ |
| 1333 | @ %z(href("%R/artifact/%s",zUuid))[view]</a> |
| 1334 | } |
| 1335 | return objType; |
| 1336 | } |
| 1337 | |
| 1338 | |
| @@ -1404,17 +1404,17 @@ | |
| 1404 | g.zTop, P("v1"), P("v2"), zW); |
| 1405 | } |
| 1406 | |
| 1407 | if( P("smhdr")!=0 ){ |
| 1408 | @ <h2>Differences From Artifact |
| 1409 | @ %z(href("%R/artifact/%s",zV1))[%S(zV1)]</a> To |
| 1410 | @ %z(href("%R/artifact/%s",zV2))[%S(zV2)]</a>.</h2> |
| 1411 | }else{ |
| 1412 | @ <h2>Differences From |
| 1413 | @ Artifact %z(href("%R/artifact/%s",zV1))[%S(zV1)]</a>:</h2> |
| 1414 | object_description(v1, 0, 0); |
| 1415 | @ <h2>To Artifact %z(href("%R/artifact/%s",zV2))[%S(zV2)]</a>:</h2> |
| 1416 | object_description(v2, 0, 0); |
| 1417 | } |
| 1418 | if( pRe ){ |
| 1419 | @ <b>Only differences that match regular expression "%h(zRe)" |
| 1420 | @ are shown.</b> |
| @@ -1761,13 +1761,13 @@ | |
| 1761 | @ <pre> |
| 1762 | @ %h(z) |
| 1763 | @ </pre> |
| 1764 | } |
| 1765 | }else if( strncmp(zMime, "image/", 6)==0 ){ |
| 1766 | @ <img src="%R/raw/%s(zUuid)?m=%s(zMime)" /> |
| 1767 | style_submenu_element("Image", "Image", |
| 1768 | "%R/raw/%s?m=%s", zUuid, zMime); |
| 1769 | }else{ |
| 1770 | @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i> |
| 1771 | } |
| 1772 | @ </blockquote> |
| 1773 | } |
| @@ -1819,19 +1819,19 @@ | |
| 1819 | } |
| 1820 | zTktTitle = db_table_has_column( "ticket", "title" ) |
| 1821 | ? db_text("(No title)", "SELECT title FROM ticket WHERE tkt_uuid=%Q", zTktName) |
| 1822 | : 0; |
| 1823 | style_header("Ticket Change Details"); |
| 1824 | style_submenu_element("Raw", "Raw", "%R/artifact/%s", zUuid); |
| 1825 | style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName); |
| 1826 | style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName); |
| 1827 | style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName); |
| 1828 | if( P("plaintext") ){ |
| 1829 | style_submenu_element("Formatted", "Formatted", "%R/info/%s", zUuid); |
| 1830 | }else{ |
| 1831 | style_submenu_element("Plaintext", "Plaintext", |
| 1832 | "%R/info/%s?plaintext", zUuid); |
| 1833 | } |
| 1834 | |
| 1835 | @ <div class="section">Overview</div> |
| 1836 | @ <p><table class="label-value"> |
| 1837 | @ <tr><th>Artifact ID:</th> |
| @@ -2341,11 +2341,11 @@ | |
| 2341 | } |
| 2342 | @ <p>Make changes to attributes of check-in |
| 2343 | @ [%z(href("%R/ci/%s",zUuid))%s(zUuid)</a>]:</p> |
| 2344 | form_begin(0, "%R/ci_edit"); |
| 2345 | login_insert_csrf_secret(); |
| 2346 | @ <div><input type="hidden" name="r" value="%s(zUuid)" /> |
| 2347 | @ <table border="0" cellspacing="10"> |
| 2348 | |
| 2349 | @ <tr><th align="right" valign="top">User:</th> |
| 2350 | @ <td valign="top"> |
| 2351 | @ <input type="text" name="u" size="20" value="%h(zNewUser)" /> |
| 2352 |