From 392332a9fa6378e061581859863b8cd3ed00261a Mon Sep 17 00:00:00 2001 From: ArchBlood <35392110+ArchBlood@users.noreply.github.com> Date: Thu, 29 Feb 2024 14:09:54 -0500 Subject: [PATCH 1/2] Update Module.php --- Module.php | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Module.php b/Module.php index 0c39ac2..dde1530 100644 --- a/Module.php +++ b/Module.php @@ -64,12 +64,16 @@ public function disable() */ private function disableTheme() { - foreach (ThemeHelper::getThemeTree(Yii::$app->view->theme) as $theme) { - if ($theme->name === self::BASE_THEME_NAME) { - $ceTheme = ThemeHelper::getThemeByName('HumHub'); + $baseTheme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); + if ($baseTheme !== null) { + $ceTheme = ThemeHelper::getThemeByName('HumHub'); + if ($ceTheme !== null) { $ceTheme->activate(); - break; + } else { + Yii::error('Failed to activate theme: HumHub', 'ui'); } + } else { + Yii::error('Failed to find base theme: ' . self::BASE_THEME_NAME, 'ui'); } } @@ -90,17 +94,22 @@ public function enable() */ private function enableTheme() { + $baseTheme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); + if ($baseTheme === null) { + Yii::error('Failed to find base theme: ' . self::BASE_THEME_NAME, 'ui'); + return; + } + // Check if already active - foreach (ThemeHelper::getThemeTree(Yii::$app->view->theme) as $theme) { + $activeThemes = ThemeHelper::getThemeTree(Yii::$app->view->theme); + foreach ($activeThemes as $theme) { if ($theme->name === self::BASE_THEME_NAME) { return; } } - $theme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); - if ($theme !== null) { - $theme->activate(); - DynamicConfig::rewrite(); - } + // Activate base theme + $baseTheme->activate(); + DynamicConfig::rewrite(); } } From 9f39c6dd5db944154359575dffaac5fadf9fdc02 Mon Sep 17 00:00:00 2001 From: ArchBlood <35392110+ArchBlood@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:22:01 -0400 Subject: [PATCH 2/2] Update Module.php --- Module.php | 126 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 88 insertions(+), 38 deletions(-) diff --git a/Module.php b/Module.php index dde1530..901baa0 100644 --- a/Module.php +++ b/Module.php @@ -11,39 +11,75 @@ use humhub\libs\DynamicConfig; use humhub\modules\ui\view\helpers\ThemeHelper; use Yii; +use yii\base\Exception; use yii\helpers\Url; +/** + * Module class for Clean Theme module. + * + * This module provides a clean theme for HumHub based on the Community theme. + */ class Module extends \humhub\components\Module { + /** + * @var string The name of the base clean theme. + */ public const BASE_THEME_NAME = 'clean-base'; /** - * @inheridoc + * @var string The icon for the module. */ public string $icon = 'circle-o-notch'; /** - * @inheridoc + * @var string The path to the module's resources. */ public $resourcesPath = 'resources'; - public bool $hideTopMenuOnScrollDown = true; // On small screens only - public bool $hideBottomMenuOnScrollDown = true; // On small screens only - public bool $collapsibleLeftNavigation = false; + /** + * @var bool Whether to hide the top menu on scroll down (on small screens only). + */ + public bool $hideTopMenuOnScrollDown = true; + + /** + * @var bool Whether to hide the bottom menu on scroll down (on small screens only). + */ + public bool $hideBottomMenuOnScrollDown = true; + + /** + * @var bool Whether to hide text in bottom menu items (on small screens only). + */ + public bool $hideTextInBottomMenuItems = true; + /** + * @var bool Whether to make the left navigation collapsible. + */ + public bool $collapsibleLeftNavigation = false; + /** + * Returns the name of the module. + * + * @return string The module name. + */ public function getName() { return Yii::t('CleanThemeModule.config', 'Clean theme'); } + /** + * Returns the description of the module. + * + * @return string The module description. + */ public function getDescription() { return Yii::t('CleanThemeModule.config', 'Clean theme for Humhub based on the Community theme'); } /** - * @inheritdoc + * Returns the URL for configuring the module. + * + * @return string The configuration URL. */ public function getConfigUrl() { @@ -51,7 +87,7 @@ public function getConfigUrl() } /** - * @inheritdoc + * Disables the module. */ public function disable() { @@ -60,25 +96,9 @@ public function disable() } /** - * @return void - */ - private function disableTheme() - { - $baseTheme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); - if ($baseTheme !== null) { - $ceTheme = ThemeHelper::getThemeByName('HumHub'); - if ($ceTheme !== null) { - $ceTheme->activate(); - } else { - Yii::error('Failed to activate theme: HumHub', 'ui'); - } - } else { - Yii::error('Failed to find base theme: ' . self::BASE_THEME_NAME, 'ui'); - } - } - - /** - * @inheritdoc + * Enables the module. + * + * @return bool Whether the module was successfully enabled. */ public function enable() { @@ -90,26 +110,56 @@ public function enable() } /** - * @return void + * Enables the clean theme. + * + * @throws Exception if an error occurs while enabling the theme. */ private function enableTheme() { - $baseTheme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); - if ($baseTheme === null) { - Yii::error('Failed to find base theme: ' . self::BASE_THEME_NAME, 'ui'); - return; + try { + foreach (ThemeHelper::getThemeTree(Yii::$app->view->theme) as $theme) { + if ($theme->name === self::BASE_THEME_NAME) return; + } + + $theme = ThemeHelper::getThemeByName(self::BASE_THEME_NAME); + if ($theme !== null) { + $theme->activate(); + $this->updateDynamicConfig(); + } + } catch (Exception $e) { + Yii::error('Error enabling theme: ' . $e->getMessage(), 'clean-theme'); + throw $e; } + } - // Check if already active - $activeThemes = ThemeHelper::getThemeTree(Yii::$app->view->theme); - foreach ($activeThemes as $theme) { + /** + * Disables the clean theme. + */ + private function disableTheme() + { + foreach (ThemeHelper::getThemeTree(Yii::$app->view->theme) as $theme) { if ($theme->name === self::BASE_THEME_NAME) { - return; + $ceTheme = ThemeHelper::getThemeByName('HumHub'); + $ceTheme->activate(); + break; } } + } - // Activate base theme - $baseTheme->activate(); - DynamicConfig::rewrite(); + /** + * Updates the dynamic configuration after enabling the theme. + * + * @throws Exception if an error occurs while updating the dynamic configuration. + */ + private function updateDynamicConfig() + { + try { + $config = DynamicConfig::load(); + $config['theme'] = self::BASE_THEME_NAME; + DynamicConfig::save($config); + } catch (Exception $e) { + Yii::error('Error updating dynamic config: ' . $e->getMessage(), 'clean-theme'); + throw $e; + } } }