Browse Source

support loading themes from themes.local

Andrew Dolgov 3 years ago
parent
commit
b9634eb8b8
6 changed files with 20 additions and 8 deletions
  1. 1 1
      .gitignore
  2. 4 2
      classes/pref/prefs.php
  3. 13 3
      include/functions2.php
  4. 1 1
      index.php
  5. 1 1
      prefs.php
  6. 0 0
      themes.local/.empty

+ 1 - 1
.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

+ 4 - 2
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"');

+ 13 - 3
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");

+ 1 - 1
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");
 		}

+ 1 - 1
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");
 		}

+ 0 - 0
themes.local/.empty