🚧 Working on 0.1.0 version

This commit is contained in:
Manuel Cillero 2024-11-30 11:35:48 +01:00
parent 9f62955acb
commit 41cedf2541
28 changed files with 3473 additions and 535 deletions

View file

@ -1,12 +1,12 @@
use crate::base::component::add_base_assets;
use crate::concat_string;
use crate::core::component::AnyOp;
use crate::core::theme::all::{theme_by_short_name, THEME_DEFAULT};
use crate::core::theme::all::{theme_by_short_name, DEFAULT_THEME};
use crate::core::theme::{ComponentsInRegions, ThemeRef};
use crate::global::TypeInfo;
use crate::html::{html, Markup};
use crate::html::{Assets, Favicon, JavaScript, StyleSheet};
use crate::locale::{LanguageIdentifier, LANGID_DEFAULT};
use crate::locale::{LanguageIdentifier, DEFAULT_LANGID};
use crate::service::HttpRequest;
use std::collections::HashMap;
@ -68,8 +68,8 @@ impl Context {
pub(crate) fn new(request: HttpRequest) -> Self {
Context {
request,
langid : &LANGID_DEFAULT,
theme : *THEME_DEFAULT,
langid : &DEFAULT_LANGID,
theme : *DEFAULT_THEME,
layout : "default",
favicon : None,
stylesheet: Assets::<StyleSheet>::new(),
@ -86,7 +86,7 @@ impl Context {
self.langid = langid;
}
AssetsOp::Theme(theme_name) => {
self.theme = theme_by_short_name(theme_name).unwrap_or(*THEME_DEFAULT);
self.theme = theme_by_short_name(theme_name).unwrap_or(*DEFAULT_THEME);
}
AssetsOp::Layout(layout) => {
self.layout = layout;

View file

@ -5,7 +5,7 @@ use crate::{global, service, static_files, static_files_service, trace};
use std::sync::{LazyLock, RwLock};
static_files!(base);
static_files!(assets);
// PACKAGES ****************************************************************************************
@ -21,14 +21,12 @@ pub fn register_packages(root_package: Option<PackageRef>) {
// Initialize a list for packages to be enabled.
let mut enabled_list: Vec<PackageRef> = Vec::new();
// Add default theme to the enabled list.
add_to_enabled(&mut enabled_list, &crate::base::theme::Basic);
// Add default welcome page package to the enabled list.
add_to_enabled(&mut enabled_list, &crate::base::package::Welcome);
// Add default theme packages to the enabled list.
add_to_enabled(&mut enabled_list, &crate::base::theme::Basic);
add_to_enabled(&mut enabled_list, &crate::base::theme::Chassis);
add_to_enabled(&mut enabled_list, &crate::base::theme::Inception);
// If a root package is provided, add it to the enabled list.
if let Some(package) = root_package {
add_to_enabled(&mut enabled_list, package);
@ -130,12 +128,12 @@ pub fn init_packages() {
// CONFIGURE SERVICES ******************************************************************************
pub fn configure_services(scfg: &mut service::web::ServiceConfig) {
static_files_service!(
scfg,
base => "/base",
[&global::SETTINGS.dev.pagetop_project_dir, "static/base"]
);
for m in ENABLED_PACKAGES.read().unwrap().iter() {
m.configure_service(scfg);
}
static_files_service!(
scfg,
assets => "/",
[&global::SETTINGS.dev.pagetop_project_dir, "static/assets"]
);
}

View file

@ -9,10 +9,10 @@ pub static THEMES: LazyLock<RwLock<Vec<ThemeRef>>> = LazyLock::new(|| RwLock::ne
// DEFAULT THEME ***********************************************************************************
pub static THEME_DEFAULT: LazyLock<ThemeRef> =
pub static DEFAULT_THEME: LazyLock<ThemeRef> =
LazyLock::new(|| match theme_by_short_name(&global::SETTINGS.app.theme) {
Some(theme) => theme,
None => &crate::base::theme::Inception,
None => &crate::base::theme::Basic,
});
// THEME BY NAME ***********************************************************************************

View file

@ -1,7 +1,7 @@
use crate::base::component::*;
use crate::core::component::{AssetsOp, ComponentBase, ComponentTrait};
use crate::core::component::{ComponentBase, ComponentTrait};
use crate::core::package::PackageTrait;
use crate::html::{html, Favicon, PrepareMarkup};
use crate::html::{html, PrepareMarkup};
use crate::locale::L10n;
use crate::response::page::Page;
use crate::{concat_string, global};
@ -69,11 +69,8 @@ pub trait ThemeTrait: PackageTrait + Send + Sync {
})
}
fn after_prepare_body(&self, page: &mut Page) {
page.set_assets(AssetsOp::SetFaviconIfNone(
Favicon::new().with_icon("/base/favicon.ico"),
));
}
#[allow(unused_variables)]
fn after_prepare_body(&self, page: &mut Page) {}
fn prepare_head(&self, page: &mut Page) -> PrepareMarkup {
let viewport = "width=device-width, initial-scale=1, shrink-to-fit=no";