diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index 7f6c642eb..f930b8c45 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -427,6 +427,8 @@ return [ 'brand' => 'Brand', 'logo' => 'Logo', 'logo_description' => 'Upload a custom logo to use in the back-end.', + 'favicon' => 'Favicon', + 'favicon_description' => 'Upload a custom favicon to use in the back-end', 'app_name' => 'App Name', 'app_name_description' => 'This name is shown in the title area of the back-end.', 'app_tagline' => 'App Tagline', diff --git a/modules/backend/layouts/_head.htm b/modules/backend/layouts/_head.htm index 7ab907909..98597d49b 100644 --- a/modules/backend/layouts/_head.htm +++ b/modules/backend/layouts/_head.htm @@ -7,7 +7,7 @@ - + <?= e(trans($this->pageTitle)) ?> | <?= e(Backend\Models\BrandSetting::get('app_name')) ?> diff --git a/modules/backend/layouts/auth.htm b/modules/backend/layouts/auth.htm index 724f723f4..ce7b2b8c5 100644 --- a/modules/backend/layouts/auth.htm +++ b/modules/backend/layouts/auth.htm @@ -7,7 +7,7 @@ - + <?= e(trans('backend::lang.auth.title')) ?> diff --git a/modules/backend/models/BrandSetting.php b/modules/backend/models/BrandSetting.php index c03160af9..f7a99851b 100644 --- a/modules/backend/models/BrandSetting.php +++ b/modules/backend/models/BrandSetting.php @@ -1,6 +1,7 @@ \System\Models\File::class, 'logo' => \System\Models\File::class ]; @@ -85,6 +87,17 @@ class BrandSetting extends Model Cache::forget(self::instance()->cacheKey); } + public static function getFavicon() + { + $settings = self::instance(); + + if ($settings->favicon) { + return $settings->favicon->getPath(); + } + + return self::getDefaultFavicon() ?: null; + } + public static function getLogo() { $settings = self::instance(); @@ -147,6 +160,17 @@ class BrandSetting extends Model return !!Config::get('brand'); } + public static function getDefaultFavicon() + { + $faviconPath = File::symbolizePath(Config::get('brand.faviconPath')); + + if ($faviconPath && File::exists($faviconPath)) { + return Url::asset(File::localToPublic($faviconPath)); + } + + return Backend::skinAsset('assets/images/favicon.png'); + } + public static function getDefaultLogo() { $logoPath = File::symbolizePath(Config::get('brand.logoPath')); diff --git a/modules/backend/models/brandsetting/fields.yaml b/modules/backend/models/brandsetting/fields.yaml index 4aba5bb3a..570ff6469 100644 --- a/modules/backend/models/brandsetting/fields.yaml +++ b/modules/backend/models/brandsetting/fields.yaml @@ -29,6 +29,16 @@ tabs: tab: backend::lang.branding.brand span: left + favicon: + label: backend::lang.branding.favicon + type: fileupload + commentAbove: backend::lang.branding.favicon_description + mode: image + imageHeight: 32 + tab: backend::lang.branding.brand + span: right + fileTypes: jpg,jpeg,bmp,png,webp,gif,svg,ico + primary_color: label: backend::lang.branding.primary_color type: colorpicker