diff options
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/src/admin/import.rs | 50 | ||||
| -rw-r--r-- | ui/src/admin/mod.rs | 10 |
2 files changed, 52 insertions, 8 deletions
diff --git a/ui/src/admin/import.rs b/ui/src/admin/import.rs new file mode 100644 index 0000000..04b80b2 --- /dev/null +++ b/ui/src/admin/import.rs @@ -0,0 +1,50 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2025 metamuffin <metamuffin.org> +*/ + +use crate::{ + FlashM, Page, + locale::{Language, tr, trs}, + scaffold::FlashDisplay, +}; +use jellycommon::routes::u_admin_import_post; + +impl Page for AdminImportPage<'_> { + fn title(&self) -> String { + "User Management".to_string() + } + fn to_render(&self) -> markup::DynRender<'_> { + markup::new!(@self) + } +} + +markup::define!( + AdminImportPage<'a>(lang: &'a Language, busy: bool, last_import_err: &'a [String], flash: &'a FlashM) { + @FlashDisplay { flash } + @if *busy { + h1 { @trs(lang, "admin.import.running") } + noscript { "Live import progress needs javascript." } + div[id="admin_import"] {} + } else { + h1 { @trs(lang, "admin.import.title") } + @if !last_import_err.is_empty() { + section.message.error { + details { + summary { p.error { @tr(**lang, "admin.import_errors").replace("{n}", &last_import_err.len().to_string()) } } + ol { @for e in *last_import_err { + li.error { pre.error { @e } } + }} + } + } + } + form[method="POST", action=u_admin_import_post(true)] { + input[type="submit", value=tr(**lang, "admin.dashboard.import.inc").to_string()]; + } + form[method="POST", action=u_admin_import_post(false)] { + input[type="submit", value=tr(**lang, "admin.dashboard.import.full").to_string()]; + } + } + } +); diff --git a/ui/src/admin/mod.rs b/ui/src/admin/mod.rs index cb18481..0e5d11e 100644 --- a/ui/src/admin/mod.rs +++ b/ui/src/admin/mod.rs @@ -4,6 +4,7 @@ Copyright (C) 2025 metamuffin <metamuffin.org> */ +pub mod import; pub mod log; pub mod user; @@ -13,8 +14,7 @@ use crate::{ scaffold::FlashDisplay, }; use jellycommon::routes::{ - u_admin_import, u_admin_invite_create, u_admin_invite_remove, u_admin_log, - u_admin_update_search, u_admin_users, + u_admin_invite_create, u_admin_invite_remove, u_admin_log, u_admin_update_search, u_admin_users, }; impl Page for AdminDashboardPage<'_> { @@ -48,12 +48,6 @@ markup::define!( @if let Some(text) = busy { section.message { p.warn { @text } } } - form[method="POST", action=u_admin_import(true)] { - input[type="submit", disabled=busy.is_some(), value=tr(**lang, "admin.dashboard.import.inc").to_string()]; - } - form[method="POST", action=u_admin_import(false)] { - input[type="submit", disabled=busy.is_some(), value=tr(**lang, "admin.dashboard.import.full").to_string()]; - } form[method="POST", action=u_admin_update_search()] { input[type="submit", value=tr(**lang, "admin.dashboard.update_search").to_string()]; } |