Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Do not omit the [..] around hyperlinks in chat. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
bd67c3cdf0f114a84db16fe169f5f13a |
| User & Date: | drh 2021-02-13 14:05:29.740 |
Context
|
2021-02-15
| ||
| 01:56 | Merge from trunk ... (Leaf check-in: 3f496aa752 user: larrybr tags: msvc_make_fixup) | |
|
2021-02-14
| ||
| 02:16 | Update the built-in "pikchr" to a version that supports the "this" objectname. ... (check-in: f260b75fb9 user: drh tags: trunk) | |
|
2021-02-13
| ||
| 14:05 | Do not omit the [..] around hyperlinks in chat. ... (check-in: bd67c3cdf0 user: drh tags: trunk) | |
|
2021-02-12
| ||
| 18:17 | darkmode CSS: added horizontal scrollbar on pre.udiff, needed for diffs of wiki edits. ... (check-in: 7e2bc08484 user: stephan tags: trunk) | |
Changes
Changes to src/chat.c.
| ︙ | ︙ | |||
369 370 371 372 373 374 375 |
for(k=i+1; zSafe[k] && zSafe[k]!=']'; k++){}
if( zSafe[k]==']' ){
zSafe[k] = 0;
if( j<i ){
blob_append(&out, zSafe + j, i-j);
j = i;
}
| > | > > | 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 |
for(k=i+1; zSafe[k] && zSafe[k]!=']'; k++){}
if( zSafe[k]==']' ){
zSafe[k] = 0;
if( j<i ){
blob_append(&out, zSafe + j, i-j);
j = i;
}
blob_append_char(&out, '[');
wiki_resolve_hyperlink(&out,
WIKI_NOBADLINKS|WIKI_TARGET_BLANK|WIKI_NOBRACKET,
zSafe+i+1, zClose, sizeof(zClose), zSafe, 0);
zSafe[k] = ']';
j++;
blob_append(&out, zSafe + j, k - j);
blob_append(&out, zClose, -1);
blob_append_char(&out, ']');
i = k;
j = k+1;
continue;
}
}else if( zSafe[i]=='h'
&& (strncmp(zSafe+i,"http:",5)==0
|| strncmp(zSafe+i,"https:",6)==0) ){
|
| ︙ | ︙ |
Changes to src/wikiformat.c.
| ︙ | ︙ | |||
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#define WIKI_BUTTONS 0x008 /* Allow sub-menu buttons */
#define WIKI_NOBADLINKS 0x010 /* Ignore broken hyperlinks */
#define WIKI_LINKSONLY 0x020 /* No markup. Only decorate links */
#define WIKI_NEWLINE 0x040 /* Honor \n - break lines at each \n */
#define WIKI_MARKDOWNLINKS 0x080 /* Resolve hyperlinks as in markdown */
#define WIKI_SAFE 0x100 /* Make the result safe for embedding */
#define WIKI_TARGET_BLANK 0x200 /* Hyperlinks go to a new window */
#endif
/*
** These are the only markup attributes allowed.
*/
enum allowed_attr_t {
| > | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#define WIKI_BUTTONS 0x008 /* Allow sub-menu buttons */
#define WIKI_NOBADLINKS 0x010 /* Ignore broken hyperlinks */
#define WIKI_LINKSONLY 0x020 /* No markup. Only decorate links */
#define WIKI_NEWLINE 0x040 /* Honor \n - break lines at each \n */
#define WIKI_MARKDOWNLINKS 0x080 /* Resolve hyperlinks as in markdown */
#define WIKI_SAFE 0x100 /* Make the result safe for embedding */
#define WIKI_TARGET_BLANK 0x200 /* Hyperlinks go to a new window */
#define WIKI_NOBRACKET 0x400 /* Omit extra [..] around hyperlinks */
#endif
/*
** These are the only markup attributes allowed.
*/
enum allowed_attr_t {
|
| ︙ | ︙ | |||
1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 |
&& (zTarget[1]=='/' || (zTarget[1]=='.' && zTarget[2]=='/'))
&& (mFlags & WIKI_LINKSONLY)==0 ){
blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
}else if( zTarget[0]=='#' ){
blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
}else if( is_valid_hname(zTarget) ){
int isClosed = 0;
if( strlen(zTarget)<=HNAME_MAX && is_ticket(zTarget, &isClosed) ){
/* Special display processing for tickets. Display the hyperlink
** as crossed out if the ticket is closed.
*/
if( isClosed ){
if( g.perm.Hyperlink ){
blob_appendf(pOut,
| > | | | | | | | > | 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 |
&& (zTarget[1]=='/' || (zTarget[1]=='.' && zTarget[2]=='/'))
&& (mFlags & WIKI_LINKSONLY)==0 ){
blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
}else if( zTarget[0]=='#' ){
blob_appendf(pOut, "<a href=\"%h\"%s>", zTarget, zExtra);
}else if( is_valid_hname(zTarget) ){
int isClosed = 0;
const char *zLB = (mFlags & WIKI_NOBRACKET)==0 ? "[" : "";
if( strlen(zTarget)<=HNAME_MAX && is_ticket(zTarget, &isClosed) ){
/* Special display processing for tickets. Display the hyperlink
** as crossed out if the ticket is closed.
*/
if( isClosed ){
if( g.perm.Hyperlink ){
blob_appendf(pOut,
"%z<span class=\"wikiTagCancelled\">%s",
xhref(zExtraNS,"%R/info/%s",zTarget), zLB
);
zTerm = "]</span></a>";
}else{
blob_appendf(pOut,"<span class=\"wikiTagCancelled\">%s", zLB);
zTerm = "]</span>";
}
}else{
if( g.perm.Hyperlink ){
blob_appendf(pOut,"%z%s", xhref(zExtraNS,"%R/info/%s", zTarget),zLB);
zTerm = "]</a>";
}else{
blob_appendf(pOut, "%s", zLB);
zTerm = "]";
}
}
}else if( !in_this_repo(zTarget) ){
if( (mFlags & (WIKI_LINKSONLY|WIKI_NOBADLINKS))!=0 ){
zTerm = "";
}else{
blob_appendf(pOut, "<span class=\"brokenlink\">%s", zLB);
zTerm = "]</span>";
}
}else if( g.perm.Hyperlink ){
blob_appendf(pOut, "%z%s",xhref(zExtraNS, "%R/info/%s", zTarget), zLB);
zTerm = "]</a>";
}else{
zTerm = "";
}
if( zTerm[0]==']' && (mFlags & WIKI_NOBRACKET)!=0 ) zTerm++;
}else if( (zRemote = interwiki_url(zTarget))!=0 ){
blob_appendf(pOut, "<a href=\"%z\"%s>", zRemote, zExtra);
zTerm = "</a>";
}else if( (z = validWikiPageName(mFlags, zTarget))!=0 ){
/* The link is to a valid wiki page name */
const char *zOverride = wiki_is_overridden(zTarget);
if( zOverride ){
|
| ︙ | ︙ |