Check-in [df646a7f4c]
Not logged in
Overview

SHA1 Hash:df646a7f4ca2562878294c860ef57c4a0a5b1afa
Date: 2007-10-12 23:18:35
User: drh
Comment:Fix some (certainly not all) problems with wiki editing.
Timelines: ancestors | descendants | both | trunk
Other Links: files | ZIP archive | manifest

Tags And Properties
Changes
[hide diffs]

Modified src/wiki.c from [63e0aa644a] to [ba2a75dd4c].

@@ -133,19 +133,19 @@
       zBody = m.zWiki;
     }
   }
   if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
     style_submenu_element("Edit", "Edit Wiki Page",
-       mprintf("%s/wikiedit?name=%t", g.zTop, zPageName));
+       mprintf("%s/wikiedit?name=%T", g.zTop, zPageName));
   }
   if( rid && g.okApndWiki ){
     style_submenu_element("Append", "Add A Comment",
-       mprintf("%s/wikiappend?name=%t", g.zTop, zPageName));
+       mprintf("%s/wikiappend?name=%T", g.zTop, zPageName));
   }
   if( g.okHistory ){
     style_submenu_element("History", "History",
-         mprintf("%s/whistory?name=%t", g.zTop, zPageName));
+         mprintf("%s/whistory?name=%T", g.zTop, zPageName));
   }
   zHtmlPageName = mprintf("%h", zPageName);
   style_header(zHtmlPageName);
   blob_init(&wiki, zBody, -1);
   wiki_convert(&wiki, 0);
@@ -223,14 +223,14 @@
     db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
     manifest_crosslink(nrid, &wiki);
     blob_reset(&wiki);
     content_deltify(rid, nrid, 0);
     db_end_transaction(0);
-    cgi_redirectf("wiki?name=%t", zPageName);
+    cgi_redirectf("wiki?name=%T", zPageName);
   }
   if( P("cancel")!=0 ){
-    cgi_redirectf("wiki?name=%t", zPageName);
+    cgi_redirectf("wiki?name=%T", zPageName);
     return;
   }
   if( zBody==0 ){
     zBody = mprintf("<i>Empty Page</i>");
   }
@@ -248,11 +248,11 @@
     if( z[0]=='\n' ) n++;
   }
   if( n<20 ) n = 20;
   if( n>200 ) n = 200;
   @ <form method="POST" action="%s(g.zBaseURL)/wikiedit">
-  @ <input type="hidden" name="name" value="%t(zPageName)">
+  @ <input type="hidden" name="name" value="%h(zPageName)">
   @ <textarea name="w" class="wikiedit" cols="80"
   @  rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
   @ <br>
   @ <input type="submit" name="preview" value="Preview Your Changes">
   @ <input type="submit" name="submit" value="Apply These Changes">
@@ -350,14 +350,14 @@
     db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
     manifest_crosslink(nrid, &wiki);
     blob_reset(&wiki);
     content_deltify(rid, nrid, 0);
     db_end_transaction(0);
-    cgi_redirectf("wiki?name=%t", zPageName);
+    cgi_redirectf("wiki?name=%T", zPageName);
   }
   if( P("cancel")!=0 ){
-    cgi_redirectf("wiki?name=%t", zPageName);
+    cgi_redirectf("wiki?name=%T", zPageName);
     return;
   }
   zHtmlPageName = mprintf("Append Comment To: %h", zPageName);
   style_header(zHtmlPageName);
   if( P("preview")!=0 ){
@@ -369,11 +369,11 @@
     @ <hr>
     blob_reset(&preview);
   }
   zUser = PD("u", g.zLogin);
   @ <form method="POST" action="%s(g.zBaseURL)/wikiappend">
-  @ <input type="hidden" name="name" value="%t(zPageName)">
+  @ <input type="hidden" name="name" value="%h(zPageName)">
   @ Your Name:
   @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
   @ Comment to append:<br>
   @ <textarea name="r" class="wikiedit" cols="80"
   @  rows="10" wrap="virtual">%h(PD("r",""))</textarea>
@@ -430,10 +430,10 @@
     "SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname GLOB 'wiki-*'"
     " ORDER BY lower(tagname)"
   );
   while( db_step(&q)==SQLITE_ROW ){
     const char *zName = db_column_text(&q, 0);
-    @ <li><a href="%s(g.zBaseURL)/wiki?page=%t(zName)">%h(zName)</a></li>
+    @ <li><a href="%s(g.zBaseURL)/wiki?page=%T(zName)">%h(zName)</a></li>
   }
   db_finalize(&q);
   style_footer();
 }

Modified src/wikiformat.c from [5c4069b176] to [13dfb968ea].

@@ -66,10 +66,11 @@
 
 static const struct AllowedAttribute {
   const char *zName;
   unsigned int iMask;
 } aAttribute[] = {
+  { 0, 0 },
   { "align",         ATTR_ALIGN,          },
   { "alt",           ATTR_ALT,            },
   { "bgcolor",       ATTR_BGCOLOR,        },
   { "border",        ATTR_BORDER,         },
   { "cellpadding",   ATTR_CELLPADDING,    },
@@ -97,17 +98,17 @@
 /*
 ** Use binary search to locate a tag in the aAttribute[] table.
 */
 static int findAttr(const char *z){
   int i, c, first, last;
-  first = 0;
+  first = 1;
   last = sizeof(aAttribute)/sizeof(aAttribute[0]) - 1;
   while( first<=last ){
     i = (first+last)/2;
     c = strcmp(aAttribute[i].zName, z);
     if( c==0 ){
-      return aAttribute[i].iMask;
+      return i;
     }else if( c<0 ){
       first = i+1;
     }else{
       last = i-1;
     }
@@ -656,11 +657,11 @@
   if( p->endTag ){
     blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName);
   }else{
     blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName);
     for(i=0; i<p->nAttr; i++){
-      blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode]);
+      blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iCode].zName);
       if( p->aAttr[i].zValue ){
         blob_appendf(pOut, "=\"%s\"", p->aAttr[i].zValue);
       }
     }
     blob_append(pOut, ">", 1);