From e77e5632d3cb768ffd09448c9f7d02634ffb302a Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sun, 3 Aug 2025 10:54:40 +0200 Subject: [PATCH 1/3] add succ/err msgs --- src/index.rs | 11 ++-- src/page.rs | 150 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 106 insertions(+), 55 deletions(-) diff --git a/src/index.rs b/src/index.rs index f75cf2a..6d8b21c 100644 --- a/src/index.rs +++ b/src/index.rs @@ -1,4 +1,4 @@ -use crate::{language::language, page::new}; +use crate::{language::language, page::Page}; use axum::http::HeaderMap; use axum_extra::extract::CookieJar; use maud::{html, Markup}; @@ -8,7 +8,11 @@ pub(super) async fn index(cookies: CookieJar, headers: HeaderMap) -> Markup { rust_i18n::set_locale(lang.to_locale()); - new( + let mut page = Page::new(lang); + page.succ("Yeah! That worked!".into()); + page.err("Damn...".into()); + + page.content( html! { h1 { (t!("digital_shadows")) } hgroup { @@ -73,7 +77,6 @@ pub(super) async fn index(cookies: CookieJar, headers: HeaderMap) -> Markup { } } } - }, - lang, + } ) } diff --git a/src/page.rs b/src/page.rs index 4840590..e1f5cbf 100644 --- a/src/page.rs +++ b/src/page.rs @@ -3,66 +3,114 @@ use maud::{html, Markup, DOCTYPE}; // TODO: set dynamic meta lang attribute +// TODO: remove function pub fn new(content: Markup, lang: Language) -> Markup { - html! { - (DOCTYPE) - html lang=(lang) { - head { - meta charset="utf-8"; - meta name="viewport" content="width=device-width, initial-scale=1.0"; - link rel="stylesheet" href="/static/pico.min.css"; - link rel="stylesheet" href="/static/style.css"; - title { "Digital Shadows" } - } - body { - header.container { - nav { - ul { - li { - a href="/" { - strong { "Digital Shadows" } - } - } - } - ul { - li { - a href="/" { - span role="img" aria-label="home" { "🏠" } - } - } - li { - a href="/game" { - span role="img" aria-label="camera" { "📸" } - } - } - li { - span id="theme_switcher" {} - } + let page = Page::new(lang); + page.content(content) +} - li { - button id="lang-toggle" lang=(lang.next_language()) { - (lang.next_language()) +pub(crate) struct Page { + lang: Language, + succ: Option, + err: Option, +} + +impl Page { + pub fn new(lang: Language) -> Self { + Self { + lang, + succ: None, + err: None, + } + } + + pub fn succ(&mut self, msg: String) { + self.succ = Some(msg); + } + + pub fn err(&mut self, msg: String) { + self.err = Some(msg); + } + + fn has_msg(&self) -> bool { + self.succ.is_some() || self.err.is_some() + } + + pub fn content(self, content: Markup) -> Markup { + html! { + (DOCTYPE) + html lang=(self.lang) { + head { + meta charset="utf-8"; + meta name="viewport" content="width=device-width, initial-scale=1.0"; + link rel="stylesheet" href="/static/pico.min.css"; + link rel="stylesheet" href="/static/style.css"; + title { "Digital Shadows" } + } + body { + header.container { + nav { + ul { + li { + a href="/" { + strong { "Digital Shadows" } + } + } + } + ul { + li { + a href="/" { + span role="img" aria-label="home" { "🏠" } + } + } + li { + a href="/game" { + span role="img" aria-label="camera" { "📸" } + } + } + li { + span id="theme_switcher" {} + } + + li { + button id="lang-toggle" lang=(self.lang.next_language()) { + (self.lang.next_language()) + } } } } } - } - main.container { - section { (content) } - } - - footer.container { - small { - "Footer " - mark { "to be completed" } - a href="#" { "with links" } - " • " - a target="_blank" href="https://www.digidow.eu/impressum/" { "Impressum" } + main.container { + @if self.has_msg() { + section { + @if let Some(succ) = self.succ { + p class="succ" { + (succ) + } + } + @if let Some(err) = self.err{ + p class="err" { + (err) + } + } + } + } + section { (content) } } + + footer.container { + small { + "Footer " + mark { "to be completed" } + a href="#" { "with links" } + " • " + a target="_blank" href="https://www.digidow.eu/impressum/" { "Impressum" } + } + } + script src="/static/theme.js" {} + } } - script src="/static/theme.js" {} - } } } } From aeab624ce3405673f58bbb5f77a7f5fb247af056 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sun, 3 Aug 2025 10:55:53 +0200 Subject: [PATCH 2/3] add compiler warning --- src/page.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/page.rs b/src/page.rs index e1f5cbf..d62514a 100644 --- a/src/page.rs +++ b/src/page.rs @@ -4,6 +4,7 @@ use maud::{html, Markup, DOCTYPE}; // TODO: set dynamic meta lang attribute // TODO: remove function +#[deprecated] pub fn new(content: Markup, lang: Language) -> Markup { let page = Page::new(lang); page.content(content) From d643da6d18cb89f856abdabb1c373b87bcd7a4f0 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sun, 3 Aug 2025 10:56:41 +0200 Subject: [PATCH 3/3] done! --- README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 5a13026..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# TODOs -- [ ] limit names to 25(?) chars