aboutsummaryrefslogtreecommitdiff
path: root/ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src')
-rw-r--r--ui/src/admin/import.rs50
-rw-r--r--ui/src/admin/mod.rs10
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()];
}