@@ -398,10 +398,24 @@
398 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_strglob("tag/*", zPageName)==0 ){
399 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WIKITYPE_TAG;
400 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
401 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WIKITYPE_NORMAL;
402 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Returns a JSON-friendly string form of the integer value returned
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** by wiki_page_type(zPageName).
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * wiki_page_type_name(const char *zPageName){
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch(wiki_page_type(zPageName)){
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case WIKITYPE_CHECKIN: return "checkin";
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case WIKITYPE_BRANCH: return "branch";
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case WIKITYPE_TAG: return "tag";
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case WIKITYPE_NORMAL:
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default: return "normal";
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
403 417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
404 418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
405 419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Add an appropriate style_header() for either the /wiki or /wikiedit page
406 420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for zPageName. zExtra is an empty string for /wiki but has the text
407 421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "Edit: " for /wikiedit.
@@ -620,10 +634,355 @@
620 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azStyles[i+1];
621 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
622 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
623 637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azStyles[1];
624 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Tries to fetch a wiki page for the given name. If found, it
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returns true, else false. If pRid is not NULL then if found *pRid is
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** set to its RID. If ppWiki is not NULL then if found *ppWiki is set
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the loaded wiki object, which the caller is responsible for
645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** passing to manifest_destroy().
646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int wiki_fetch_by_name( const char *zPageName, int * pRid,
648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest **ppWiki ){
649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest *pWiki = 0;
650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zTag = mprintf("wiki-%s", zPageName);
651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int rid = db_int(0,
652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rid FROM tagxref"
653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY mtime DESC", zTag
655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zTag);
658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid == 0 ){
659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if(pRid){
662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRid = rid;
663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(ppWiki){
665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki = manifest_get(rid, CFTYPE_WIKI, 0);
666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWiki==0 ){
667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* "Cannot happen." */
668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *ppWiki = pWiki;
671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Ajax route handler for /wikiajax/fetch.
677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** URL params:
679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** page = the wiki page name
681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Responds with JSON. On error, an object in the form documented by
683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ajax_route_error(). On success, an object in this form:
684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** { name: "page name",
686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** type: "normal" | "tag" | "checkin" | "branch" | "sandbox",
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mimetype: "mime type",
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content: "page content"
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** }
690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_ajax_route_fetch(){
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zPageName = P("page");
693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isSandbox;
694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPageName==0 || zPageName[0]==0 ){
696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(400,"Missing page name.");
697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content_type("application/json");
700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isSandbox = is_sandbox(zPageName);
701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isSandbox ){
702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char * zMimetype =
703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_get("sandbox-mimetype","text/x-fossil-wiki");
704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("{\"name\": %!j, \"type\": \"sandbox\", "
705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "\"mimetype\": %!j, \"content\": ""}",
706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName, zMimetype);
707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zMimetype);
708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Manifest * pWiki = 0;
710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !wiki_fetch_by_name(zPageName, 0, &pWiki) ){
711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(404, "Wiki page not found.");
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("{\"name\": %!j, \"type\": %!j, "
715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "\"mimetype\": %!j, \"content\": %!j}",
716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki->zWikiTitle,
717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_page_type_name(pWiki->zWikiTitle),
718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki->zMimetype ? pWiki->zMimetype : "text/x-fossil-wiki",
719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWiki->zWiki);
720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_destroy(pWiki);
721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Ajax route handler for /wikiajax/preview.
726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** URL params:
728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mimetype = the wiki page mimetype (determines rendering style)
730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content = the wiki page content
731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wiki_ajax_route_preview(){
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content = empty_blob;
734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zMimetype = PD("mimetype","text/x-fossil-wiki");
735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zContent = P("content");
736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zContent==0 ){
738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(400,"Missing content to preview.");
739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&content, zContent, -1);
742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content_type("text/html");
743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_render_by_mimetype(&content, zMimetype);
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&content);
745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: wikiajax
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** An internal dispatcher for wiki AJAX operations. Not for direct
751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** client use.
752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void wiki_ajax_page(void){
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zName = P("name");
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AjaxRoute routeName = {0,0,0,0};
756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const AjaxRoute * pRoute = 0;
757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const AjaxRoute routes[] = {
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Keep these sorted by zName (for bsearch()) */
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"fetch", wiki_ajax_route_fetch, 0, 0},
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"preview", wiki_ajax_route_preview, 1, 1}
761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /preview access mode: whether or not wiki-write mode is
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ needed really depends on multiple factors. e.g. the sandbox
763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ page does not normally require more than anonymous access.
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TODO: set its write-mode to false and do the check manually
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ in that route's handler.
766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(zName==0 || zName[0]==0){
770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(400,"Missing required [route] 'name' parameter.");
771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ routeName.zName = zName;
774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoute = (const AjaxRoute *)bsearch(&routeName, routes,
775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ count(routes), sizeof routes[0],
776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cmp_ajax_route_name);
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(pRoute==0){
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(404,"Ajax route not found.");
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_check_credentials();
782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRoute->bWriteMode!=0 && g.perm.WrWiki==0 ){
783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(403,"Write permissions required.");
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(0==cgi_csrf_safe(pRoute->bPost)){
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ajax_route_error(403,
787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CSRF violation (make sure sending of HTTP "
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Referer headers is enabled for XHR "
789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "connections).");
790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoute->xCallback();
793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Main front-end for the Ajax-based wiki editor app.
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void wikiedit_page_v2(void){
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPageName;
800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob endScript = empty_blob; /* end-of-page JS code */;
801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isSandbox;
802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_check_credentials();
804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName = PD("name","");
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TODO: not require a page name, and instead offer a list
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ of pages. */
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*TODO: check name only for case of new page:
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( check_name(zPageName) ) return;*/
809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isSandbox = is_sandbox(zPageName);
810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isSandbox ){
811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.perm.WrWiki ){
812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed(g.anon.WrWiki);
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zPageName!=0 ){
816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = 0;
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int found = 0;
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !wiki_special_permission(zPageName) ){
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed(0);
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ found = wiki_fetch_by_name(zPageName, &rid, 0);
823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !found ){
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TODO: set up for a new page */
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (rid && !g.perm.WrWiki) || (!rid && !g.perm.NewWiki) ){
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_needed(rid ? g.anon.WrWiki : g.anon.NewWiki);
828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Wiki Editor");
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Status bar */
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='fossil-status-bar' "
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "title='Status message area. Double-click to clear them.'>"
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Status messages will go here.</div>\n"
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* will be moved into the tab container via JS */);
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Main tab container... */
840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tabs' class='tab-container'></div>");
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /******* Page list *******/
843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-pages' "
845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-parent='wikiedit-tabs' "
846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-label='Page List'"
847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">");
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div class='flex-container flex-row child-gap-small'>");
849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("TODO: page selection list.");
850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>");
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*#tab-file-content*/);
852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /******* Content tab *******/
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-content' "
857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-parent='wikiedit-tabs' "
858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-label='Page Editor' "
859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-select='1'"
860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">");
861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div class='flex-container flex-row child-gap-small'>");
862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_select_list_str("select-mimetype",
863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "mimetype",
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Mimetype", 0,
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "text/x-fossil-wiki",
866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Fossil wiki", "text/x-fossil-wiki",
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Markdown", "text/x-markdown",
868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Plain text", "text/plain",
869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ NULL);
870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<button class='wikiedit-content-reload confirmer' "
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "title='Reload the file from the server, discarding "
872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "any local edits. To help avoid accidental loss of "
873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "edits, it requires confirmation (a second click) within "
874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "a few seconds or it will not reload.'"
875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">Discard & Reload</button>");
876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_select_list_int("select-font-size",
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "editor_font_size", "Editor font size",
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ NULL/*tooltip*/,
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 100,
880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "100%", 100, "125%", 125,
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "150%", 150, "175%", 175,
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "200%", 200, NULL);
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>");
884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div class='flex-container flex-column stretch'>");
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<textarea name='content' id='wikiedit-content-editor' "
886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "class='wikiedit' "
887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "rows='20' cols='80'>");
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</textarea>");
889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*textarea wrapper*/);
890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*#tab-file-content*/);
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /****** Preview tab ******/
893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-preview' "
895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-parent='wikiedit-tabs' "
896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-label='Preview'"
897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">");
898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div class='wikiedit-options flex-container flex-row'>");
899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<button id='btn-preview-refresh' "
900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-f-preview-from='wikiContent' "
901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^ fossil.page[methodName]() OR text source elem ID,
902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but we need a method in order to support clients swapping out
903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the text editor with their own. */
904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-f-preview-via='_postPreview' "
905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^ fossil.page[methodName](content, callback) */
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-f-preview-to='#wikiedit-tab-preview-wrapper' "
907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^ dest elem ID */
908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">Refresh</button>");
909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Toggle auto-update of preview when the Preview tab is selected. */
910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_labeled_checkbox("cb-preview-autoupdate",
911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ NULL,
912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Auto-refresh?",
913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "1", 1,
914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "If on, the preview will automatically "
915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "refresh when this tab is selected.");
916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*.wikiedit-options*/);
917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-preview-wrapper'></div>");
918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*#wikiedit-tab-preview*/);
919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /****** Diff tab ******/
922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-diff' "
924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-parent='wikiedit-tabs' "
925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-tab-label='Diff'"
926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ">");
927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div class='wikiedit-options flex-container flex-row' "
929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "id='wikiedit-tab-diff-buttons'>");
930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<button class='sbs'>Side-by-side</button>"
931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "<button class='unified'>Unified</button>");
932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0){
933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* For the time being let's just ignore all whitespace
934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** changes, as files with Windows-style EOLs always show
935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** more diffs than we want then they're submitted to
936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ?ajax=diff because JS normalizes them to Unix EOLs.
937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** We can revisit this decision later. */
938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_select_list_int("diff-ws-policy",
939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "diff_ws", "Whitespace",
940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Whitespace handling policy.",
941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 2,
942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Diff all whitespace", 0,
943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Ignore EOL whitespace", 1,
944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Ignore all whitespace", 2,
945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ NULL);
946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>");
948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<div id='wikiedit-tab-diff-wrapper'>"
949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Diffs will be shown here."
950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "</div>");
951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("</div>"/*#wikiedit-tab-diff*/);
952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(zPageName && *zPageName){
955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Dynamically populate the editor... */
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&endScript, "fossil.onPageLoad(function(){");
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&endScript, "fossil.page.loadPage(%!j);",
958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName);
959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&endScript, "});\n");
960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_fossil_bootstrap(0);
963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ append_diff_javascript(1);
964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_fetch(0);
965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_tabs(0)/*also emits fossil.dom*/;
966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_confirmer(0);
967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_builtin(0, "fossil.storage.js");
968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_builtin(0, "fossil.page.wikiedit.js");
969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(blob_size(&endScript)>0){
971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_tag(0,0);
972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\n(function(){\n");
973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("try{\n%b}\n"
974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "catch(e){"
975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fossil.error(e); console.error('Exception:',e);"
976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "}\n",
977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &endScript);
978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("})();");
979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_emit_script_tag(1,0);
980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&endScript);
982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_footer();
983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
625 984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
626 985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
627 986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: wikiedit
628 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** URL: /wikiedit?name=PAGENAME
629 988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -643,10 +1002,15 @@
643 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isWysiwyg = P("wysiwyg")!=0;
644 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int goodCaptcha = 1;
645 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eType = WIKITYPE_UNKNOWN;
646 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int havePreview = 0;
647 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(1){
1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wikiedit_page_v2();
1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
648 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("edit-wysiwyg")!=0 ){ isWysiwyg = 1; zBody = 0; }
649 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("edit-markup")!=0 ){ isWysiwyg = 0; zBody = 0; }
650 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBody ){
651 1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isWysiwyg ){
652 1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob body;
653 1017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!