aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorcitrons <citrons>2021-06-23 09:37:17 +0000
committercitrons <citrons>2021-06-23 09:37:17 +0000
commitd6b4dcbf7699543335666c43393f6a25b23815e7 (patch)
tree35c921c6b7d531ce020eb557f9b8fc8b6cadbeb7
parenta474526d7f79acc585cb5412fc244080b1da2cb3 (diff)
subforum listsubforum-ui
-rw-r--r--apioforum/forum.py16
-rw-r--r--apioforum/static/style.css33
-rw-r--r--apioforum/templates/view_forum.html36
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%}
<main class="widemain">
{{forum.description|md|safe}}
+
+
+{% if subforums %}
+<h2>subforae</h2>
+<div class="forum-list">
+ {% for subforum in subforums %}
+ <div class="listing">
+ <div class="listing-main">
+ <div class="listing-title">
+ <a href="{{url_for('forum.view_forum',forum_id=subforum.id)}}">
+ {{- subforum.name -}}
+ </a>
+ </div>
+ </div>
+ <div class="listing-caption">
+ {% if forum_last_activity[subforum.id] %}
+ last activity {{ts(forum_last_activity[subforum.id])}} ago
+ {% else %}
+ no threads
+ {% endif %}
+ </div>
+ </div>
+ {% endfor %}
+</div>
+{% endif %}
+
+<h2>threads</h2>
{% if g.user %}
<p><a class="actionbutton" href="{{url_for('forum.create_thread',forum_id=forum.id)}}">create new thread</a></p>
{% else %}
@@ -17,9 +44,9 @@
{% endif %}
<div class="thread-list">
{%for thread in threads%}
- <div class="thread-listing">
- <div class="thread-listing-main">
- <div class="thread-listing-title">
+ <div class="listing">
+ <div class="listing-main">
+ <div class="listing-title">
<a href="{{url_for('thread.view_thread',thread_id=thread.id)}}">
{{- thread.title -}}
</a>
@@ -37,7 +64,7 @@
</div>
</div>
{% if preview_post[thread.id] %}
- <div class="thread-preview">
+ <div class="listing-caption">
{{ disp_user(preview_post[thread.id].author) }}
<span class="thread-preview-ts">
{{ ts(preview_post[thread.id].created) }}
@@ -52,5 +79,6 @@
</div>
{%endfor%}
</div>
+
</main>
{%endblock%}