Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change timeline hyperlinks to wiki pages to point to the specific version of the wiki page that the timeline entry refers to, not to the latest version of that page. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
606421edc5892a4c353d72110271ea5b |
User & Date: | drh 2018-12-11 21:31:31.990 |
Context
2018-12-12
| ||
01:23 | Improvements to the /wdiff page. ... (check-in: b695e97d user: drh tags: trunk) | |
2018-12-11
| ||
21:31 | Change timeline hyperlinks to wiki pages to point to the specific version of the wiki page that the timeline entry refers to, not to the latest version of that page. ... (check-in: 606421ed user: drh tags: trunk) | |
18:55 | On the /wiki page, put text to show that the page has been deleted. ... (check-in: c7a7a561 user: drh tags: trunk) | |
Changes
Changes to src/timeline.c.
︙ | ︙ | |||
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 | @ (%d(rid)) } } } if( zType[0]!='c' ){ /* Comments for anything other than a check-in are generated by ** "fossil rebuild" and expect to be rendered as text/x-fossil-wiki */ wiki_convert(&comment, 0, WIKI_INLINE); }else{ if( bCommentGitStyle ){ /* Truncate comment at first blank line */ int ii, jj; int n = blob_size(&comment); char *z = blob_str(&comment); for(ii=0; ii<n; ii++){ | > > | 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | @ (%d(rid)) } } } if( zType[0]!='c' ){ /* Comments for anything other than a check-in are generated by ** "fossil rebuild" and expect to be rendered as text/x-fossil-wiki */ if( zType[0]=='w' ) wiki_hyperlink_override(zUuid); wiki_convert(&comment, 0, WIKI_INLINE); wiki_hyperlink_override(0); }else{ if( bCommentGitStyle ){ /* Truncate comment at first blank line */ int ii, jj; int n = blob_size(&comment); char *z = blob_str(&comment); for(ii=0; ii<n; ii++){ |
︙ | ︙ |
Changes to src/wiki.c.
︙ | ︙ | |||
879 880 881 882 883 884 885 886 887 888 889 890 891 892 | const char *zPageName; int tmFlags = TIMELINE_ARTID; login_check_credentials(); if( !g.perm.Hyperlink ){ login_needed(g.anon.Hyperlink); return; } zPageName = PD("name",""); style_header("History Of %s", zPageName); if( P("showid")!=0 ) tmFlags |= TIMELINE_SHOWRID; db_prepare(&q, "%s AND event.objid IN " " (SELECT rid FROM tagxref WHERE tagid=" "(SELECT tagid FROM tag WHERE tagname='wiki-%q')" " UNION SELECT attachid FROM attachment" " WHERE target=%Q)" "ORDER BY mtime DESC", | > | 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 | const char *zPageName; int tmFlags = TIMELINE_ARTID; login_check_credentials(); if( !g.perm.Hyperlink ){ login_needed(g.anon.Hyperlink); return; } zPageName = PD("name",""); style_header("History Of %s", zPageName); if( P("showid")!=0 ) tmFlags |= TIMELINE_SHOWRID; tmFlags |= timeline_ss_submenu(); db_prepare(&q, "%s AND event.objid IN " " (SELECT rid FROM tagxref WHERE tagid=" "(SELECT tagid FROM tag WHERE tagname='wiki-%q')" " UNION SELECT attachid FROM attachment" " WHERE target=%Q)" "ORDER BY mtime DESC", |
︙ | ︙ |
Changes to src/wikiformat.c.
︙ | ︙ | |||
1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 | " AND (SELECT value FROM tagxref WHERE tagid=tag.tagid" " ORDER BY mtime DESC LIMIT 1) > 0", zTarget)) ){ return zTarget; } return 0; } /* ** Resolve a hyperlink. The zTarget argument is the content of the [...] ** in the wiki. Append to the output string whatever text is appropriate ** for opening the hyperlink. Write into zClose[0...nClose-1] text that will ** close the markup. ** | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 | " AND (SELECT value FROM tagxref WHERE tagid=tag.tagid" " ORDER BY mtime DESC LIMIT 1) > 0", zTarget)) ){ return zTarget; } return 0; } static const char *wikiOverrideHash = 0; /* ** Fossil-wiki hyperlinks to wiki pages should be overridden to the ** hash value supplied. If the value is NULL, then override is cancelled ** and all overwrites operate normally. */ void wiki_hyperlink_override(const char *zUuid){ wikiOverrideHash = zUuid; } /* ** If links to wiki page zTarget should be redirected to some historical ** version of that page, then return the hash of the historical version. ** If no override is required, return NULL. */ static const char *wiki_is_overridden(const char *zTarget){ if( wikiOverrideHash==0 ) return 0; /* The override should only happen if the override version is not the ** latest version of the wiki page. */ if( !db_exists( "SELECT 1 FROM tag, blob, tagxref AS xA, tagxref AS xB " " WHERE tag.tagname GLOB 'wiki-%q*'" " AND blob.uuid GLOB '%q'" " AND xA.tagid=tag.tagid AND xA.rid=blob.rid" " AND xB.tagid=tag.tagid AND xB.mtime>xA.mtime", zTarget, wikiOverrideHash ) ){ return 0; } return wikiOverrideHash; } /* ** Resolve a hyperlink. The zTarget argument is the content of the [...] ** in the wiki. Append to the output string whatever text is appropriate ** for opening the hyperlink. Write into zClose[0...nClose-1] text that will ** close the markup. ** |
︙ | ︙ | |||
1257 1258 1259 1260 1261 1262 1263 | }else{ zTerm = ""; } }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-' && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){ blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget); }else if( (z = validWikiPageName(p, zTarget))!=0 ){ | > > > > | > | 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 | }else{ zTerm = ""; } }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-' && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){ blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget); }else if( (z = validWikiPageName(p, zTarget))!=0 ){ const char *zOverride = wiki_is_overridden(zTarget); if( zOverride ){ blob_appendf(p->pOut, "<a href=\"%R/info/%S\">", zOverride); }else{ blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z); } }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){ /* Probably an array subscript in code */ zTerm = ""; }else if( (p->state & (WIKI_NOBADLINKS|WIKI_LINKSONLY))!=0 ){ zTerm = ""; }else{ blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]", zTarget); |
︙ | ︙ |