Fossil SCM

Fix some (certainly not all) problems with wiki editing.

drh 2007-10-12 23:18 UTC trunk
Commit df646a7f4ca2562878294c860ef57c4a0a5b1afa
2 files changed +10 -10 +4 -3
+10 -10
--- src/wiki.c
+++ src/wiki.c
@@ -133,19 +133,19 @@
133133
zBody = m.zWiki;
134134
}
135135
}
136136
if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
137137
style_submenu_element("Edit", "Edit Wiki Page",
138
- mprintf("%s/wikiedit?name=%t", g.zTop, zPageName));
138
+ mprintf("%s/wikiedit?name=%T", g.zTop, zPageName));
139139
}
140140
if( rid && g.okApndWiki ){
141141
style_submenu_element("Append", "Add A Comment",
142
- mprintf("%s/wikiappend?name=%t", g.zTop, zPageName));
142
+ mprintf("%s/wikiappend?name=%T", g.zTop, zPageName));
143143
}
144144
if( g.okHistory ){
145145
style_submenu_element("History", "History",
146
- mprintf("%s/whistory?name=%t", g.zTop, zPageName));
146
+ mprintf("%s/whistory?name=%T", g.zTop, zPageName));
147147
}
148148
zHtmlPageName = mprintf("%h", zPageName);
149149
style_header(zHtmlPageName);
150150
blob_init(&wiki, zBody, -1);
151151
wiki_convert(&wiki, 0);
@@ -223,14 +223,14 @@
223223
db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
224224
manifest_crosslink(nrid, &wiki);
225225
blob_reset(&wiki);
226226
content_deltify(rid, nrid, 0);
227227
db_end_transaction(0);
228
- cgi_redirectf("wiki?name=%t", zPageName);
228
+ cgi_redirectf("wiki?name=%T", zPageName);
229229
}
230230
if( P("cancel")!=0 ){
231
- cgi_redirectf("wiki?name=%t", zPageName);
231
+ cgi_redirectf("wiki?name=%T", zPageName);
232232
return;
233233
}
234234
if( zBody==0 ){
235235
zBody = mprintf("<i>Empty Page</i>");
236236
}
@@ -248,11 +248,11 @@
248248
if( z[0]=='\n' ) n++;
249249
}
250250
if( n<20 ) n = 20;
251251
if( n>200 ) n = 200;
252252
@ <form method="POST" action="%s(g.zBaseURL)/wikiedit">
253
- @ <input type="hidden" name="name" value="%t(zPageName)">
253
+ @ <input type="hidden" name="name" value="%h(zPageName)">
254254
@ <textarea name="w" class="wikiedit" cols="80"
255255
@ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
256256
@ <br>
257257
@ <input type="submit" name="preview" value="Preview Your Changes">
258258
@ <input type="submit" name="submit" value="Apply These Changes">
@@ -350,14 +350,14 @@
350350
db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
351351
manifest_crosslink(nrid, &wiki);
352352
blob_reset(&wiki);
353353
content_deltify(rid, nrid, 0);
354354
db_end_transaction(0);
355
- cgi_redirectf("wiki?name=%t", zPageName);
355
+ cgi_redirectf("wiki?name=%T", zPageName);
356356
}
357357
if( P("cancel")!=0 ){
358
- cgi_redirectf("wiki?name=%t", zPageName);
358
+ cgi_redirectf("wiki?name=%T", zPageName);
359359
return;
360360
}
361361
zHtmlPageName = mprintf("Append Comment To: %h", zPageName);
362362
style_header(zHtmlPageName);
363363
if( P("preview")!=0 ){
@@ -369,11 +369,11 @@
369369
@ <hr>
370370
blob_reset(&preview);
371371
}
372372
zUser = PD("u", g.zLogin);
373373
@ <form method="POST" action="%s(g.zBaseURL)/wikiappend">
374
- @ <input type="hidden" name="name" value="%t(zPageName)">
374
+ @ <input type="hidden" name="name" value="%h(zPageName)">
375375
@ Your Name:
376376
@ <input type="text" name="u" size="20" value="%h(zUser)"><br>
377377
@ Comment to append:<br>
378378
@ <textarea name="r" class="wikiedit" cols="80"
379379
@ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
@@ -430,10 +430,10 @@
430430
"SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname GLOB 'wiki-*'"
431431
" ORDER BY lower(tagname)"
432432
);
433433
while( db_step(&q)==SQLITE_ROW ){
434434
const char *zName = db_column_text(&q, 0);
435
- @ <li><a href="%s(g.zBaseURL)/wiki?page=%t(zName)">%h(zName)</a></li>
435
+ @ <li><a href="%s(g.zBaseURL)/wiki?page=%T(zName)">%h(zName)</a></li>
436436
}
437437
db_finalize(&q);
438438
style_footer();
439439
}
440440
--- src/wiki.c
+++ src/wiki.c
@@ -133,19 +133,19 @@
133 zBody = m.zWiki;
134 }
135 }
136 if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
137 style_submenu_element("Edit", "Edit Wiki Page",
138 mprintf("%s/wikiedit?name=%t", g.zTop, zPageName));
139 }
140 if( rid && g.okApndWiki ){
141 style_submenu_element("Append", "Add A Comment",
142 mprintf("%s/wikiappend?name=%t", g.zTop, zPageName));
143 }
144 if( g.okHistory ){
145 style_submenu_element("History", "History",
146 mprintf("%s/whistory?name=%t", g.zTop, zPageName));
147 }
148 zHtmlPageName = mprintf("%h", zPageName);
149 style_header(zHtmlPageName);
150 blob_init(&wiki, zBody, -1);
151 wiki_convert(&wiki, 0);
@@ -223,14 +223,14 @@
223 db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
224 manifest_crosslink(nrid, &wiki);
225 blob_reset(&wiki);
226 content_deltify(rid, nrid, 0);
227 db_end_transaction(0);
228 cgi_redirectf("wiki?name=%t", zPageName);
229 }
230 if( P("cancel")!=0 ){
231 cgi_redirectf("wiki?name=%t", zPageName);
232 return;
233 }
234 if( zBody==0 ){
235 zBody = mprintf("<i>Empty Page</i>");
236 }
@@ -248,11 +248,11 @@
248 if( z[0]=='\n' ) n++;
249 }
250 if( n<20 ) n = 20;
251 if( n>200 ) n = 200;
252 @ <form method="POST" action="%s(g.zBaseURL)/wikiedit">
253 @ <input type="hidden" name="name" value="%t(zPageName)">
254 @ <textarea name="w" class="wikiedit" cols="80"
255 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
256 @ <br>
257 @ <input type="submit" name="preview" value="Preview Your Changes">
258 @ <input type="submit" name="submit" value="Apply These Changes">
@@ -350,14 +350,14 @@
350 db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
351 manifest_crosslink(nrid, &wiki);
352 blob_reset(&wiki);
353 content_deltify(rid, nrid, 0);
354 db_end_transaction(0);
355 cgi_redirectf("wiki?name=%t", zPageName);
356 }
357 if( P("cancel")!=0 ){
358 cgi_redirectf("wiki?name=%t", zPageName);
359 return;
360 }
361 zHtmlPageName = mprintf("Append Comment To: %h", zPageName);
362 style_header(zHtmlPageName);
363 if( P("preview")!=0 ){
@@ -369,11 +369,11 @@
369 @ <hr>
370 blob_reset(&preview);
371 }
372 zUser = PD("u", g.zLogin);
373 @ <form method="POST" action="%s(g.zBaseURL)/wikiappend">
374 @ <input type="hidden" name="name" value="%t(zPageName)">
375 @ Your Name:
376 @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
377 @ Comment to append:<br>
378 @ <textarea name="r" class="wikiedit" cols="80"
379 @ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
@@ -430,10 +430,10 @@
430 "SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname GLOB 'wiki-*'"
431 " ORDER BY lower(tagname)"
432 );
433 while( db_step(&q)==SQLITE_ROW ){
434 const char *zName = db_column_text(&q, 0);
435 @ <li><a href="%s(g.zBaseURL)/wiki?page=%t(zName)">%h(zName)</a></li>
436 }
437 db_finalize(&q);
438 style_footer();
439 }
440
--- src/wiki.c
+++ src/wiki.c
@@ -133,19 +133,19 @@
133 zBody = m.zWiki;
134 }
135 }
136 if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
137 style_submenu_element("Edit", "Edit Wiki Page",
138 mprintf("%s/wikiedit?name=%T", g.zTop, zPageName));
139 }
140 if( rid && g.okApndWiki ){
141 style_submenu_element("Append", "Add A Comment",
142 mprintf("%s/wikiappend?name=%T", g.zTop, zPageName));
143 }
144 if( g.okHistory ){
145 style_submenu_element("History", "History",
146 mprintf("%s/whistory?name=%T", g.zTop, zPageName));
147 }
148 zHtmlPageName = mprintf("%h", zPageName);
149 style_header(zHtmlPageName);
150 blob_init(&wiki, zBody, -1);
151 wiki_convert(&wiki, 0);
@@ -223,14 +223,14 @@
223 db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
224 manifest_crosslink(nrid, &wiki);
225 blob_reset(&wiki);
226 content_deltify(rid, nrid, 0);
227 db_end_transaction(0);
228 cgi_redirectf("wiki?name=%T", zPageName);
229 }
230 if( P("cancel")!=0 ){
231 cgi_redirectf("wiki?name=%T", zPageName);
232 return;
233 }
234 if( zBody==0 ){
235 zBody = mprintf("<i>Empty Page</i>");
236 }
@@ -248,11 +248,11 @@
248 if( z[0]=='\n' ) n++;
249 }
250 if( n<20 ) n = 20;
251 if( n>200 ) n = 200;
252 @ <form method="POST" action="%s(g.zBaseURL)/wikiedit">
253 @ <input type="hidden" name="name" value="%h(zPageName)">
254 @ <textarea name="w" class="wikiedit" cols="80"
255 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
256 @ <br>
257 @ <input type="submit" name="preview" value="Preview Your Changes">
258 @ <input type="submit" name="submit" value="Apply These Changes">
@@ -350,14 +350,14 @@
350 db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
351 manifest_crosslink(nrid, &wiki);
352 blob_reset(&wiki);
353 content_deltify(rid, nrid, 0);
354 db_end_transaction(0);
355 cgi_redirectf("wiki?name=%T", zPageName);
356 }
357 if( P("cancel")!=0 ){
358 cgi_redirectf("wiki?name=%T", zPageName);
359 return;
360 }
361 zHtmlPageName = mprintf("Append Comment To: %h", zPageName);
362 style_header(zHtmlPageName);
363 if( P("preview")!=0 ){
@@ -369,11 +369,11 @@
369 @ <hr>
370 blob_reset(&preview);
371 }
372 zUser = PD("u", g.zLogin);
373 @ <form method="POST" action="%s(g.zBaseURL)/wikiappend">
374 @ <input type="hidden" name="name" value="%h(zPageName)">
375 @ Your Name:
376 @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
377 @ Comment to append:<br>
378 @ <textarea name="r" class="wikiedit" cols="80"
379 @ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
@@ -430,10 +430,10 @@
430 "SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname GLOB 'wiki-*'"
431 " ORDER BY lower(tagname)"
432 );
433 while( db_step(&q)==SQLITE_ROW ){
434 const char *zName = db_column_text(&q, 0);
435 @ <li><a href="%s(g.zBaseURL)/wiki?page=%T(zName)">%h(zName)</a></li>
436 }
437 db_finalize(&q);
438 style_footer();
439 }
440
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -66,10 +66,11 @@
6666
6767
static const struct AllowedAttribute {
6868
const char *zName;
6969
unsigned int iMask;
7070
} aAttribute[] = {
71
+ { 0, 0 },
7172
{ "align", ATTR_ALIGN, },
7273
{ "alt", ATTR_ALT, },
7374
{ "bgcolor", ATTR_BGCOLOR, },
7475
{ "border", ATTR_BORDER, },
7576
{ "cellpadding", ATTR_CELLPADDING, },
@@ -97,17 +98,17 @@
9798
/*
9899
** Use binary search to locate a tag in the aAttribute[] table.
99100
*/
100101
static int findAttr(const char *z){
101102
int i, c, first, last;
102
- first = 0;
103
+ first = 1;
103104
last = sizeof(aAttribute)/sizeof(aAttribute[0]) - 1;
104105
while( first<=last ){
105106
i = (first+last)/2;
106107
c = strcmp(aAttribute[i].zName, z);
107108
if( c==0 ){
108
- return aAttribute[i].iMask;
109
+ return i;
109110
}else if( c<0 ){
110111
first = i+1;
111112
}else{
112113
last = i-1;
113114
}
@@ -656,11 +657,11 @@
656657
if( p->endTag ){
657658
blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName);
658659
}else{
659660
blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName);
660661
for(i=0; i<p->nAttr; i++){
661
- blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode]);
662
+ blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode].zName);
662663
if( p->aAttr[i].zValue ){
663664
blob_appendf(pOut, "=\"%s\"", p->aAttr[i].zValue);
664665
}
665666
}
666667
blob_append(pOut, ">", 1);
667668
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -66,10 +66,11 @@
66
67 static const struct AllowedAttribute {
68 const char *zName;
69 unsigned int iMask;
70 } aAttribute[] = {
 
71 { "align", ATTR_ALIGN, },
72 { "alt", ATTR_ALT, },
73 { "bgcolor", ATTR_BGCOLOR, },
74 { "border", ATTR_BORDER, },
75 { "cellpadding", ATTR_CELLPADDING, },
@@ -97,17 +98,17 @@
97 /*
98 ** Use binary search to locate a tag in the aAttribute[] table.
99 */
100 static int findAttr(const char *z){
101 int i, c, first, last;
102 first = 0;
103 last = sizeof(aAttribute)/sizeof(aAttribute[0]) - 1;
104 while( first<=last ){
105 i = (first+last)/2;
106 c = strcmp(aAttribute[i].zName, z);
107 if( c==0 ){
108 return aAttribute[i].iMask;
109 }else if( c<0 ){
110 first = i+1;
111 }else{
112 last = i-1;
113 }
@@ -656,11 +657,11 @@
656 if( p->endTag ){
657 blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName);
658 }else{
659 blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName);
660 for(i=0; i<p->nAttr; i++){
661 blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode]);
662 if( p->aAttr[i].zValue ){
663 blob_appendf(pOut, "=\"%s\"", p->aAttr[i].zValue);
664 }
665 }
666 blob_append(pOut, ">", 1);
667
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -66,10 +66,11 @@
66
67 static const struct AllowedAttribute {
68 const char *zName;
69 unsigned int iMask;
70 } aAttribute[] = {
71 { 0, 0 },
72 { "align", ATTR_ALIGN, },
73 { "alt", ATTR_ALT, },
74 { "bgcolor", ATTR_BGCOLOR, },
75 { "border", ATTR_BORDER, },
76 { "cellpadding", ATTR_CELLPADDING, },
@@ -97,17 +98,17 @@
98 /*
99 ** Use binary search to locate a tag in the aAttribute[] table.
100 */
101 static int findAttr(const char *z){
102 int i, c, first, last;
103 first = 1;
104 last = sizeof(aAttribute)/sizeof(aAttribute[0]) - 1;
105 while( first<=last ){
106 i = (first+last)/2;
107 c = strcmp(aAttribute[i].zName, z);
108 if( c==0 ){
109 return i;
110 }else if( c<0 ){
111 first = i+1;
112 }else{
113 last = i-1;
114 }
@@ -656,11 +657,11 @@
657 if( p->endTag ){
658 blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName);
659 }else{
660 blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName);
661 for(i=0; i<p->nAttr; i++){
662 blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode].zName);
663 if( p->aAttr[i].zValue ){
664 blob_appendf(pOut, "=\"%s\"", p->aAttr[i].zValue);
665 }
666 }
667 blob_append(pOut, ">", 1);
668

Keyboard Shortcuts

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