X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fwiki.c;h=ef1a4441212dad909e6ee031dd6df87b11319364;hb=4b4dc864ede7c5d8d956febe4a0afb422b78e7c4;hp=3ed3a4003b9e58e2df3344b44e38aebcf21c1ab2;hpb=b5e7223d1a0293760ad61098a387b1dc764643db;p=citadel.git
diff --git a/webcit/wiki.c b/webcit/wiki.c
index 3ed3a4003..ef1a44412 100644
--- a/webcit/wiki.c
+++ b/webcit/wiki.c
@@ -1,11 +1,25 @@
/*
- * $Id$
- *
* Functions pertaining to rooms with a wiki view
+ *
+ * Copyright (c) 2009-2011 by the citadel.org team
+ *
+ * This program is open source software. You can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "webcit.h"
-#include "groupdav.h"
+#include "dav.h"
/*
* Convert a string to something suitable as a wiki index
@@ -33,8 +47,9 @@ void str_wiki_index(char *s)
* Display a specific page from a wiki room
*
* "rev" may be set to an empty string to display the current version.
+ * "do_revert" may be set to nonzero to perform a reversion to the specified version.
*/
-void display_wiki_page_backend(const StrBuf *roomname, char *pagename, char *rev)
+void display_wiki_page_backend(const StrBuf *roomname, char *pagename, char *rev, int do_revert)
{
const StrBuf *Mime;
long msgnum = (-1L);
@@ -45,19 +60,19 @@ void display_wiki_page_backend(const StrBuf *roomname, char *pagename, char *rev
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;
}
@@ -70,7 +85,7 @@ void display_wiki_page_backend(const StrBuf *roomname, char *pagename, char *rev
if ((rev != NULL) && (strlen(rev) > 0)) {
/* read an older revision */
- serv_printf("WIKI rev|%s|%s|fetch", pagename, rev);
+ serv_printf("WIKI rev|%s|%s|%s", pagename, rev, (do_revert ? "revert" : "fetch") );
serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
msgnum = extract_long(&buf[4], 0);
@@ -86,7 +101,7 @@ void display_wiki_page_backend(const StrBuf *roomname, char *pagename, char *rev
return;
}
- wc_printf("
"
+ wc_printf("
"
"
" @@ -109,12 +124,14 @@ void display_wiki_page(void) const StrBuf *roomname; char pagename[128]; char rev[128]; + int do_revert = 0; output_headers(1, 1, 1, 0, 0, 0); roomname = sbstr("room"); safestrncpy(pagename, bstr("page"), sizeof pagename); safestrncpy(rev, bstr("rev"), sizeof rev); - display_wiki_page_backend(roomname, pagename, rev); + do_revert = atoi(bstr("revert")); + display_wiki_page_backend(roomname, pagename, rev, do_revert); wDumpContent(1); } @@ -136,12 +153,12 @@ void tmplput_display_wiki_history(StrBuf *Target, WCTemplputParams *TP) 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; } @@ -159,25 +176,19 @@ void tmplput_display_wiki_history(StrBuf *Target, WCTemplputParams *TP) StrBuf *author = NewStrBuf(); StrBuf *node = NewStrBuf(); - wc_printf(" |