From 70747b96a3d985402d572f84cf1845607a31a87d Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Wed, 05 Sep 2012 08:37:35 -0400
Subject: [PATCH] - Changed compatibility of extended (old) default themes - Implemented immediate change of theme on selection - Fixed error message on incompatible theme

---
 interface/web/tools/interface_settings.php          |   34 +++++++++++++++++++++++++++++++++-
 interface/web/themes/default_no_navimg/ISPC_VERSION |    2 +-
 interface/web/dashboard/dashboard.php               |    4 ++--
 interface/web/themes/default_combobox/ISPC_VERSION  |    2 +-
 interface/web/themes/default_64_navimg/ISPC_VERSION |    2 +-
 5 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php
index f744f8d..daf2356 100644
--- a/interface/web/dashboard/dashboard.php
+++ b/interface/web/dashboard/dashboard.php
@@ -94,11 +94,11 @@
 $info = array();
 
 if(isset($_SESSION['show_info_msg'])) {
-    $info[] = array('info_msg' => $_SESSION['show_info_msg']);
+    $info[] = array('info_msg' => '<p>'.$_SESSION['show_info_msg'].'</p>');
     unset($_SESSION['show_info_msg']);
 }
 if(isset($_SESSION['show_error_msg'])) {
-    $app->tpl->setloop('error', array(array('error_msg' => $_SESSION['show_error_msg'])));
+    $app->tpl->setloop('error', array(array('error_msg' => '<p>'.$_SESSION['show_error_msg'].'</p>')));
     unset($_SESSION['show_error_msg']);
 }
 
diff --git a/interface/web/themes/default_64_navimg/ISPC_VERSION b/interface/web/themes/default_64_navimg/ISPC_VERSION
index 7da3c16..bb19ac3 100644
--- a/interface/web/themes/default_64_navimg/ISPC_VERSION
+++ b/interface/web/themes/default_64_navimg/ISPC_VERSION
@@ -1 +1 @@
-3.0.5
\ No newline at end of file
+3.0.4.6
\ No newline at end of file
diff --git a/interface/web/themes/default_combobox/ISPC_VERSION b/interface/web/themes/default_combobox/ISPC_VERSION
index 7da3c16..bb19ac3 100644
--- a/interface/web/themes/default_combobox/ISPC_VERSION
+++ b/interface/web/themes/default_combobox/ISPC_VERSION
@@ -1 +1 @@
-3.0.5
\ No newline at end of file
+3.0.4.6
\ No newline at end of file
diff --git a/interface/web/themes/default_no_navimg/ISPC_VERSION b/interface/web/themes/default_no_navimg/ISPC_VERSION
index 7da3c16..bb19ac3 100644
--- a/interface/web/themes/default_no_navimg/ISPC_VERSION
+++ b/interface/web/themes/default_no_navimg/ISPC_VERSION
@@ -1 +1 @@
-3.0.5
\ No newline at end of file
+3.0.4.6
\ No newline at end of file
diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php
index 1ec67c5..0744c73 100644
--- a/interface/web/tools/interface_settings.php
+++ b/interface/web/tools/interface_settings.php
@@ -49,7 +49,8 @@
 $app->load('tform_actions');
 
 class page_action extends tform_actions {
-	
+	var $_theme_changed = false;
+    
 	function onLoad() {
                 global $app, $conf, $tform_def_file;
 
@@ -80,6 +81,7 @@
 		if(!in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
 			$app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
 		}
+        $this->updateSessionTheme();
 	}
         
 	function onInsert() {
@@ -94,8 +96,38 @@
                 if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
 			$app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
 		}
+        $this->updateSessionTheme();
 	}
+    
+    function updateSessionTheme() {
+        global $app, $conf;
+        
+        if($this->dataRecord['app_theme'] != 'default') {
+            $tmp_path = ISPC_THEMES_PATH."/".$this->dataRecord['app_theme'];
+            if(!@is_dir($tmp_path) || !@file_exists($tmp_path."/ISPC_VERSION") || trim(file_get_contents($tmp_path."/ISPC_VERSION")) != ISPC_APP_VERSION) {
+                // fall back to default theme if this one is not compatible with current ispc version
+                $this->dataRecord['app_theme'] = 'default';
+            }
+        }
+        if($this->dataRecord['app_theme'] != $_SESSION['s']['user']['theme']) $this->_theme_changed = true;
+        $_SESSION['s']['theme'] = $this->dataRecord['app_theme'];
+        $_SESSION['s']['user']['theme'] = $_SESSION['s']['theme'];
+        $_SESSION['s']['user']['app_theme'] = $_SESSION['s']['theme'];
+    }
 	
+    function onAfterInsert() {
+        $this->onAfterUpdate();
+    }
+    function onAfterUpdate() {
+        if($this->_theme_changed == true) {
+            // not the best way, but it works
+            header('Content-Type: text/html');
+            print '<script type="text/javascript">document.location.reload();</script>';
+            exit;
+        }
+        else parent::onShow();
+    }
+    
 	
 }
 

--
Gitblit v1.9.1