diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-29 11:10:21 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-29 11:10:21 +0200 |
commit | f62c7f2a8cc143454779dc99334ca9fc80ddabd5 (patch) | |
tree | f31dbb908715d2deb2860e2097fa13dd41d759d5 /ui/src/lib.rs | |
parent | 73d2d5eb01fceae9e0b1c58afb648822000c878a (diff) | |
download | jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.bz2 jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.zst |
still just moving code around
Diffstat (limited to 'ui/src/lib.rs')
-rw-r--r-- | ui/src/lib.rs | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/ui/src/lib.rs b/ui/src/lib.rs index 67dc067..2521054 100644 --- a/ui/src/lib.rs +++ b/ui/src/lib.rs @@ -14,6 +14,34 @@ pub mod scaffold; pub mod search; pub mod settings; pub mod stats; +pub mod items; +pub mod admin; + +use locale::Language; +use markup::DynRender; +use scaffold::{RenderInfo, Scaffold}; +use serde::{Deserialize, Serialize}; +use std::{ + path::PathBuf, + sync::{LazyLock, Mutex}, +}; + +#[rustfmt::skip] +#[derive(Debug, Deserialize, Serialize, Default)] +pub struct Config { + brand: String, + slogan: String, + asset_path: PathBuf, +} + +static CONF: LazyLock<Config> = LazyLock::new(|| { + CONF_PRELOAD + .lock() + .unwrap() + .take() + .expect("cache config not preloaded. logic error") +}); +static CONF_PRELOAD: Mutex<Option<Config>> = Mutex::new(None); /// render as supertrait would be possible but is not /// dyn compatible and I really dont want to expose generics @@ -26,16 +54,26 @@ pub trait Page { } } -use markup::DynRender; -use scaffold::Scaffold; - -pub fn render_page(page: &dyn Page) -> String { +pub fn render_page(page: &dyn Page, renderinfo: RenderInfo, lang: Language) -> String { Scaffold { lang, - context, + renderinfo, class: page.class().unwrap_or("aaaa"), title: page.title(), main: page.to_render(), } .to_string() } + +pub struct CustomPage { + pub title: String, + pub body: String, +} +impl Page for CustomPage { + fn title(&self) -> String { + self.title.clone() + } + fn to_render(&self) -> DynRender { + markup::new!(@markup::raw(&self.body)) + } +} |