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
"""
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):
{{ _("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">
--- /dev/null
+{% 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 %}
# Handlers
(r"/recent\-changes", wiki.RecentChangesHandler),
(r"/search", wiki.SearchHandler),
+ (r"/watchlist", wiki.WatchlistHandler),
# Media
(r"([A-Za-z0-9\-_\/]+)?/files", wiki.FilesHandler),
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()