From 2cba6d4d88266aa3626d4606f2a17460c7437270 Mon Sep 17 00:00:00 2001 From: citrons Date: Wed, 23 Jun 2021 08:47:09 +0000 Subject: make breadcrumb work --- apioforum/__init__.py | 2 ++ apioforum/db.py | 2 +- apioforum/forum.py | 13 +++++++++++-- apioforum/templates/common.html | 27 +++++++++++++++++++++++++++ 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("/") 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) -%} {{the_tag.name}} {%- endmacro %} + +{% macro breadcrumb() %} + +{% endmacro %} + +{% macro forum_bc_entries(forum_id) -%} + {%- for f in forum_path(forum_id) -%} +
  • {{ f.name }}
  • + {%- 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) }} +
  • {{ thread.title }}
  • + {% 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 %}

    {%block title %}{{thread.title}}{% endblock %}

    - - +{{ thread_breadcrumb(thread) }} {% endblock %} {%block content%} -- cgit v1.2.3 From a474526d7f79acc585cb5412fc244080b1da2cb3 Mon Sep 17 00:00:00 2001 From: citrons Date: Wed, 23 Jun 2021 08:52:15 +0000 Subject: add breadcrumb to forum view --- apioforum/templates/view_forum.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apioforum/templates/view_forum.html b/apioforum/templates/view_forum.html index f83503b..2044d54 100644 --- a/apioforum/templates/view_forum.html +++ b/apioforum/templates/view_forum.html @@ -1,6 +1,12 @@ {% extends 'base.html' %} -{% from 'common.html' import ts, tag, disp_user, post_url %} -{% block header %}

    {% block title %}{{forum.name}}{%endblock%}

    {%endblock%} +{% from 'common.html' import ts, tag, disp_user, post_url, forum_breadcrumb %} +{% block header %} +

    {% block title %}{{forum.name}}{%endblock%}

    +{% if forum.id != 1 %} + {{ forum_breadcrumb(forum) }} +{% endif %} +{%endblock%} + {%block nmcontent%}
    {{forum.description|md|safe}} -- cgit v1.2.3 From d6b4dcbf7699543335666c43393f6a25b23815e7 Mon Sep 17 00:00:00 2001 From: citrons Date: Wed, 23 Jun 2021 09:37:17 +0000 Subject: subforum list --- apioforum/forum.py | 16 ++++++++++++++++ apioforum/static/style.css | 33 +++++++++------------------------ apioforum/templates/view_forum.html | 36 ++++++++++++++++++++++++++++++++---- 3 files changed, 57 insertions(+), 28 deletions(-) diff --git a/apioforum/forum.py b/apioforum/forum.py index dadc8b3..e379350 100644 --- a/apioforum/forum.py +++ b/apioforum/forum.py @@ -55,8 +55,24 @@ def view_forum(forum_id): """SELECT * FROM posts WHERE thread = ? ORDER BY created DESC; """,(thread['id'],)).fetchone() + + subforums = db.execute(""" + SELECT * FROM forums WHERE parent = ? ORDER BY name ASC + """,(forum_id,)).fetchall() + + forum_last_activity = {} + for subforum in subforums: + result = db.execute( + """SELECT updated FROM threads + WHERE forum = ? + ORDER BY updated DESC; + """,(subforum['id'],)).fetchone() + forum_last_activity[subforum['id']] = result[0] if result != None else None + return render_template("view_forum.html", forum=forum, + subforums=subforums, + forum_last_activity=forum_last_activity, threads=threads, thread_tags=thread_tags, preview_post=preview_post diff --git a/apioforum/static/style.css b/apioforum/static/style.css index b456e26..fcea239 100644 --- a/apioforum/static/style.css +++ b/apioforum/static/style.css @@ -88,26 +88,27 @@ nav#navbar .links { display: flex; } /* todo: make the navbar less bad */ .flashmsg { border: 1px solid black; background-color: yellow; max-width: max-content; padding: 5px; clear: both;} -.thread-listing:nth-child(even) { background-color: var(--alternating-colour-even) } -.thread-listing:nth-child(odd) { background-color: var(--alternating-colour-odd) } +.listing:nth-child(even) { background-color: var(--alternating-colour-even) } +.listing:nth-child(odd) { background-color: var(--alternating-colour-odd) } -.thread-listing { +.listing { border-left: 1px solid black; border-right: 1px solid black; border-top: 1px solid black; padding: 10px; } -.thread-listing:last-of-type { border-bottom: 1px solid black; } -.thread-listing-main { +.listing:last-of-type { border-bottom: 1px solid black; } +.listing-main { display: flex; align-items: center; } -.thread-listing-title { +.listing-title { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; flex-grow: 1; } + .thread-listing-tags { display: flex; align-items: center; @@ -121,7 +122,7 @@ nav#navbar .links { display: flex; } flex-wrap: nowrap; } .thread-listing-creator { margin-right: 5px; } -.thread-preview { +.listing-caption { overflow: hidden; font-size: smaller; white-space: nowrap; @@ -137,7 +138,7 @@ nav#navbar .links { display: flex; } /* wide screens */ @media all and (min-width: 600px) { - .thread-listing-title { font-size: larger; } + .listing-title { font-size: larger; } } /* small screens */ @@ -151,22 +152,6 @@ nav#navbar .links { display: flex; } } } - -.threadlisting-part { - background-color: inherit; - display: table-cell; - vertical-align: middle; - padding: 3px; - text-align: center; -} - -.threadlisting-part-title { - text-overflow: ellipsis; - overflow: hidden; -} - -.threadlisting-header { font-weight: bold } - .actionbutton::before { content: "["; color: grey; diff --git a/apioforum/templates/view_forum.html b/apioforum/templates/view_forum.html index 2044d54..926980e 100644 --- a/apioforum/templates/view_forum.html +++ b/apioforum/templates/view_forum.html @@ -10,6 +10,33 @@ {%block nmcontent%}
    {{forum.description|md|safe}} + + +{% if subforums %} +

    subforae

    +
    + {% for subforum in subforums %} +
    + +
    + {% if forum_last_activity[subforum.id] %} + last activity {{ts(forum_last_activity[subforum.id])}} ago + {% else %} + no threads + {% endif %} +
    +
    + {% endfor %} +
    +{% endif %} + +

    threads

    {% if g.user %}

    create new thread

    {% else %} @@ -17,9 +44,9 @@ {% endif %}
    {%for thread in threads%} -
    -
    -
    +
    +
    +
    {{- thread.title -}} @@ -37,7 +64,7 @@
    {% if preview_post[thread.id] %} -
    +
    {{ disp_user(preview_post[thread.id].author) }} {{ ts(preview_post[thread.id].created) }} @@ -52,5 +79,6 @@
    {%endfor%}
    +
    {%endblock%} -- cgit v1.2.3