summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-13 22:27:22 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-13 22:27:22 +0100
commitf720d41cbfb18edc1b0a694a7213682b96befa1f (patch)
tree82d8529c281639c9c02dc04f037bf719fa0576c0 /app
parent7516549f60462a7bb7d5998300491df9d7e5fe82 (diff)
Mise à jour nom thèmes + chargement robuste des thèmes
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
Diffstat (limited to 'app')
-rwxr-xr-xapp/Controllers/configureController.php6
-rw-r--r--app/FreshRSS.php5
-rw-r--r--app/Models/Configuration.php2
-rw-r--r--app/Models/Themes.php28
-rw-r--r--app/views/configure/display.phtml5
5 files changed, 34 insertions, 12 deletions
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 @@
<div class="form-group">
<label class="group-name" for="theme"><?php echo Minz_Translate::t ('theme'); ?></label>
<div class="group-controls">
- <select name="theme" id="theme">
+ <select name="theme" id="theme" required="">
+ <option></option>
<?php foreach ($this->themes as $theme) { ?>
- <option value="<?php echo $theme['path']; ?>"<?php echo $this->conf->theme === $theme['path'] ? ' selected="selected"' : ''; ?>>
+ <option value="<?php echo $theme['id']; ?>"<?php echo $this->conf->theme === $theme['id'] ? ' selected="selected"' : ''; ?>>
<?php echo $theme['name'] . ' — ' . Minz_Translate::t ('by') . ' ' . $theme['author']; ?>
</option>
<?php } ?>