- Incluye un componente base `Template` para gestionar la estructura del documento y sus regiones (`Region`). - Actualiza el *trait* `Contextual` para permitir la selección de la plantilla de renderizado. - Modifica `Page` y `Context`, y refactoriza el manejo de temas, para dar soporte al nuevo sistema de plantillas y eliminar la gestión obsoleta de regiones.
51 lines
2.4 KiB
Rust
51 lines
2.4 KiB
Rust
//! Componentes nativos proporcionados por PageTop.
|
|
//!
|
|
//! Conviene destacar que PageTop distingue entre:
|
|
//!
|
|
//! - **Componentes estructurales** que definen el esqueleto de un documento HTML, como [`Template`]
|
|
//! y [`Region`], utilizados por [`Page`](crate::response::page::Page) para generar la estructura
|
|
//! final.
|
|
//! - **Componentes de contenido** (menús, barras, tarjetas, etc.), que se incluyen en las regiones
|
|
//! gestionadas por los componentes estructurales.
|
|
//!
|
|
//! El componente [`Template`] describe cómo maquetar el cuerpo del documento a partir de varias
|
|
//! regiones lógicas ([`Region`]). En función de la plantilla seleccionada, determina qué regiones
|
|
//! se renderizan y en qué orden. Por ejemplo, la plantilla predeterminada [`Template::DEFAULT`]
|
|
//! utiliza las regiones [`Region::HEADER`], [`Region::CONTENT`] y [`Region::FOOTER`].
|
|
//!
|
|
//! Un componente [`Region`] es un contenedor lógico asociado a un nombre de región. Su contenido se
|
|
//! obtiene del [`Context`](crate::core::component::Context), donde los componentes se registran
|
|
//! mediante [`Contextual::with_child_in()`](crate::core::component::Contextual::with_child_in) y
|
|
//! otros mecanismos similares, y se integra en el documento a través de [`Template`].
|
|
//!
|
|
//! Por su parte, una página ([`Page`](crate::response::page::Page)) representa un documento HTML
|
|
//! completo. Implementa [`Contextual`](crate::core::component::Contextual) para mantener su propio
|
|
//! [`Context`](crate::core::component::Context), donde gestiona el tema activo, la plantilla
|
|
//! seleccionada y los componentes asociados a cada región, y se encarga de generar la estructura
|
|
//! final de la página.
|
|
//!
|
|
//! De este modo, temas y extensiones colaboran sobre una estructura común: las aplicaciones
|
|
//! registran componentes en el [`Context`](crate::core::component::Context), las plantillas
|
|
//! organizan las regiones y las páginas generan el documento HTML resultante.
|
|
//!
|
|
//! Los temas pueden sobrescribir [`Template`] para exponer nuevas plantillas o adaptar las
|
|
//! predeterminadas, y lo mismo con [`Region`] para añadir regiones adicionales o personalizar su
|
|
//! representación.
|
|
|
|
mod html;
|
|
pub use html::Html;
|
|
|
|
mod region;
|
|
pub use region::Region;
|
|
|
|
mod template;
|
|
pub use template::Template;
|
|
|
|
mod block;
|
|
pub use block::Block;
|
|
|
|
mod intro;
|
|
pub use intro::{Intro, IntroOpening};
|
|
|
|
mod poweredby;
|
|
pub use poweredby::PoweredBy;
|