From 036d3770e90f5a663b50828356395f1a31304c76 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Mon, 2 Nov 2009 17:21:33 +0000 Subject: [PATCH] * Completed the code to revert a wiki page to a previous version with just one click. Combined with the previous commit, the code paths for 'view' and 'revert' operations are now unified in both citserver and webcit. * Re-enabled the ability to create Wiki rooms. Our wiki module is now functionally complete in a barebones sort of way, and the on-disk format is finalized. I will probably add some more bells and whistles (such as 'compare versions') before the final release. --- webcit/roomops.c | 2 +- webcit/wiki.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/webcit/roomops.c b/webcit/roomops.c index decdddaa7..685b32c08 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -44,7 +44,7 @@ int is_view_allowed_as_default(int which_view) case VIEW_CALENDAR: return(1); case VIEW_TASKS: return(1); case VIEW_NOTES: return(1); - case VIEW_WIKI: return(0); /* not finished yet */ + case VIEW_WIKI: return(1); case VIEW_CALBRIEF: return(0); case VIEW_JOURNAL: return(0); default: return(0); /* should never get here */ diff --git a/webcit/wiki.c b/webcit/wiki.c index 3e470fe8a..d42802a8e 100644 --- a/webcit/wiki.c +++ b/webcit/wiki.c @@ -33,8 +33,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); @@ -70,7 +71,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); @@ -109,12 +110,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); } @@ -202,7 +205,7 @@ void tmplput_display_wiki_history(StrBuf *Target, WCTemplputParams *TP) ChrPtr(rev_uuid), _("(show)") ); - wc_printf("%s", + wc_printf("%s", bstr("page"), ChrPtr(rev_uuid), _("(revert)") @@ -250,7 +253,7 @@ int wiki_Cleanup(void **ViewSpecific) { char pagename[5]; safestrncpy(pagename, "home", sizeof pagename); - display_wiki_page_backend(WC->wc_roomname, pagename, ""); + display_wiki_page_backend(WC->wc_roomname, pagename, "", 0); wDumpContent(1); return 0; } @@ -270,6 +273,5 @@ InitModule_WIKI WebcitAddUrlHandler(HKEY("wiki"), "", 0, display_wiki_page, 0); WebcitAddUrlHandler(HKEY("wiki_history"), "", 0, display_wiki_history, 0); - /* WebcitAddUrlHandler(HKEY("wiki_revert"), "", 0, wiki_revert, 0); FIXME implement this */ RegisterNamespace("WIKI:DISPLAYHISTORY", 0, 0, tmplput_display_wiki_history, NULL, CTX_NONE); } -- 2.39.2