diff --git a/.gitignore b/.gitignore index 09fccffa597be4f8dd6048aafc56f4a5b947484c..97ba8f64f4985484879ce12c1e904030d7eefa00 100644 --- a/.gitignore +++ b/.gitignore @@ -4,12 +4,12 @@ #* .idea/* plugins.local/* +themes.local/* config.php feed-icons/* cache/*/* lock/* tags -plugins/fever cache/htmlpurifier/*/*ser lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/*/*ser web.config diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index 096260bfb5a595092a407b46d83d4e69809d152a..bc7d9212f233faf9e02a838a4fd1d8b520f8f41d 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -570,8 +570,10 @@ class Pref_Prefs extends Handler_Protected { } else if ($pref_name == "USER_CSS_THEME") { - $themes = array_filter(array_map("basename", glob("themes/*.css")), - "theme_valid"); + $themes = array_merge(glob("themes/*.css"), glob("themes.local/*.css")); + $themes = array_map("basename", $themes); + $themes = array_filter($themes, "theme_valid"); + asort($themes); print_select($pref_name, $value, $themes, 'dojoType="dijit.form.Select"'); diff --git a/include/functions2.php b/include/functions2.php index 4f8a0523ba37cfddeffb37d98ce45f65cf297ce7..314c128739425f88e41fa81f1b124f61b85747e9 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -2444,9 +2444,19 @@ return LABEL_BASE_INDEX - 1 + abs($feed); } - function theme_valid($file) { - if ($file == "default.css" || $file == "night.css") return true; // needed for array_filter - $file = "themes/" . basename($file); + function get_theme_path($theme) { + $check = "themes/$theme"; + if (file_exists($check)) return $check; + + $check = "themes.local/$theme"; + if (file_exists($check)) return $check; + } + + function theme_valid($theme) { + if ($theme == "default.css" || $theme == "night.css") return true; // needed for array_filter + $file = "themes/" . basename($theme); + + if (!file_exists($file)) $file = "themes.local/" . basename($theme); if (file_exists($file) && is_readable($file)) { $fh = fopen($file, "r"); diff --git a/index.php b/index.php index 360a6dc193632aafb7df0a86921ee77e9fa580be..f7ff97c688ed8b354ede05ef0c292eecf85955ee 100644 --- a/index.php +++ b/index.php @@ -66,7 +66,7 @@ <?php if ($_SESSION["uid"]) { $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false); if ($theme && theme_valid("$theme")) { - echo stylesheet_tag("themes/$theme"); + echo stylesheet_tag(get_theme_path($theme)); } else { echo stylesheet_tag("themes/default.css"); } diff --git a/prefs.php b/prefs.php index 191f452c4e11cad86e0639cbe238ef45447244e6..b20678abebdc577501403a01af7ef5553861e991 100644 --- a/prefs.php +++ b/prefs.php @@ -42,7 +42,7 @@ <?php if ($_SESSION["uid"]) { $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false); if ($theme && theme_valid("$theme")) { - echo stylesheet_tag("themes/$theme"); + echo stylesheet_tag(get_theme_path($theme)); } else { echo stylesheet_tag("themes/default.css"); } diff --git a/themes.local/.empty b/themes.local/.empty new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391