]>
Commit | Line | Data |
---|---|---|
a5a0c039 A |
1 | <?php |
2 | ||
3 | /** | |
4 | * Plugin default_colors. | |
5 | * | |
6 | * Allow users to easily overrides colors of the default theme. | |
7 | */ | |
8 | ||
b5507350 | 9 | use Shaarli\Config\ConfigManager; |
a5a0c039 A |
10 | use Shaarli\Plugin\PluginManager; |
11 | ||
12 | const DEFAULT_COLORS_PLACEHOLDERS = [ | |
13 | 'DEFAULT_COLORS_MAIN', | |
14 | 'DEFAULT_COLORS_BACKGROUND', | |
15 | 'DEFAULT_COLORS_DARK_MAIN', | |
16 | ]; | |
17 | ||
18 | /** | |
b5507350 A |
19 | * Display an error if the plugin is active a no color is configured. |
20 | * | |
21 | * @param $conf ConfigManager instance | |
22 | * | |
23 | * @return array|null The errors array or null of there is none. | |
24 | */ | |
25 | function default_colors_init($conf) | |
26 | { | |
27 | $params = ''; | |
28 | foreach (DEFAULT_COLORS_PLACEHOLDERS as $placeholder) { | |
29 | $params .= trim($conf->get('plugins.'. $placeholder, '')); | |
30 | } | |
31 | ||
32 | if (empty($params)) { | |
33 | $error = t('Default colors plugin error: '. | |
34 | 'This plugin is active and no custom color is configured.'); | |
35 | return array($error); | |
36 | } | |
37 | } | |
38 | ||
39 | /** | |
40 | * When plugin parameters are saved, we regenerate the custom CSS file with provided settings. | |
41 | * | |
42 | * @param array $data $_POST array | |
43 | * | |
44 | * @return array Updated $_POST array | |
a5a0c039 A |
45 | */ |
46 | function hook_default_colors_save_plugin_parameters($data) | |
47 | { | |
48 | $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css'; | |
49 | $template = file_get_contents(PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css.template'); | |
50 | $content = ''; | |
51 | foreach (DEFAULT_COLORS_PLACEHOLDERS as $rule) { | |
52 | $content .= ! empty($data[$rule]) | |
53 | ? default_colors_format_css_rule($data, $rule) .';'. PHP_EOL | |
54 | : ''; | |
55 | } | |
b5507350 A |
56 | |
57 | if (! empty($content)) { | |
58 | file_put_contents($file, sprintf($template, $content)); | |
59 | } | |
60 | ||
a5a0c039 A |
61 | return $data; |
62 | } | |
63 | ||
64 | /** | |
b5507350 | 65 | * When linklist is displayed, include default_colors CSS file. |
a5a0c039 A |
66 | * |
67 | * @param array $data - header data. | |
68 | * | |
b5507350 | 69 | * @return mixed - header data with default_colors CSS file added. |
a5a0c039 A |
70 | */ |
71 | function hook_default_colors_render_includes($data) | |
72 | { | |
73 | $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css'; | |
74 | if (file_exists($file )) { | |
75 | $data['css_files'][] = $file ; | |
76 | } | |
77 | ||
78 | return $data; | |
79 | } | |
80 | ||
b5507350 A |
81 | /** |
82 | * Create a valid CSS rule from parameters settings and plugin parameter. | |
83 | * | |
84 | * @param array $data $_POST array | |
85 | * @param string $parameter Plugin parameter name | |
86 | * | |
87 | * @return string CSS rules for the provided parameter and its matching value. | |
88 | */ | |
89 | function default_colors_format_css_rule($data, $parameter) | |
90 | { | |
91 | if (empty($data[$parameter])) { | |
92 | return ''; | |
93 | } | |
94 | ||
95 | $key = str_replace('DEFAULT_COLORS_', '', $parameter); | |
96 | $key = str_replace('_', '-', strtolower($key)) .'-color'; | |
97 | return ' --'. $key .': '. $data[$parameter]; | |
98 | } | |
99 | ||
100 | ||
a5a0c039 A |
101 | /** |
102 | * This function is never called, but contains translation calls for GNU gettext extraction. | |
103 | */ | |
104 | function default_colors_translation() | |
105 | { | |
106 | // meta | |
107 | t('Override default theme colors. Use any CSS valid color.'); | |
108 | t('Main color (navbar green)'); | |
109 | t('Background color (light grey)'); | |
110 | t('Dark main color (e.g. visited links)'); | |
111 | } |