diff --git a/web/README.md b/web/README.md index f5c1d07..5495c3d 100644 --- a/web/README.md +++ b/web/README.md @@ -17,5 +17,6 @@ The following environment variables can be defined to configure various settings - `PORT`, default `3000`. - `PUBLIC_URL`, default `lists.mailpot.rs`. - `SITE_TITLE`, default `mailing list archive`. +- `SITE_SUBTITLE`, default empty. - `ROOT_URL_PREFIX`, default empty. - `SSH_NAMESPACE`, default `lists.mailpot.rs`. diff --git a/web/src/auth.rs b/web/src/auth.rs index fd00f30..aaefb0a 100644 --- a/web/src/auth.rs +++ b/web/src/auth.rs @@ -142,9 +142,9 @@ pub async fn ssh_signin( let context = minijinja::context! { namespace => &state.public_url, - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => "Log in", - description => "", root_url_prefix => &root_url_prefix, ssh_challenge => token, timeout_left => timeout_left, diff --git a/web/src/help.rs b/web/src/help.rs index f073207..924a785 100644 --- a/web/src/help.rs +++ b/web/src/help.rs @@ -37,9 +37,9 @@ pub async fn help( }, ]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => "Help & Documentation", - description => "", root_url_prefix => &state.root_url_prefix, current_user => auth.current_user, messages => session.drain_messages(), diff --git a/web/src/lib.rs b/web/src/lib.rs index 6b17d81..e8d4c61 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -168,6 +168,7 @@ pub struct AppState { pub root_url_prefix: Value, pub public_url: String, pub site_title: Cow<'static, str>, + pub site_subtitle: Option>, pub user_store: Arc>>, // ... } diff --git a/web/src/lists.rs b/web/src/lists.rs index 3fe4b6a..9e38d16 100644 --- a/web/src/lists.rs +++ b/web/src/lists.rs @@ -114,7 +114,8 @@ pub async fn list( }, ]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => &list.name, description => &list.description, post_policy => &post_policy, @@ -123,7 +124,6 @@ pub async fn list( months => &months, hists => &hist, posts => posts_ctx, - body => &list.description.clone().unwrap_or_default(), root_url_prefix => &state.root_url_prefix, list => Value::from_object(MailingList::from(list)), current_user => auth.current_user, @@ -194,7 +194,8 @@ pub async fn list_post( }, ]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => subject_ref, description => &list.description, list => Value::from_object(MailingList::from(list)), @@ -295,7 +296,8 @@ pub async fn list_edit( }, ]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => format!("Edit {} settings", list.name), description => &list.description, post_policy => &post_policy, diff --git a/web/src/main.rs b/web/src/main.rs index 1fabdcc..8f74299 100644 --- a/web/src/main.rs +++ b/web/src/main.rs @@ -51,6 +51,7 @@ async fn main() { site_title: std::env::var("SITE_TITLE") .unwrap_or_else(|_| "mailing list archive".to_string()) .into(), + site_subtitle: std::env::var("SITE_SUBTITLE").ok().map(Into::into), user_store: Arc::new(RwLock::new(HashMap::default())), }); @@ -176,9 +177,9 @@ async fn root( }]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => Option::<&'static str>::None, - description => "", lists => &lists, root_url_prefix => &state.root_url_prefix, current_user => auth.current_user, diff --git a/web/src/settings.rs b/web/src/settings.rs index 3089654..5dff893 100644 --- a/web/src/settings.rs +++ b/web/src/settings.rs @@ -66,9 +66,9 @@ pub async fn settings( >>()?; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => "Account settings", - description => "", root_url_prefix => &root_url_prefix, user => user, subscriptions => subscriptions, @@ -307,9 +307,9 @@ pub async fn user_list_subscription( ]; let context = minijinja::context! { - title => state.site_title.as_ref(), + site_title => state.site_title.as_ref(), + site_subtitle => state.site_subtitle.as_ref(), page_title => "Subscription settings", - description => "", root_url_prefix => &root_url_prefix, user => user, list => list, diff --git a/web/src/templates/css.html b/web/src/templates/css.html index 06560d8..f563623 100644 --- a/web/src/templates/css.html +++ b/web/src/templates/css.html @@ -378,6 +378,13 @@ font-size: xx-large; } + main.layout>div.header>p.site-subtitle { + margin: 1rem; + margin-top: 0px; + font-family: var(--grotesque-system-stack); + font-size: large; + } + main.layout>div.header>div.page-header { width: 90vw; margin: 0px auto; diff --git a/web/src/templates/header.html b/web/src/templates/header.html index d86dcf3..9cbafa0 100644 --- a/web/src/templates/header.html +++ b/web/src/templates/header.html @@ -9,9 +9,9 @@
-

{{ title }}

- {% if description %} -

{{ description }}

+

{{ site_title }}

+ {% if site_subtitle %} +

{{ site_subtitle|safe }}

{% endif %} {% include "menu.html" %}