From 46f8aea5384e3a14c96bb5194403daafbc3354c2 Mon Sep 17 00:00:00 2001 From: trisua <me@trisua.com> Date: Tue, 10 Jun 2025 22:12:22 -0400 Subject: [PATCH] add: forge pinned tickets --- .../app/src/public/html/communities/list.lisp | 23 ++++++++++++++----- crates/app/src/public/html/components.lisp | 7 +++++- crates/app/src/public/html/forge/info.lisp | 1 - crates/app/src/public/html/forge/tickets.lisp | 13 +++++++++++ crates/app/src/routes/pages/forge.rs | 16 ++++++------- 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/crates/app/src/public/html/communities/list.lisp b/crates/app/src/public/html/communities/list.lisp index 229cecb..bc4b16b 100644 --- a/crates/app/src/public/html/communities/list.lisp +++ b/crates/app/src/public/html/communities/list.lisp @@ -41,12 +41,23 @@ (text "{{ icon \"award\" }}") (span (text "{{ text \"communities:label.my_communities\" }}"))) - (a - ("href" "/communities/search") - ("class" "button quaternary small") - (text "{{ icon \"search\" }}") - (span - (text "{{ text \"communities:label.join_new\" }}")))) + + (div + ("class" "flex items-center gap-2") + (a + ("href" "/forges") + ("class" "button quaternary small") + (text "{{ icon \"anvil\" }}") + (span + ("class" "desktop") + (text "{{ text \"forge:label.my_forges\" }}"))) + (a + ("href" "/communities/search") + ("class" "button quaternary small") + (text "{{ icon \"search\" }}") + (span + ("class" "desktop") + (text "{{ text \"communities:label.join_new\" }}"))))) (div ("class" "card flex flex-col gap-2") (text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %}"))) diff --git a/crates/app/src/public/html/components.lisp b/crates/app/src/public/html/components.lisp index ac1076a..d8f2256 100644 --- a/crates/app/src/public/html/components.lisp +++ b/crates/app/src/public/html/components.lisp @@ -1789,7 +1789,12 @@ (text "{{ self::full_username(user=owner) }}")) ; timestamp - (span ("class" "date") (text "{{ post.created }}"))) + (span ("class" "date") (text "{{ post.created }}")) + + ; pinned + (text "{% if post.context.is_pinned -%}") + (icon (text "pin")) + (text "{%- endif %}")) ; post title (a diff --git a/crates/app/src/public/html/forge/info.lisp b/crates/app/src/public/html/forge/info.lisp index df5a29b..4019546 100644 --- a/crates/app/src/public/html/forge/info.lisp +++ b/crates/app/src/public/html/forge/info.lisp @@ -3,5 +3,4 @@ ("class" "flex flex-col gap-4 w-full") (text "{{ macros::forge_nav(community=community, selected=\"info\") }}") (text "{{ components::community_info(community=community) }}")) - ; (text "{{ components::community_banner(id=community.id, community=community) }}") (text "{% endblock %}") diff --git a/crates/app/src/public/html/forge/tickets.lisp b/crates/app/src/public/html/forge/tickets.lisp index 99370a5..7c9a7e8 100644 --- a/crates/app/src/public/html/forge/tickets.lisp +++ b/crates/app/src/public/html/forge/tickets.lisp @@ -2,6 +2,19 @@ (div ("class" "flex flex-col gap-4 w-full") (text "{{ macros::forge_nav(community=community, selected=\"tickets\") }}") + (div + ("class" "card-nest") + (div + ("class" "card small flex items-center gap-2") + (icon (text "pin")) + (str (text "communities:label.pinned"))) + + (div + ("class" "card flex flex-col gap-2") + (text "{% for post in pinned -%}") + (text "{{ components::ticket(post=post[0], owner=post[1]) }}") + (text "{%- endfor %}"))) + (div ("class" "card-nest") (div diff --git a/crates/app/src/routes/pages/forge.rs b/crates/app/src/routes/pages/forge.rs index 0eadee9..404455c 100644 --- a/crates/app/src/routes/pages/forge.rs +++ b/crates/app/src/routes/pages/forge.rs @@ -171,13 +171,13 @@ pub async fn tickets_request( Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)), }; - // let pinned = match data.0.get_pinned_posts_by_community(community.id).await { - // Ok(p) => match data.0.fill_posts(p, &ignore_users, &user).await { - // Ok(p) => p, - // Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)), - // }, - // Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)), - // }; + let pinned = match data.0.get_pinned_posts_by_community(community.id).await { + Ok(p) => match data.0.fill_posts(p, &ignore_users, &user).await { + Ok(p) => p, + Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)), + }, + Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)), + }; // init context let lang = get_lang!(jar, data.0); @@ -195,7 +195,7 @@ pub async fn tickets_request( ) = community_context_bools!(data, user, community); context.insert("feed", &feed); - // context.insert("pinned", &pinned); + context.insert("pinned", &pinned); context.insert("page", &props.page); community_context( &mut context,