add: communities is_forum

This commit is contained in:
trisua 2025-08-02 17:29:26 -04:00
parent 9a128a3f0c
commit 1f545a0b21
9 changed files with 52 additions and 4 deletions

View file

@ -58,6 +58,9 @@
(text "{% if community.is_forge -%}") (text "{% if community.is_forge -%}")
(icon (text "anvil")) (icon (text "anvil"))
(text "{%- endif %}") (text "{%- endif %}")
(text "{% if community.is_forum -%}")
(icon (text "square-library"))
(text "{%- endif %}")
(h3 (h3
("class" "name lg:long") ("class" "name lg:long")
(text "{{ community.context.display_name }}"))) (text "{{ community.context.display_name }}")))
@ -2532,7 +2535,7 @@
(icon (text "reply"))) (icon (text "reply")))
(a (a
("class" "button small lowered") ("class" "button small lowered")
("href" "/mail/compose?receivers={% for receiver in letter.receivers %},id%3A{{ receiver }}{% endfor %}&subject=Re%3A%20{{ letter.subject }}&replying_to={{ letter.id }}") ("href" "/mail/compose?receivers={{ owner.username }}{% for receiver in letter.receivers %},id%3A{{ receiver }}{% endfor %}&subject=Re%3A%20{{ letter.subject }}&replying_to={{ letter.id }}")
("title" "Reply all") ("title" "Reply all")
(icon (text "reply-all"))) (icon (text "reply-all")))
(text "{% if user and letter.owner == user.id -%}") (text "{% if user and letter.owner == user.id -%}")

View file

@ -56,7 +56,10 @@
("placeholder" "content") ("placeholder" "content")
("required" "") ("required" "")
("name" "content") ("name" "content")
("id" "content"))) ("id" "content")
(text "
{{ user.settings.mail_signature }}")))
(button (button
(icon (text "send-horizontal")) (icon (text "send-horizontal"))

View file

@ -1947,6 +1947,17 @@
settings.anonymous_avatar_url, settings.anonymous_avatar_url,
\"input\", \"input\",
], ],
[[], \"Signatures\", \"title\"],
[
[\"mail_signature\", \"Mail signature\"],
settings.mail_signature,
\"textarea\",
],
[
[\"forum_signature\", \"Forum signature (coming soon)\"],
settings.forum_signature,
\"textarea\",
],
[[], \"Misc\", \"title\"], [[], \"Misc\", \"title\"],
[ [
[\"hide_dislikes\", \"Hide post dislikes\"], [\"hide_dislikes\", \"Hide post dislikes\"],

View file

@ -55,6 +55,10 @@ pub async fn create_request(
c.is_forge = true; c.is_forge = true;
c.context.enable_titles = true; c.context.enable_titles = true;
c.context.require_titles = true; c.context.require_titles = true;
} else if req.forum {
c.is_forum = true;
c.context.enable_titles = true;
c.context.require_titles = true;
} }
match data.create_community(c).await { match data.create_community(c).await {

View file

@ -749,6 +749,8 @@ pub struct CreateCommunity {
pub title: String, pub title: String,
#[serde(default)] #[serde(default)]
pub forge: bool, pub forge: bool,
#[serde(default)]
pub forum: bool,
} }
#[derive(Deserialize)] #[derive(Deserialize)]

View file

@ -36,6 +36,7 @@ impl DataManager {
member_count: get!(x->10(i32)) as usize, member_count: get!(x->10(i32)) as usize,
is_forge: get!(x->11(i32)) as i8 == 1, is_forge: get!(x->11(i32)) as i8 == 1,
post_count: get!(x->12(i32)) as usize, post_count: get!(x->12(i32)) as usize,
is_forum: get!(x->13(i32)) as i8 == 1,
} }
} }
@ -281,7 +282,7 @@ impl DataManager {
let res = execute!( let res = execute!(
&conn, &conn,
"INSERT INTO communities VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)", "INSERT INTO communities VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)",
params![ params![
&(data.id as i64), &(data.id as i64),
&(data.created as i64), &(data.created as i64),
@ -296,6 +297,7 @@ impl DataManager {
&1_i32, &1_i32,
&{ if data.is_forge { 1 } else { 0 } }, &{ if data.is_forge { 1 } else { 0 } },
&0_i32, &0_i32,
&{ if data.is_forum { 1 } else { 0 } },
] ]
); );

View file

@ -12,4 +12,8 @@ ADD COLUMN IF NOT EXISTS storage_capacity TEXT DEFAULT '"Tier1"';
-- letters replying_to -- letters replying_to
ALTER TABLE letters ALTER TABLE letters
ADD COLUMN IF NOT EXISTS replying_to TEXT DEFAULT 0; ADD COLUMN IF NOT EXISTS replying_to BIGINT DEFAULT 0;
-- communities is_forum
ALTER TABLE communities
ADD COLUMN IF NOT EXISTS is_forum INT DEFAULT 0;

View file

@ -344,6 +344,12 @@ pub struct UserSettings {
/// Will also revoke access to their respective pages. /// Will also revoke access to their respective pages.
#[serde(default)] #[serde(default)]
pub hide_social_follows: bool, pub hide_social_follows: bool,
/// The signature automatically attached to new mail letters.
#[serde(default)]
pub mail_signature: String,
/// The signature automatically attached to new forum posts.
#[serde(default)]
pub forum_signature: String,
} }
#[derive(Clone, Debug, Serialize, Deserialize, Default)] #[derive(Clone, Debug, Serialize, Deserialize, Default)]

View file

@ -26,6 +26,7 @@ pub struct Community {
pub member_count: usize, pub member_count: usize,
pub is_forge: bool, pub is_forge: bool,
pub post_count: usize, pub post_count: usize,
pub is_forum: bool,
} }
impl Community { impl Community {
@ -48,6 +49,7 @@ impl Community {
member_count: 0, member_count: 0,
is_forge: false, is_forge: false,
post_count: 0, post_count: 0,
is_forum: false,
} }
} }
@ -68,6 +70,7 @@ impl Community {
member_count: 0, member_count: 0,
is_forge: false, is_forge: false,
post_count: 0, post_count: 0,
is_forum: false,
} }
} }
} }
@ -515,3 +518,13 @@ impl PollVote {
} }
} }
} }
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct ForumTopic {
pub id: usize,
pub created: usize,
pub owner: usize,
pub community: usize,
pub title: String,
pub description: String,
}