* wiki page list
authorArt Cancro <ajc@citadel.org>
Tue, 10 Nov 2009 22:57:23 +0000 (22:57 +0000)
committerArt Cancro <ajc@citadel.org>
Tue, 10 Nov 2009 22:57:23 +0000 (22:57 +0000)
webcit/roomops.c
webcit/static/t/wiki_pagelist_inner.html [new file with mode: 0644]
webcit/wiki.c

index 685b32c0807387a7ac3bd2e7537ff8dca8cdecc5..7531b59239b23eec45ee919e22b53b00739388d0 100644 (file)
@@ -577,7 +577,7 @@ void embed_room_banner(char *got, int navbar_style) {
                        case VIEW_WIKI:
                                wc_printf(
                                        "<li class=\"readallmess\">"
-                                       "<a href=\"readfwd\">"
+                                       "<a href=\"wiki?page=home\">"
                                        "<img src=\"static/readallmess3_24x.gif\" "
                                        "alt=\"\" width=\"24\" height=\"24\">"
                                        "<span class=\"navbar_link\">"
diff --git a/webcit/static/t/wiki_pagelist_inner.html b/webcit/static/t/wiki_pagelist_inner.html
new file mode 100644 (file)
index 0000000..9c6e474
--- /dev/null
@@ -0,0 +1 @@
+<?WIKI:DISPLAYPAGELIST>
index d72c281b3b41f411c3949a7de3133bed9d0b6d62..b7b03c1a0363e9885443263456f9d0b89a0be7b2 100644 (file)
@@ -250,11 +250,13 @@ void display_wiki_history(void)
 
 
 /*
- * 
+ * Display a list of all pages in a Wiki room (template callback)
  */
 void tmplput_display_wiki_pagelist(StrBuf *Target, WCTemplputParams *TP)
 {
        const StrBuf *roomname;
+       StrBuf *Buf;
+       int row = 0;
 
        roomname = sbstr("room");
        if (StrLength(roomname) > 0) {
@@ -270,14 +272,40 @@ void tmplput_display_wiki_pagelist(StrBuf *Target, WCTemplputParams *TP)
                }
        }
 
+       serv_printf("MSGS ALL|||4");
+       Buf = NewStrBuf();
+       StrBuf_ServGetln(Buf);
+       if (GetServerStatus(Buf, NULL) == 1) {
+               StrBuf *pagetitle = NewStrBuf();
 
-       /* FIXME put something here */
-}
+               wc_printf("<div class=\"fix_scrollbar_bug\">"
+                       "<table class=\"wiki_history_background\">"     /* FIXME make its own class */
+               );
+
+               wc_printf("<th>%s</th>", _("Page title"));
 
+               while(StrBuf_ServGetln(Buf), strcmp(ChrPtr(Buf), "000")) {
+                       StrBufExtract_token(pagetitle, Buf, 1, '|');
+
+                       if (!bmstrcasestr((char *)ChrPtr(pagetitle), "_HISTORY_")) {    /* no history pages */
+                               wc_printf("<tr bgcolor=\"%s\">", ((row%2) ? "#FFFFFF" : "#DDDDDD"));
+                               wc_printf("<td>");
+                               escputs(ChrPtr(pagetitle));             /* FIXME make it linkable */
+                               wc_printf("</td>");
+                               wc_printf("</tr>\n");
+                               ++row;
+                       }
+               }
+               wc_printf("</table>\n");
+               FreeStrBuf(&pagetitle);
+       }
+
+       FreeStrBuf(&Buf);
+}
 
 
 /*
- * 
+ * Display a list of all pages in a Wiki room
  */
 void display_wiki_pagelist(void)
 {
@@ -313,4 +341,5 @@ InitModule_WIKI
        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);
 }