mcramer
2012-10-30 c4485fa99cee7c12be528ff44d5f255a7f09df77
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() {
@@ -90,15 +92,42 @@
      global $app, $conf;
      
      if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.';
      $_SESSION['s']['user']['language'] = $_POST['language'];
      $_SESSION['s']['language'] = $_POST['language'];
                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."/ispconfig_version") && trim(file_get_contents($tmp_path."/ispconfig_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();
    }
   
}