Markdown: start adding markdown wiki mode.
[citadel.git] / webcit / wiki.c
index c72dbf656a726508f00c3f87d0b3893b1d33933e..ec746fe86baf6b1a1c177efec02a96be9e24c9b5 100644 (file)
@@ -45,12 +45,14 @@ void str_wiki_index(char *s)
  */
 void display_wiki_page_backend(char *pagename, char *rev, int do_revert)
 {
+       wcsession *WCC = WC;
        const StrBuf *Mime;
        long msgnum = (-1L);
        char buf[256];
 
-       if (WC->CurRoom.view != VIEW_WIKI) {
-               wc_printf(_("'%s' is not a Wiki room."), ChrPtr(WC->CurRoom.name) );
+       if ((WCC->CurRoom.view != VIEW_WIKI) &&
+           (WCC->CurRoom.view != VIEW_WIKIMD)) {
+               wc_printf(_("'%s' is not a Wiki room."), ChrPtr(WCC->CurRoom.name) );
                return;
        }
 
@@ -74,7 +76,7 @@ void display_wiki_page_backend(char *pagename, char *rev, int do_revert)
        }
 
        if (msgnum >= 0L) {
-               read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime);
+               read_message(WCC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime);
                return;
        }
 
@@ -170,11 +172,12 @@ void tmplput_display_wiki_history(StrBuf *Target, WCTemplputParams *TP)
                        }
 
                        else {
-                               wc_printf("<td><a href=\"wiki?page=%s?rev=%s\">%s</a></td>",
+                               wc_printf("<td><a href=\"wiki?page=%s?rev=%s",
                                        bstr("page"),
-                                       ChrPtr(rev_uuid),
-                                       _("(show)")
+                                       ChrPtr(rev_uuid)
                                );
+                               wc_printf("?go="); urlescputs(ChrPtr(WC->CurRoom.name));
+                               wc_printf("\">%s</a></td>", _("(show)"));
                                wc_printf("<td><a href=\"javascript:GetLoggedInFirst(encodeURIComponent('wiki?page=%s?rev=%s?revert=1'))\">%s</a></td>",
                                        bstr("page"),
                                        ChrPtr(rev_uuid),
@@ -346,11 +349,22 @@ InitModule_WIKI
                wiki_Cleanup
        );
 
+       RegisterReadLoopHandlerset(
+               VIEW_WIKIMD,
+               wiki_GetParamsGetServerCall,
+               wiki_PrintHeaderPage,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               wiki_Cleanup
+       );
+
        WebcitAddUrlHandler(HKEY("wiki"), "", 0, display_wiki_page, 0);
        WebcitAddUrlHandler(HKEY("wiki_history"), "", 0, display_wiki_history, 0);
        WebcitAddUrlHandler(HKEY("wiki_pagelist"), "", 0, display_wiki_pagelist, 0);
        RegisterNamespace("WIKI:DISPLAYHISTORY", 0, 0, tmplput_display_wiki_history, NULL, CTX_NONE);
        RegisterNamespace("WIKI:DISPLAYPAGELIST", 0, 0, tmplput_display_wiki_pagelist, NULL, CTX_NONE);
-       RegisterConditional(HKEY("COND:WIKI:PAGE"), 1, ConditionalHaveWikiPage, CTX_NONE);
-       RegisterConditional(HKEY("COND:WIKI:TYPE"), 1, ConditionalHavewikiType, CTX_NONE);
+       RegisterConditional("COND:WIKI:PAGE", 1, ConditionalHaveWikiPage, CTX_NONE);
+       RegisterConditional("COND:WIKI:TYPE", 1, ConditionalHavewikiType, CTX_NONE);
 }