]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/wiki.py
7 from . import ui_modules
9 class PageHandler(auth
.CacheMixin
, base
.BaseHandler
):
10 def write_error(self
, status_code
, **kwargs
):
11 # Render a custom page for 404
12 if status_code
== 404:
13 self
.render("wiki/404.html", **kwargs
)
16 # Otherwise raise this to one layer above
17 super().write_error(status_code
, **kwargs
)
19 @tornado.web
.removeslash
21 page
= self
.backend
.wiki
.get_page(page
)
23 # If the page does not exist, we send 404
24 if not page
or page
.was_deleted():
25 raise tornado
.web
.HTTPError(404)
27 # Fetch the latest revision
28 latest_revision
= page
.get_latest_revision()
31 self
.render("wiki/page.html", page
=page
, latest_revision
=latest_revision
)
33 @tornado.web
.authenticated
35 content
= self
.get_argument("content", None)
37 # Delete the page if content is empty
39 with self
.db
.transaction():
40 self
.backend
.wiki
.delete_page(page
, self
.current_user
)
42 return self
.redirect("/")
44 # Create a new page in the database
45 page
= self
.backend
.wiki
.create_page(page
, self
.current_user
, content
)
48 self
.redirect(page
.url
)
51 class SearchHandler(auth
.CacheMixin
, base
.BaseHandler
):
54 q
= self
.get_argument("q")
56 pages
= self
.backend
.wiki
.search(q
, limit
=50)
58 raise tornado
.web
.HTTPError(404, "Nothing found")
60 self
.render("wiki/search-results.html", q
=q
, pages
=pages
)
63 class RecentChangesHandler(auth
.CacheMixin
, base
.BaseHandler
):
65 recent_changes
= self
.backend
.wiki
.get_recent_changes(limit
=50)
67 self
.render("wiki/recent-changes.html", recent_changes
=recent_changes
)
70 class WikiListModule(ui_modules
.UIModule
):
71 def render(self
, pages
):
72 return self
.render_string("wiki/modules/list.html", pages
=pages
)
75 class WikiNavbarModule(ui_modules
.UIModule
):
76 def render(self
, page
, suffix
=None):
77 breadcrumbs
= self
.backend
.wiki
.make_breadcrumbs(page
.url
)
79 return self
.render_string("wiki/modules/navbar.html",
80 breadcrumbs
=breadcrumbs
, page_title
=page
.title
, suffix
=suffix
)