]> git.ipfire.org Git - ipfire.org.git/commitdiff
wiki: Add navbar
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Nov 2018 15:18:58 +0000 (15:18 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Nov 2018 15:19:12 +0000 (15:19 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/backend/wiki.py
src/scss/style.scss
src/templates/wiki/modules/navbar.html [new file with mode: 0644]
src/templates/wiki/page.html
src/web/__init__.py
src/web/wiki.py

index 621c610d7381ed3d8d7e9bb3a1cf2f7e2d449a35..6bbd6078ba52bef95948094e84f204c5e3e05b55 100644 (file)
@@ -259,6 +259,11 @@ templates_wiki_DATA = \
 
 templates_wikidir = $(templatesdir)/wiki
 
+templates_wiki_modules_DATA = \
+       src/templates/wiki/modules/navbar.html
+
+templates_wiki_modulesdir = $(templates_wikidir)/modules
+
 # ------------------------------------------------------------------------------
 
 SCSS_FILES = \
index a5635bebe0f9be033050c127188b066c3f581bdc..e2a8e45ed7db6cebd62c08afd4dd88f83128a485 100644 (file)
@@ -2,6 +2,7 @@
 
 import logging
 import markdown2
+import os.path
 import re
 
 from . import misc
@@ -26,6 +27,13 @@ class Wiki(misc.Object):
                for row in res:
                        yield Page(self.backend, row.id, data=row)
 
+       def get_page_title(self, page, default=None):
+               doc = self.get_page(page)
+               if doc:
+                       return doc.title
+
+               return default
+
        def get_page(self, page, revision=None):
                page = Page.sanitise_page_name(page)
                assert page
index 1cb803216d4516c0350912da7b71f73a645e36b7..1b326cff97a56414403879080a0acf7aafd4afc5 100644 (file)
@@ -22,6 +22,7 @@
 @import "../bootstrap/scss/navbar";
 @import "../bootstrap/scss/card";
 @import "../bootstrap/scss/pagination";
+@import "../bootstrap/scss/breadcrumb";
 @import "../bootstrap/scss/badge";
 @import "../bootstrap/scss/alert";
 @import "../bootstrap/scss/progress";
diff --git a/src/templates/wiki/modules/navbar.html b/src/templates/wiki/modules/navbar.html
new file mode 100644 (file)
index 0000000..06d05ec
--- /dev/null
@@ -0,0 +1,15 @@
+<ol class="breadcrumb">
+       {% for page, title in breadcrumbs %}
+               <li class="breadcrumb-item">
+                       <a href="{{ page }}">{{ title }}</a>
+               </li>
+       {% end %}
+
+       <li class="breadcrumb-item {% if not suffix %}active{% end %}">
+               {{ page_title }}
+       </li>
+
+       {% if suffix %}
+               <li class="breadcrumb-item active">{{ suffix }}</li>
+       {% end %}
+</ol>
index 575863ec4cca93c4876f2606d2d9bff6a005b86b..4fe9574ef5c1c248bec49880a2c690181a877a40 100644 (file)
@@ -3,6 +3,8 @@
 {% block title %}{{ page.title }}{% end block %}
 
 {% block main %}
+       {% module WikiNavbar(page) %}
+
        <div class="card">
                <div class="card-body">
                        {% raw page.html %}
index 1c054b8f8830b94d584483c1bda685fd9464e088..c8c97e1c9ed4719abd846bfbd93ebac0b2f019f6 100644 (file)
@@ -89,6 +89,9 @@ class Application(tornado.web.Application):
                                "FireinfoDeviceAndGroupsTable"
                                                       : fireinfo.DeviceAndGroupsTableModule,
 
+                               # Wiki
+                               "WikiNavbar"           : wiki.WikiNavbarModule,
+
                                # Misc
                                "Map"                  : ui_modules.MapModule,
                                "ProgressBar"          : ui_modules.ProgressBarModule,
index e8201f1d4bb8feccab8e1045fd8fc9e61fa71c5c..e2b5a57a12585a8982c8164292aed523c8be03b6 100644 (file)
@@ -4,6 +4,7 @@ import tornado.web
 
 from . import auth
 from . import base
+from . import ui_modules
 
 class PageHandler(auth.CacheMixin, base.BaseHandler):
        @tornado.web.removeslash
@@ -48,3 +49,11 @@ class SearchHandler(auth.CacheMixin, base.BaseHandler):
                        raise tornado.web.HTTPError(404, "Nothing found")
 
                self.render("wiki/search-results.html", q=q, pages=pages)
+
+
+class WikiNavbarModule(ui_modules.UIModule):
+       def render(self, page, suffix=None):
+               breadcrumbs = self.backend.wiki.make_breadcrumbs(page.url)
+
+               return self.render_string("wiki/modules/navbar.html",
+                       breadcrumbs=breadcrumbs, page_title=page.title, suffix=suffix)