From be4af57d75cc1e233b4714b18198fb7bde49464d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 16 Feb 2026 17:50:57 +0100 Subject: refactor ui responder; add admin import pages --- ui/src/components/admin.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 ui/src/components/admin.rs (limited to 'ui/src/components/admin.rs') diff --git a/ui/src/components/admin.rs b/ui/src/components/admin.rs new file mode 100644 index 0000000..831c746 --- /dev/null +++ b/ui/src/components/admin.rs @@ -0,0 +1,52 @@ +/* + 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) 2026 metamuffin +*/ + +use crate::RenderInfo; +use jellycommon::{ + ADMIN_IMPORT_BUSY, ADMIN_IMPORT_ERROR, + jellyobject::Object, + routes::{u_admin_import, u_admin_import_post, u_admin_log}, +}; +use jellyui_locale::tr; + +markup::define!( + AdminDashboard<'a>(ri: &'a RenderInfo<'a>) { + h1 { @tr(ri.lang, "admin.dashboard.title") } + ul { + li{a[href=u_admin_log(true)] { @tr(ri.lang, "admin.log.warnonly") }} + li{a[href=u_admin_log(false)] { @tr(ri.lang, "admin.log.full") }} + } + + a[href=u_admin_import()] { h2 { @tr(ri.lang, "admin.import.title") }} + } + + AdminImport<'a>(ri: &'a RenderInfo<'a>, data: Object<'a>) { + @if data.has(ADMIN_IMPORT_BUSY.0) { + h1 { @tr(ri.lang, "admin.import.running") } + noscript { "Live import progress needs javascript." } + div[id="admin_import"] {} + } else { + h1 { @tr(ri.lang, "admin.import.title") } + @if data.has(ADMIN_IMPORT_ERROR.0) { + section.message.error { + details { + summary { p.error { @tr(ri.lang, "admin.import_errors").replace("{n}", "1") } } + ol { @for e in data.iter(ADMIN_IMPORT_ERROR) { + li.error { pre.error { @e } } + }} + } + } + } + form[method="POST", action=u_admin_import_post(true)] { + input[type="submit", value=tr(ri.lang, "admin.dashboard.import.inc").to_string()]; + } + form[method="POST", action=u_admin_import_post(false)] { + input[type="submit", value=tr(ri.lang, "admin.dashboard.import.full").to_string()]; + } + } + } + +); -- cgit v1.3