From d950a34b6bec7c50ffb9c12167b3d5e39a6558f0 Mon Sep 17 00:00:00 2001 From: GrO2Bl Date: Wed, 12 Jun 2024 20:24:59 +0330 Subject: [PATCH] Add admin_header template to organize tabs #1156 --- templates/instance/admin.rs.html | 11 ++--------- templates/instance/admin_header.rs.html | 23 +++++++++++++++++++++++ templates/instance/admin_mod.rs.html | 11 ++--------- templates/instance/emailblocklist.rs.html | 12 +++--------- templates/instance/list.rs.html | 11 ++--------- templates/instance/users.rs.html | 11 ++--------- 6 files changed, 34 insertions(+), 45 deletions(-) create mode 100644 templates/instance/admin_header.rs.html diff --git a/templates/instance/admin.rs.html b/templates/instance/admin.rs.html index 7ff3750d..8261bb1a 100644 --- a/templates/instance/admin.rs.html +++ b/templates/instance/admin.rs.html @@ -1,6 +1,6 @@ @use plume_models::instance::Instance; @use validator::ValidationErrors; -@use crate::templates::base; +@use crate::templates::{base, instance::admin_header}; @use crate::template_utils::*; @use crate::routes::instance::InstanceSettingsForm; @use crate::routes::*; @@ -8,14 +8,7 @@ @(ctx: BaseContext, instance: Instance, form: InstanceSettingsForm, errors: ValidationErrors) @:base(ctx, i18n!(ctx.1, "Administration of {0}"; instance.name.clone()), {}, {}, { -

@i18n!(ctx.1, "Administration")

- - @tabs(&[ - (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), true), - (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), false), - (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), false), - (&uri!(instance::admin_email_blocklist: page=_).to_string(), i18n!(ctx.1, "Email blocklist"), false) - ]) + @:admin_header(ctx, "Administration", 1)
@(Input::new("name", i18n!(ctx.1, "Name")) diff --git a/templates/instance/admin_header.rs.html b/templates/instance/admin_header.rs.html new file mode 100644 index 00000000..21e0d070 --- /dev/null +++ b/templates/instance/admin_header.rs.html @@ -0,0 +1,23 @@ +@use crate::template_utils::*; +@use crate::routes::*; + +@(ctx: BaseContext, title: &str, selectedTab: u8) + +@if ctx.2.clone().map(|u| u.is_admin()).unwrap_or(false) { +

@i18n!(ctx.1, title)

+ + @tabs(&[ + (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), if selectedTab == 1 {true} else {false}), + (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), if selectedTab == 2 {true} else {false}), + (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), if selectedTab == 3 {true} else {false}), + (&uri!(instance::admin_email_blocklist: page=_).to_string(), i18n!(ctx.1, "Email blocklist"), if selectedTab == 4 {true} else {false}) + ]) +} else { +

@i18n!(ctx.1, "Moderation")

+ + @tabs(&[ + (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), if selectedTab == 1 {true} else {false}), + (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), if selectedTab == 2 {true} else {false}), + (&uri!(instance::admin_email_blocklist: page=_).to_string(), i18n!(ctx.1, "Email blocklist"), if selectedTab == 3 {true} else {false}) + ]) +} diff --git a/templates/instance/admin_mod.rs.html b/templates/instance/admin_mod.rs.html index e215d7e1..fc1cb0a9 100644 --- a/templates/instance/admin_mod.rs.html +++ b/templates/instance/admin_mod.rs.html @@ -1,15 +1,8 @@ -@use crate::templates::base; +@use crate::templates::{base, instance::admin_header}; @use crate::template_utils::*; -@use crate::routes::*; @(ctx: BaseContext) @:base(ctx, i18n!(ctx.1, "Moderation"), {}, {}, { -

@i18n!(ctx.1, "Moderation")

- - @tabs(&[ - (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Home"), true), - (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), false), - (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), false), - ]) + @:admin_header(ctx, "Moderation", 0) }) diff --git a/templates/instance/emailblocklist.rs.html b/templates/instance/emailblocklist.rs.html index fe9729fc..32c7ea6e 100644 --- a/templates/instance/emailblocklist.rs.html +++ b/templates/instance/emailblocklist.rs.html @@ -1,17 +1,11 @@ @use plume_models::blocklisted_emails::BlocklistedEmail; -@use crate::templates::base; +@use crate::templates::{base, instance::admin_header}; @use crate::template_utils::*; @use crate::routes::*; @(ctx:BaseContext, emails: Vec, page:i32, n_pages:i32) - @:base(ctx, i18n!(ctx.1, "Blocklisted Emails"), {}, {}, { -

@i18n!(ctx.1,"Blocklisted Emails")

- @tabs(&[ - (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), false), - (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), false), - (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), false), - (&uri!(instance::admin_email_blocklist:page=_).to_string(), i18n!(ctx.1, "Email blocklist"), true), - ]) +@:base(ctx, i18n!(ctx.1, "Blocklisted Emails"), {}, {}, { + @:admin_header(ctx, "Blocklisted Emails", (if ctx.2.clone().map(|u| u.is_admin()).unwrap() {4} else {3})) @(Input::new("email_address", i18n!(ctx.1, "Email address")) .details(i18n!(ctx.1, "The email address you wish to block. In order to block domains, you can use globbing syntax, for example '*@example.com' blocks all addresses from example.com")) diff --git a/templates/instance/list.rs.html b/templates/instance/list.rs.html index 619689f7..af545e2c 100644 --- a/templates/instance/list.rs.html +++ b/templates/instance/list.rs.html @@ -1,19 +1,12 @@ @use plume_models::instance::Instance; -@use crate::templates::base; +@use crate::templates::{base, instance::admin_header}; @use crate::template_utils::*; @use crate::routes::*; @(ctx: BaseContext, instance: Instance, instances: Vec, page: i32, n_pages: i32) @:base(ctx, i18n!(ctx.1, "Administration of {0}"; instance.name), {}, {}, { -

@i18n!(ctx.1, "Instances")

- - @tabs(&[ - (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), false), - (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), true), - (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), false), - (&uri!(instance::admin_email_blocklist:page=_).to_string(), i18n!(ctx.1, "Email blocklist"), false), - ]) + @:admin_header(ctx, "Instances", (if ctx.2.clone().map(|u| u.is_admin()).unwrap() {2} else {1}))
@for instance in instances { diff --git a/templates/instance/users.rs.html b/templates/instance/users.rs.html index 1499fb52..7de2e4cb 100644 --- a/templates/instance/users.rs.html +++ b/templates/instance/users.rs.html @@ -1,19 +1,12 @@ @use plume_models::users::User; -@use crate::templates::base; +@use crate::templates::{base, instance::admin_header}; @use crate::template_utils::*; @use crate::routes::*; @(ctx: BaseContext, users: Vec, user: Option<&str>, page: i32, n_pages: i32) @:base(ctx, i18n!(ctx.1, "Users"), {}, {}, { -

@i18n!(ctx.1, "Users")

- - @tabs(&[ - (&uri!(instance::admin).to_string(), i18n!(ctx.1, "Configuration"), false), - (&uri!(instance::admin_instances: page = _).to_string(), i18n!(ctx.1, "Instances"), false), - (&uri!(instance::admin_users: page = _).to_string(), i18n!(ctx.1, "Users"), true), - (&uri!(instance::admin_email_blocklist: page=_).to_string(), i18n!(ctx.1, "Email blocklist"), false) - ]) + @:admin_header(ctx, "Users", (if ctx.2.clone().map(|u| u.is_admin()).unwrap() {3} else {2}))