]> git.ipfire.org Git - ipfire.org.git/blame - src/web/wiki.py
wiki: Show recent changes
[ipfire.org.git] / src / web / wiki.py
CommitLineData
181d08f3
MT
1#!/usr/bin/python3
2
3import tornado.web
4
5from . import auth
6from . import base
6ac7e934 7from . import ui_modules
181d08f3
MT
8
9class PageHandler(auth.CacheMixin, base.BaseHandler):
10 @tornado.web.removeslash
11 def get(self, page):
12 page = self.backend.wiki.get_page(page)
13
14 # If the page does not exist, we send 404
15 if not page or page.was_deleted():
16 raise tornado.web.HTTPError(404)
17
18 # Fetch the latest revision
19 latest_revision = page.get_latest_revision()
20
21 # Render page
22 self.render("wiki/page.html", page=page, latest_revision=latest_revision)
23
24 @tornado.web.authenticated
25 def post(self, page):
26 content = self.get_argument("content", None)
27
28 # Delete the page if content is empty
29 if not content:
30 with self.db.transaction():
31 self.backend.wiki.delete_page(page, self.current_user)
32
33 return self.redirect("/")
34
35 # Create a new page in the database
36 page = self.backend.wiki.create_page(page, self.current_user, content)
37
38 # Redirect
39 self.redirect(page.url)
40
41
42class SearchHandler(auth.CacheMixin, base.BaseHandler):
43 @base.blacklisted
44 def get(self):
45 q = self.get_argument("q")
46
47 pages = self.backend.wiki.search(q, limit=50)
48 if not pages:
49 raise tornado.web.HTTPError(404, "Nothing found")
50
51 self.render("wiki/search-results.html", q=q, pages=pages)
6ac7e934
MT
52
53
f9db574a
MT
54class RecentChangesHandler(auth.CacheMixin, base.BaseHandler):
55 def get(self):
56 recent_changes = self.backend.wiki.get_recent_changes(limit=50)
57
58 self.render("wiki/recent-changes.html", recent_changes=recent_changes)
59
60
61class WikiListModule(ui_modules.UIModule):
62 def render(self, pages):
63 return self.render_string("wiki/modules/list.html", pages=pages)
64
65
6ac7e934
MT
66class WikiNavbarModule(ui_modules.UIModule):
67 def render(self, page, suffix=None):
68 breadcrumbs = self.backend.wiki.make_breadcrumbs(page.url)
69
70 return self.render_string("wiki/modules/navbar.html",
71 breadcrumbs=breadcrumbs, page_title=page.title, suffix=suffix)