Fossil SCM

Only suppress bad hyperlinks for check-in comments and tickets. Continue to show the broken hyperlinks on wiki pages.

drh 2012-11-20 13:42 trunk
Commit 26ac392308a1273ee9206c2b0d48e65f827aa282
--- src/descendants.c
+++ src/descendants.c
@@ -506,6 +506,5 @@
506506
db_finalize(&q);
507507
db_finalize(&ins);
508508
bag_clear(&seen);
509509
bag_clear(&pending);
510510
}
511
-
512511
--- src/descendants.c
+++ src/descendants.c
@@ -506,6 +506,5 @@
506 db_finalize(&q);
507 db_finalize(&ins);
508 bag_clear(&seen);
509 bag_clear(&pending);
510 }
511
512
--- src/descendants.c
+++ src/descendants.c
@@ -506,6 +506,5 @@
506 db_finalize(&q);
507 db_finalize(&ins);
508 bag_clear(&seen);
509 bag_clear(&pending);
510 }
 
511
+1 -1
--- src/event.c
+++ src/event.c
@@ -365,11 +365,11 @@
365365
}else{
366366
@ <tr><td>
367367
}
368368
blob_zero(&com);
369369
blob_append(&com, zComment, -1);
370
- wiki_convert(&com, 0, WIKI_INLINE);
370
+ wiki_convert(&com, 0, WIKI_INLINE|WIKI_NOBADLINKS);
371371
@ </td></tr></table>
372372
@ </blockquote>
373373
@ <p><b>Page content preview:</b><p>
374374
@ <blockquote>
375375
blob_zero(&event);
376376
--- src/event.c
+++ src/event.c
@@ -365,11 +365,11 @@
365 }else{
366 @ <tr><td>
367 }
368 blob_zero(&com);
369 blob_append(&com, zComment, -1);
370 wiki_convert(&com, 0, WIKI_INLINE);
371 @ </td></tr></table>
372 @ </blockquote>
373 @ <p><b>Page content preview:</b><p>
374 @ <blockquote>
375 blob_zero(&event);
376
--- src/event.c
+++ src/event.c
@@ -365,11 +365,11 @@
365 }else{
366 @ <tr><td>
367 }
368 blob_zero(&com);
369 blob_append(&com, zComment, -1);
370 wiki_convert(&com, 0, WIKI_INLINE|WIKI_NOBADLINKS);
371 @ </td></tr></table>
372 @ </blockquote>
373 @ <p><b>Page content preview:</b><p>
374 @ <blockquote>
375 blob_zero(&event);
376
+2 -2
--- src/info.c
+++ src/info.c
@@ -865,11 +865,11 @@
865865
const char *zDate = db_column_text(&q, 0);
866866
const char *zUser = db_column_text(&q, 1);
867867
const char *zUuid = db_column_text(&q, 3);
868868
const char *zTagList = db_column_text(&q, 4);
869869
Blob comment;
870
- int wikiFlags = WIKI_INLINE;
870
+ int wikiFlags = WIKI_INLINE|WIKI_NOBADLINKS;
871871
if( db_get_boolean("timeline-block-markup", 0)==0 ){
872872
wikiFlags |= WIKI_NOBLOCK;
873873
}
874874
hyperlink_to_uuid(zUuid);
875875
blob_zero(&comment);
@@ -2153,11 +2153,11 @@
21532153
if( zNewColor && zNewColor[0] ){
21542154
@ <tr><td style="background-color: %h(zNewColor);">
21552155
}else{
21562156
@ <tr><td>
21572157
}
2158
- wiki_convert(&comment, 0, WIKI_INLINE);
2158
+ wiki_convert(&comment, 0, WIKI_INLINE|WIKI_NOBADLINKS);
21592159
blob_zero(&suffix);
21602160
blob_appendf(&suffix, "(user: %h", zNewUser);
21612161
db_prepare(&q, "SELECT substr(tagname,5) FROM tagxref, tag"
21622162
" WHERE tagname GLOB 'sym-*' AND tagxref.rid=%d"
21632163
" AND tagtype>1 AND tag.tagid=tagxref.tagid",
21642164
--- src/info.c
+++ src/info.c
@@ -865,11 +865,11 @@
865 const char *zDate = db_column_text(&q, 0);
866 const char *zUser = db_column_text(&q, 1);
867 const char *zUuid = db_column_text(&q, 3);
868 const char *zTagList = db_column_text(&q, 4);
869 Blob comment;
870 int wikiFlags = WIKI_INLINE;
871 if( db_get_boolean("timeline-block-markup", 0)==0 ){
872 wikiFlags |= WIKI_NOBLOCK;
873 }
874 hyperlink_to_uuid(zUuid);
875 blob_zero(&comment);
@@ -2153,11 +2153,11 @@
2153 if( zNewColor && zNewColor[0] ){
2154 @ <tr><td style="background-color: %h(zNewColor);">
2155 }else{
2156 @ <tr><td>
2157 }
2158 wiki_convert(&comment, 0, WIKI_INLINE);
2159 blob_zero(&suffix);
2160 blob_appendf(&suffix, "(user: %h", zNewUser);
2161 db_prepare(&q, "SELECT substr(tagname,5) FROM tagxref, tag"
2162 " WHERE tagname GLOB 'sym-*' AND tagxref.rid=%d"
2163 " AND tagtype>1 AND tag.tagid=tagxref.tagid",
2164
--- src/info.c
+++ src/info.c
@@ -865,11 +865,11 @@
865 const char *zDate = db_column_text(&q, 0);
866 const char *zUser = db_column_text(&q, 1);
867 const char *zUuid = db_column_text(&q, 3);
868 const char *zTagList = db_column_text(&q, 4);
869 Blob comment;
870 int wikiFlags = WIKI_INLINE|WIKI_NOBADLINKS;
871 if( db_get_boolean("timeline-block-markup", 0)==0 ){
872 wikiFlags |= WIKI_NOBLOCK;
873 }
874 hyperlink_to_uuid(zUuid);
875 blob_zero(&comment);
@@ -2153,11 +2153,11 @@
2153 if( zNewColor && zNewColor[0] ){
2154 @ <tr><td style="background-color: %h(zNewColor);">
2155 }else{
2156 @ <tr><td>
2157 }
2158 wiki_convert(&comment, 0, WIKI_INLINE|WIKI_NOBADLINKS);
2159 blob_zero(&suffix);
2160 blob_appendf(&suffix, "(user: %h", zNewUser);
2161 db_prepare(&q, "SELECT substr(tagname,5) FROM tagxref, tag"
2162 " WHERE tagname GLOB 'sym-*' AND tagxref.rid=%d"
2163 " AND tagtype>1 AND tag.tagid=tagxref.tagid",
2164
+1 -1
--- src/report.c
+++ src/report.c
@@ -730,11 +730,11 @@
730730
}
731731
if( zData[0] ){
732732
Blob content;
733733
@ </tr><tr style="background-color:%h(zBg)"><td colspan=%d(pState->nCol)>
734734
blob_init(&content, zData, -1);
735
- wiki_convert(&content, 0, 0);
735
+ wiki_convert(&content, 0, WIKI_NOBADLINKS);
736736
blob_reset(&content);
737737
}
738738
}else if( azName[i][0]=='#' ){
739739
zTid = zData;
740740
@ <td valign="top">%z(href("%R/tktview?name=%h",zData))%h(zData)</a></td>
741741
--- src/report.c
+++ src/report.c
@@ -730,11 +730,11 @@
730 }
731 if( zData[0] ){
732 Blob content;
733 @ </tr><tr style="background-color:%h(zBg)"><td colspan=%d(pState->nCol)>
734 blob_init(&content, zData, -1);
735 wiki_convert(&content, 0, 0);
736 blob_reset(&content);
737 }
738 }else if( azName[i][0]=='#' ){
739 zTid = zData;
740 @ <td valign="top">%z(href("%R/tktview?name=%h",zData))%h(zData)</a></td>
741
--- src/report.c
+++ src/report.c
@@ -730,11 +730,11 @@
730 }
731 if( zData[0] ){
732 Blob content;
733 @ </tr><tr style="background-color:%h(zBg)"><td colspan=%d(pState->nCol)>
734 blob_init(&content, zData, -1);
735 wiki_convert(&content, 0, WIKI_NOBADLINKS);
736 blob_reset(&content);
737 }
738 }else if( azName[i][0]=='#' ){
739 zTid = zData;
740 @ <td valign="top">%z(href("%R/tktview?name=%h",zData))%h(zData)</a></td>
741
+1 -1
--- src/th_main.c
+++ src/th_main.c
@@ -164,11 +164,11 @@
164164
return Th_WrongNumArgs(interp, "wiki STRING");
165165
}
166166
if( enableOutput ){
167167
Blob src;
168168
blob_init(&src, (char*)argv[1], argl[1]);
169
- wiki_convert(&src, 0, WIKI_INLINE);
169
+ wiki_convert(&src, 0, WIKI_INLINE|WIKI_NOBADLINKS);
170170
blob_reset(&src);
171171
}
172172
return TH_OK;
173173
}
174174
175175
--- src/th_main.c
+++ src/th_main.c
@@ -164,11 +164,11 @@
164 return Th_WrongNumArgs(interp, "wiki STRING");
165 }
166 if( enableOutput ){
167 Blob src;
168 blob_init(&src, (char*)argv[1], argl[1]);
169 wiki_convert(&src, 0, WIKI_INLINE);
170 blob_reset(&src);
171 }
172 return TH_OK;
173 }
174
175
--- src/th_main.c
+++ src/th_main.c
@@ -164,11 +164,11 @@
164 return Th_WrongNumArgs(interp, "wiki STRING");
165 }
166 if( enableOutput ){
167 Blob src;
168 blob_init(&src, (char*)argv[1], argl[1]);
169 wiki_convert(&src, 0, WIKI_INLINE|WIKI_NOBADLINKS);
170 blob_reset(&src);
171 }
172 return TH_OK;
173 }
174
175
+2 -2
--- src/timeline.c
+++ src/timeline.c
@@ -209,13 +209,13 @@
209209
210210
zPrevDate[0] = 0;
211211
plainText = db_get_int("timeline-plaintext", 0);
212212
mxWikiLen = db_get_int("timeline-max-comment", 0);
213213
if( db_get_boolean("timeline-block-markup", 0) ){
214
- wikiFlags = WIKI_INLINE;
214
+ wikiFlags = WIKI_INLINE | WIKI_NOBADLINKS;
215215
}else{
216
- wikiFlags = WIKI_INLINE | WIKI_NOBLOCK;
216
+ wikiFlags = WIKI_INLINE | WIKI_NOBLOCK | WIKI_NOBADLINKS;
217217
}
218218
if( tmFlags & TIMELINE_GRAPH ){
219219
pGraph = graph_init();
220220
/* style is not moved to css, because this is
221221
** a technical div for the timeline graph
222222
--- src/timeline.c
+++ src/timeline.c
@@ -209,13 +209,13 @@
209
210 zPrevDate[0] = 0;
211 plainText = db_get_int("timeline-plaintext", 0);
212 mxWikiLen = db_get_int("timeline-max-comment", 0);
213 if( db_get_boolean("timeline-block-markup", 0) ){
214 wikiFlags = WIKI_INLINE;
215 }else{
216 wikiFlags = WIKI_INLINE | WIKI_NOBLOCK;
217 }
218 if( tmFlags & TIMELINE_GRAPH ){
219 pGraph = graph_init();
220 /* style is not moved to css, because this is
221 ** a technical div for the timeline graph
222
--- src/timeline.c
+++ src/timeline.c
@@ -209,13 +209,13 @@
209
210 zPrevDate[0] = 0;
211 plainText = db_get_int("timeline-plaintext", 0);
212 mxWikiLen = db_get_int("timeline-max-comment", 0);
213 if( db_get_boolean("timeline-block-markup", 0) ){
214 wikiFlags = WIKI_INLINE | WIKI_NOBADLINKS;
215 }else{
216 wikiFlags = WIKI_INLINE | WIKI_NOBLOCK | WIKI_NOBADLINKS;
217 }
218 if( tmFlags & TIMELINE_GRAPH ){
219 pGraph = graph_init();
220 /* style is not moved to css, because this is
221 ** a technical div for the timeline graph
222
+2 -2
--- src/tkt.c
+++ src/tkt.c
@@ -829,15 +829,15 @@
829829
const char *z;
830830
z = pTkt->aField[i].zName;
831831
blob_set(&val, pTkt->aField[i].zValue);
832832
if( z[0]=='+' ){
833833
@ <li>Appended to %h(&z[1]):<blockquote>
834
- wiki_convert(&val, 0, 0);
834
+ wiki_convert(&val, 0, WIKI_NOBADLINKS);
835835
@ </blockquote></li>
836836
}else if( blob_size(&val)<=50 && contains_newline(&val) ){
837837
@ <li>Change %h(z) to:<blockquote>
838
- wiki_convert(&val, 0, 0);
838
+ wiki_convert(&val, 0, WIKI_NOBADLINKS);
839839
@ </blockquote></li>
840840
}else{
841841
@ <li>Change %h(z) to "%h(blob_str(&val))"</li>
842842
}
843843
blob_reset(&val);
844844
--- src/tkt.c
+++ src/tkt.c
@@ -829,15 +829,15 @@
829 const char *z;
830 z = pTkt->aField[i].zName;
831 blob_set(&val, pTkt->aField[i].zValue);
832 if( z[0]=='+' ){
833 @ <li>Appended to %h(&z[1]):<blockquote>
834 wiki_convert(&val, 0, 0);
835 @ </blockquote></li>
836 }else if( blob_size(&val)<=50 && contains_newline(&val) ){
837 @ <li>Change %h(z) to:<blockquote>
838 wiki_convert(&val, 0, 0);
839 @ </blockquote></li>
840 }else{
841 @ <li>Change %h(z) to "%h(blob_str(&val))"</li>
842 }
843 blob_reset(&val);
844
--- src/tkt.c
+++ src/tkt.c
@@ -829,15 +829,15 @@
829 const char *z;
830 z = pTkt->aField[i].zName;
831 blob_set(&val, pTkt->aField[i].zValue);
832 if( z[0]=='+' ){
833 @ <li>Appended to %h(&z[1]):<blockquote>
834 wiki_convert(&val, 0, WIKI_NOBADLINKS);
835 @ </blockquote></li>
836 }else if( blob_size(&val)<=50 && contains_newline(&val) ){
837 @ <li>Change %h(z) to:<blockquote>
838 wiki_convert(&val, 0, WIKI_NOBADLINKS);
839 @ </blockquote></li>
840 }else{
841 @ <li>Change %h(z) to "%h(blob_str(&val))"</li>
842 }
843 blob_reset(&val);
844
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1084,18 +1084,20 @@
10841084
/*
10851085
** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix
10861086
** if there is one) if zTarget is a valid wiki page name. Return NULL if
10871087
** zTarget names a page that does not exist.
10881088
*/
1089
-static const char *validWikiPageName(const char *zTarget){
1089
+static const char *validWikiPageName(Renderer *p, const char *zTarget){
10901090
if( strncmp(zTarget, "wiki:", 5)==0
10911091
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
10921092
return zTarget+5;
10931093
}
10941094
if( strcmp(zTarget, "Sandbox")==0 ) return zTarget;
10951095
if( wiki_name_is_wellformed((const unsigned char *)zTarget)
1096
- && db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'", zTarget) ){
1096
+ && ((p->state & WIKI_NOBADLINKS)==0 ||
1097
+ db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'", zTarget))
1098
+ ){
10971099
return zTarget;
10981100
}
10991101
return 0;
11001102
}
11011103
@@ -1194,11 +1196,11 @@
11941196
zTerm = "]</a>";
11951197
}
11961198
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
11971199
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
11981200
blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget);
1199
- }else if( (z = validWikiPageName(zTarget))!=0 ){
1201
+ }else if( (z = validWikiPageName(p, zTarget))!=0 ){
12001202
blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
12011203
}else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
12021204
/* Probably an array subscript in code */
12031205
zTerm = "";
12041206
}else if( (p->state & (WIKI_NOBADLINKS|WIKI_DECORATEONLY))!=0 ){
@@ -1592,13 +1594,10 @@
15921594
** reply.
15931595
*/
15941596
void wiki_convert(Blob *pIn, Blob *pOut, int flags){
15951597
Renderer renderer;
15961598
1597
- /* Never show bad hyperlinks */
1598
- flags |= WIKI_NOBADLINKS;
1599
-
16001599
memset(&renderer, 0, sizeof(renderer));
16011600
renderer.renderFlags = flags;
16021601
renderer.state = ALLOW_WIKI|AT_NEWLINE|AT_PARAGRAPH|flags;
16031602
if( flags & WIKI_NOBLOCK ){
16041603
renderer.state |= INLINE_MARKUP_ONLY;
16051604
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1084,18 +1084,20 @@
1084 /*
1085 ** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix
1086 ** if there is one) if zTarget is a valid wiki page name. Return NULL if
1087 ** zTarget names a page that does not exist.
1088 */
1089 static const char *validWikiPageName(const char *zTarget){
1090 if( strncmp(zTarget, "wiki:", 5)==0
1091 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1092 return zTarget+5;
1093 }
1094 if( strcmp(zTarget, "Sandbox")==0 ) return zTarget;
1095 if( wiki_name_is_wellformed((const unsigned char *)zTarget)
1096 && db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'", zTarget) ){
 
 
1097 return zTarget;
1098 }
1099 return 0;
1100 }
1101
@@ -1194,11 +1196,11 @@
1194 zTerm = "]</a>";
1195 }
1196 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1197 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1198 blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget);
1199 }else if( (z = validWikiPageName(zTarget))!=0 ){
1200 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
1201 }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1202 /* Probably an array subscript in code */
1203 zTerm = "";
1204 }else if( (p->state & (WIKI_NOBADLINKS|WIKI_DECORATEONLY))!=0 ){
@@ -1592,13 +1594,10 @@
1592 ** reply.
1593 */
1594 void wiki_convert(Blob *pIn, Blob *pOut, int flags){
1595 Renderer renderer;
1596
1597 /* Never show bad hyperlinks */
1598 flags |= WIKI_NOBADLINKS;
1599
1600 memset(&renderer, 0, sizeof(renderer));
1601 renderer.renderFlags = flags;
1602 renderer.state = ALLOW_WIKI|AT_NEWLINE|AT_PARAGRAPH|flags;
1603 if( flags & WIKI_NOBLOCK ){
1604 renderer.state |= INLINE_MARKUP_ONLY;
1605
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1084,18 +1084,20 @@
1084 /*
1085 ** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix
1086 ** if there is one) if zTarget is a valid wiki page name. Return NULL if
1087 ** zTarget names a page that does not exist.
1088 */
1089 static const char *validWikiPageName(Renderer *p, const char *zTarget){
1090 if( strncmp(zTarget, "wiki:", 5)==0
1091 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1092 return zTarget+5;
1093 }
1094 if( strcmp(zTarget, "Sandbox")==0 ) return zTarget;
1095 if( wiki_name_is_wellformed((const unsigned char *)zTarget)
1096 && ((p->state & WIKI_NOBADLINKS)==0 ||
1097 db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'", zTarget))
1098 ){
1099 return zTarget;
1100 }
1101 return 0;
1102 }
1103
@@ -1194,11 +1196,11 @@
1196 zTerm = "]</a>";
1197 }
1198 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1199 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1200 blob_appendf(p->pOut, "<a href=\"%R/timeline?c=%T\">", zTarget);
1201 }else if( (z = validWikiPageName(p, zTarget))!=0 ){
1202 blob_appendf(p->pOut, "<a href=\"%R/wiki?name=%T\">", z);
1203 }else if( zTarget>=&zOrig[2] && !fossil_isspace(zTarget[-2]) ){
1204 /* Probably an array subscript in code */
1205 zTerm = "";
1206 }else if( (p->state & (WIKI_NOBADLINKS|WIKI_DECORATEONLY))!=0 ){
@@ -1592,13 +1594,10 @@
1594 ** reply.
1595 */
1596 void wiki_convert(Blob *pIn, Blob *pOut, int flags){
1597 Renderer renderer;
1598
 
 
 
1599 memset(&renderer, 0, sizeof(renderer));
1600 renderer.renderFlags = flags;
1601 renderer.state = ALLOW_WIKI|AT_NEWLINE|AT_PARAGRAPH|flags;
1602 if( flags & WIKI_NOBLOCK ){
1603 renderer.state |= INLINE_MARKUP_ONLY;
1604

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button