From: Michael Tremer Date: Mon, 12 Nov 2018 21:19:52 +0000 (+0000) Subject: wiki: Add page that lists revisions of a page X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d69968462f3d85c6d62ceb263e11dfacc95fa2a;p=ipfire.org.git wiki: Add page that lists revisions of a page Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 244722a9..b6c8025c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -258,7 +258,8 @@ templates_wiki_DATA = \ src/templates/wiki/base.html \ src/templates/wiki/edit.html \ src/templates/wiki/page.html \ - src/templates/wiki/recent-changes.html + src/templates/wiki/recent-changes.html \ + src/templates/wiki/revisions.html templates_wikidir = $(templatesdir)/wiki diff --git a/src/backend/wiki.py b/src/backend/wiki.py index 5a285ea8..4a782a8e 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -170,7 +170,15 @@ class Page(misc.Object): return self.backend.wiki.make_breadcrumbs(self.page) def get_latest_revision(self): - return self.backend.wiki.get_page(self.page) + revisions = self.get_revisions() + + # Return first object + for rev in revisions: + return rev + + def get_revisions(self): + return self.backend.wiki._get_pages("SELECT * FROM wiki \ + WHERE page = %s ORDER BY timestamp DESC", self.page) @property def changes(self): diff --git a/src/templates/wiki/modules/list.html b/src/templates/wiki/modules/list.html index 625e1dd7..f7a67c15 100644 --- a/src/templates/wiki/modules/list.html +++ b/src/templates/wiki/modules/list.html @@ -6,7 +6,7 @@ {% end %} {% end %} - {{ page.title }} + {{ page.title }}

diff --git a/src/templates/wiki/revisions.html b/src/templates/wiki/revisions.html new file mode 100644 index 00000000..524813db --- /dev/null +++ b/src/templates/wiki/revisions.html @@ -0,0 +1,17 @@ +{% extends "page.html" %} + +{% block title %}{{ _("Revisions of %s") % page.title }}{% end block %} + +{% block main %} + {% if not request.path == "/" %} + {% module WikiNavbar(page) %} + {% end %} + +

+
+

{{ _("Revisions of %s") % page.title }}

+ + {% module WikiList(page.get_revisions(), show_breadcrumbs=False, link_revision=True) %} +
+
+{% end block %} diff --git a/src/web/wiki.py b/src/web/wiki.py index 916db358..12aa9c07 100644 --- a/src/web/wiki.py +++ b/src/web/wiki.py @@ -22,7 +22,11 @@ class PageHandler(auth.CacheMixin, base.BaseHandler): @tornado.web.removeslash def get(self, page): - page = self.backend.wiki.get_page(page) + # Check if we are asked to render a certain revision + revision = self.get_argument("revision", None) + + # Fetch the wiki page + page = self.backend.wiki.get_page(page, revision=revision) # Edit if self.action == "edit": @@ -33,8 +37,14 @@ class PageHandler(auth.CacheMixin, base.BaseHandler): if page and page.was_deleted(): page = None - # Render login - return self.render("wiki/edit.html", page=page) + # Render page + self.render("wiki/edit.html", page=page) + return + + # Revisions + elif self.action == "revisions": + self.render("wiki/revisions.html", page=page) + return # If the page does not exist, we send 404 if not page or page.was_deleted(): @@ -83,8 +93,8 @@ class RecentChangesHandler(auth.CacheMixin, base.BaseHandler): class WikiListModule(ui_modules.UIModule): - def render(self, pages, show_breadcrumbs=True, show_changes=False): - return self.render_string("wiki/modules/list.html", + def render(self, pages, link_revision=False, show_breadcrumbs=True, show_changes=False): + return self.render_string("wiki/modules/list.html", link_revision=link_revision, pages=pages, show_breadcrumbs=show_breadcrumbs, show_changes=show_changes)