Overview
SHA1 Hash: | 55dc2abc60a4692e7b029f3dcbafb986286623ad |
---|---|
Date: | 2007-09-24 01:38:45 |
User: | jnc |
Comment: | Some elements moved to correct order in wiki AllowedMarkup array. Removed hardcoded link in resolveHyperlink and also made it handle outside links, such as http, ftp, mailto, etc... When looking for valid HTML codes, I changed isalpha to isalnum so that H1, H2, etc... would be recognized. Better code for setting inital checkout db entry. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified src/db.c from [6fa9884a72] to [c864ef2a7b].
@@ -887,14 +887,14 @@ db_init_database("./_FOSSIL_", zLocalSchema, (char*)0); db_open_local(); db_lset("repository", blob_str(&path)); vid = db_int(0, "SELECT pid FROM plink y" " WHERE NOT EXISTS(SELECT 1 FROM plink x WHERE x.cid=y.pid)"); - db_lset_int("checkout", vid); if( vid==0 ){ db_lset_int("checkout", 1); }else{ + db_lset_int("checkout", vid); g.argv = azNewArgv; g.argc = 3; update_cmd(); } }
Modified src/wikiformat.c from [a4e0918f23] to [12488f8f7c].
@@ -126,13 +126,13 @@ ** in aAllowedMarkup[]. */ #define MARKUP_INVALID 255 #define MARKUP_A 0 #define MARKUP_ADDRESS 1 -#define MARKUP_BIG 2 -#define MARKUP_BLOCKQUOTE 3 -#define MARKUP_B 4 +#define MARKUP_B 2 +#define MARKUP_BIG 3 +#define MARKUP_BLOCKQUOTE 4 #define MARKUP_BR 5 #define MARKUP_CENTER 6 #define MARKUP_CITE 7 #define MARKUP_CODE 8 #define MARKUP_DD 9 @@ -155,24 +155,24 @@ #define MARKUP_NOBR 26 #define MARKUP_NOWIKI 27 #define MARKUP_OL 28 #define MARKUP_P 29 #define MARKUP_PRE 30 -#define MARKUP_SAMP 31 -#define MARKUP_SMALL 32 -#define MARKUP_S 33 +#define MARKUP_S 31 +#define MARKUP_SAMP 32 +#define MARKUP_SMALL 33 #define MARKUP_STRIKE 34 #define MARKUP_STRONG 35 #define MARKUP_SUB 36 #define MARKUP_SUP 37 #define MARKUP_TABLE 38 #define MARKUP_TD 39 #define MARKUP_TH 40 #define MARKUP_TR 41 #define MARKUP_TT 42 -#define MARKUP_UL 43 -#define MARKUP_U 44 +#define MARKUP_U 43 +#define MARKUP_UL 44 #define MARKUP_VAR 45 #define MARKUP_VERBATIM 46 /* ** The various markup is divided into the following types: @@ -197,13 +197,13 @@ short int iType; /* The MUTYPE_* code */ int allowedAttr; /* Allowed attributes on this markup */ } aMarkup[] = { { "a", MARKUP_A, MUTYPE_HYPERLINK, ATTR_HREF }, { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 }, + { "b", MARKUP_B, MUTYPE_FONT, 0 }, { "big", MARKUP_BIG, MUTYPE_FONT, 0 }, { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 }, - { "b", MARKUP_B, MUTYPE_FONT, 0 }, { "br", MARKUP_BR, MUTYPE_SINGLE, ATTR_CLEAR }, { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 }, { "cite", MARKUP_CITE, MUTYPE_FONT, 0 }, { "code", MARKUP_CODE, MUTYPE_FONT, 0 }, { "dd", MARKUP_DD, MUTYPE_LI, 0 }, @@ -232,13 +232,13 @@ { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 }, { "ol", MARKUP_OL, MUTYPE_LIST, ATTR_START|ATTR_TYPE|ATTR_COMPACT }, { "p", MARKUP_P, MUTYPE_BLOCK, ATTR_ALIGN }, { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 }, + { "s", MARKUP_S, MUTYPE_FONT, 0 }, { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 }, { "small", MARKUP_SMALL, MUTYPE_FONT, 0 }, - { "s", MARKUP_S, MUTYPE_FONT, 0 }, { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 }, { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 }, { "sub", MARKUP_SUB, MUTYPE_FONT, 0 }, { "sup", MARKUP_SUP, MUTYPE_FONT, 0 }, { "table", MARKUP_TABLE, MUTYPE_TABLE, @@ -251,13 +251,13 @@ ATTR_ALIGN|ATTR_BGCOLOR|ATTR_COLSPAN| ATTR_ROWSPAN|ATTR_VALIGN }, { "tr", MARKUP_TR, MUTYPE_TR, ATTR_ALIGN|ATTR_BGCOLOR||ATTR_VALIGN }, { "tt", MARKUP_TT, MUTYPE_FONT, 0 }, + { "u", MARKUP_U, MUTYPE_FONT, 0 }, { "ul", MARKUP_UL, MUTYPE_LIST, ATTR_TYPE|ATTR_COMPACT }, - { "u", MARKUP_U, MUTYPE_FONT, 0 }, { "var", MARKUP_VAR, MUTYPE_FONT, 0 }, { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL, ATTR_ID }, }; /* @@ -313,11 +313,11 @@ static int markupLength(const char *z){ int n = 1; int inparen = 0; if( z[n]=='/' ){ n++; } if( !isalpha(z[n]) ) return 0; - while( isalpha(z[n]) ){ n++; } + while( isalnum(z[n]) ){ n++; } if( z[n]!='>' && !isspace(z[n]) ) return 0; while( z[n] && (z[n]!='>' || inparen) ){ if( z[n]=='"' ){ inparen = !inparen; } @@ -716,11 +716,20 @@ /* ** Resolve a hyperlink. The argument is the content of the [...] ** in the wiki. Append the URL to the output of the Renderer. */ static void resolveHyperlink(const char *zTarget, Renderer *p){ - blob_appendf(p->pOut, "http://www.fossil-scm.org/test-%T", zTarget); + if( strncmp(zTarget, "http:", 5)==0 + || strncmp(zTarget, "https:", 6)==0 + || strncmp(zTarget, "ftp:", 4)==0 + || strncmp(zTarget, "mailto:", 7)==0 + || strncmp(zTarget, "gopher:", 7)==0 + ){ + blob_appendf(p->pOut, zTarget); + }else{ + blob_appendf(p->pOut, "%s/wiki/%T", g.zBaseURL, zTarget); + } } /* ** Check to see if the given parsed markup is the correct ** </verbatim> tag.