From a73491de70435915a4ba0523081537589d9aac89 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Tue, 3 Jan 2023 19:18:12 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=B7=EF=B8=8F=20RenderResources=20pasa?= =?UTF-8?q?=20a=20ser=20RenderContext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop-admin/src/summary.rs | 2 +- pagetop/src/base/component/anchor.rs | 10 +++--- pagetop/src/base/component/block.rs | 14 ++++---- pagetop/src/base/component/container.rs | 20 ++++++------ .../src/base/component/form_element/button.rs | 6 ++-- .../src/base/component/form_element/date.rs | 6 ++-- .../src/base/component/form_element/form.rs | 12 +++---- .../src/base/component/form_element/hidden.rs | 2 +- .../src/base/component/form_element/input.rs | 6 ++-- pagetop/src/base/component/grid/column.rs | 12 +++---- pagetop/src/base/component/grid/row.rs | 12 +++---- pagetop/src/base/component/heading.rs | 6 ++-- pagetop/src/base/component/html.rs | 6 ++-- pagetop/src/base/component/icon.rs | 10 +++--- pagetop/src/base/component/image.rs | 6 ++-- pagetop/src/base/component/menu.rs | 30 ++++++++--------- pagetop/src/base/component/paragraph.rs | 8 ++--- pagetop/src/base/module/homepage.rs | 2 +- pagetop/src/base/theme/aliner.rs | 2 +- pagetop/src/base/theme/bootsier.rs | 6 ++-- pagetop/src/base/theme/bulmix.rs | 8 ++--- pagetop/src/core/component.rs | 4 +-- pagetop/src/core/component/bundle.rs | 6 ++-- .../component/{resources.rs => context.rs} | 32 +++++++++---------- pagetop/src/core/component/definition.rs | 32 +++++++++---------- pagetop/src/core/component/renderable.rs | 6 ++-- pagetop/src/core/theme/definition.rs | 8 ++--- pagetop/src/response/fatal_error.rs | 4 +-- pagetop/src/response/page/definition.rs | 24 +++++++------- 29 files changed, 151 insertions(+), 151 deletions(-) rename pagetop/src/core/component/{resources.rs => context.rs} (82%) diff --git a/pagetop-admin/src/summary.rs b/pagetop-admin/src/summary.rs index 4d10d42e..168d5a10 100644 --- a/pagetop-admin/src/summary.rs +++ b/pagetop-admin/src/summary.rs @@ -41,7 +41,7 @@ pub async fn summary() -> ResultPage { .with_item(MenuItem::label("Opción 4")); Page::new() - .with_resource(ResourceOp::SetTheme("Bootsier")) + .with_context(ContextOp::SetTheme("Bootsier")) .with_title("Admin") .add_to("top-menu", top_menu) .add_to( diff --git a/pagetop/src/base/component/anchor.rs b/pagetop/src/base/component/anchor.rs index 5e3c5070..07c6c1af 100644 --- a/pagetop/src/base/component/anchor.rs +++ b/pagetop/src/base/component/anchor.rs @@ -51,12 +51,12 @@ impl ComponentTrait for Anchor { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } #[rustfmt::skip] - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { let target = match &self.target() { AnchorTarget::Blank => Some("_blank"), AnchorTarget::Parent => Some("_parent"), @@ -71,9 +71,9 @@ impl ComponentTrait for Anchor { href=[self.href().get()] target=[target] { - (self.left_icon().render(rsx)) + (self.left_icon().render(rcx)) span { (*self.html()) } - (self.right_icon().render(rsx)) + (self.right_icon().render(rcx)) } } } diff --git a/pagetop/src/base/component/block.rs b/pagetop/src/base/component/block.rs index c419df63..f6094fc5 100644 --- a/pagetop/src/base/component/block.rs +++ b/pagetop/src/base/component/block.rs @@ -29,23 +29,23 @@ impl ComponentTrait for Block { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { - let id = rsx.required_id::(self.id()); + fn default_render(&self, rcx: &mut RenderContext) -> Markup { + let id = rcx.required_id::(self.id()); html! { div id=(id) class=[self.classes().get()] { @if let Some(title) = self.title().get() { h2 class="block-title" { (title) } } div class="block-body" { - (self.components().render(rsx)) + (self.components().render(rcx)) } } } diff --git a/pagetop/src/base/component/container.rs b/pagetop/src/base/component/container.rs index 64e461cf..a502eda8 100644 --- a/pagetop/src/base/component/container.rs +++ b/pagetop/src/base/component/container.rs @@ -42,47 +42,47 @@ impl ComponentTrait for Container { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { match self.container_type() { ContainerType::Header => html! { header id=[self.id().get()] class=[self.classes().get()] { div class=[self.inner_classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } }, ContainerType::Footer => html! { footer id=[self.id().get()] class=[self.classes().get()] { div class=[self.inner_classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } }, ContainerType::Main => html! { main id=[self.id().get()] class=[self.classes().get()] { div class=[self.inner_classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } }, ContainerType::Section => html! { section id=[self.id().get()] class=[self.classes().get()] { div class=[self.inner_classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } }, _ => html! { div id=[self.id().get()] class=[self.classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } }, } diff --git a/pagetop/src/base/component/form_element/button.rs b/pagetop/src/base/component/form_element/button.rs index dfa9b771..f32f5082 100644 --- a/pagetop/src/base/component/form_element/button.rs +++ b/pagetop/src/base/component/form_element/button.rs @@ -39,11 +39,11 @@ impl ComponentTrait for Button { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { let button_type = match self.button_type() { ButtonType::Button => "button", ButtonType::Submit => "submit", diff --git a/pagetop/src/base/component/form_element/date.rs b/pagetop/src/base/component/form_element/date.rs index 260daa11..a6e5b598 100644 --- a/pagetop/src/base/component/form_element/date.rs +++ b/pagetop/src/base/component/form_element/date.rs @@ -36,11 +36,11 @@ impl ComponentTrait for Date { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { let id = self.name().get().map(|name| concat_string!("edit-", name)); html! { div class=[self.classes().get()] { diff --git a/pagetop/src/base/component/form_element/form.rs b/pagetop/src/base/component/form_element/form.rs index b47df647..d658cc64 100644 --- a/pagetop/src/base/component/form_element/form.rs +++ b/pagetop/src/base/component/form_element/form.rs @@ -40,15 +40,15 @@ impl ComponentTrait for Form { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { let method = match self.method() { FormMethod::Post => Some("post".to_owned()), FormMethod::Get => None, @@ -61,7 +61,7 @@ impl ComponentTrait for Form { method=[method] accept-charset=[self.charset().get()] { - div { (self.elements().render(rsx)) } + div { (self.elements().render(rcx)) } } } } diff --git a/pagetop/src/base/component/form_element/hidden.rs b/pagetop/src/base/component/form_element/hidden.rs index fab1e35f..f7c554e6 100644 --- a/pagetop/src/base/component/form_element/hidden.rs +++ b/pagetop/src/base/component/form_element/hidden.rs @@ -23,7 +23,7 @@ impl ComponentTrait for Hidden { self.weight } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { let id = self.name().get().map(|name| concat_string!("value-", name)); html! { input type="hidden" id=[id] name=[self.name().get()] value=[self.value().get()]; diff --git a/pagetop/src/base/component/form_element/input.rs b/pagetop/src/base/component/form_element/input.rs index 40c16ce3..ee79d1bf 100644 --- a/pagetop/src/base/component/form_element/input.rs +++ b/pagetop/src/base/component/form_element/input.rs @@ -53,12 +53,12 @@ impl ComponentTrait for Input { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } #[rustfmt::skip] - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { let type_input = match self.input_type() { InputType::Textfield => "text", InputType::Password => "password", diff --git a/pagetop/src/base/component/grid/column.rs b/pagetop/src/base/component/grid/column.rs index da203229..95e92e57 100644 --- a/pagetop/src/base/component/grid/column.rs +++ b/pagetop/src/base/component/grid/column.rs @@ -61,18 +61,18 @@ impl ComponentTrait for Column { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { html! { div id=[self.id().get()] class=[self.classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } } diff --git a/pagetop/src/base/component/grid/row.rs b/pagetop/src/base/component/grid/row.rs index 4382fc1b..ba9ccd93 100644 --- a/pagetop/src/base/component/grid/row.rs +++ b/pagetop/src/base/component/grid/row.rs @@ -28,18 +28,18 @@ impl ComponentTrait for Row { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { html! { div id=[self.id().get()] class=[self.classes().get()] { - (self.columns().render(rsx)) + (self.columns().render(rcx)) } } } diff --git a/pagetop/src/base/component/heading.rs b/pagetop/src/base/component/heading.rs index 1108355b..de396e46 100644 --- a/pagetop/src/base/component/heading.rs +++ b/pagetop/src/base/component/heading.rs @@ -51,11 +51,11 @@ impl ComponentTrait for Heading { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { let id = self.id().get(); let classes = self.classes().get(); html! { @match &self.heading_type() { diff --git a/pagetop/src/base/component/html.rs b/pagetop/src/base/component/html.rs index b169bf2a..6e7f8bdc 100644 --- a/pagetop/src/base/component/html.rs +++ b/pagetop/src/base/component/html.rs @@ -24,11 +24,11 @@ impl ComponentTrait for Html { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { html! { (*self.html()) } } diff --git a/pagetop/src/base/component/icon.rs b/pagetop/src/base/component/icon.rs index 1cb41331..db028475 100644 --- a/pagetop/src/base/component/icon.rs +++ b/pagetop/src/base/component/icon.rs @@ -24,17 +24,17 @@ impl ComponentTrait for Icon { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - rsx.alter(ResourceOp::AddStyleSheet( + fn before_render(&mut self, rcx: &mut RenderContext) { + rcx.alter(ContextOp::AddStyleSheet( StyleSheet::located("/theme/icons/bootstrap-icons.css").with_version("1.8.2"), )); } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { html! { i class=[self.classes().get()] {}; } } diff --git a/pagetop/src/base/component/image.rs b/pagetop/src/base/component/image.rs index 0272289e..0cd54804 100644 --- a/pagetop/src/base/component/image.rs +++ b/pagetop/src/base/component/image.rs @@ -26,11 +26,11 @@ impl ComponentTrait for Image { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, _: &mut RenderResources) -> Markup { + fn default_render(&self, _: &mut RenderContext) -> Markup { html! { img src=[self.source().get()] diff --git a/pagetop/src/base/component/menu.rs b/pagetop/src/base/component/menu.rs index 23f389a4..d5df0272 100644 --- a/pagetop/src/base/component/menu.rs +++ b/pagetop/src/base/component/menu.rs @@ -37,11 +37,11 @@ impl ComponentTrait for MenuItem { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { match self.item_type() { MenuItemType::Void => html! {}, @@ -63,7 +63,7 @@ impl ComponentTrait for MenuItem { li class="submenu" { a href="#" { (label) } ul { - (menu.items().render(rsx)) + (menu.items().render(rcx)) } } }, @@ -186,31 +186,31 @@ impl ComponentTrait for Menu { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn before_render(&mut self, rsx: &mut RenderResources) { - before_render_inline(self, rsx); + fn before_render(&mut self, rcx: &mut RenderContext) { + before_render_inline(self, rcx); } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { - rsx.alter(ResourceOp::AddStyleSheet( + fn default_render(&self, rcx: &mut RenderContext) -> Markup { + rcx.alter(ContextOp::AddStyleSheet( StyleSheet::located("/theme/menu/css/menu.css").with_version("1.1.1"), )) - .alter(ResourceOp::AddStyleSheet( + .alter(ContextOp::AddStyleSheet( StyleSheet::located("/theme/menu/css/menu-clean.css").with_version("1.1.1"), )) - .alter(ResourceOp::AddJavaScript( + .alter(ContextOp::AddJavaScript( JavaScript::located("/theme/menu/js/menu.min.js").with_version("1.1.1"), )) - .alter(ResourceOp::AddJQuery); + .alter(ContextOp::AddJQuery); - let id = rsx.required_id::(self.id()); + let id = rcx.required_id::(self.id()); html! { ul id=(id) class=[self.classes().get()] { - (self.items().render(rsx)) + (self.items().render(rcx)) } script type="text/javascript" defer { "jQuery(function(){jQuery('#" (id) "').smartmenus({" diff --git a/pagetop/src/base/component/paragraph.rs b/pagetop/src/base/component/paragraph.rs index 65c932dd..6ab208f0 100644 --- a/pagetop/src/base/component/paragraph.rs +++ b/pagetop/src/base/component/paragraph.rs @@ -38,17 +38,17 @@ impl ComponentTrait for Paragraph { self.weight } - fn is_renderable(&self, rsx: &RenderResources) -> bool { - (self.renderable.check)(rsx) + fn is_renderable(&self, rcx: &RenderContext) -> bool { + (self.renderable.check)(rcx) } - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { html! { p id=[self.id().get()] class=[self.classes().get()] { - (self.components().render(rsx)) + (self.components().render(rcx)) } } } diff --git a/pagetop/src/base/module/homepage.rs b/pagetop/src/base/module/homepage.rs index d8b37051..f71a04a4 100644 --- a/pagetop/src/base/module/homepage.rs +++ b/pagetop/src/base/module/homepage.rs @@ -27,7 +27,7 @@ impl ModuleTrait for DefaultHomePage { async fn demo() -> ResultPage { Page::new() .with_title(l("page_title").as_str()) - .with_resource(ResourceOp::AddStyleSheet(StyleSheet::located( + .with_context(ContextOp::AddStyleSheet(StyleSheet::located( "/theme/module/homepage/styles.css", ))) .with_body_classes(ClassesOp::AddFirst, "default-homepage") diff --git a/pagetop/src/base/theme/aliner.rs b/pagetop/src/base/theme/aliner.rs index bc94a621..e9ef98b3 100644 --- a/pagetop/src/base/theme/aliner.rs +++ b/pagetop/src/base/theme/aliner.rs @@ -17,7 +17,7 @@ impl ThemeTrait for Aliner { fn before_render_page(&self, page: &mut Page) { page.alter_favicon(Some(Favicon::new().with_icon("/theme/favicon.ico"))) - .alter_resource(ResourceOp::AddStyleSheet( + .alter_context(ContextOp::AddStyleSheet( StyleSheet::located("/aliner/css/styles.css").with_weight(-99), )); } diff --git a/pagetop/src/base/theme/bootsier.rs b/pagetop/src/base/theme/bootsier.rs index 8e2d4bdd..36ca54e9 100644 --- a/pagetop/src/base/theme/bootsier.rs +++ b/pagetop/src/base/theme/bootsier.rs @@ -19,17 +19,17 @@ impl ThemeTrait for Bootsier { fn before_render_page(&self, page: &mut Page) { page.alter_favicon(Some(Favicon::new().with_icon("/theme/favicon.ico"))) - .alter_resource(ResourceOp::AddStyleSheet( + .alter_context(ContextOp::AddStyleSheet( StyleSheet::located("/bootsier/css/bootstrap.min.css") .with_version("5.1.3") .with_weight(-99), )) - .alter_resource(ResourceOp::AddJavaScript( + .alter_context(ContextOp::AddJavaScript( JavaScript::located("/bootsier/js/bootstrap.bundle.min.js") .with_version("5.1.3") .with_weight(-99), )) - .alter_resource(ResourceOp::AddJQuery); + .alter_context(ContextOp::AddJQuery); } fn error_404_not_found(&self) -> Container { diff --git a/pagetop/src/base/theme/bulmix.rs b/pagetop/src/base/theme/bulmix.rs index 4fa0c702..cef1d6a9 100644 --- a/pagetop/src/base/theme/bulmix.rs +++ b/pagetop/src/base/theme/bulmix.rs @@ -17,19 +17,19 @@ impl ThemeTrait for Bulmix { fn before_render_page(&self, page: &mut Page) { page.alter_favicon(Some(Favicon::new().with_icon("/theme/favicon.ico"))) - .alter_resource(ResourceOp::AddStyleSheet( + .alter_context(ContextOp::AddStyleSheet( StyleSheet::located("/bulmix/css/bulma.min.css") .with_version("0.9.4") .with_weight(-99), )) - .alter_resource(ResourceOp::AddJQuery); + .alter_context(ContextOp::AddJQuery); } #[rustfmt::skip] fn before_render_component( &self, component: &mut dyn ComponentTrait, - _rsx: &mut RenderResources, + _rcx: &mut RenderContext, ) { match component.handle() { COMPONENT_ANCHOR => { @@ -108,7 +108,7 @@ impl ThemeTrait for Bulmix { fn render_component( &self, component: &dyn ComponentTrait, - _rsx: &mut RenderResources, + _rcx: &mut RenderContext, ) -> Option { match component.handle() { COMPONENT_ICON => { diff --git a/pagetop/src/core/component.rs b/pagetop/src/core/component.rs index 8f712325..28733bb3 100644 --- a/pagetop/src/core/component.rs +++ b/pagetop/src/core/component.rs @@ -1,5 +1,5 @@ -mod resources; -pub use resources::{RenderResources, ResourceOp}; +mod context; +pub use context::{RenderContext, ContextOp}; mod definition; pub use definition::{component_mut, component_ref, AnyComponent, BaseComponent, ComponentTrait}; diff --git a/pagetop/src/core/component/bundle.rs b/pagetop/src/core/component/bundle.rs index 44a5280f..3e16092d 100644 --- a/pagetop/src/core/component/bundle.rs +++ b/pagetop/src/core/component/bundle.rs @@ -1,4 +1,4 @@ -use super::{ComponentTrait, RenderResources}; +use super::{ComponentTrait, RenderContext}; use crate::html::{html, Markup}; @@ -26,12 +26,12 @@ impl ComponentsBundle { self.0.clear(); } - pub fn render(&self, rsx: &mut RenderResources) -> Markup { + pub fn render(&self, rcx: &mut RenderContext) -> Markup { let mut components = self.0.clone(); components.sort_by_key(|c| c.read().unwrap().weight()); html! { @for c in components.iter() { - (" ")(c.write().unwrap().render(rsx))(" ") + (" ")(c.write().unwrap().render(rcx))(" ") } } } diff --git a/pagetop/src/core/component/resources.rs b/pagetop/src/core/component/context.rs similarity index 82% rename from pagetop/src/core/component/resources.rs rename to pagetop/src/core/component/context.rs index 1130372d..88a3368e 100644 --- a/pagetop/src/core/component/resources.rs +++ b/pagetop/src/core/component/context.rs @@ -8,7 +8,7 @@ static DEFAULT_THEME: LazyStatic = None => &base::theme::bootsier::Bootsier, }); -pub enum ResourceOp { +pub enum ContextOp { SetTheme(&'static str), AddStyleSheet(StyleSheet), RemoveStyleSheet(&'static str), @@ -18,7 +18,7 @@ pub enum ResourceOp { } #[rustfmt::skip] -pub struct RenderResources { +pub struct RenderContext { theme : ThemeStaticRef, stylesheets: Assets, javascripts: Assets, @@ -26,10 +26,10 @@ pub struct RenderResources { id_counter : usize, } -impl Default for RenderResources { +impl Default for RenderContext { #[rustfmt::skip] fn default() -> Self { - RenderResources { + RenderContext { theme : *DEFAULT_THEME, stylesheets: Assets::::new(), javascripts: Assets::::new(), @@ -39,29 +39,29 @@ impl Default for RenderResources { } } -impl RenderResources { +impl RenderContext { pub fn new() -> Self { - RenderResources::default() + RenderContext::default() } - pub fn alter(&mut self, op: ResourceOp) -> &mut Self { + pub fn alter(&mut self, op: ContextOp) -> &mut Self { match op { - ResourceOp::SetTheme(theme_name) => { + ContextOp::SetTheme(theme_name) => { self.theme = theme_by_single_name(theme_name).unwrap_or(*DEFAULT_THEME); } - ResourceOp::AddStyleSheet(css) => { + ContextOp::AddStyleSheet(css) => { self.stylesheets.add(css); } - ResourceOp::RemoveStyleSheet(source) => { + ContextOp::RemoveStyleSheet(source) => { self.stylesheets.remove(source); } - ResourceOp::AddJavaScript(js) => { + ContextOp::AddJavaScript(js) => { self.javascripts.add(js); } - ResourceOp::RemoveJavaScript(source) => { + ContextOp::RemoveJavaScript(source) => { self.javascripts.remove(source); } - ResourceOp::AddJQuery => { + ContextOp::AddJQuery => { if !self.with_jquery { self.javascripts.add( JavaScript::located("/theme/js/jquery.min.js") @@ -76,13 +76,13 @@ impl RenderResources { self } - /// Resources GETTERS. + /// Context GETTERS. pub(crate) fn theme(&mut self) -> ThemeStaticRef { self.theme } - /// Resources RENDER. + /// Context RENDER. pub fn render(&mut self) -> Markup { html! { @@ -91,7 +91,7 @@ impl RenderResources { } } - // Resources EXTRAS. + // Context EXTRAS. pub fn required_id(&mut self, id: &IdentifierValue) -> String { match id.get() { diff --git a/pagetop/src/core/component/definition.rs b/pagetop/src/core/component/definition.rs index 84181a9e..14608885 100644 --- a/pagetop/src/core/component/definition.rs +++ b/pagetop/src/core/component/definition.rs @@ -1,4 +1,4 @@ -use super::RenderResources; +use super::RenderContext; use crate::html::{html, Markup}; use crate::util::{single_type_name, Handle}; @@ -6,7 +6,7 @@ use crate::util::{single_type_name, Handle}; pub use std::any::Any as AnyComponent; pub trait BaseComponent { - fn render(&mut self, rsx: &mut RenderResources) -> Markup; + fn render(&mut self, rcx: &mut RenderContext) -> Markup; } pub trait ComponentTrait: AnyComponent + BaseComponent + Send + Sync { @@ -29,15 +29,15 @@ pub trait ComponentTrait: AnyComponent + BaseComponent + Send + Sync { } #[allow(unused_variables)] - fn is_renderable(&self, rsx: &RenderResources) -> bool { + fn is_renderable(&self, rcx: &RenderContext) -> bool { true } #[allow(unused_variables)] - fn before_render(&mut self, rsx: &mut RenderResources) {} + fn before_render(&mut self, rcx: &mut RenderContext) {} #[allow(unused_variables)] - fn default_render(&self, rsx: &mut RenderResources) -> Markup { + fn default_render(&self, rcx: &mut RenderContext) -> Markup { html! {} } @@ -47,17 +47,17 @@ pub trait ComponentTrait: AnyComponent + BaseComponent + Send + Sync { } impl BaseComponent for C { - fn render(&mut self, rsx: &mut RenderResources) -> Markup { + fn render(&mut self, rcx: &mut RenderContext) -> Markup { // Acciones del componente antes de renderizar. - self.before_render(rsx); + self.before_render(rcx); // Acciones del tema antes de renderizar el componente. - rsx.theme().before_render_component(self, rsx); + rcx.theme().before_render_component(self, rcx); - match self.is_renderable(rsx) { - true => match rsx.theme().render_component(self, rsx) { + match self.is_renderable(rcx) { + true => match rcx.theme().render_component(self, rcx) { Some(html) => html, - None => self.default_render(rsx), + None => self.default_render(rcx), }, false => html! {}, } @@ -78,7 +78,7 @@ macro_rules! hook_before_render_component { paste::paste! { $crate::pub_handle!($ACTION_HANDLE); - type Action = fn(&$Component, &mut RenderResources); + type Action = fn(&$Component, &mut RenderContext); pub struct [< BeforeRender $Component >] { action: Option, @@ -119,18 +119,18 @@ macro_rules! hook_before_render_component { self } - pub fn run(&self, component: &mut $Component, rsx: &mut RenderResources) { + pub fn run(&self, component: &mut $Component, rcx: &mut RenderContext) { if let Some(action) = self.action { - action(component, rsx) + action(component, rcx) } } } #[inline(always)] - fn before_render_inline(component: &mut $Component, rsx: &mut RenderResources) { + fn before_render_inline(component: &mut $Component, rcx: &mut RenderContext) { run_actions($ACTION_HANDLE, |action| action_ref::<[< BeforeRender $Component >]>(&**action) - .run(component, rsx) + .run(component, rcx) ); } } diff --git a/pagetop/src/core/component/renderable.rs b/pagetop/src/core/component/renderable.rs index 039b5887..ce2f302c 100644 --- a/pagetop/src/core/component/renderable.rs +++ b/pagetop/src/core/component/renderable.rs @@ -1,6 +1,6 @@ -use crate::core::component::RenderResources; +use crate::core::component::RenderContext; -pub type IsRenderable = fn(&RenderResources) -> bool; +pub type IsRenderable = fn(&RenderContext) -> bool; pub struct Renderable { pub check: IsRenderable, @@ -14,6 +14,6 @@ impl Default for Renderable { } } -fn render_always(_: &RenderResources) -> bool { +fn render_always(_: &RenderContext) -> bool { true } diff --git a/pagetop/src/core/theme/definition.rs b/pagetop/src/core/theme/definition.rs index f5da0564..57c14833 100644 --- a/pagetop/src/core/theme/definition.rs +++ b/pagetop/src/core/theme/definition.rs @@ -1,5 +1,5 @@ use crate::base::component::{Container, Html}; -use crate::core::component::{ComponentTrait, RenderResources}; +use crate::core::component::{ComponentTrait, RenderContext}; use crate::html::{html, Favicon, Markup}; use crate::response::page::Page; use crate::util::{single_type_name, Handle}; @@ -64,7 +64,7 @@ pub trait ThemeTrait: BaseTheme + Send + Sync { (f.render()) } - (page.resources().render()) + (page.context().render()) } } } @@ -96,7 +96,7 @@ pub trait ThemeTrait: BaseTheme + Send + Sync { fn before_render_component( &self, component: &mut dyn ComponentTrait, - rsx: &mut RenderResources, + rcx: &mut RenderContext, ) { /* Cómo usarlo: @@ -116,7 +116,7 @@ pub trait ThemeTrait: BaseTheme + Send + Sync { fn render_component( &self, component: &dyn ComponentTrait, - rsx: &mut RenderResources, + rcx: &mut RenderContext, ) -> Option { None /* diff --git a/pagetop/src/response/fatal_error.rs b/pagetop/src/response/fatal_error.rs index 29e39077..00b82e91 100644 --- a/pagetop/src/response/fatal_error.rs +++ b/pagetop/src/response/fatal_error.rs @@ -25,7 +25,7 @@ impl fmt::Display for FatalError { // Error 403. FatalError::AccessDenied => { let mut error_page = Page::new(); - let error_content = error_page.resources().theme().error_403_access_denied(); + let error_content = error_page.context().theme().error_403_access_denied(); if let Ok(page) = error_page .with_title("Error FORBIDDEN") .using_template("error") @@ -40,7 +40,7 @@ impl fmt::Display for FatalError { // Error 404. FatalError::NotFound => { let mut error_page = Page::new(); - let error_content = error_page.resources().theme().error_404_not_found(); + let error_content = error_page.context().theme().error_404_not_found(); if let Ok(page) = error_page .with_title("Error RESOURCE NOT FOUND") .using_template("error") diff --git a/pagetop/src/response/page/definition.rs b/pagetop/src/response/page/definition.rs index 2ae4a63d..0adcd6be 100644 --- a/pagetop/src/response/page/definition.rs +++ b/pagetop/src/response/page/definition.rs @@ -50,7 +50,7 @@ pub struct Page { metadata : Vec<(&'static str, &'static str)>, properties : Vec<(&'static str, &'static str)>, favicon : Option, - resources : RenderResources, + context : RenderContext, body_classes: Classes, regions : HashMap<&'static str, ComponentsBundle>, template : String, @@ -73,7 +73,7 @@ impl Default for Page { metadata : Vec::new(), properties : Vec::new(), favicon : None, - resources : RenderResources::new(), + context : RenderContext::new(), body_classes: Classes::new().with_value(ClassesOp::SetDefault, "body"), regions : common_components(), template : "default".to_owned(), @@ -123,8 +123,8 @@ impl Page { self } - pub fn with_resource(mut self, op: ResourceOp) -> Self { - self.alter_resource(op); + pub fn with_context(mut self, op: ContextOp) -> Self { + self.alter_context(op); self } @@ -189,8 +189,8 @@ impl Page { self } - pub fn alter_resource(&mut self, op: ResourceOp) -> &mut Self { - self.resources.alter(op); + pub fn alter_context(&mut self, op: ContextOp) -> &mut Self { + self.context.alter(op); self } @@ -234,8 +234,8 @@ impl Page { &self.favicon } - pub fn resources(&mut self) -> &mut RenderResources { - &mut self.resources + pub fn context(&mut self) -> &mut RenderContext { + &mut self.context } pub fn body_classes(&self) -> &Classes { @@ -255,13 +255,13 @@ impl Page { }); // Acciones del tema antes de renderizar la página. - self.resources.theme().before_render_page(self); + self.context.theme().before_render_page(self); // Primero, renderizar el cuerpo. - let body = self.resources.theme().render_page_body(self); + let body = self.context.theme().render_page_body(self); // Luego, renderizar la cabecera. - let head = self.resources.theme().render_page_head(self); + let head = self.context.theme().render_page_head(self); // Finalmente, renderizar la página. Ok(html! { @@ -275,7 +275,7 @@ impl Page { pub fn render_region(&mut self, region: &str) -> Option { match self.regions.get_mut(region) { - Some(components) => Some(components.render(&mut self.resources)), + Some(components) => Some(components.render(&mut self.context)), None => None, } }