@@ -105,11 +105,10 @@
105 105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void wiki_page(void){
106 106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTag;
107 107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid;
108 108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob wiki;
109 109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Manifest m;
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int seenHr = 0;
111 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zPageName;
112 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zHtmlPageName;
113 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zBody = mprintf("%s","<i>Empty Page</i>");
114 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
@@ -134,11 +133,15 @@
134 133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBody = m.zWiki;
135 134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
136 135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
138 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Edit", "Edit Wiki Page",
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mprintf("%s/wikiedit/%s", g.zTop, g.zExtra));
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mprintf("%s/wikiedit/%s", g.zTop, g.zExtra));
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid && g.okApndWiki ){
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Append", "Add A Comment",
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mprintf("%s/wikiappend/%s", g.zTop, g.zExtra));
140 143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
141 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.okHistory ){
142 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("History", "History",
143 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mprintf("%s/whistory/%s", g.zTop, g.zExtra));
144 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -146,24 +149,10 @@
146 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header(zHtmlPageName);
147 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&wiki, zBody, -1);
148 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wiki_convert(&wiki, 0);
149 152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&wiki);
150 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_clear(&m);
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (rid && g.okWrWiki) || (!rid && g.okNewWiki) ){
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <hr>
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ [<a href="%s(g.zBaseURL)/wikiedit/%s(g.zExtra)">Edit</a>]
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- seenHr = 1;
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.okHistory ){
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !seenHr ){
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <hr>
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- seenHr = 1;
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ [<a href="%s(g.zBaseUrl)/whistory/%s(g.zExtra)">History</a>]
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
165 154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
166 155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167 156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
168 157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
169 158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: wikiedit
@@ -269,11 +258,133 @@
269 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" name="submit" value="Apply These Changes">
270 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" name="cancel" value="Cancel">
271 260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </form>
272 261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_clear(&m);
273 262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append the wiki text for an remark to the end of the given BLOB.
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void appendRemark(Blob *p){
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDate;
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUser;
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zRemark;
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDate = db_text(0, "SELECT datetime('now')");
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p, "On %s UTC %h", zDate, g.zLogin);
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(zDate);
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zUser = PD("u",g.zLogin);
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zUser[0] && strcmp(zUser,g.zLogin) ){
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p, " (claiming to be %h)", zUser);
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRemark = PD("r","");
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p, " added:\n\n%s", zRemark);
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: wikiappend
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** URL: /wikiappend/PAGENAME
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void wikiappend_page(void){
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zTag;
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid;
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zPageName;
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zHtmlPageName;
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUser;
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_check_credentials();
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName = mprintf("%s", g.zExtra);
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dehttpize(zPageName);
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( check_name(zPageName) ) return;
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTag = mprintf("wiki-%s", zPageName);
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_int(0,
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rid FROM tagxref"
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY mtime DESC", zTag
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(zTag);
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !rid ){
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_redirect("index");
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okApndWiki ){
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed();
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( P("submit")!=0 && P("r")!=0 && P("u")!=0 ){
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDate;
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob cksum;
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nrid;
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob body;
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content;
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob wiki;
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest m;
274 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &content);
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_parse(&m, &content);
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&body);
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( m.type==CFTYPE_WIKI ){
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&body, m.zWiki, -1);
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_clear(&m);
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&wiki);
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDate = db_text(0, "SELECT datetime('now')");
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDate[10] = 'T';
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "D %s\n", zDate);
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "L %F\n", zPageName);
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid ){
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "P %s\n", zUuid);
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(zUuid);
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.zLogin ){
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "U %F\n", g.zLogin);
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&body, "\n<hr>\n");
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ appendRemark(&body);
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "W %d\n%s\n", blob_size(&body), blob_str(&body));
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ md5sum_blob(&wiki, &cksum);
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&wiki, "Z %b\n", &cksum);
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cksum);
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nrid = content_put(&wiki, 0, 0);
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_crosslink(nrid, &wiki);
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&wiki);
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_deltify(rid, nrid, 0);
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_end_transaction(0);
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_redirect(mprintf("wiki/%s", g.zExtra));
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( P("cancel")!=0 ){
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_redirect(mprintf("wiki/%s", g.zExtra));
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zHtmlPageName = mprintf("Append Comment To: %h", zPageName);
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header(zHtmlPageName);
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( P("preview")!=0 ){
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob preview;
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&preview);
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ appendRemark(&preview);
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Preview:<hr>
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_convert(&preview, 0);
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <hr>
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&preview);
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zUser = PD("u", g.zLogin);
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <form method="POST" action="%s(g.zBaseURL)/wikiappend/%t(g.zExtra)">
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Your Name:
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Comment to append:<br>
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <textarea name="r" class="wikiedit" cols="80"
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <br>
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="submit" name="preview" value="Preview Your Comment">
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="submit" name="submit" value="Append Your Changes">
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="submit" name="cancel" value="Cancel">
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </form>
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_footer();
275 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
276 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
277 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
278 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: whistory
279 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
280 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!