@@ -1159,10 +1159,44 @@
1159 1159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1160 1160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zTarget;
1161 1161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1162 1162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
1163 1163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *wikiOverrideHash = 0;
1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Fossil-wiki hyperlinks to wiki pages should be overridden to the
1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** hash value supplied. If the value is NULL, then override is cancelled
1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and all overwrites operate normally.
1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void wiki_hyperlink_override(const char *zUuid){
1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wikiOverrideHash = zUuid;
1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If links to wiki page zTarget should be redirected to some historical
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version of that page, then return the hash of the historical version.
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If no override is required, return NULL.
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *wiki_is_overridden(const char *zTarget){
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wikiOverrideHash==0 ) return 0;
1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The override should only happen if the override version is not the
1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** latest version of the wiki page. */
1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db_exists(
1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT 1 FROM tag, blob, tagxref AS xA, tagxref AS xB "
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE tag.tagname GLOB 'wiki-%q*'"
1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND blob.uuid GLOB '%q'"
1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND xA.tagid=tag.tagid AND xA.rid=blob.rid"
1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND xB.tagid=tag.tagid AND xB.mtime>xA.mtime",
1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTarget, wikiOverrideHash
1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ) ){
1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return wikiOverrideHash;
1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1164 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1165 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1166 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Resolve a hyperlink. The zTarget argument is the content of the [...]
1167 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the wiki. Append to the output string whatever text is appropriate
1168 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for opening the hyperlink. Write into zClose[0...nClose-1] text that will
@@ -1259,11 +1293,16 @@
1259 1293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1260 1294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1261 1295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1262 1296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget);
1263 1297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (z = validWikiPageName(p, zTarget))!=0 ){
1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
1298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zOverride = wiki_is_overridden(zTarget);
1299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zOverride ){
1300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->pOut, "<a href=\"%R/info/%S\">", zOverride);
1301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1265 1304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1266 1305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Probably an array subscript in code */
1267 1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1268 1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (p->state & (WIKI_NOBADLINKS|WIKI_LINKSONLY))!=0 ){
1269 1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1270 1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!