/*
- * $Id$
- *
* Functions pertaining to rooms with a wiki view
*/
if (StrLength(roomname) > 0) {
/* If we're not in the correct room, try going there. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
gotoroom(roomname);
}
/* If we're still not in the correct room, it doesn't exist. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
wc_printf(_("There is no room called '%s'."), ChrPtr(roomname));
return;
}
}
- if (WC->wc_view != VIEW_WIKI) {
+ if (WC->CurRoom.view != VIEW_WIKI) {
wc_printf(_("'%s' is not a Wiki room."), ChrPtr(roomname));
return;
}
if (StrLength(roomname) > 0) {
/* If we're not in the correct room, try going there. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
gotoroom(roomname);
}
/* If we're still not in the correct room, it doesn't exist. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
wc_printf(_("There is no room called '%s'."), ChrPtr(roomname));
return;
}
roomname = sbstr("room");
if (StrLength(roomname) > 0) {
/* If we're not in the correct room, try going there. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
gotoroom(roomname);
}
/* If we're still not in the correct room, it doesn't exist. */
- if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->wc_roomname))) {
+ if (strcasecmp(ChrPtr(roomname), ChrPtr(WC->CurRoom.name))) {
wc_printf(_("There is no room called '%s'."), ChrPtr(roomname));
return;
}
}
- serv_printf("MSGS ALL|||4");
+ if (!IsEmptyStr(bstr("query"))) {
+ serv_printf("MSGS SEARCH|%s||4", bstr("query")); /* search-reduced list */
+ }
+ else {
+ serv_printf("MSGS ALL|||4"); /* full list */
+ }
+
Buf = NewStrBuf();
StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, NULL) == 1) {
StrBuf *pagetitle = NewStrBuf();
wc_printf("<div class=\"fix_scrollbar_bug\">"
- "<table class=\"wiki_history_background\">" /* FIXME make its own class */
+ "<table class=\"wiki_pagelist_background\">"
);
wc_printf("<th>%s</th>", _("Page title"));
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("<td><a href=\"wiki?page=");
+ urlescputs(ChrPtr(pagetitle));
+ wc_printf("\">");
+ escputs(ChrPtr(pagetitle));
+ wc_printf("</a></td>");
wc_printf("</tr>\n");
++row;
}
/*
- * Display a list of all pages in a Wiki room
+ * Display a list of all pages in a Wiki room. Search requests in a Wiki room also go here.
*/
void display_wiki_pagelist(void)
{
{
char pagename[5];
safestrncpy(pagename, "home", sizeof pagename);
- display_wiki_page_backend(WC->wc_roomname, pagename, "", 0);
+ display_wiki_page_backend(WC->CurRoom.name, pagename, "", 0);
wDumpContent(1);
return 0;
}
+
+
+
+
+
+int ConditionalHaveWikiPage(StrBuf *Target, WCTemplputParams *TP)
+{
+ const char *page;
+ const char *pch;
+ long len;
+
+ page = BSTR("page");
+ GetTemplateTokenString(Target, TP, 2, &pch, &len);
+ return strcasecmp(page, pch) == 0;
+}
+int ConditionalHavewikiType(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+ const char *pch;
+ long len;
+
+ GetTemplateTokenString(Target, TP, 1, &pch, &len);
+ return bmstrcasestr((char *)ChrPtr(WCC->Hdr->HR.ReqLine), pch) != NULL;
+}
void
InitModule_WIKI
(void)
NULL,
NULL,
NULL,
+ NULL,
wiki_Cleanup
);
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);
}