Browse Source

Fix issue #165: @import CSS enlevés

Implique une modification des fichiers metadata.json pour les thèmes :
ajout d'un champ "files" répertoriant les fichiers CSS à utiliser
Marien Fressinaud 12 years ago
parent
commit
879e9fcd76

+ 9 - 5
app/App_FrontController.php

@@ -10,13 +10,13 @@ class App_FrontController extends FrontController {
 		$this->loadLibs ();
 		$this->loadModels ();
 
-		Session::init (); // lancement de la session doit se faire après chargement des modèles sinon bug (pourquoi ?)
+		Session::init ();
+		RSSThemes::init ();
+		Translate::init ();
 
 		$this->loadParamsView ();
 		$this->loadStylesAndScripts ();
 		$this->loadNotifications ();
-
-		Translate::init ();
 	}
 
 	private function loadLibs () {
@@ -51,8 +51,12 @@ class App_FrontController extends FrontController {
 	}
 
 	private function loadStylesAndScripts () {
-		$theme = $this->conf->theme();
-		View::appendStyle (Url::display ('/themes/' . $theme . '/style.css'));
+		$theme = RSSThemes::get_infos($this->conf->theme());
+		if ($theme) {
+			foreach($theme["files"] as $file) {
+				View::appendStyle (Url::display ('/themes/' . $theme['path'] . '/' . $file));
+			}
+		}
 		View::appendStyle (Url::display ('/themes/printer/style.css'), 'print');
 		if (login_is_conf ($this->conf)) {
 			View::appendScript ('https://login.persona.org/include.js');

+ 0 - 2
app/controllers/configureController.php

@@ -147,8 +147,6 @@ class configureController extends ActionController {
 	}
 
 	public function displayAction () {
-		RSSThemes::init();
-
 		if (Request::isPost ()) {
 			$current_token = $this->view->conf->token ();
 

+ 11 - 2
app/models/RSSThemes.php

@@ -23,10 +23,11 @@ class RSSThemes extends Model {
 					isset($res['name']) &&
 					isset($res['author']) &&
 					isset($res['description']) &&
-					isset($res['version'])) {
+					isset($res['version']) &&
+					isset($res['files']) && is_array($res['files'])) {
 					$theme = $res;
 					$theme['path'] = $theme_dir;
-					self::$list[] = $theme;
+					self::$list[$theme_dir] = $theme;
 				}
 			}
 		}
@@ -35,4 +36,12 @@ class RSSThemes extends Model {
 	public static function get() {
 		return self::$list;
 	}
+
+	public static function get_infos($theme_id) {
+		if (isset(self::$list[$theme_id])) {
+			return self::$list[$theme_id];
+		}
+
+		return false;
+	}
 }

+ 2 - 1
public/themes/default/metadata.json

@@ -2,5 +2,6 @@
   "name": "Default",
   "author": "Marien Fressinaud",
   "description": "Le thème par défaut pour FreshRSS",
-  "version": 0.1
+  "version": 0.1,
+  "files": ["global.css", "freshrss.css", "fallback.css"]
 }

+ 0 - 3
public/themes/default/style.css

@@ -1,3 +0,0 @@
-@import url('global.css');
-@import url('freshrss.css');
-@import url('fallback.css');

+ 2 - 1
public/themes/flat-design/metadata.json

@@ -2,5 +2,6 @@
   "name": "Flat design",
   "author": "Marien Fressinaud",
   "description": "Thème plat pour FreshRSS",
-  "version": 0.1
+  "version": 0.1,
+  "files": ["global.css", "freshrss.css"]
 }

+ 0 - 2
public/themes/flat-design/style.css

@@ -1,2 +0,0 @@
-@import url('global.css');
-@import url('freshrss.css');