X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=plugins%2Fdefault_colors%2Fdefault_colors.php;fp=plugins%2Fdefault_colors%2Fdefault_colors.php;h=e1fd5cfbdb19daf547519af2d7f41482c88f7b96;hb=972daa4513420d3293d46a808ca2d5be0313e78b;hp=1928cc9f49b527e8aadddf64ed9796d9628bacc7;hpb=bea062149ebcb4663861edb1cc0a32faf85b273f;p=github%2Fshaarli%2FShaarli.git diff --git a/plugins/default_colors/default_colors.php b/plugins/default_colors/default_colors.php index 1928cc9f..e1fd5cfb 100644 --- a/plugins/default_colors/default_colors.php +++ b/plugins/default_colors/default_colors.php @@ -15,6 +15,8 @@ const DEFAULT_COLORS_PLACEHOLDERS = [ 'DEFAULT_COLORS_DARK_MAIN', ]; +const DEFAULT_COLORS_CSS_FILE = '/default_colors/default_colors.css'; + /** * Display an error if the plugin is active a no color is configured. * @@ -24,58 +26,62 @@ const DEFAULT_COLORS_PLACEHOLDERS = [ */ function default_colors_init($conf) { - $params = ''; + $params = []; foreach (DEFAULT_COLORS_PLACEHOLDERS as $placeholder) { - $params .= trim($conf->get('plugins.'. $placeholder, '')); + $value = trim($conf->get('plugins.'. $placeholder, '')); + if (strlen($value) > 0) { + $params[$placeholder] = $value; + } } if (empty($params)) { $error = t('Default colors plugin error: '. 'This plugin is active and no custom color is configured.'); - return array($error); + return [$error]; + } + + // Colors are defined but the custom CSS file does not exist -> generate it + if (!file_exists(PluginManager::$PLUGINS_PATH . DEFAULT_COLORS_CSS_FILE)) { + default_colors_generate_css_file($params); } } /** - * When plugin parameters are saved, we regenerate the custom CSS file with provided settings. + * When linklist is displayed, include default_colors CSS file. * - * @param array $data $_POST array + * @param array $data - header data. * - * @return array Updated $_POST array + * @return mixed - header data with default_colors CSS file added. */ -function hook_default_colors_save_plugin_parameters($data) +function hook_default_colors_render_includes($data) { $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css'; - $template = file_get_contents(PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css.template'); - $content = ''; - foreach (DEFAULT_COLORS_PLACEHOLDERS as $rule) { - $content .= ! empty($data[$rule]) - ? default_colors_format_css_rule($data, $rule) .';'. PHP_EOL - : ''; - } - - if (! empty($content)) { - file_put_contents($file, sprintf($template, $content)); + if (file_exists($file )) { + $data['css_files'][] = $file ; } return $data; } /** - * When linklist is displayed, include default_colors CSS file. - * - * @param array $data - header data. + * Regenerate the custom CSS file with provided settings. * - * @return mixed - header data with default_colors CSS file added. + * @param array $params Plugin configuration (CSS rules) */ -function hook_default_colors_render_includes($data) +function default_colors_generate_css_file($params): void { $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css'; - if (file_exists($file )) { - $data['css_files'][] = $file ; + $template = file_get_contents(PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css.template'); + $content = ''; + foreach (DEFAULT_COLORS_PLACEHOLDERS as $rule) { + $content .= !empty($params[$rule]) + ? default_colors_format_css_rule($params, $rule) .';'. PHP_EOL + : ''; } - return $data; + if (! empty($content)) { + file_put_contents($file, sprintf($template, $content)); + } } /**