🧑‍💻 Mejora funcionalidad del componente Html

- Amplía la documentación del componente.
- Aplica la nueva funcionalidad en la página de bienvenida usando el
  nuevo renderizado dinámico con contexto.
- Añade pruebas unitarias para el componente.
This commit is contained in:
Manuel Cillero 2025-08-02 20:26:39 +02:00
parent 3a3e3b810f
commit ef8d16f41f
7 changed files with 155 additions and 27 deletions

View file

@ -30,9 +30,12 @@ pub struct Page {
}
impl Page {
/// Crea una nueva instancia de página con contexto basado en la petición HTTP.
/// Crea una nueva instancia de página.
///
/// Si se proporciona la solicitud HTTP, se guardará en el contexto de renderizado de la página
/// para poder ser recuperada por los componentes si es necesario.
#[rustfmt::skip]
pub fn new(request: HttpRequest) -> Self {
pub fn new(request: Option<HttpRequest>) -> Self {
Page {
title : OptionTranslated::default(),
description : OptionTranslated::default(),
@ -165,7 +168,7 @@ impl Page {
}
/// Devuelve la solicitud HTTP asociada.
pub fn request(&self) -> &HttpRequest {
pub fn request(&self) -> Option<&HttpRequest> {
self.context.request()
}

View file

@ -28,12 +28,12 @@ impl fmt::Display for ErrorPage {
ErrorPage::BadRequest(_) => write!(f, "Bad Client Data"),
// Error 403.
ErrorPage::AccessDenied(request) => {
let mut error_page = Page::new(request.clone());
let mut error_page = Page::new(Some(request.clone()));
let error403 = error_page.theme().error403(&mut error_page);
if let Ok(page) = error_page
.with_title(L10n::n("Error FORBIDDEN"))
.with_layout("error")
.with_component(Html::with(error403))
.with_component(Html::with(move |_| error403.clone()))
.render()
{
write!(f, "{}", page.into_string())
@ -43,12 +43,12 @@ impl fmt::Display for ErrorPage {
}
// Error 404.
ErrorPage::NotFound(request) => {
let mut error_page = Page::new(request.clone());
let mut error_page = Page::new(Some(request.clone()));
let error404 = error_page.theme().error404(&mut error_page);
if let Ok(page) = error_page
.with_title(L10n::n("Error RESOURCE NOT FOUND"))
.with_layout("error")
.with_component(Html::with(error404))
.with_component(Html::with(move |_| error404.clone()))
.render()
{
write!(f, "{}", page.into_string())