]> git.ipfire.org Git - ipfire.org.git/commitdiff
wiki: Add watchlist
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 8 May 2019 16:57:32 +0000 (17:57 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 8 May 2019 17:45:13 +0000 (18:45 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/backend/wiki.py
src/templates/base.html
src/templates/wiki/watchlist.html [new file with mode: 0644]
src/web/__init__.py
src/web/wiki.py

index 70872e1307c3c85792fe462c42f2e30fd429d7ee..a5db487be9fa4e03e8a46797f556c247bf5c2e22 100644 (file)
@@ -272,7 +272,8 @@ templates_wiki_DATA = \
        src/templates/wiki/page.html \
        src/templates/wiki/recent-changes.html \
        src/templates/wiki/revisions.html \
-       src/templates/wiki/search-results.html
+       src/templates/wiki/search-results.html \
+       src/templates/wiki/watchlist.html
 
 templates_wikidir = $(templatesdir)/wiki
 
index 5416f3897febb8ebb116f54d9146ab1f6784d73a..3dc8a71f17aaa5ac36a93275235b7d97c461ac7e 100644 (file)
@@ -138,6 +138,18 @@ class Wiki(misc.Object):
                """
                self.db.execute("REFRESH MATERIALIZED VIEW wiki_search_index")
 
+       def get_watchlist(self, account):
+               pages = self._get_pages(
+                       "WITH pages AS (SELECT * FROM wiki_current \
+                                       LEFT JOIN wiki ON wiki_current.id = wiki.id) \
+                       SELECT * FROM wiki_watchlist watchlist \
+                               LEFT JOIN pages ON watchlist.page = pages.page \
+                               WHERE watchlist.uid = %s",
+                       account.uid,
+               )
+
+               return sorted(pages)
+
        # ACL
 
        def check_acl(self, page, account):
index 449f53cdc177b9dccf2268a95468eccf903f0f36..71ceefc8a3db5d7f7951b7686ba2cfb486e56ece 100644 (file)
                                                                                {{ _("Recent Changes") }}
                                                                        </a>
                                                                </li>
+
+                                                               <li class="nav-item">
+                                                                       <a class="nav-link {% if request.path == "/watchlist" %}active{% end %}" href="/watchlist">
+                                                                               {{ _("Watchlist") }}
+                                                                       </a>
+                                                               </li>
                                                        </ul>
 
                                                        <form class="form-inline my-2 my-lg-0" action="/search" method="GET">
diff --git a/src/templates/wiki/watchlist.html b/src/templates/wiki/watchlist.html
new file mode 100644 (file)
index 0000000..a8f0ada
--- /dev/null
@@ -0,0 +1,21 @@
+{% extends "base.html" %}
+
+{% block title %}{{ _("Your Watchlist") }}{% end block %}
+
+{% block sidebar %}
+       {% set help = backend.wiki.get_page("/wiki/watchlist") %}
+
+       {% if help %}
+               {% raw help.html %}
+       {% end %}
+{% end block %}
+
+{% block main %}
+       <div class="card">
+               <div class="card-body">
+                       <h5>{{ _("Your Watchlist") }}</h5>
+
+                       {% module WikiList(pages) %}
+               </div>
+       </div>
+{% end block %}
index b8b363f4633d53daf8ff317d60f28990cf31e9b7..ae86c52c58d031e00d2480a8f2dd77bb5f2545bd 100644 (file)
@@ -296,6 +296,7 @@ class Application(tornado.web.Application):
                        # Handlers
                        (r"/recent\-changes", wiki.RecentChangesHandler),
                        (r"/search", wiki.SearchHandler),
+                       (r"/watchlist", wiki.WatchlistHandler),
 
                        # Media
                        (r"([A-Za-z0-9\-_\/]+)?/files", wiki.FilesHandler),
index a997ed4a328a95e42e259f296dd4d9e9f9b73e5c..bce58ca1e0e614443c73df4737bde3234f93c1f6 100644 (file)
@@ -238,6 +238,14 @@ class RecentChangesHandler(auth.CacheMixin, base.BaseHandler):
                self.render("wiki/recent-changes.html", recent_changes=recent_changes)
 
 
+class WatchlistHandler(auth.CacheMixin, base.BaseHandler):
+       @tornado.web.authenticated
+       def get(self):
+               pages = self.backend.wiki.get_watchlist(self.current_user)
+
+               self.render("wiki/watchlist.html", pages=pages)
+
+
 class WikiDiffModule(ui_modules.UIModule):
        differ = difflib.Differ()