diff --git a/packages/pagetop-bootsier/src/lib.rs b/packages/pagetop-bootsier/src/lib.rs index eb4f06b8..24b01c34 100644 --- a/packages/pagetop-bootsier/src/lib.rs +++ b/packages/pagetop-bootsier/src/lib.rs @@ -35,7 +35,7 @@ impl ThemeTrait for Bootsier { fn prepare_body(&self, page: &mut Page) -> Markup { match page.template() { "admin" => html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { @for region in &[ "top-menu", "side-menu", @@ -46,7 +46,7 @@ impl ThemeTrait for Bootsier { } }, _ => html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { (self.prepare_region(page, "header")) (self.prepare_region(page, "nav_branding")) (self.prepare_region(page, "nav_main")) diff --git a/src/core/theme/definition.rs b/src/core/theme/definition.rs index 9c6fbc76..8de0f883 100644 --- a/src/core/theme/definition.rs +++ b/src/core/theme/definition.rs @@ -44,7 +44,7 @@ pub trait ThemeTrait: PackageTrait + Send + Sync { let skip_to = concat_string!("#", page.skip_to().get().unwrap_or("content".to_owned())); html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { @if let Some(skip) = L10n::l("skip_to_content").using(page.context().langid()) { div class="pt-body__skip" { a href=(skip_to) { (skip) } diff --git a/src/response/page.rs b/src/response/page.rs index 5c0ae234..35fe73c3 100644 --- a/src/response/page.rs +++ b/src/response/page.rs @@ -22,6 +22,7 @@ pub struct Page { properties : Vec<(&'static str, &'static str)>, favicon : Option, context : Context, + body_id : OptionId, body_classes: OptionClasses, skip_to : OptionId, regions : ComponentsInRegions, @@ -38,6 +39,7 @@ impl Page { properties : Vec::default(), favicon : None, context : Context::new(request), + body_id : OptionId::default(), body_classes: OptionClasses::default(), skip_to : OptionId::default(), regions : ComponentsInRegions::default(), @@ -83,6 +85,12 @@ impl Page { self } + #[fn_with] + pub fn alter_body_id(&mut self, id: impl Into) -> &mut Self { + self.body_id.alter_value(id); + self + } + #[fn_with] pub fn alter_body_classes(&mut self, op: ClassesOp, classes: impl Into) -> &mut Self { self.body_classes.alter_value(op, classes); @@ -138,6 +146,10 @@ impl Page { &mut self.context } + pub fn body_id(&self) -> &OptionId { + &self.body_id + } + pub fn body_classes(&self) -> &OptionClasses { &self.body_classes }