diff options
author | citrons <citrons> | 2021-06-23 08:47:09 +0000 |
---|---|---|
committer | citrons <citrons> | 2021-06-23 08:47:09 +0000 |
commit | 2cba6d4d88266aa3626d4606f2a17460c7437270 (patch) | |
tree | 19634de811b0a18d195384571c01b699211accf3 | |
parent | 47f78d820a3b31929c146a9952136c4ca9f39ce2 (diff) |
make breadcrumb work
-rw-r--r-- | apioforum/__init__.py | 2 | ||||
-rw-r--r-- | apioforum/db.py | 2 | ||||
-rw-r--r-- | apioforum/forum.py | 13 | ||||
-rw-r--r-- | apioforum/templates/common.html | 27 | ||||
-rw-r--r-- | apioforum/templates/view_thread.html | 11 |
5 files changed, 43 insertions, 12 deletions
diff --git a/apioforum/__init__.py b/apioforum/__init__.py index 9d49f36..30dd813 100644 --- a/apioforum/__init__.py +++ b/apioforum/__init__.py @@ -47,6 +47,8 @@ def create_app(): p += "?" + request.query_string.decode("utf-8") return dict(path_for_next=p) + app.jinja_env.globals.update(forum_path=forum.forum_path) + from .mdrender import render @app.template_filter('md') def md_render(s): diff --git a/apioforum/db.py b/apioforum/db.py index 76aacc2..84f268d 100644 --- a/apioforum/db.py +++ b/apioforum/db.py @@ -91,7 +91,7 @@ CREATE TABLE forums ( parent INTEGER REFERENCES forums(id), description TEXT ); -INSERT INTO forums (name,parent,description) values ('root',null,'the default root forum'); +INSERT INTO forums (name,parent,description) values ('apioforum',null,'the default root forum'); PRAGMA foreign_keys = off; BEGIN TRANSACTION; diff --git a/apioforum/forum.py b/apioforum/forum.py index 09d3166..dadc8b3 100644 --- a/apioforum/forum.py +++ b/apioforum/forum.py @@ -11,14 +11,23 @@ from .mdrender import render from sqlite3 import OperationalError -from sqlite3 import OperationalError - bp = Blueprint("forum", __name__, url_prefix="/") @bp.route("/") def not_actual_index(): return redirect("/1") +def forum_path(forum_id): + db = get_db() + i = forum_id + path = [] + while i != None: + forum = db.execute("SELECT * FROM forums WHERE id = ?",(i,)).fetchone() + path.append(forum) + i = forum['parent'] + path.reverse() + return path + @bp.route("/<int:forum_id>") def view_forum(forum_id): db = get_db() diff --git a/apioforum/templates/common.html b/apioforum/templates/common.html index 9301a49..b0bf713 100644 --- a/apioforum/templates/common.html +++ b/apioforum/templates/common.html @@ -39,3 +39,30 @@ {% macro tag(the_tag) -%} <span class="tag" style="color: {{the_tag.text_colour}}; background-color: {{the_tag.bg_colour}}">{{the_tag.name}}</span> {%- endmacro %} + +{% macro breadcrumb() %} +<nav aria-label="Breadcrumb"> +<ol class="breadcrumbs"> + {{- caller() -}} +</ol> +</nav> +{% endmacro %} + +{% macro forum_bc_entries(forum_id) -%} + {%- for f in forum_path(forum_id) -%} + <li><a href="{{url_for('forum.view_forum',forum_id=f.id)}}">{{ f.name }}</a></li> + {%- endfor %} +{%- endmacro %} + +{% macro forum_breadcrumb(forum) %} + {%- call breadcrumb() %} + {{ forum_bc_entries(forum.id) }} + {% endcall -%} +{% endmacro %} + +{% macro thread_breadcrumb(thread) %} + {%- call breadcrumb() %} + {{ forum_bc_entries(thread.forum) }} + <li>{{ thread.title }}</li> + {% endcall -%} +{% endmacro %} diff --git a/apioforum/templates/view_thread.html b/apioforum/templates/view_thread.html index ded2d52..dd41d87 100644 --- a/apioforum/templates/view_thread.html +++ b/apioforum/templates/view_thread.html @@ -1,15 +1,8 @@ -{% from 'common.html' import disp_post,tag %} +{% from 'common.html' import disp_post,tag,thread_breadcrumb %} {% extends 'base.html' %} {% block header %} <h1>{%block title %}{{thread.title}}{% endblock %}</h1> -<nav aria-label="Breadcrumb"> -<ol class="breadcrumbs"> - <li><a href="{{url_for('index')}}">apioforum</a></li> - <li><a href="#">the</a></li> - <li>the</li> -</ol> -</nav> - +{{ thread_breadcrumb(thread) }} {% endblock %} {%block content%} |