Index: src/attach.c ================================================================== --- src/attach.c +++ src/attach.c @@ -75,13 +75,13 @@ zFilename = &zFilename[i+1]; i = -1; } } if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ - zUrlTail = mprintf("tkt=%s&file=%t", zTarget, zFilename); + zUrlTail = mprintf("tkt=%s&file=%t", zTarget, zFilename); }else{ - zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); + zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); } @ @
%h(zFilename)
@ [download]
if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
Index: src/branch.c
==================================================================
--- src/branch.c
+++ src/branch.c
@@ -321,18 +321,18 @@
style_submenu_element("All", "All", "brlist?all");
}
login_anonymous_available();
style_sidebox_begin("Nomenclature:", "33%");
@
Event [%S(zUuid)] at - @ [%s(zETime)] + @
Event [%z(href("%R/artifact/%s",zUuid))%S(zUuid)] at + @ [%z(href("%R/timeline?c=%T",zETime))%s(zETime)] @ entered by user %h(pEvent->zUser) on - @ [%s(zATime)]:
+ @ [%z(href("%R/timeline?c=%T",zATime))%s(zATime)]: @for(i=0; inTag; i++){ if( fossil_strcmp(pEvent->aTag[i].zName,"+bgcolor")==0 ){ zClr = pEvent->aTag[i].zValue; } Index: src/finfo.c ================================================================== --- src/finfo.c +++ src/finfo.c @@ -305,39 +305,34 @@ @ } memcpy(zTime, &zDate[11], 5); zTime[5] = 0; @ } db_finalize(&q); Index: src/info.c ================================================================== --- src/info.c +++ src/info.c @@ -261,11 +261,11 @@ @ propagates to descendants } #if 0 if( zValue && fossil_strcmp(zTagname,"branch")==0 ){ @ - @ branch timeline + @ %z(href("%R/timeline?r=%T",zValue))branch timeline } #endif } if( zSrcUuid && zSrcUuid[0] ){ if( tagtype==0 ){ @@ -333,11 +333,11 @@ const char *zNew, /* blob.uuid after change. NULL for deletes */ const char *zOldName, /* Prior name. NULL if no name change. */ int diffFlags, /* Flags for text_diff(). Zero to omit diffs */ int mperm /* executable or symlink permission for zNew */ ){ - if( !g.perm.History ){ + if( !g.perm.Hyperlink ){ if( zNew==0 ){ @ - @ %s(zTime) + @ %z(href("%R/timeline?c=%t",zDate))%s(zTime) @if( zBgClr && zBgClr[0] ){ @ }else{ @ } sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid); sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin); if( zUuid ){ - if( g.perm.History ){ - @ [%S(zUuid)] - }else{ - @ [%S(zUuid)] - } - @ part of check-in + @ %z(href("%R/artifact/%s",zUuid))[%S(zUuid)] part of check-in }else{ @ Deleted by check-in } hyperlink_to_uuid(zShortCkin); @ %h(zCom) (user: hyperlink_to_user(zUser, zDate, ""); @ branch: %h(zBr)) - if( g.perm.History && zUuid ){ + if( g.perm.Hyperlink && zUuid ){ const char *z = zFilename; if( fpid ){ - @ [diff] + @ %z(href("%R/fdiff?v1=%s&v2=%s",zPUuid,zUuid))[diff] } - @ + @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) @ [annotate] } @ Deleted %h(zName)
}else if( zOld==0 ){ @Added %h(zName)
}else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ @@ -354,35 +354,35 @@ @ } }else{ if( zOld && zNew ){ if( fossil_strcmp(zOld, zNew)!=0 ){ - @Modified %h(zName) - @ from [%S(zOld)] - @ to [%S(zNew)]. + @
Modified %z(href("%R/finfo?name=%T",zName))%h(zName) + @ from %z(href("%R/artifact/%s",zOld))[%S(zOld)] + @ to %z(href("%R/artifact/%s",zNew))[%S(zNew)]. }else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ @
Name change from - @ from %h(zOldName) - @ to %h(zName). + @ from %z(href("%R/finfo?name=%T",zOldName))%h(zOldName) + @ to %z(href("%R/finfo?name=%T",zName))%h(zName). }else{ @
Execute permission %s(( mperm==PERM_EXE )?"set":"cleared") for - @ %h(zName) + @ %z(href("%R/finfo?name=%T",zName))%h(zName) } }else if( zOld ){ - @
Deleted %h(zName) - @ version [%S(zOld)] + @
Deleted %z(href("%s/finfo?name=%T",g.zTop,zName))%h(zName) + @ version %z(href("%R/artifact/%s",zOld))[%S(zOld)] }else{ - @
Added %h(zName) - @ version [%S(zNew)] + @
Added %z(href("%R/finfo?name=%T",zName))%h(zName) + @ version %z(href("%R/artifact/%s",zNew))[%S(zNew)] } if( diffFlags ){ @
append_diff(zOld, zNew, diffFlags); @}else if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ @ - @ [diff] + @ %z(href("%R/fdiff?v1=%S&v2=%S",zOld,zNew))[diff] } @ } } @@ -535,47 +535,47 @@ @} db_finalize(&q); } - if( g.perm.History ){ + if( g.perm.Hyperlink ){ const char *zProjName = db_get("project-name", "unnamed"); @ Received From: @%h(zUser) @ %h(zIpAddr) on %s(zDate) @ Timelines: - @ family + @ %z(href("%R/timeline?f=%S",zUuid))family if( zParent ){ - @ | ancestors + @ | %z(href("%R/timeline?p=%S",zUuid))ancestors } if( !isLeaf ){ - @ | descendants + @ | %z(href("%R/timeline?d=%S",zUuid))descendants } if( zParent && !isLeaf ){ - @ | both + @ | %z(href("%R/timeline?dp=%S",zUuid))both } db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag " " WHERE rid=%d AND tagtype>0 " " AND tag.tagid=tagxref.tagid " " AND +tag.tagname GLOB 'sym-*'", rid); while( db_step(&q)==SQLITE_ROW ){ const char *zTagName = db_column_text(&q, 0); - @ | %h(zTagName) + @ | %z(href("%R/timeline?r=%T",zTagName))%h(zTagName) } db_finalize(&q); @ } @ @@ -590,43 +590,43 @@ @ db_prepare(&q, "SELECT name," " mperm," " (SELECT uuid FROM blob WHERE rid=mlink.pid)," @@ -698,15 +698,15 @@ if( g.perm.Setup ){ @ Other Links: @- @ files + @ %z(href("%R/dir?ci=%S",zUuid))files if( g.perm.Zip ){ - char *zUrl = mprintf("%s/tarball/%s-%S.tar.gz?uuid=%s", - g.zTop, zProjName, zUuid, zUuid); - @ | Tarball - @ | + char *zUrl = mprintf("%R/tarball/%s-%S.tar.gz?uuid=%s", + zProjName, zUuid, zUuid); + @ | %z(href("%s",zUrl))Tarball + @ | %z(href("%R/zip/%s-%S.zip?uuid=%s",zProjName,zUuid,zUuid)) @ ZIP archive fossil_free(zUrl); } - @ | manifest + @ | %z(href("%R/artifact/%S",zUuid))manifest if( g.perm.Write ){ - @ | edit + @ | %z(href("%R/ci_edit?r=%S",zUuid))edit } @ @} @ Record ID: %d(rid) "); - if( g.perm.History ){ + if( g.perm.Hyperlink ){ @ Original User: hyperlink_to_user(zUser, zDate, " } @ }else{ @@ -792,11 +792,11 @@ } /* ** WEBPAGE: vdiff -** URL: /vdiff?from=UUID&to=UUID&detail=BOOLEAN;sbs=BOOLEAN +** URL: /vdiff?from=UUID&to=UUID&detail=BOOLEAN;sbs=BOOLEAN ** ** Show all differences between two checkins. */ void vdiff_page(void){ int ridFrom, ridTo; @@ -936,34 +936,26 @@ }else if( mPerm==PERM_EXE ){ @ Commands: @- @ history - @ | raw-text + @ &z(href("%R/whistory?name=%t",zName))history + @ | %z(href("%R/artifact/%S",zUuid))raw-text @ @- Executable file }else{ @
- File } - if( g.perm.History ){ - @ %h(zName) - }else{ - @ %h(zName) - } + @ %z(href("%R/finfo?name=%T",zName))%h(zName) @
prevName = fossil_strdup(zName); } @
- hyperlink_to_date(zDate,""); @ - part of checkin hyperlink_to_uuid(zVers); if( zBr && zBr[0] ){ - if( g.perm.History ){ - @ on branch %h(zBr) - }else{ - @ on branch %h(zBr) - } + @ on branch %z(href("%R/timeline?r=%T",zBr))%h(zBr) } @ - %w(zCom) (user: hyperlink_to_user(zUser,zDate,""); @ ) - if( g.perm.History ){ - @ + if( g.perm.Hyperlink ){ + @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) @ [annotate] } cnt++; if( pDownloadName && blob_size(pDownloadName)==0 ){ blob_append(pDownloadName, zName, -1); @@ -989,16 +981,11 @@ if( cnt>0 ){ @ Also wiki page }else{ @ Wiki page } - if( g.perm.History ){ - @ [%h(zPagename)] - }else{ - @ [%h(zPagename)] - } - @ by + @ [%z(href("%R/wiki?name=%t",zPagename))%h(zPagename)] by hyperlink_to_user(zUser,zDate," on"); hyperlink_to_date(zDate,"."); nWiki++; cnt++; if( pDownloadName && blob_size(pDownloadName)==0 ){ @@ -1065,18 +1052,18 @@ @ Also attachment "%h(zFilename)" to }else{ @ Attachment "%h(zFilename)" to } if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ - if( g.perm.History && g.perm.RdTkt ){ - @ ticket [%S(zTarget)] + if( g.perm.Hyperlink && g.perm.RdTkt ){ + @ ticket [%z(href("%R/tktview?name=%S",zTarget))%S(zTarget)] }else{ @ ticket [%S(zTarget)] } }else{ - if( g.perm.History && g.perm.RdWiki ){ - @ wiki page [%h(zTarget)] + if( g.perm.Hyperlink && g.perm.RdWiki ){ + @ wiki page [%z(href("%R/wiki?name=%t",zTarget)))%h(zTarget)] }else{ @ wiki page [%h(zTarget)] } } @ added by @@ -1091,12 +1078,12 @@ if( cnt==0 ){ @ Control artifact. if( pDownloadName && blob_size(pDownloadName)==0 ){ blob_appendf(pDownloadName, "%.10s.txt", zUuid); } - }else if( linkToView && g.perm.History ){ - @ [view] + }else if( linkToView && g.perm.Hyperlink ){ + @ %z(href("%R/artifact/%S",zUuid))[view] } } /* @@ -1160,18 +1147,17 @@ g.zTop, P("v1"), P("v2")); } if( P("smhdr")!=0 ){ @
Differences From Artifact - @ [%S(zV1)] To - @ [%S(zV2)].
+ @ %z(href("%R/artifact/%S",zV1))[%S(zV1)] To + @ %z(href("%R/artifact/%S",zV2))[%S(zV2)]. }else{ @Differences From - @ Artifact [%S(zV1)]:
+ @ Artifact %z(href("%R/artifact/%S",zV1))[%S(zV1)]: object_description(v1, 0, 0); - @To Artifact - @ [%S(zV2)]:
+ @To Artifact %z(href("%R/artifact/%S",zV2))[%S(zV2)]:
object_description(v2, 0, 0); } @
@@ %s(blob_str(&diff)) @@ -1272,11 +1258,11 @@ if( !g.perm.Read ){ login_needed(); return; } if( rid==0 ) fossil_redirect_home(); if( g.perm.Admin ){ const char *zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", rid); if( db_exists("SELECT 1 FROM shun WHERE uuid='%s'", zUuid) ){ - style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", + style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", g.zTop, zUuid); }else{ style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun", g.zTop, zUuid); } @@ -1419,11 +1405,11 @@ if( !g.perm.Read ){ login_needed(); return; } if( rid==0 ) fossil_redirect_home(); if( g.perm.Admin ){ const char *zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", rid); if( db_exists("SELECT 1 FROM shun WHERE uuid='%s'", zUuid) ){ - style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", + style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", g.zTop, zUuid); }else{ style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun", g.zTop, zUuid); } @@ -1478,11 +1464,11 @@ @@ %h(z) @} }else if( strncmp(zMime, "image/", 6)==0 ){ - @+ @
}else{ @ (file is %d(blob_size(&content)) bytes of binary data) } @ } @@ -1507,11 +1493,11 @@ rid = name_to_rid_www("name"); if( rid==0 ){ fossil_redirect_home(); } zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", rid); if( g.perm.Admin ){ if( db_exists("SELECT 1 FROM shun WHERE uuid='%s'", zUuid) ){ - style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", + style_submenu_element("Unshun","Unshun", "%s/shun?uuid=%s&sub=1", g.zTop, zUuid); }else{ style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun", g.zTop, zUuid); } @@ -1522,18 +1508,17 @@ } style_header("Ticket Change Details"); zDate = db_text(0, "SELECT datetime(%.12f)", pTktChng->rDate); memcpy(zTktName, pTktChng->zTicketUuid, 10); zTktName[10] = 0; - if( g.perm.History ){ + if( g.perm.Hyperlink ){ @
Changes to ticket - @ %s(zTktName)
+ @ %z(href("%R/tktview/%s",pTktChng->zTicketUuid)))%s(zTktName) @ @By %h(pTktChng->zUser) on %s(zDate). See also: - @ artifact content, and - @ ticket - @ history
+ @ %z(href("%R/artifact/%T",zUuid))artifact content, and + @ %z(href("%R/tkthistory/%s",pTktChng->zTicketUuid))ticket history }else{ @Changes to ticket %s(zTktName)
@ @By %h(pTktChng->zUser) on %s(zDate). @
@@ -1965,11 +1950,11 @@ @ @
blob_reset(&suffix); } @Make changes to attributes of check-in - @ [%s(zUuid)]:
+ @ [%z(href("%R/ci/%s",zUuid))%s(zUuid)]: @