diff --git a/.gitignore b/.gitignore index d311e0cf..e0e82dec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ **/log/*.log* **/local.*.toml **/local.toml +workdir diff --git a/src/base/action/page.rs b/src/base/action/page.rs index fdbff4ac..9c89e2d1 100644 --- a/src/base/action/page.rs +++ b/src/base/action/page.rs @@ -1,5 +1,5 @@ -mod before_prepare_body; -pub use before_prepare_body::*; +mod before_render_body; +pub use before_render_body::*; -mod after_prepare_body; -pub use after_prepare_body::*; +mod after_render_body; +pub use after_render_body::*; diff --git a/src/base/action/page/after_prepare_body.rs b/src/base/action/page/after_render_body.rs similarity index 65% rename from src/base/action/page/after_prepare_body.rs rename to src/base/action/page/after_render_body.rs index 9eb2f397..81a89d87 100644 --- a/src/base/action/page/after_prepare_body.rs +++ b/src/base/action/page/after_render_body.rs @@ -1,21 +1,21 @@ use crate::prelude::*; -pub type FnAfterPrepareBody = fn(page: &mut Page); +pub type FnAfterRenderBody = fn(page: &mut Page); -pub struct AfterPrepareBody { - f: FnAfterPrepareBody, +pub struct AfterRenderBody { + f: FnAfterRenderBody, weight: Weight, } -impl ActionTrait for AfterPrepareBody { +impl ActionTrait for AfterRenderBody { fn weight(&self) -> Weight { self.weight } } -impl AfterPrepareBody { - pub fn new(f: FnAfterPrepareBody) -> Self { - AfterPrepareBody { f, weight: 0 } +impl AfterRenderBody { + pub fn new(f: FnAfterRenderBody) -> Self { + AfterRenderBody { f, weight: 0 } } pub fn with_weight(mut self, value: Weight) -> Self { diff --git a/src/base/action/page/before_prepare_body.rs b/src/base/action/page/before_render_body.rs similarity index 64% rename from src/base/action/page/before_prepare_body.rs rename to src/base/action/page/before_render_body.rs index c1ea5beb..e0a9d770 100644 --- a/src/base/action/page/before_prepare_body.rs +++ b/src/base/action/page/before_render_body.rs @@ -1,21 +1,21 @@ use crate::prelude::*; -pub type FnBeforePrepareBody = fn(page: &mut Page); +pub type FnBeforeRenderBody = fn(page: &mut Page); -pub struct BeforePrepareBody { - f: FnBeforePrepareBody, +pub struct BeforeRenderBody { + f: FnBeforeRenderBody, weight: Weight, } -impl ActionTrait for BeforePrepareBody { +impl ActionTrait for BeforeRenderBody { fn weight(&self) -> Weight { self.weight } } -impl BeforePrepareBody { - pub fn new(f: FnBeforePrepareBody) -> Self { - BeforePrepareBody { f, weight: 0 } +impl BeforeRenderBody { + pub fn new(f: FnBeforeRenderBody) -> Self { + BeforeRenderBody { f, weight: 0 } } pub fn with_weight(mut self, value: Weight) -> Self { diff --git a/src/core/component/context.rs b/src/core/component/context.rs index d1d4d955..45bdcb87 100644 --- a/src/core/component/context.rs +++ b/src/core/component/context.rs @@ -154,21 +154,21 @@ impl Context { .and_then(|v| T::from_str(v).map_err(|_| ErrorParam::ParseError(v.clone()))) } - // Context PREPARE. + // Context RENDER. - pub fn prepare_assets(&mut self) -> Markup { + pub fn render_assets(&mut self) -> Markup { html! { @if let Some(favicon) = &self.favicon { - (favicon.prepare()) + (favicon.render()) } - (self.stylesheet.prepare()) - (self.javascript.prepare()) + (self.stylesheet.render()) + (self.javascript.render()) } } - pub fn prepare_region(&mut self, region: impl Into) -> Markup { + pub fn render_region(&mut self, region: impl Into) -> Markup { self.regions - .all_in_region(self.theme, region.into().as_str()) + .all_in_region(self.theme, ®ion.into()) .render(self) } diff --git a/src/core/theme/definition.rs b/src/core/theme/definition.rs index 4d567455..01e1cb04 100644 --- a/src/core/theme/definition.rs +++ b/src/core/theme/definition.rs @@ -1,6 +1,6 @@ use crate::core::package::PackageTrait; use crate::global; -use crate::html::{html, PrepareMarkup}; +use crate::html::{html, Markup}; use crate::locale::L10n; use crate::response::page::Page; @@ -12,9 +12,9 @@ pub trait ThemeTrait: PackageTrait + Send + Sync { vec![("content", L10n::l("content"))] } - fn prepare_head(&self, page: &mut Page) -> PrepareMarkup { + fn render_head(&self, page: &mut Page) -> Markup { let viewport = "width=device-width, initial-scale=1, shrink-to-fit=no"; - PrepareMarkup::With(html! { + html! { head { meta charset="utf-8"; @@ -38,22 +38,22 @@ pub trait ThemeTrait: PackageTrait + Send + Sync { meta property=(property) content=(content) {} } - (page.context().prepare_assets()) + (page.context().render_assets()) } - }) + } } #[allow(unused_variables)] - fn before_prepare_body(&self, page: &mut Page) {} + fn before_render_body(&self, page: &mut Page) {} - fn prepare_body(&self, page: &mut Page) -> PrepareMarkup { - PrepareMarkup::With(html! { + fn render_body(&self, page: &mut Page) -> Markup { + html! { body id=[page.body_id().get()] class=[page.body_classes().get()] { - (page.context().prepare_region("content")) + (page.context().render_region("content")) } - }) + } } #[allow(unused_variables)] - fn after_prepare_body(&self, page: &mut Page) {} + fn after_render_body(&self, page: &mut Page) {} } diff --git a/src/html/assets.rs b/src/html/assets.rs index 4c8f27ce..c8b8f1b9 100644 --- a/src/html/assets.rs +++ b/src/html/assets.rs @@ -10,7 +10,7 @@ pub trait AssetsTrait { fn weight(&self) -> Weight; - fn prepare(&self) -> Markup; + fn render(&self) -> Markup; } #[derive(AutoDefault)] @@ -41,12 +41,12 @@ impl Assets { self } - pub fn prepare(&mut self) -> Markup { + pub fn render(&mut self) -> Markup { let assets = &mut self.0; assets.sort_by_key(AssetsTrait::weight); html! { @for a in assets { - (a.prepare()) + (a.render()) } } } diff --git a/src/html/assets/favicon.rs b/src/html/assets/favicon.rs index 068efcb4..366da4ff 100644 --- a/src/html/assets/favicon.rs +++ b/src/html/assets/favicon.rs @@ -83,7 +83,7 @@ impl Favicon { // Favicon PREPARE. - pub(crate) fn prepare(&self) -> Markup { + pub(crate) fn render(&self) -> Markup { html! { @for item in &self.0 { (item) diff --git a/src/html/assets/javascript.rs b/src/html/assets/javascript.rs index 672ab3e0..76d84673 100644 --- a/src/html/assets/javascript.rs +++ b/src/html/assets/javascript.rs @@ -36,7 +36,7 @@ impl AssetsTrait for JavaScript { self.weight } - fn prepare(&self) -> Markup { + fn render(&self) -> Markup { match &self.source { Source::From(path) => html! { script src=(concat_string!(path, self.prefix, self.version)) {}; diff --git a/src/html/assets/stylesheet.rs b/src/html/assets/stylesheet.rs index 11dde4ef..5dd65a97 100644 --- a/src/html/assets/stylesheet.rs +++ b/src/html/assets/stylesheet.rs @@ -38,7 +38,7 @@ impl AssetsTrait for StyleSheet { self.weight } - fn prepare(&self) -> Markup { + fn render(&self) -> Markup { match &self.source { Source::From(path) => html! { link diff --git a/src/response/page.rs b/src/response/page.rs index c7e1309b..340bd0c7 100644 --- a/src/response/page.rs +++ b/src/response/page.rs @@ -156,26 +156,26 @@ impl Page { // Page RENDER. pub fn render(&mut self) -> ResultPage { - // Theme operations before preparing the page body. - self.context.theme().before_prepare_body(self); + // Theme-specific operations before rendering the page body. + self.context.theme().before_render_body(self); - // Packages actions before preparing the page body. - action::page::BeforePrepareBody::dispatch(self); + // Execute package actions before rendering the page body. + action::page::BeforeRenderBody::dispatch(self); - // Prepare page body. - let body = self.context.theme().prepare_body(self); + // Render the page body. + let body = self.context.theme().render_body(self); - // Theme operations after preparing the page body. - self.context.theme().after_prepare_body(self); + // Theme-specific operations after rendering the page body. + self.context.theme().after_render_body(self); - // Packages actions after preparing the page body. - action::page::AfterPrepareBody::dispatch(self); + // Execute package actions after rendering the page body. + action::page::AfterRenderBody::dispatch(self); - // Prepare page head. - let head = self.context.theme().prepare_head(self); + // Render the page head. + let head = self.context.theme().render_head(self); - // Render the page. - let lang = self.context.langid().language.as_str(); + // Render the full page with language and direction attributes. + let lang = &self.context.langid().language; let dir = match self.context.langid().character_direction() { CharacterDirection::LTR => "ltr", CharacterDirection::RTL => "rtl", @@ -184,8 +184,8 @@ impl Page { Ok(html! { (DOCTYPE) html lang=(lang) dir=(dir) { - (head.render()) - (body.render()) + (head) + (body) } }) }