From f720d41cbfb18edc1b0a694a7213682b96befa1f Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 13 Jan 2014 22:27:22 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20nom=20th=C3=A8mes=20+=20?= =?UTF-8?q?chargement=20robuste=20des=20th=C3=A8mes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renomme : default -> Origine En cas de thème introuvable, charge le thème par défaut, sinon le premier disponible. https://github.com/marienfressinaud/FreshRSS/issues/120 --- app/Controllers/configureController.php | 6 +++- app/FreshRSS.php | 5 ++-- app/Models/Configuration.php | 2 +- app/Models/Themes.php | 28 ++++++++++++++---- app/views/configure/display.phtml | 5 ++-- p/themes/{default_dark => Dark}/freshrss.css | 0 p/themes/{default_dark => Dark}/global.css | 0 p/themes/{default_dark => Dark}/loader.gif | Bin p/themes/Dark/metadata.json | 7 +++++ p/themes/{flat-design => Flat}/freshrss.css | 0 p/themes/{flat-design => Flat}/global.css | 0 p/themes/{flat-design => Flat}/icons/add.svg | 0 p/themes/{flat-design => Flat}/icons/all.svg | 0 .../{flat-design => Flat}/icons/close.svg | 0 .../{flat-design => Flat}/icons/configure.svg | 0 p/themes/{flat-design => Flat}/icons/down.svg | 0 p/themes/{flat-design => Flat}/icons/next.svg | 0 p/themes/{flat-design => Flat}/icons/prev.svg | 0 .../{flat-design => Flat}/icons/refresh.svg | 0 .../{flat-design => Flat}/icons/search.svg | 0 p/themes/{flat-design => Flat}/icons/up.svg | 0 p/themes/{flat-design => Flat}/loader.gif | Bin p/themes/{flat-design => Flat}/metadata.json | 0 p/themes/{default => Origine}/freshrss.css | 0 p/themes/{default => Origine}/global.css | 0 p/themes/{default => Origine}/loader.gif | Bin p/themes/{default => Origine}/metadata.json | 2 +- p/themes/default_dark/metadata.json | 7 ----- 28 files changed, 42 insertions(+), 20 deletions(-) rename p/themes/{default_dark => Dark}/freshrss.css (100%) rename p/themes/{default_dark => Dark}/global.css (100%) rename p/themes/{default_dark => Dark}/loader.gif (100%) create mode 100644 p/themes/Dark/metadata.json rename p/themes/{flat-design => Flat}/freshrss.css (100%) rename p/themes/{flat-design => Flat}/global.css (100%) rename p/themes/{flat-design => Flat}/icons/add.svg (100%) rename p/themes/{flat-design => Flat}/icons/all.svg (100%) rename p/themes/{flat-design => Flat}/icons/close.svg (100%) rename p/themes/{flat-design => Flat}/icons/configure.svg (100%) rename p/themes/{flat-design => Flat}/icons/down.svg (100%) rename p/themes/{flat-design => Flat}/icons/next.svg (100%) rename p/themes/{flat-design => Flat}/icons/prev.svg (100%) rename p/themes/{flat-design => Flat}/icons/refresh.svg (100%) rename p/themes/{flat-design => Flat}/icons/search.svg (100%) rename p/themes/{flat-design => Flat}/icons/up.svg (100%) rename p/themes/{flat-design => Flat}/loader.gif (100%) rename p/themes/{flat-design => Flat}/metadata.json (100%) rename p/themes/{default => Origine}/freshrss.css (100%) rename p/themes/{default => Origine}/global.css (100%) rename p/themes/{default => Origine}/loader.gif (100%) rename p/themes/{default => Origine}/metadata.json (87%) delete mode 100644 p/themes/default_dark/metadata.json diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index 5b5770cbe..70144a8db 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -157,7 +157,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController { 'scroll' => Minz_Request::param('mark_scroll', false), 'reception' => Minz_Request::param('mark_upon_reception', false), )); - $this->view->conf->_theme(Minz_Request::param('theme', 'default')); + $themeId = Minz_Request::param('theme', ''); + if ($themeId == '') { + $themeId = FreshRSS_Themes::defaultTheme; + } + $this->view->conf->_theme($themeId); $this->view->conf->_topline_read(Minz_Request::param('topline_read', false)); $this->view->conf->_topline_favorite(Minz_Request::param('topline_favorite', false)); $this->view->conf->_topline_date(Minz_Request::param('topline_date', false)); diff --git a/app/FreshRSS.php b/app/FreshRSS.php index e64a1986b..52f34c6e2 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -114,11 +114,10 @@ class FreshRSS extends Minz_FrontController { } private function loadStylesAndScripts ($loginOk) { - $theme = FreshRSS_Themes::get_infos($this->conf->theme); + $theme = FreshRSS_Themes::load($this->conf->theme); if ($theme) { - FreshRSS_Themes::setThemeId($this->conf->theme); foreach($theme['files'] as $file) { - Minz_View::appendStyle (Minz_Url::display ('/themes/' . $theme['path'] . '/' . $file . '?' . @filemtime(PUBLIC_PATH . '/themes/' . $theme['path'] . '/' . $file))); + Minz_View::appendStyle (Minz_Url::display ('/themes/' . $theme['id'] . '/' . $file . '?' . @filemtime(PUBLIC_PATH . '/themes/' . $theme['path'] . '/' . $file))); } } diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 8f394737a..f3fb76e72 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -25,7 +25,7 @@ class FreshRSS_Configuration { 'scroll' => false, 'reception' => false, ), - 'theme' => 'default', + 'theme' => 'Origine', 'shortcuts' => array( 'mark_read' => 'r', 'mark_favorite' => 'f', diff --git a/app/Models/Themes.php b/app/Models/Themes.php index a52812339..c7099a1df 100644 --- a/app/Models/Themes.php +++ b/app/Models/Themes.php @@ -3,13 +3,17 @@ class FreshRSS_Themes extends Minz_Model { private static $themesUrl = '/themes/'; private static $defaultIconsUrl = '/themes/icons/'; + public static $defaultTheme = 'Origine'; - public static function get() { - $themes_list = array_diff( + public static function getList() { + return array_values(array_diff( scandir(PUBLIC_PATH . self::$themesUrl), array('..', '.') - ); + )); + } + public static function get() { + $themes_list = self::getList(); $list = array(); foreach ($themes_list as $theme_dir) { $theme = self::get_infos($theme_dir); @@ -28,7 +32,7 @@ class FreshRSS_Themes extends Minz_Model { $content = file_get_contents($json_filename); $res = json_decode($content, true); if ($res && isset($res['files']) && is_array($res['files'])) { - $res['path'] = $theme_id; + $res['id'] = $theme_id; return $res; } } @@ -39,12 +43,26 @@ class FreshRSS_Themes extends Minz_Model { private static $themeIconsUrl; private static $themeIcons; - public static function setThemeId($theme_id) { + public static function load($theme_id) { + $infos = self::get_infos($theme_id); + if (!$infos) { + if ($theme_id !== self::$defaultTheme) { //Fall-back to default theme + return self::load(self::$defaultTheme); + } + $themes_list = self::getList(); + if (!empty($themes_list)) { + if ($theme_id !== $themes_list[0]) { //Fall-back to first theme + return self::load($themes_list[0]); + } + } + return false; + } self::$themeIconsUrl = self::$themesUrl . $theme_id . '/icons/'; self::$themeIcons = is_dir(PUBLIC_PATH . self::$themeIconsUrl) ? array_fill_keys(array_diff( scandir(PUBLIC_PATH . self::$themeIconsUrl), array('..', '.') ), 1) : array(); + return $infos; } public static function icon($name, $urlOnly = false) { diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 3cc5442fb..725356c8d 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -21,9 +21,10 @@
- + themes as $theme) { ?> - diff --git a/p/themes/default_dark/freshrss.css b/p/themes/Dark/freshrss.css similarity index 100% rename from p/themes/default_dark/freshrss.css rename to p/themes/Dark/freshrss.css diff --git a/p/themes/default_dark/global.css b/p/themes/Dark/global.css similarity index 100% rename from p/themes/default_dark/global.css rename to p/themes/Dark/global.css diff --git a/p/themes/default_dark/loader.gif b/p/themes/Dark/loader.gif similarity index 100% rename from p/themes/default_dark/loader.gif rename to p/themes/Dark/loader.gif diff --git a/p/themes/Dark/metadata.json b/p/themes/Dark/metadata.json new file mode 100644 index 000000000..27cae27df --- /dev/null +++ b/p/themes/Dark/metadata.json @@ -0,0 +1,7 @@ +{ + "name": "Dark", + "author": "AD", + "description": "Le coté obscur du thème “Origine”", + "version": 0.1, + "files": ["global.css", "freshrss.css"] +} diff --git a/p/themes/flat-design/freshrss.css b/p/themes/Flat/freshrss.css similarity index 100% rename from p/themes/flat-design/freshrss.css rename to p/themes/Flat/freshrss.css diff --git a/p/themes/flat-design/global.css b/p/themes/Flat/global.css similarity index 100% rename from p/themes/flat-design/global.css rename to p/themes/Flat/global.css diff --git a/p/themes/flat-design/icons/add.svg b/p/themes/Flat/icons/add.svg similarity index 100% rename from p/themes/flat-design/icons/add.svg rename to p/themes/Flat/icons/add.svg diff --git a/p/themes/flat-design/icons/all.svg b/p/themes/Flat/icons/all.svg similarity index 100% rename from p/themes/flat-design/icons/all.svg rename to p/themes/Flat/icons/all.svg diff --git a/p/themes/flat-design/icons/close.svg b/p/themes/Flat/icons/close.svg similarity index 100% rename from p/themes/flat-design/icons/close.svg rename to p/themes/Flat/icons/close.svg diff --git a/p/themes/flat-design/icons/configure.svg b/p/themes/Flat/icons/configure.svg similarity index 100% rename from p/themes/flat-design/icons/configure.svg rename to p/themes/Flat/icons/configure.svg diff --git a/p/themes/flat-design/icons/down.svg b/p/themes/Flat/icons/down.svg similarity index 100% rename from p/themes/flat-design/icons/down.svg rename to p/themes/Flat/icons/down.svg diff --git a/p/themes/flat-design/icons/next.svg b/p/themes/Flat/icons/next.svg similarity index 100% rename from p/themes/flat-design/icons/next.svg rename to p/themes/Flat/icons/next.svg diff --git a/p/themes/flat-design/icons/prev.svg b/p/themes/Flat/icons/prev.svg similarity index 100% rename from p/themes/flat-design/icons/prev.svg rename to p/themes/Flat/icons/prev.svg diff --git a/p/themes/flat-design/icons/refresh.svg b/p/themes/Flat/icons/refresh.svg similarity index 100% rename from p/themes/flat-design/icons/refresh.svg rename to p/themes/Flat/icons/refresh.svg diff --git a/p/themes/flat-design/icons/search.svg b/p/themes/Flat/icons/search.svg similarity index 100% rename from p/themes/flat-design/icons/search.svg rename to p/themes/Flat/icons/search.svg diff --git a/p/themes/flat-design/icons/up.svg b/p/themes/Flat/icons/up.svg similarity index 100% rename from p/themes/flat-design/icons/up.svg rename to p/themes/Flat/icons/up.svg diff --git a/p/themes/flat-design/loader.gif b/p/themes/Flat/loader.gif similarity index 100% rename from p/themes/flat-design/loader.gif rename to p/themes/Flat/loader.gif diff --git a/p/themes/flat-design/metadata.json b/p/themes/Flat/metadata.json similarity index 100% rename from p/themes/flat-design/metadata.json rename to p/themes/Flat/metadata.json diff --git a/p/themes/default/freshrss.css b/p/themes/Origine/freshrss.css similarity index 100% rename from p/themes/default/freshrss.css rename to p/themes/Origine/freshrss.css diff --git a/p/themes/default/global.css b/p/themes/Origine/global.css similarity index 100% rename from p/themes/default/global.css rename to p/themes/Origine/global.css diff --git a/p/themes/default/loader.gif b/p/themes/Origine/loader.gif similarity index 100% rename from p/themes/default/loader.gif rename to p/themes/Origine/loader.gif diff --git a/p/themes/default/metadata.json b/p/themes/Origine/metadata.json similarity index 87% rename from p/themes/default/metadata.json rename to p/themes/Origine/metadata.json index d316ec517..f93dcbc3f 100644 --- a/p/themes/default/metadata.json +++ b/p/themes/Origine/metadata.json @@ -1,5 +1,5 @@ { - "name": "Default", + "name": "Origine", "author": "Marien Fressinaud", "description": "Le thème par défaut pour FreshRSS", "version": 0.1, diff --git a/p/themes/default_dark/metadata.json b/p/themes/default_dark/metadata.json deleted file mode 100644 index 7504831a6..000000000 --- a/p/themes/default_dark/metadata.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Dark", - "author": "AD", - "description": "Le coté obscur du thème par défaut pour FreshRSS", - "version": 0.1, - "files": ["global.css", "freshrss.css"] -}