From 06edfd868603bb622ec17d609214f4b680f8e011 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Thu, 29 Nov 2012 09:04:14 -0500
Subject: [PATCH] - Added options to disable combobox and load indicator in Interface Config (default is on). - Bugfix: sys.ini and server.ini: if checkbox is not checked, write default value from tform file into database.

---
 interface/web/admin/lib/lang/en_system_config.lng         |    1 
 install/tpl/system.ini.master                             |    4 +
 interface/web/admin/lib/lang/de_system_config.lng         |    2 
 interface/web/sites/ajax_get_json.php                     |   20 ++++++
 interface/web/admin/server_config_edit.php                |   10 +++
 interface/web/admin/system_config_edit.php                |   10 +++
 interface/web/admin/form/system_config.tform.php          |   12 ++++
 interface/web/admin/templates/system_config_misc_edit.htm |   12 ++++
 interface/web/js/scrigo.js.php                            |   60 ++++++++++++--------
 9 files changed, 107 insertions(+), 24 deletions(-)

diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index f72bf4d..3aefb78 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -34,4 +34,8 @@
 dashboard_atom_url_reseller=http://www.ispconfig.org/atom
 dashboard_atom_url_client=http://www.ispconfig.org/atom
 monitor_key=
+tab_change_discard=n
+tab_change_warning=n
+use_loadindicator=y
+use_combobox=y
 maintenance_mode=n
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 7020ee2..faac1f7 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -384,6 +384,18 @@
 			'default'	=> 'n',
 			'value'		=> array(0 => 'n',1 => 'y')
 		),
+		'use_loadindicator' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'CHECKBOX',
+			'default'	=> 'y',
+			'value'		=> array(0 => 'n',1 => 'y')
+		),
+		'use_combobox' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'CHECKBOX',
+			'default'	=> 'y',
+			'value'		=> array(0 => 'n',1 => 'y')
+		),
 		'maintenance_mode' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index e9c854b..cf517a7 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -41,4 +41,6 @@
 $wb['smtp_user_txt'] = 'SMTP Benutzer';
 $wb['smtp_pass_txt'] = 'SMTP Passwort';
 $wb['smtp_crypt_txt'] = 'SSL/TLS verschlüsselte Verbindung für SMTP';
+$wb['use_combobox_txt'] = 'jQuery UI Combobox benutzen';
+$wb['use_loadindicator_txt'] = 'Laden-Grafik anzeigen';
 ?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 6957bc5..dd2dc3c 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -42,4 +42,5 @@
 $wb['smtp_pass_txt'] = 'SMTP password';
 $wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
 $wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
+$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
 ?>
diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php
index c034da1..2ebf0a1 100644
--- a/interface/web/admin/server_config_edit.php
+++ b/interface/web/admin/server_config_edit.php
@@ -81,6 +81,16 @@
 			$server_id = $this->id;
 		
 			$server_config_array = $app->getconf->get_server_config($server_id);
+			
+			foreach($app->tform->formDef['tabs'][$section]['fields'] as $key => $field) {
+				if ($field['formtype'] == 'CHECKBOX') {
+					if($this->dataRecord[$key] == '') {
+						// if a checkbox is not set, we set it to the unchecked value
+						$this->dataRecord[$key] = $field['value'][0];
+					}
+				}
+			}
+		
 			$server_config_array[$section] = $app->tform->encode($this->dataRecord,$section);
 			$server_config_str = $app->ini_parser->get_ini_string($server_config_array);
 		
diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php
index 0a75028..2eb513d 100644
--- a/interface/web/admin/system_config_edit.php
+++ b/interface/web/admin/system_config_edit.php
@@ -105,6 +105,16 @@
 		$section = $app->tform->getCurrentTab();
 		
 		$server_config_array = $app->getconf->get_global_config();
+		
+		foreach($app->tform->formDef['tabs'][$section]['fields'] as $key => $field) {
+			if ($field['formtype'] == 'CHECKBOX') {
+				if($this->dataRecord[$key] == '') {
+					// if a checkbox is not set, we set it to the unchecked value
+					$this->dataRecord[$key] = $field['value'][0];
+				}
+			}
+		}
+
 		$new_config = $app->tform->encode($this->dataRecord,$section);
         if($section == 'sites' && $new_config['vhost_subdomains'] != 'y' && $server_config_array['vhost_subdomains'] == 'y') {
             // check for existing vhost subdomains, if found the mode cannot be disabled
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 3bdd72e..cb564fe 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -33,6 +33,18 @@
                     {tmpl_var name='tab_change_warning'}<br/>{tmpl_var name='tab_change_warning_note_txt'}
                 </div>
             </div>
+			<div class="ctrlHolder">
+                <p class="label">{tmpl_var name='use_loadindicator_txt'}</p>
+                <div class="multiField">
+                    {tmpl_var name='use_loadindicator'}
+                </div>
+            </div>
+			<div class="ctrlHolder">
+                <p class="label">{tmpl_var name='use_combobox_txt'}</p>
+                <div class="multiField">
+                    {tmpl_var name='use_combobox'}
+                </div>
+            </div>
             <div class="ctrlHolder">
                 <p class="label">{tmpl_var name='maintenance_mode_txt'}</p>
                 <div class="multiField">
diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index 1051905..ab31522 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -24,38 +24,50 @@
 }
 
 function showLoadIndicator() {
-    requestsRunning += 1;
+	jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {type : "get_use_loadindicator"}, function(data) {
+        if(data.useloadindicator == "y"){
+            requestsRunning += 1;
     
-    if(requestsRunning < 2) {
-        var indicator = jQuery('#ajaxloader');
-        if(indicator.length < 1) {
-            indicator = jQuery('<div id="ajaxloader" style="display: none;"></div>');
-            indicator.appendTo('body');
-        }
-        var parent = jQuery('#content');
-        if(parent.length < 1) return;
-        indicatorCompleted = false;
+			if(requestsRunning < 2) {
+				var indicator = jQuery('#ajaxloader');
+				if(indicator.length < 1) {
+					indicator = jQuery('<div id="ajaxloader" style="display: none;"></div>');
+					indicator.appendTo('body');
+				}
+				var parent = jQuery('#content');
+				if(parent.length < 1) return;
+				indicatorCompleted = false;
         
-        var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2);
-        var aty = parent.offset().top + 150;
-        indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast', function() {
-            // check if loader should be hidden immediately
-            indicatorCompleted = true;
-            if(requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();});
-        });
-    }
+				var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2);
+				var aty = parent.offset().top + 150;
+				indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast', function() {
+					// check if loader should be hidden immediately
+					indicatorCompleted = true;
+					if(requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();});
+				});
+			}
+        }
+    });
 }
 
 function hideLoadIndicator() {
-    requestsRunning -= 1;
-    if(requestsRunning < 1) {
-        requestsRunning = 0; // just for the case...
-        if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } );
-    }
+	jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {type : "get_use_loadindicator"}, function(data) {
+        if(data.useloadindicator == "y"){
+            requestsRunning -= 1;
+			if(requestsRunning < 1) {
+				requestsRunning = 0; // just for the case...
+				if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } );
+			}
+        }
+    });
 }
 
 function onAfterContentLoad() {
-    $('#pageContent').find("select").combobox();
+	jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {type : "get_use_combobox"}, function(data) {
+        if(data.usecombobox == "y"){
+            $('#pageContent').find("select").combobox();
+        }
+    });
 }
 
 function loadContentRefresh(pagename) {
diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php
index 1194596..f7bbc71 100644
--- a/interface/web/sites/ajax_get_json.php
+++ b/interface/web/sites/ajax_get_json.php
@@ -148,6 +148,26 @@
         if(substr($json,-1) == ',') $json = substr($json,0,-1);
 		$json .= '}';
     }
+	
+	if($type == 'get_use_combobox'){
+		$json = '{"usecombobox":"';
+		$use_combobox = 'y';
+		$server_config_array = $app->getconf->get_global_config();
+		if($server_config_array['misc']['use_combobox'] != 'y') $use_combobox = 'n';
+		$json .= $use_combobox;
+		unset($server_config_array);
+		$json .= '"}';
+	}
+	
+	if($type == 'get_use_loadindicator'){
+		$json = '{"useloadindicator":"';
+		$use_loadindicator = 'y';
+		$server_config_array = $app->getconf->get_global_config();
+		if($server_config_array['misc']['use_loadindicator'] != 'y') $use_loadindicator = 'n';
+		$json .= $use_loadindicator;
+		unset($server_config_array);
+		$json .= '"}';
+	}
 
 //}
 

--
Gitblit v1.9.1