diff --git a/pagetop/build.rs b/pagetop/build.rs new file mode 100644 index 00000000..b3903037 --- /dev/null +++ b/pagetop/build.rs @@ -0,0 +1,3 @@ +fn main() -> std::io::Result<()> { + pagetop_build::bundle_resources("./static/theme", "theme", None) +} diff --git a/pagetop/src/core/basic.rs b/pagetop/src/core/basic.rs index 11f566df..df0e6ec4 100644 --- a/pagetop/src/core/basic.rs +++ b/pagetop/src/core/basic.rs @@ -1,9 +1,14 @@ use crate::core::module::{ModuleTrait, ThemeStaticRef, ThemeTrait}; -use crate::pub_handle; +use crate::html::Favicon; +use crate::response::page::Page; +use crate::server; use crate::util::Handle; +use crate::{pub_handle, serve_static_files}; pub_handle!(THEME_BASIC); +include!(concat!(env!("OUT_DIR"), "/theme.rs")); + pub struct Basic; impl ModuleTrait for Basic { @@ -14,6 +19,14 @@ impl ModuleTrait for Basic { fn theme(&self) -> Option { Some(&Basic) } + + fn configure_service(&self, cfg: &mut server::web::ServiceConfig) { + serve_static_files!(cfg, "/theme", bundle_theme); + } } -impl ThemeTrait for Basic {} +impl ThemeTrait for Basic { + fn before_render_page(&self, page: &mut Page) { + page.alter_favicon(Some(Favicon::new().with_icon("/theme/favicon.ico"))); + } +} diff --git a/pagetop/static/theme/favicon.ico b/pagetop/static/theme/favicon.ico new file mode 100644 index 00000000..95e1affa Binary files /dev/null and b/pagetop/static/theme/favicon.ico differ