@@ -1142,18 +1142,18 @@
1142 1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1143 1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix
1144 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if there is one) if zTarget is a valid wiki page name. Return NULL if
1145 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zTarget names a page that does not exist.
1146 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const char *validWikiPageName(Renderer *p, const char *zTarget){
1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *validWikiPageName(int mFlags, const char *zTarget){
1148 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strncmp(zTarget, "wiki:", 5)==0
1149 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1150 1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zTarget+5;
1151 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1152 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strcmp(zTarget, "Sandbox")==0 ) return zTarget;
1153 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( wiki_name_is_wellformed((const unsigned char *)zTarget)
1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && ((p->state & WIKI_NOBADLINKS)==0 ||
1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ((mFlags & WIKI_NOBADLINKS)==0 ||
1155 1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'"
1156 1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND (SELECT value FROM tagxref WHERE tagid=tag.tagid"
1157 1157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ORDER BY mtime DESC LIMIT 1) > 0", zTarget))
1158 1158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1159 1159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zTarget;
@@ -1224,93 +1224,102 @@
1224 1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1225 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [#fragment]
1226 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1227 1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [2010-02-27 07:13]
1228 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void openHyperlink(
1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Renderer *p, /* Rendering context */
1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void wiki_resolve_hyperlink(
1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *pOut, /* Write the HTML output here */
1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mFlags, /* Rendering option flags */
1231 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTarget, /* Hyperlink target; text within [...] */
1232 1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zClose, /* Write hyperlink closing text here */
1233 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nClose, /* Bytes available in zClose[] */
1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zOrig /* Complete document text */
1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zOrig, /* Complete document text */
1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTitle /* Title of the link */
1235 1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1236 1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTerm = "</a>";
1237 1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zExtra = 0;
1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zExtraNS = 0;
1238 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTitle ){
1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zExtra = mprintf(" title='%h'", zTitle);
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zExtraNS = zExtra+1;
1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1239 1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nClose>=20 );
1240 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strncmp(zTarget, "http:", 5)==0
1241 1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| strncmp(zTarget, "https:", 6)==0
1242 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| strncmp(zTarget, "ftp:", 4)==0
1243 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| strncmp(zTarget, "mailto:", 7)==0
1244 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%s\">", zTarget);
1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%s\"%s>", zTarget, zExtra);
1246 1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zTarget[0]=='/' ){
1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%R%h\">", zTarget);
1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%R%h\"%s>", zTarget, zExtra);
1248 1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zTarget[0]=='.'
1249 1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zTarget[1]=='/' || (zTarget[1]=='.' && zTarget[2]=='/'))
1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (p->state & WIKI_LINKSONLY)==0 ){
1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%h\">", zTarget);
1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (mFlags & WIKI_LINKSONLY)==0 ){
1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
1252 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zTarget[0]=='#' ){
1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%h\">", zTarget);
1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
1254 1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( is_valid_hname(zTarget) ){
1255 1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isClosed = 0;
1256 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strlen(zTarget)<=HNAME_MAX && is_ticket(zTarget, &isClosed) ){
1257 1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special display processing for tickets. Display the hyperlink
1258 1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as crossed out if the ticket is closed.
1259 1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1260 1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isClosed ){
1261 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Hyperlink ){
1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut,
1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut,
1263 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%z<span class=\"wikiTagCancelled\">[",
1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/info/%s",zTarget)
1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xhref(zExtraNS,"%R/info/%s",zTarget)
1265 1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1266 1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]</span></a>";
1267 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">[");
1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut,"<span class=\"wikiTagCancelled\">[");
1269 1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]</span>";
1270 1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1271 1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1272 1280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Hyperlink ){
1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut,"%z[", href("%R/info/%s", zTarget));
1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut,"%z[", xhref(zExtraNS,"%R/info/%s", zTarget));
1274 1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]</a>";
1275 1283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "[");
1284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "[");
1277 1285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]";
1278 1286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1279 1287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1280 1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( !in_this_repo(zTarget) ){
1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (p->state & (WIKI_LINKSONLY|WIKI_NOBADLINKS))!=0 ){
1289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (mFlags & (WIKI_LINKSONLY|WIKI_NOBADLINKS))!=0 ){
1282 1290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1283 1291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<span class=\"brokenlink\">[");
1292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<span class=\"brokenlink\">[");
1285 1293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]</span>";
1286 1294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1287 1295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( g.perm.Hyperlink ){
1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "%z[",href("%R/info/%s", zTarget));
1296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "%z[",xhref(zExtraNS, "%R/info/%s", zTarget));
1289 1297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "]</a>";
1290 1298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1291 1299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1292 1300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1293 1301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1294 1302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget);
1296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (z = validWikiPageName(p, zTarget))!=0 ){
1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%R/timeline?c=%T\"%s>", zTarget, zExtra);
1304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (z = validWikiPageName(mFlags, zTarget))!=0 ){
1297 1305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zOverride = wiki_is_overridden(zTarget);
1298 1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOverride ){
1299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%R/info/%S\">", zOverride);
1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%R/info/%S\"%s>", zOverride, zExtra);
1300 1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<a href=\"%R/wiki?name=%T\"%s>", z, zExtra);
1302 1310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zOrig && zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1304 1312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Probably an array subscript in code */
1305 1313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (p->state & (WIKI_NOBADLINKS|WIKI_LINKSONLY))!=0 ){
1314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (mFlags & (WIKI_NOBADLINKS|WIKI_LINKSONLY))!=0 ){
1307 1315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "";
1308 1316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]", zTarget);
1317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<span class=\"brokenlink\">[%h]", zTarget);
1310 1318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTerm = "</span>";
1311 1319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zExtra ) fossil_free(zExtra);
1312 1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( strlen(zTerm)<nClose );
1313 1322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(nClose, zClose, "%s", zTerm);
1314 1323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1315 1324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1316 1325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -1491,11 +1500,12 @@
1491 1500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDisplay==0 ){
1492 1501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDisplay = zTarget;
1493 1502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1494 1503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( fossil_isspace(*zDisplay) ) zDisplay++;
1495 1504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- openHyperlink(p, zTarget, zClose, sizeof(zClose), zOrig);
1505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_resolve_hyperlink(p->pOut, p->state,
1506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTarget, zClose, sizeof(zClose), zOrig, 0);
1497 1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( linksOnly || zClose[0]==0 || p->inVerbatim ){
1498 1508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cS1 ) z[iS1] = cS1;
1499 1509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zClose[0]!=']' ){
1500 1510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(p->pOut, "[%h]%s", zTarget, zClose);
1501 1511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1502 1512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!