@@ -78,10 +78,14 @@
78 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the tagid associated with a particular wiki page.
79 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int wiki_tagid(const char *zPageName){
81 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return db_int(0, "SELECT tagid FROM tag WHERE tagname='wiki-%q'",zPageName);
82 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int wiki_tagid2(const char *zPrefix, const char *zPageName){
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return db_int(0, "SELECT tagid FROM tag WHERE tagname='wiki-%q/%q'",
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrefix, zPageName);
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
85 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the RID of the next or previous version of a wiki page.
86 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 0 if rid is the last/first version.
87 91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -343,10 +347,58 @@
343 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("Wiki Search");
344 348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wiki_standard_submenu(W_HELP|W_LIST|W_SANDBOX);
345 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_screen(SRCH_WIKI, 0);
346 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
347 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Add an appropriate style_header() for either the /wiki or /wikiedit page
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for zPageName.
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_page_header(const char *zPageName, const char *zExtra){
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_get_boolean("wiki-about",1)==0 ){
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("%s%s", zExtra, zPageName);
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_strglob("checkin/*", zPageName)==0
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && db_exists("SELECT 1 FROM blob WHERE uuid=%Q",zPageName+8)
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Notes About Checkin %S", zPageName + 8);
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Checkin Timeline","%R/timeline?f=%s",zPageName + 8);
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Checkin Info","%R/info/%s",zPageName + 8);
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_strglob("branch/*", zPageName)==0 ){
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Notes About Branch %h", zPageName + 7);
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Branch Timeline","%R/timeline?r=%t",zPageName + 7);
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_strglob("tag/*", zPageName)==0 ){
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Notes About Tag %h", zPageName + 4);
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Tag Timeline","%R/timeline?t=%t",zPageName + 4);
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else{
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("%s%s", zExtra, zPageName);
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Wiki pages with special names "branch/...", "checkin/...", and "tag/..."
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** requires perm.Write privilege in addition to perm.WrWiki in order
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to write. This function determines whether the extra perm.Write
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is required and available. Return true if writing to the wiki page
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** may proceed, and return false if permission is lacking.
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int wiki_special_permission(const char *zPageName){
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strncmp(zPageName,"branch/",7)!=0
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && strncmp(zPageName,"checkin/",8)!=0
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && strncmp(zPageName,"tag/",4)!=0
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_get_boolean("wiki-about",1)==0 ){
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return g.perm.Write;
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
348 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
349 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
350 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: wiki
351 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** URL: /wiki?name=PAGENAME
352 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -396,11 +448,13 @@
396 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMimetype = pWiki->zMimetype;
397 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
398 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
399 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMimetype = wiki_filter_mimetypes(zMimetype);
400 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.isHome ){
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (rid && g.perm.WrWiki) || (!rid && g.perm.NewWiki) ){
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((rid && g.perm.WrWiki) || (!rid && g.perm.NewWiki))
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && wiki_special_permission(zPageName)
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
402 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_get_boolean("wysiwyg-wiki", 0) ){
403 457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Edit", "%s/wikiedit?name=%T&wysiwyg=1",
404 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zTop, zPageName);
405 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
406 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Edit", "%s/wikiedit?name=%T", g.zTop, zPageName);
@@ -410,11 +464,11 @@
410 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("History", "%s/whistory?name=%T",
411 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zTop, zPageName);
412 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
413 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
414 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_page("%T?name=%T", g.zPath, zPageName);
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_header("%s", zPageName);
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_page_header(zPageName, "");
416 470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wiki_standard_submenu(submenuFlags);
417 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBody[0]==0 ){
418 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <i>This page has been deleted</i>
419 473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
420 474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&wiki, zBody, -1);
@@ -526,10 +580,14 @@
526 580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT rid FROM tagxref"
527 581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
528 582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ORDER BY mtime DESC", zTag
529 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
530 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zTag);
585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !wiki_special_permission(zPageName) ){
586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed(0);
587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
531 589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (rid && !g.perm.WrWiki) || (!rid && !g.perm.NewWiki) ){
532 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_needed(rid ? g.anon.WrWiki : g.anon.NewWiki);
533 591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
534 592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
535 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBody==0 && (pWiki = manifest_get(rid, CFTYPE_WIKI, 0))!=0 ){
@@ -579,11 +637,11 @@
579 637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
580 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBody==0 ){
581 639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBody = mprintf("<i>Empty Page</i>");
582 640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
583 641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_page("%T?name=%T", g.zPath, zPageName);
584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_header("Edit: %s", zPageName);
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_page_header(zPageName, "Edit: ");
585 643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rid && !isSandbox && g.perm.ApndWiki ){
586 644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.Attach ){
587 645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Attach",
588 646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%s/attachadd?page=%T&from=%s/wiki%%3fname=%T",
589 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zTop, zPageName, g.zTop, zPageName);
@@ -1067,26 +1125,34 @@
1067 1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int wrid = db_column_int(&q, 2);
1068 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rWmtime = db_column_double(&q, 3);
1069 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 iMtime = (sqlite3_int64)(rWmtime*86400.0);
1070 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zAge;
1071 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int wcnt = db_column_int(&q, 4);
1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zWDisplayName;
1131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_strglob("checkin/*", zWName)==0 ){
1133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zWDisplayName = mprintf("%.25s...", zWName);
1134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zWDisplayName = mprintf("%s", zWName);
1136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1072 1137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( wrid==0 ){
1073 1138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !showAll ) continue;
1074 1139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr><td data-sortkey="%h(zSort)">\
1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ %z(href("%R/whistory?name=%T",zWName))<s>%h(zWName)</s></a></td>
1140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ %z(href("%R/whistory?name=%T",zWName))<s>%h(zWDisplayName)</s></a></td>
1076 1141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1077 1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr><td data=sortkey='%h(zSort)">\
1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ %z(href("%R/wiki?name=%T",zWName))%h(zWName)</a></td>
1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ %z(href("%R/wiki?name=%T",zWName))%h(zWDisplayName)</a></td>
1079 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1080 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAge = human_readable_age(rNow - rWmtime);
1081 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td>
1082 1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zAge);
1083 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td>%z(href("%R/whistory?name=%T",zWName))%d(wcnt)</a></td>
1084 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( showRid ){
1085 1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td>%d(wrid)</td>
1086 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1087 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </tr>
1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zWDisplayName);
1088 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1089 1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </tbody></table></div>
1090 1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1091 1157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_table_sorter();
1092 1158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
@@ -1483,5 +1549,114 @@
1483 1549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&out);
1484 1550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(&in, g.argv[2], ExtFILE);
1485 1551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markdown_to_html(&in, 0, &out);
1486 1552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_write_to_file(&out, "-");
1487 1553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Allowed flags for wiki_render_associated
1557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if INTERFACE
1559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WIKIASSOC_FULL_TITLE 0x00001 /* Full title */
1560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WIKIASSOC_MENU 0x00002 /* Add a submenu to the About section */
1561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Show the default Section label for an associated wiki page.
1565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_section_label(
1567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrefix, /* "branch", "tag", or "checkin" */
1568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName, /* Name of the object */
1569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int mFlags /* Zero or more WIKIASSOC_* flags */
1570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (mFlags & WIKIASSOC_FULL_TITLE)==0 ){
1572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section">About</div>
1573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zPrefix[0]=='c' ){ /* checkin/... */
1574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section">About checkin %.20h(zName)</div>
1575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section">About %s(zPrefix) %h(zName)</div>
1577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Add an "Wiki" button in a submenu for a Wiki page.
1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_section_menu(
1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrefix, /* "branch", "tag", or "checkin" */
1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName, /* Name of the object */
1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int mFlags /* Zero or more WIKIASSOC_* flags */
1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.perm.WrWiki && (mFlags & WIKIASSOC_MENU)!=0 ){
1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Wiki", "%R/wiki?name=%s/%t", zPrefix, zName);
1590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Check to see if there exists a wiki page with a name zPrefix/zName.
1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If there is, then render a <div class='section'>..</div> and
1596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** return true.
1597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If there is no such wiki page, return false.
1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int wiki_render_associated(
1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrefix, /* "branch", "tag", or "checkin" */
1602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName, /* Name of the object */
1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int mFlags /* Zero or more WIKIASSOC_* flags */
1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid;
1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest *pWiki;
1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db_get_boolean("wiki-about",1) ) return 0;
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_int(0,
1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rid FROM tagxref"
1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE tagid=(SELECT tagid FROM tag WHERE tagname='wiki-%q/%q')"
1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY mtime DESC LIMIT 1",
1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrefix, zName
1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid==0 ) return 0;
1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki = manifest_get(rid, CFTYPE_WIKI, 0);
1616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWiki==0 ) return 0;
1617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_strcmp(pWiki->zMimetype, "text/x-markdown")==0 ){
1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob tail = BLOB_INITIALIZER;
1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob title = BLOB_INITIALIZER;
1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob markdown;
1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&markdown, pWiki->zWiki, -1);
1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ markdown_to_html(&markdown, &title, &tail);
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( blob_size(&title) ){
1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section">%h(blob_str(&title))</div>
1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_label(zPrefix, zName, mFlags);
1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_menu(zPrefix, zName, mFlags);
1629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ convert_href_and_output(&tail);
1630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&tail);
1631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&title);
1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&markdown);
1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( fossil_strcmp(pWiki->zMimetype, "text/plain")==0 ){
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_label(zPrefix, zName, mFlags);
1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_menu(zPrefix, zName, mFlags);
1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <pre>
1637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ %h(pWiki->zWiki)
1638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </pre>
1639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob tail = BLOB_INITIALIZER;
1641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob title = BLOB_INITIALIZER;
1642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob wiki;
1643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *pBody;
1644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&wiki, pWiki->zWiki, -1);
1645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wiki_find_title(&wiki, &title, &tail) ){
1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section">%h(blob_str(&title))</div>
1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBody = &tail;
1648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_label(zPrefix, zName, mFlags);
1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBody = &wiki;
1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_section_menu(zPrefix, zName, mFlags);
1653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="wiki">
1654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_convert(pBody, 0, WIKI_BUTTONS);
1655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </div>
1656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&tail);
1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&title);
1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&wiki);
1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_destroy(pWiki);
1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1488 1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!