@@ -759,10 +759,98 @@
759 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
760 760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
761 761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ajax_route_error(403, "%s", zErr);
762 762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
763 763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Emits an array of attachment info records for the given wiki page
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** artifact.
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Output format:
771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [{
773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "uuid": attachment artifact hash,
774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "src": hash of the attachment blob,
775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "target": wiki page name or ticket/event ID,
776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "filename": filename of attachment,
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "mtime": ISO-8601 timestamp UTC,
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "isLatest": true this is the latest version of this file
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** else false,
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** }, ...once per attachment]
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If there are no matching attachments then it will emit a JSON
783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** null (if nullIfEmpty) or an empty JSON array.
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If latestOnly is true then only the most recent entry for a given
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** attachment is emitted, else all versions are emitted in descending
787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mtime order.
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_ajax_emit_page_attachments(Manifest * pWiki,
790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int latestOnly,
791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nullIfEmpty){
792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i = 0;
793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q = empty_Stmt;
794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT datetime(mtime), src, target, filename, isLatest,"
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " (SELECT uuid FROM blob WHERE rid=attachid) uuid"
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM attachment"
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE target=%Q"
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND (isLatest OR %d)"
800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY target, isLatest DESC, mtime DESC",
801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki->zWikiTitle, !latestOnly
802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while(SQLITE_ROW == db_step(&q)){
804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zTime = db_column_text(&q, 0);
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zSrc = db_column_text(&q, 1);
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zTarget = db_column_text(&q, 2);
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zName = db_column_text(&q, 3);
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int isLatest = db_column_int(&q, 4);
809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zUuid = db_column_text(&q, 5);
810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!i++){
811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("[");
812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX(",");
814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("{");
816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\"uuid\": %!j, \"src\": %!j, \"target\": %!j, "
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "\"filename\": %!j, \"mtime\": %!j, \"isLatest\": %s}",
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zUuid, zSrc, zTarget,
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, zTime, isLatest ? "true" : "false");
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!i){
823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(nullIfEmpty){
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("null");
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("[]");
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("]");
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Proxy for wiki_ajax_emit_page_attachments2() which attempts to
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** load the given wiki page artifact and fails if it cannot.
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Returns true if it loads the page, else false.
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int wiki_ajax_emit_page_attachments2(const char *zPageName,
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int latestOnly,
840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nullIfEmpty){
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest * pWiki = 0;
842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !wiki_fetch_by_name(zPageName, 0, 0, &pWiki) ){
843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(404, "Wiki page could not be loaded: %s",
844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName);
845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_ajax_emit_page_attachments(pWiki, latestOnly, nullIfEmpty);
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_destroy(pWiki);
849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
764 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
765 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
766 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Loads the given wiki page, sets the response type to
767 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** application/json, and emits it as a JSON object. If zPageName is a
768 856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sandbox page then a "fake" object is emitted, as the wikiajax API
@@ -778,10 +866,11 @@
778 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mimetype: "mimetype",
779 867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** version: UUID string or null for a sandbox page,
780 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parent: "parent uuid" or null if no parent,
781 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** isDeleted: true if the page has no content (is "deleted")
782 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** else not set (making it "falsy" in JS),
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** attachments: see wiki_ajax_emit_page_attachments()
783 872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** content: "page content" (only if includeContent is true)
784 873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }
785 874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
786 875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If includeContent is false then the content member is elided.
787 876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -828,10 +917,12 @@
828 917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX(", \"isEmpty\": true");
829 918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
830 919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(includeContent){
831 920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX(", \"content\": %!j", pWiki->zWiki);
832 921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX(", \"attachments\": ");
923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_ajax_emit_page_attachments(pWiki, 0, 1);
833 924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("}");
834 925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zUuid);
835 926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_destroy(pWiki);
836 927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 2;
837 928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -919,10 +1010,39 @@
919 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
920 1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
921 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content_type("application/json");
922 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wiki_ajax_emit_page_object(zPageName, 1);
923 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Ajax route handler for /wikiajax/attachments.
1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** URL params:
1020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** page = the wiki page name
1022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** latestOnly = if set, only latest version of each attachment
1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is emitted.
1024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Responds with JSON: see wiki_ajax_emit_page_attachments()
1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If there are no attachments it emits an empty array instead of null
1028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** so that the output can be used as a top-level JSON response.
1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** On error, an object in the form documented by
1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ajax_route_error(). On success, an object in the form documented
1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for wiki_ajax_emit_page_object().
1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_ajax_route_attachments(void){
1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zPageName = P("page");
1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int fLatestOnly = P("latestOnly")!=0;
1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPageName==0 || zPageName[0]==0 ){
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(400,"Missing page name.");
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content_type("application/json");
1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_ajax_emit_page_attachments2(zPageName, fLatestOnly, 0);
1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
924 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
925 1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
926 1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Ajax route handler for /wikiajax/diff.
927 1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
928 1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** URL params:
@@ -1076,10 +1196,11 @@
1076 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zName = P("name");
1077 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AjaxRoute routeName = {0,0,0,0};
1078 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const AjaxRoute * pRoute = 0;
1079 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const AjaxRoute routes[] = {
1080 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Keep these sorted by zName (for bsearch()) */
1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"attachments", wiki_ajax_route_attachments, 0, 0},
1081 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{"diff", wiki_ajax_route_diff, 1, 1},
1082 1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{"fetch", wiki_ajax_route_fetch, 0, 0},
1083 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{"list", wiki_ajax_route_list, 0, 0},
1084 1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{"preview", wiki_ajax_route_preview, 0, 1},
1085 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{"save", wiki_ajax_route_save, 1, 1}
@@ -1302,13 +1423,17 @@
1302 1423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1303 1424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/****** The obligatory "Misc" tab ******/
1304 1425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
1305 1426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<div id='wikiedit-tab-misc' "
1306 1427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data-tab-parent='wikiedit-tabs' "
1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "data-tab-label='Help' "
1428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-label='Misc.' "
1308 1429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"class='hidden'"
1309 1430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
">");
1431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<fieldset id='attachment-wrapper'>");
1432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<legend>Attachments</legend>");
1433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div>No attachments for the current page.</div>");
1434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</fieldset>");
1310 1435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<h2>Wiki formatting rules</h2>");
1311 1436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<ul>");
1312 1437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<li><a href='%R/wiki_rules'>Fossil wiki format</a></li>");
1313 1438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<li><a href='%R/md_rules'>Markdown format</a></li>");
1314 1439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<li>Plain-text pages use no special formatting.</li>");
1315 1440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!