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 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
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