Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Only suppress bad hyperlinks for check-in comments and tickets. Continue to show the broken hyperlinks on wiki pages. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
26ac392308a1273ee9206c2b0d48e65f |
| User & Date: | drh 2012-11-20 13:42:54.799 |
Context
|
2012-11-20
| ||
| 14:28 | Prevent blank user names from being displayed for items awaiting moderation. Also, Show much less output on a sync operation, unless the --verbose flag is given. check-in: 15708574fe user: drh tags: trunk | |
| 13:42 | Only suppress bad hyperlinks for check-in comments and tickets. Continue to show the broken hyperlinks on wiki pages. check-in: 26ac392308 user: drh tags: trunk | |
| 08:21 | If applicable, use the OPEN_ANY_SCHEMA flag in Th_FossilInit. check-in: 3c1ad1def9 user: mistachkin tags: trunk | |
Changes
Changes to src/descendants.c.
| ︙ | ︙ | |||
504 505 506 507 508 509 510 |
db_reset(&q);
}
db_finalize(&q);
db_finalize(&ins);
bag_clear(&seen);
bag_clear(&pending);
}
| < | 504 505 506 507 508 509 510 |
db_reset(&q);
}
db_finalize(&q);
db_finalize(&ins);
bag_clear(&seen);
bag_clear(&pending);
}
|
Changes to src/event.c.
| ︙ | ︙ | |||
363 364 365 366 367 368 369 |
if( zClr && zClr[0] ){
@ <tr><td style="background-color: %h(zClr);">
}else{
@ <tr><td>
}
blob_zero(&com);
blob_append(&com, zComment, -1);
| | | 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 |
if( zClr && zClr[0] ){
@ <tr><td style="background-color: %h(zClr);">
}else{
@ <tr><td>
}
blob_zero(&com);
blob_append(&com, zComment, -1);
wiki_convert(&com, 0, WIKI_INLINE|WIKI_NOBADLINKS);
@ </td></tr></table>
@ </blockquote>
@ <p><b>Page content preview:</b><p>
@ <blockquote>
blob_zero(&event);
blob_append(&event, zBody, -1);
if( wiki_find_title(&event, &title, &tail) ){
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
863 864 865 866 867 868 869 |
);
while( db_step(&q)==SQLITE_ROW ){
const char *zDate = db_column_text(&q, 0);
const char *zUser = db_column_text(&q, 1);
const char *zUuid = db_column_text(&q, 3);
const char *zTagList = db_column_text(&q, 4);
Blob comment;
| | | 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 |
);
while( db_step(&q)==SQLITE_ROW ){
const char *zDate = db_column_text(&q, 0);
const char *zUser = db_column_text(&q, 1);
const char *zUuid = db_column_text(&q, 3);
const char *zTagList = db_column_text(&q, 4);
Blob comment;
int wikiFlags = WIKI_INLINE|WIKI_NOBADLINKS;
if( db_get_boolean("timeline-block-markup", 0)==0 ){
wikiFlags |= WIKI_NOBLOCK;
}
hyperlink_to_uuid(zUuid);
blob_zero(&comment);
db_column_blob(&q, 2, &comment);
wiki_convert(&comment, 0, wikiFlags);
|
| ︙ | ︙ | |||
2151 2152 2153 2154 2155 2156 2157 |
@ <blockquote>
@ <table border=0>
if( zNewColor && zNewColor[0] ){
@ <tr><td style="background-color: %h(zNewColor);">
}else{
@ <tr><td>
}
| | | 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 |
@ <blockquote>
@ <table border=0>
if( zNewColor && zNewColor[0] ){
@ <tr><td style="background-color: %h(zNewColor);">
}else{
@ <tr><td>
}
wiki_convert(&comment, 0, WIKI_INLINE|WIKI_NOBADLINKS);
blob_zero(&suffix);
blob_appendf(&suffix, "(user: %h", zNewUser);
db_prepare(&q, "SELECT substr(tagname,5) FROM tagxref, tag"
" WHERE tagname GLOB 'sym-*' AND tagxref.rid=%d"
" AND tagtype>1 AND tag.tagid=tagxref.tagid",
rid);
while( db_step(&q)==SQLITE_ROW ){
|
| ︙ | ︙ |
Changes to src/report.c.
| ︙ | ︙ | |||
728 729 730 731 732 733 734 |
@ <td valign="top">%z(href("%R/tktedit/%h",zTid))edit</a></td>
zTid = 0;
}
if( zData[0] ){
Blob content;
@ </tr><tr style="background-color:%h(zBg)"><td colspan=%d(pState->nCol)>
blob_init(&content, zData, -1);
| | | 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 |
@ <td valign="top">%z(href("%R/tktedit/%h",zTid))edit</a></td>
zTid = 0;
}
if( zData[0] ){
Blob content;
@ </tr><tr style="background-color:%h(zBg)"><td colspan=%d(pState->nCol)>
blob_init(&content, zData, -1);
wiki_convert(&content, 0, WIKI_NOBADLINKS);
blob_reset(&content);
}
}else if( azName[i][0]=='#' ){
zTid = zData;
@ <td valign="top">%z(href("%R/tktview?name=%h",zData))%h(zData)</a></td>
}else if( zData[0]==0 ){
@ <td valign="top"> </td>
|
| ︙ | ︙ |
Changes to src/th_main.c.
| ︙ | ︙ | |||
162 163 164 165 166 167 168 |
){
if( argc!=2 ){
return Th_WrongNumArgs(interp, "wiki STRING");
}
if( enableOutput ){
Blob src;
blob_init(&src, (char*)argv[1], argl[1]);
| | | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
){
if( argc!=2 ){
return Th_WrongNumArgs(interp, "wiki STRING");
}
if( enableOutput ){
Blob src;
blob_init(&src, (char*)argv[1], argl[1]);
wiki_convert(&src, 0, WIKI_INLINE|WIKI_NOBADLINKS);
blob_reset(&src);
}
return TH_OK;
}
/*
** TH command: htmlize STRING
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
207 208 209 210 211 212 213 |
static Stmt qbranch;
int pendingEndTr = 0; /* True if a </td></tr> is needed */
zPrevDate[0] = 0;
plainText = db_get_int("timeline-plaintext", 0);
mxWikiLen = db_get_int("timeline-max-comment", 0);
if( db_get_boolean("timeline-block-markup", 0) ){
| | | | 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
static Stmt qbranch;
int pendingEndTr = 0; /* True if a </td></tr> is needed */
zPrevDate[0] = 0;
plainText = db_get_int("timeline-plaintext", 0);
mxWikiLen = db_get_int("timeline-max-comment", 0);
if( db_get_boolean("timeline-block-markup", 0) ){
wikiFlags = WIKI_INLINE | WIKI_NOBADLINKS;
}else{
wikiFlags = WIKI_INLINE | WIKI_NOBLOCK | WIKI_NOBADLINKS;
}
if( tmFlags & TIMELINE_GRAPH ){
pGraph = graph_init();
/* style is not moved to css, because this is
** a technical div for the timeline graph
*/
@ <div id="canvas" style="position:relative;width:1px;height:1px;"></div>
|
| ︙ | ︙ |
Changes to src/tkt.c.
| ︙ | ︙ | |||
827 828 829 830 831 832 833 |
for(i=0; i<pTkt->nField; i++){
Blob val;
const char *z;
z = pTkt->aField[i].zName;
blob_set(&val, pTkt->aField[i].zValue);
if( z[0]=='+' ){
@ <li>Appended to %h(&z[1]):<blockquote>
| | | | 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 |
for(i=0; i<pTkt->nField; i++){
Blob val;
const char *z;
z = pTkt->aField[i].zName;
blob_set(&val, pTkt->aField[i].zValue);
if( z[0]=='+' ){
@ <li>Appended to %h(&z[1]):<blockquote>
wiki_convert(&val, 0, WIKI_NOBADLINKS);
@ </blockquote></li>
}else if( blob_size(&val)<=50 && contains_newline(&val) ){
@ <li>Change %h(z) to:<blockquote>
wiki_convert(&val, 0, WIKI_NOBADLINKS);
@ </blockquote></li>
}else{
@ <li>Change %h(z) to "%h(blob_str(&val))"</li>
}
blob_reset(&val);
}
@ </ol>
|
| ︙ | ︙ |
Changes to src/wikiformat.c.
| ︙ | ︙ | |||
1082 1083 1084 1085 1086 1087 1088 | } /* ** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix ** if there is one) if zTarget is a valid wiki page name. Return NULL if ** zTarget names a page that does not exist. */ | | > | > | 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 |
}
/*
** Return a pointer to the name part of zTarget (skipping the "wiki:" prefix
** if there is one) if zTarget is a valid wiki page name. Return NULL if
** zTarget names a page that does not exist.
*/
static const char *validWikiPageName(Renderer *p, const char *zTarget){
if( strncmp(zTarget, "wiki:", 5)==0
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
return zTarget+5;
}
if( strcmp(zTarget, "Sandbox")==0 ) return zTarget;
if( wiki_name_is_wellformed((const unsigned char *)zTarget)
&& ((p->state & WIKI_NOBADLINKS)==0 ||
db_exists("SELECT 1 FROM tag WHERE tagname GLOB 'wiki-%q'", zTarget))
){
return zTarget;
}
return 0;
}
/*
** Resolve a hyperlink. The zTarget argument is the content of the [...]
|
| ︙ | ︙ | |||
1192 1193 1194 1195 1196 1197 1198 |
}else if( g.perm.Hyperlink ){
blob_appendf(p->pOut, "%z[",href("%R/info/%s", zTarget));
zTerm = "]</a>";
}
}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);
| | | 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 |
}else if( g.perm.Hyperlink ){
blob_appendf(p->pOut, "%z[",href("%R/info/%s", zTarget));
zTerm = "]</a>";
}
}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 ){
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_DECORATEONLY))!=0 ){
zTerm = "";
}else{
|
| ︙ | ︙ | |||
1590 1591 1592 1593 1594 1595 1596 |
** initialized. The output is merely appended to pOut.
** If pOut is NULL, then the output is appended to the CGI
** reply.
*/
void wiki_convert(Blob *pIn, Blob *pOut, int flags){
Renderer renderer;
| < < < | 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 |
** initialized. The output is merely appended to pOut.
** If pOut is NULL, then the output is appended to the CGI
** reply.
*/
void wiki_convert(Blob *pIn, Blob *pOut, int flags){
Renderer renderer;
memset(&renderer, 0, sizeof(renderer));
renderer.renderFlags = flags;
renderer.state = ALLOW_WIKI|AT_NEWLINE|AT_PARAGRAPH|flags;
if( flags & WIKI_NOBLOCK ){
renderer.state |= INLINE_MARKUP_ONLY;
}
if( flags & WIKI_INLINE ){
|
| ︙ | ︙ |