Browse Source

#31 - Dashboard, dynamic blocks.

AntonLV 12 years ago
parent
commit
6edf4d031c

+ 27 - 25
inc/classes/BxDolCacheUtilities.php

@@ -11,18 +11,9 @@
 
 
 class BxDolCacheUtilities extends BxDol
 class BxDolCacheUtilities extends BxDol
 {
 {
-    protected $oCacheDb;
-    protected $oCacheTemplates;
-
     function __construct ()
     function __construct ()
     {
     {
         parent::__construct();
         parent::__construct();
-
-        // DB
-        $this->oCacheDb = BxDolDb::getInstance()->getDbCacheObject();
-
-        // templates
-        $this->oCacheTemplates = BxDolTemplate::getInstance()->getTemplatesCacheObject();
     }
     }
 
 
 	/**
 	/**
@@ -49,27 +40,38 @@ class BxDolCacheUtilities extends BxDol
 
 
     protected function _action($sCache, $sMode = 'clear')
     protected function _action($sCache, $sMode = 'clear')
     {
     {
-        $sFuncCacheObject = $sMode == 'clear' ? '_clearCacheObject' : '_getSizeCacheObject';
-        $sFuncCacheFile = $sMode == 'clear' ? '_clearCache' : '_getSizeCache';
+        $sFuncCacheObject = $sMode == 'clear' ? '_clearObject' : '_getSizeObject';
+        $sFuncCacheFile = $sMode == 'clear' ? '_clearFile' : '_getSizeFile';
 
 
+        $mixedResult = false;
         switch ($sCache) {
         switch ($sCache) {
-            case 'users':
-                $mixedResult = $this->$sFuncCacheFile('user', BX_DIRECTORY_PATH_CACHE);
-                break;
-
             case 'db':
             case 'db':
-                $mixedResult = $this->$sFuncCacheObject ($this->oCacheDb, 'db_');
+            	if(getParam('sys_db_cache_enable') != 'on')
+					break;
+
+				$oCacheDb = BxDolDb::getInstance()->getDbCacheObject();
+                $mixedResult = $this->$sFuncCacheObject($oCacheDb, 'db_');
                 break;
                 break;
 
 
             case 'template':
             case 'template':
-                $mixedResult = $this->$sFuncCacheObject ($this->oCacheTemplates, BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache));
+				if(getParam('sys_template_cache_enable') != 'on') 
+					break;
+
+				$oCacheTemplates = BxDolTemplate::getInstance()->getTemplatesCacheObject();
+                $mixedResult = $this->$sFuncCacheObject($oCacheTemplates, BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache));
                 break;
                 break;
 
 
             case 'css':
             case 'css':
+            	if(getParam('sys_template_cache_css_enable') != 'on')
+            		break;
+
                 $mixedResult = $this->$sFuncCacheFile(BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache), BX_DIRECTORY_PATH_CACHE_PUBLIC);
                 $mixedResult = $this->$sFuncCacheFile(BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache), BX_DIRECTORY_PATH_CACHE_PUBLIC);
                 break;
                 break;
 
 
             case 'js':
             case 'js':
+            	if(getParam('sys_template_cache_js_enable') != 'on')
+            		break;
+
                 $mixedResult = $this->$sFuncCacheFile(BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache), BX_DIRECTORY_PATH_CACHE_PUBLIC);
                 $mixedResult = $this->$sFuncCacheFile(BxDolStudioTemplate::getInstance()->getCacheFilePrefix($sCache), BX_DIRECTORY_PATH_CACHE_PUBLIC);
                 break;
                 break;
         }
         }
@@ -77,7 +79,7 @@ class BxDolCacheUtilities extends BxDol
         return $mixedResult;
         return $mixedResult;
     }
     }
 
 
-    function _clearCacheObject($oCache, $sPrefix)
+    protected function _clearObject($oCache, $sPrefix)
     {
     {
         if (!$oCache->removeAllByPrefix ($sPrefix))
         if (!$oCache->removeAllByPrefix ($sPrefix))
             return array('code' => 1, 'message' => _t('_adm_dbd_err_c_clean_failed'));
             return array('code' => 1, 'message' => _t('_adm_dbd_err_c_clean_failed'));
@@ -85,12 +87,7 @@ class BxDolCacheUtilities extends BxDol
             return array('code' => 0, 'message' => _t('_adm_dbd_msg_c_clean_success'));
             return array('code' => 0, 'message' => _t('_adm_dbd_msg_c_clean_success'));
     }
     }
 
 
-    function _getSizeCacheObject($oCache, $sPrefix)
-    {
-        return $oCache->getSizeByPrefix ($sPrefix);
-    }
-
-    function _clearCache($sPrefix, $sPath)
+    protected function _clearFile($sPrefix, $sPath)
     {
     {
         if (!($rHandler = opendir($sPath)))
         if (!($rHandler = opendir($sPath)))
             return array('code' => 1, 'message' => _t('_adm_dbd_err_c_clean_failed'));
             return array('code' => 1, 'message' => _t('_adm_dbd_err_c_clean_failed'));
@@ -105,7 +102,12 @@ class BxDolCacheUtilities extends BxDol
         return array('code' => 0, 'message' => _t('_adm_dbd_msg_c_clean_success'));
         return array('code' => 0, 'message' => _t('_adm_dbd_msg_c_clean_success'));
     }
     }
 
 
-    function _getSizeCache($sPrefix, $sPath)
+    protected function _getSizeObject($oCache, $sPrefix)
+    {
+        return $oCache->getSizeByPrefix ($sPrefix);
+    }
+
+    protected function _getSizeFile($sPrefix, $sPath)
     {
     {
         if (!($rHandler = opendir($sPath)))
         if (!($rHandler = opendir($sPath)))
             return 0;
             return 0;

+ 8 - 4
modules/boonex/english/data/langs/system.xml

@@ -529,14 +529,18 @@
 	<string name="_adm_dbd_txt_su_database"><![CDATA[Database]]></string>
 	<string name="_adm_dbd_txt_su_database"><![CDATA[Database]]></string>
 	<string name="_adm_dbd_txt_su_user_media"><![CDATA[User Media]]></string>
 	<string name="_adm_dbd_txt_su_user_media"><![CDATA[User Media]]></string>
 	<string name="_adm_dbd_txt_su_system"><![CDATA[System]]></string>
 	<string name="_adm_dbd_txt_su_system"><![CDATA[System]]></string>
-	<string name="_adm_dbd_txt_c_all"><![CDATA[All]]></string>
-	<string name="_adm_dbd_txt_c_db"><![CDATA[Database]]></string>
-	<string name="_adm_dbd_txt_c_template"><![CDATA[Templates]]></string>
+	<string name="_adm_dbd_txt_c_clear_all"><![CDATA[Clear all caches]]></string>
+	<string name="_adm_dbd_txt_c_db"><![CDATA[DB]]></string>
+	<string name="_adm_dbd_txt_c_clear_db"><![CDATA[Clear DB cache]]></string>
+	<string name="_adm_dbd_txt_c_template"><![CDATA[Template]]></string>
+	<string name="_adm_dbd_txt_c_clear_template"><![CDATA[Clear Template cache]]></string>
 	<string name="_adm_dbd_txt_c_css"><![CDATA[CSS]]></string>
 	<string name="_adm_dbd_txt_c_css"><![CDATA[CSS]]></string>
+	<string name="_adm_dbd_txt_c_clear_css"><![CDATA[Clear CSS cache]]></string>
 	<string name="_adm_dbd_txt_c_js"><![CDATA[JavaScript]]></string>
 	<string name="_adm_dbd_txt_c_js"><![CDATA[JavaScript]]></string>
-	<string name="_adm_dbd_txt_c_users"><![CDATA[Users]]></string>
+	<string name="_adm_dbd_txt_c_clear_js"><![CDATA[Clear JavaScript cache]]></string>
 	<string name="_adm_dbd_err_c_clean_failed"><![CDATA[Failed to clean cache]]></string>
 	<string name="_adm_dbd_err_c_clean_failed"><![CDATA[Failed to clean cache]]></string>
 	<string name="_adm_dbd_msg_c_clean_success"><![CDATA[Cache was successfully cleaned]]></string>
 	<string name="_adm_dbd_msg_c_clean_success"><![CDATA[Cache was successfully cleaned]]></string>
+	<string name="_adm_dbd_msg_c_all_disabled"><![CDATA[All caches are disabled]]></string>
     <string name="_adm_dsn_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" template?</h3><p>Uninstalling "{0}" template will also delete all of its data. Do you want to continue?</p>]]></string>
     <string name="_adm_dsn_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" template?</h3><p>Uninstalling "{0}" template will also delete all of its data. Do you want to continue?</p>]]></string>
 	<string name="_adm_dsg_btn_make_default"><![CDATA[Make Default]]></string>
 	<string name="_adm_dsg_btn_make_default"><![CDATA[Make Default]]></string>
 	<string name="_adm_dsg_dsc_alt_text"><![CDATA[Serves as "ALT" text for logo image. Used as a logo when no logo image is uploaded.]]></string>
 	<string name="_adm_dsg_dsc_alt_text"><![CDATA[Serves as "ALT" text for logo image. Used as a logo when no logo image is uploaded.]]></string>

+ 44 - 12
studio/classes/BxDolStudioDashboard.php

@@ -12,19 +12,24 @@ bx_import('BxDolStudioStoreQuery');
 
 
 class BxDolStudioDashboard extends BxTemplStudioPage
 class BxDolStudioDashboard extends BxTemplStudioPage
 {
 {
+	protected $aBlocks;
 	protected $aItemsCache;
 	protected $aItemsCache;
 
 
     function __construct()
     function __construct()
     {
     {
         parent::__construct('dashboard');
         parent::__construct('dashboard');
 
 
+        $this->aBlocks = array(
+        	'space' => 'serviceGetBlockSpace',
+        	'htools' => 'serviceGetBlockHostTools',
+        );
+
         $this->aItemsCache = array (
         $this->aItemsCache = array (
-		    array('name' => 'all', 'title' => _t('_adm_dbd_txt_c_all')),
-		    array('name' => 'db', 'title' => _t('_adm_dbd_txt_c_db')),
-		    array('name' => 'template', 'title' => _t('_adm_dbd_txt_c_template')),
-		    array('name' => 'css', 'title' => _t('_adm_dbd_txt_c_css')),
-		    array('name' => 'js', 'title' => _t('_adm_dbd_txt_c_js')),
-		    array('name' => 'users', 'title' => _t('_adm_dbd_txt_c_users')),
+		    array('name' => 'all'),
+		    array('name' => 'db'),
+		    array('name' => 'template'),
+		    array('name' => 'css'),
+		    array('name' => 'js')
 		);
 		);
 
 
         //--- Check actions ---//
         //--- Check actions ---//
@@ -33,6 +38,21 @@ class BxDolStudioDashboard extends BxTemplStudioPage
 
 
             $aResult = array('code' => 1, 'message' => _t('_adm_err_cannot_process_action'));
             $aResult = array('code' => 1, 'message' => _t('_adm_err_cannot_process_action'));
             switch($sAction) {
             switch($sAction) {
+            	case 'get_block':
+            		$sValue = bx_get('dbd_value');
+					if($sValue === false)
+						break;
+
+					$sValue = bx_process_input($sValue);
+					if(!isset($this->aBlocks[$sValue]))
+						break;
+						
+					$aBlock = $this->{$this->aBlocks[$sValue]}(true);
+					if(!empty($aBlock['content']))
+            			$aResult = array('code' => 0, 'data' => $aBlock['content']);
+
+            		break;
+            		
                 case 'check_update_script':
                 case 'check_update_script':
                     $aResult = array();
                     $aResult = array();
 
 
@@ -64,17 +84,21 @@ class BxDolStudioDashboard extends BxTemplStudioPage
 
 
 					switch ($sValue) {
 					switch ($sValue) {
 				        case 'all':
 				        case 'all':
+				        	$aResult = false;
 				            foreach($this->aItemsCache as $aItem) {
 				            foreach($this->aItemsCache as $aItem) {
 				            	if($aItem['name'] == 'all')
 				            	if($aItem['name'] == 'all')
 				            		continue;
 				            		continue;
 
 
-				                $aResult = $oCacheUtilities->clear($aItem['name']);
-				                if($aResult['code'] != 0)
-				                    break;
+				                $aResultClear = $oCacheUtilities->clear($aItem['name']);
+				                if($aResultClear === false)
+				                	continue;
+
+								$aResult = $aResultClear;
+				                if(isset($aResult['code']) && $aResult['code'] != 0)
+									break;
 				            }
 				            }
 				            break;
 				            break;
 
 
-				        case 'users':
 				        case 'db':
 				        case 'db':
 				        case 'template':
 				        case 'template':
 				        case 'css':
 				        case 'css':
@@ -86,7 +110,9 @@ class BxDolStudioDashboard extends BxTemplStudioPage
 				            $aResult = array('code' => 1, 'message' => _t('_Error Occured'));
 				            $aResult = array('code' => 1, 'message' => _t('_Error Occured'));
 				    }
 				    }
 
 
-				    if($aResult['code'] == 0)
+				    if($aResult === false)
+				    	$aResult['data'] = MsgBox(_t('_adm_dbd_msg_c_all_disabled'));
+				    else if(isset($aResult['code']) && $aResult['code'] == 0)
 				        $aResult['data'] = $this->getCacheChartData(false);
 				        $aResult['data'] = $this->getCacheChartData(false);
 
 
 					break;
 					break;
@@ -151,9 +177,15 @@ class BxDolStudioDashboard extends BxTemplStudioPage
 	            continue;
 	            continue;
 
 
 	        $iSize = $oCacheUtilities->size($aItem['name']);
 	        $iSize = $oCacheUtilities->size($aItem['name']);
-	        $aChartData[] = array(bx_js_string($aItem['title'], BX_ESCAPE_STR_APOS), array('v' => $iSize, 'f' => bx_js_string(_t_format_size($iSize))));
+	        if($iSize === false)
+	        	continue;
+
+	        $aChartData[] = array(bx_js_string(_t('_adm_dbd_txt_c_' . $aItem['name']), BX_ESCAPE_STR_APOS), array('v' => $iSize, 'f' => bx_js_string(_t_format_size($iSize))));
     	}
     	}
 
 
+    	if(empty($aChartData))
+    		return false;
+
     	return $bAsString ? json_encode($aChartData) : $aChartData;
     	return $bAsString ? json_encode($aChartData) : $aChartData;
     }
     }
 }
 }

+ 52 - 19
studio/js/dashboard.js

@@ -18,9 +18,38 @@ function BxDolStudioDashboard(oOptions) {
     	$('.bx-dbd-block-content').bxTime();
     	$('.bx-dbd-block-content').bxTime();
 
 
     	$this.checkForUpdateScript();
     	$this.checkForUpdateScript();
+
+    	$this.getBlockContent('space');
+    	$this.getBlockContent('htools');
     });
     });
 }
 }
 
 
+BxDolStudioDashboard.prototype.getBlockContent = function(sType) {
+	var $this = this;
+	var oDate = new Date();
+	var sDivId = 'bx-dbd-' + sType;
+
+	bx_loading('bx-dbd-' + sType, true);
+
+	$.get(
+		this.sActionsUrl,
+		{
+			dbd_action: 'get_block',
+			dbd_value: sType,
+			_t: oDate.getTime()
+		},
+		function(oData) {
+			bx_loading('bx-dbd-' + sType, false);
+
+			if(!oData.data)
+			    return;
+
+			$('#' + sDivId).replaceWith(oData.data);
+		},
+		'json'
+	);
+};
+
 BxDolStudioDashboard.prototype.checkForUpdateScript = function() {
 BxDolStudioDashboard.prototype.checkForUpdateScript = function() {
 	var $this = this;
 	var $this = this;
 	var oDate = new Date();
 	var oDate = new Date();
@@ -45,14 +74,16 @@ BxDolStudioDashboard.prototype.checkForUpdateScript = function() {
 BxDolStudioDashboard.prototype.initChart = function(sType, oData) {
 BxDolStudioDashboard.prototype.initChart = function(sType, oData) {
 	var $this = this;
 	var $this = this;
 
 
-    google.setOnLoadCallback(function() {
+	bx_loading('bx-dbd-' + sType, true);
+	google.load("visualization", "1", {packages:["corechart"], callback: function() {
+    	bx_loading('bx-dbd-' + sType, false);
     	$this.showChart(sType, oData);
     	$this.showChart(sType, oData);
-    });
+    }});
 };
 };
 
 
 BxDolStudioDashboard.prototype.showChart = function(sType, oData) {
 BxDolStudioDashboard.prototype.showChart = function(sType, oData) {
-	var sDivId = 'bx-dbd-' + sType + '-chart';
-    $('#' + sDivId).html('');
+	var oChart = $('#bx-dbd-' + sType + ' .bx-dbd-chart');
+	oChart.html('');
 
 
     var oDataTable = new google.visualization.DataTable();
     var oDataTable = new google.visualization.DataTable();
     oDataTable.addColumn('string', 'Label');
     oDataTable.addColumn('string', 'Label');
@@ -62,23 +93,21 @@ BxDolStudioDashboard.prototype.showChart = function(sType, oData) {
 		this.oData = oData;
 		this.oData = oData;
     oDataTable.addRows(this.oData);
     oDataTable.addRows(this.oData);
 
 
-    var oOptions = {
-			chartArea: {
-				left:10,
-				top:10,
-				width:'92%',
-				height:'92%'
-			}
-        };
-
-    var oChart = new google.visualization.PieChart($('#' + sDivId)[0]);
-    oChart.draw(oDataTable, oOptions);
+    var oChart = new google.visualization.PieChart(oChart[0]);
+    oChart.draw(oDataTable, {
+		chartArea: {
+			left:10,
+			top:10,
+			width:'92%',
+			height:'92%'
+		}
+    });
 };
 };
 
 
 BxDolStudioDashboard.prototype.clearCache = function(sType) {
 BxDolStudioDashboard.prototype.clearCache = function(sType) {
 	var $this = this;
 	var $this = this;
 	var oDate = new Date();
 	var oDate = new Date();
-	var sDivId = 'bx-dbd-cache-chart';
+	var sDivId = 'bx-dbd-cache';
 
 
 	$('#' + sDivId).parents('.bx-page-block-container').find('.bx-db-header .bx-popup-applied:visible').dolPopupHide();
 	$('#' + sDivId).parents('.bx-page-block-container').find('.bx-db-header .bx-popup-applied:visible').dolPopupHide();
 
 
@@ -94,11 +123,15 @@ BxDolStudioDashboard.prototype.clearCache = function(sType) {
         function(oData) {
         function(oData) {
         	bx_loading(sDivId, false);
         	bx_loading(sDivId, false);
 
 
-        	if(oData.message.length > 0)
+        	if(oData.message != undefined && oData.message.length > 0)
     			$this.popup(oData.message);
     			$this.popup(oData.message);
 
 
-            if(oData.data != undefined)
-            	$this.showChart('cache', oData.data);
+            if(oData.data != undefined) {
+            	if(typeof oData.data == 'object')
+            		$this.showChart('cache', oData.data);
+            	else if(typeof oData.data == 'string')
+            		$('#' + sDivId).html(oData.data);
+            }
         },
         },
         'json'
         'json'
     );
     );

+ 3 - 4
studio/template/css/dashboard.css

@@ -32,20 +32,19 @@ div.bx-dbd-update-script span {
 }
 }
 
 
 /*--- Chart based blocks ---*/
 /*--- Chart based blocks ---*/
-div.bx-dbd-space-chart,
-div.bx-dbd-cache-chart {
+div.bx-dbd-chart {
 	width: 400px;
 	width: 400px;
 	height: 200px;
 	height: 200px;
 	margin: 0px auto; 
 	margin: 0px auto; 
 }
 }
 
 
 /*--- Host Tools block ---*/
 /*--- Host Tools block ---*/
-div.bx-dbd-host-tools .bx-btn {
+div.bx-dbd-htools .bx-btn {
     display: inline-block;
     display: inline-block;
     float: none;
     float: none;
 }
 }
 
 
-div.bx-dbd-host-tools .bx-dbd-host-tools-item {
+div.bx-dbd-htools .bx-dbd-htools-item {
     float: left;
     float: left;
     width: 50%;
     width: 50%;
 }
 }

+ 8 - 6
studio/template/dbd_cache.html

@@ -1,8 +1,10 @@
-<div class="bx-dbd-block-content bx-clearfix">
-	<div id="bx-dbd-cache-chart" class="bx-dbd-cache-chart bx-def-border"></div>
+<div id="bx-dbd-cache" class="bx-dbd-block-content bx-clearfix">
+	<bx_if:show_chart>
+		<div class="bx-dbd-chart bx-def-border"></div>
 
 
-	<script type="text/javascript">
-		bx_loading('bx-dbd-cache-chart', true);
-		__js_object__.initChart('cache', __chart_data__);
-	</script>
+		<script type="text/javascript">
+			__js_object__.initChart('cache', __chart_data__);
+		</script>
+	</bx_if:show_chart>
+	<bx_if:show_empty>__message__</bx_if:show_empty>
 </div>
 </div>

+ 9 - 7
studio/template/dbd_htools.html

@@ -1,7 +1,9 @@
-<div class="bx-dbd-block-content bx-clearfix">
-	<div id="bx-dbd-host-tools" class="bx-dbd-host-tools">
-		<bx_repeat:items>
-			<div class="bx-dbd-host-tools-item bx-def-margin-sec-bottom">__status__ __msg__</div>
-		</bx_repeat:items>
-	</div>
-</div>
+<div id="bx-dbd-htools" class="bx-dbd-block-content">
+	<bx_if:show_content>
+		<div class="bx-dbd-htools bx-clearfix">
+			<bx_repeat:items>
+				<div class="bx-dbd-htools-item bx-def-margin-sec-bottom">__status__ __msg__</div>
+			</bx_repeat:items>
+		</div>
+	</bx_if:show_content>
+</div>

+ 7 - 6
studio/template/dbd_space.html

@@ -1,8 +1,9 @@
-<div class="bx-dbd-block-content">
-	<div id="bx-dbd-space-chart" class="bx-dbd-space-chart bx-def-border"></div>
+<div id="bx-dbd-space" class="bx-dbd-block-content">
+	<bx_if:show_content>
+		<div class="bx-dbd-chart bx-def-border"></div>
 
 
-	<script type="text/javascript">
-		bx_loading('bx-dbd-space-chart', true);
-		__js_object__.initChart('space', __chart_data__);
-	</script>
+		<script type="text/javascript">
+			__js_object__.initChart('space', __chart_data__);
+		</script>
+	</bx_if:show_content>
 </div>
 </div>

+ 94 - 67
studio/template/scripts/BxBaseStudioDashboard.php

@@ -28,6 +28,7 @@ class BxBaseStudioDashboard extends BxDolStudioDashboard
     function getPageJs()
     function getPageJs()
     {
     {
         return array_merge(parent::getPageJs(), array(
         return array_merge(parent::getPageJs(), array(
+        	'https://www.google.com/jsapi',
         	'jquery.anim.js',
         	'jquery.anim.js',
         	'dashboard.js'
         	'dashboard.js'
         ));
         ));
@@ -45,15 +46,12 @@ class BxBaseStudioDashboard extends BxDolStudioDashboard
 
 
 	function getPageJsCode($aOptions = array(), $bWrap = true)
 	function getPageJsCode($aOptions = array(), $bWrap = true)
     {
     {
-    	$sResult = BxDolStudioTemplate::getInstance()->_wrapInTagJs("https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}");
-
         $aOptions = array_merge($aOptions, array(
         $aOptions = array_merge($aOptions, array(
             'sActionUrl' => BX_DOL_URL_STUDIO . 'dashboard.php',
             'sActionUrl' => BX_DOL_URL_STUDIO . 'dashboard.php',
         	'sVersion' => '__version__'
         	'sVersion' => '__version__'
         ));        
         ));        
-        $sResult .= parent::getPageJsCode($aOptions, $bWrap);
 
 
-		return $sResult;
+		return parent::getPageJsCode($aOptions, $bWrap);
     }
     }
 
 
     function getPageCode($bHidden = false)
     function getPageCode($bHidden = false)
@@ -77,66 +75,45 @@ class BxBaseStudioDashboard extends BxDolStudioDashboard
     	return array('content' => $sContent);
     	return array('content' => $sContent);
     }
     }
 
 
-    public function serviceGetBlockSpace()
+    public function serviceGetBlockSpace($bShowContent = false)
     {
     {
-    	$sJsObject = $this->getPageJsObject();
-
-    	$iSizeDiskTotal = $this->getFolderSize(BX_DIRECTORY_PATH_ROOT);
-    	$iSizeDiskMedia = $this->getFolderSize(BX_DIRECTORY_STORAGE);
-    	$iSizeDb = $this->getDbSize();
-
-    	$aItems = array(
-    		array('label' => '_adm_dbd_txt_su_database', 'value' => $iSizeDb),
-    		array('label' => '_adm_dbd_txt_su_user_media', 'value' => $iSizeDiskMedia),
-    		array('label' => '_adm_dbd_txt_su_system', 'value' => $iSizeDiskTotal - $iSizeDiskMedia),    		
-    	);
-
-    	$iSizeTotal = 0;
-        $aChartData = array();
-        foreach($aItems as $sColor => $aItem) {
-        	$iSizeTotal += $aItem['value'];
-            $aChartData[] = array(bx_js_string(strip_tags(_t($aItem['label'])), BX_ESCAPE_STR_APOS), array('v' => $aItem['value'], 'f' => bx_js_string(_t_format_size($aItem['value']))));
-        }
+    	$aChartData = array();
+    	if($bShowContent) {
+	    	$iSizeDiskTotal = $this->getFolderSize(BX_DIRECTORY_PATH_ROOT);
+	    	$iSizeDiskMedia = $this->getFolderSize(BX_DIRECTORY_STORAGE);
+	    	$iSizeDb = $this->getDbSize();
+
+	    	$aItems = array(
+	    		array('label' => '_adm_dbd_txt_su_database', 'value' => $iSizeDb),
+	    		array('label' => '_adm_dbd_txt_su_user_media', 'value' => $iSizeDiskMedia),
+	    		array('label' => '_adm_dbd_txt_su_system', 'value' => $iSizeDiskTotal - $iSizeDiskMedia),    		
+	    	);
+
+	    	$iSizeTotal = 0;
+	        $aChartData = array();
+	        foreach($aItems as $sColor => $aItem) {
+	        	$iSizeTotal += $aItem['value'];
+	            $aChartData[] = array(bx_js_string(strip_tags(_t($aItem['label'])), BX_ESCAPE_STR_APOS), array('v' => $aItem['value'], 'f' => bx_js_string(_t_format_size($aItem['value']))));
+	        }
+    	}
 
 
         $sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_space.html', array(
         $sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_space.html', array(
-        	'js_object' => $sJsObject,
-        	'chart_data' => json_encode($aChartData)
+        	'bx_if:show_content' => array(
+        		'condition' => $bShowContent,
+        		'content' => array(
+		        	'js_object' => $this->getPageJsObject(),
+		        	'chart_data' => json_encode($aChartData)
+       			)
+       		)
         ));
         ));
 
 
         return array('content' => $sContent);
         return array('content' => $sContent);
     }
     }
 
 
-	public function serviceGetBlockHostTools()
+	public function serviceGetBlockHostTools($bShowContent = false)
 	{
 	{
 		$sJsObject = $this->getPageJsObject();
 		$sJsObject = $this->getPageJsObject();
 
 
-		bx_import('BxDolStudioToolsAudit');
-		$oAudit = new BxDolStudioToolsAudit();
-
-        bx_import('BxTemplFunctions');
-        $oFunc = BxTemplFunctions::getInstance();
-
-        $aCheckRequirements = array (
-            'PHP' => 'requirementsPHP',
-            'MySQL' => 'requirementsMySQL',
-            'Web Server' => 'requirementsWebServer',
-        );
-        
-        $aLevels = array (BX_DOL_AUDIT_FAIL, BX_DOL_AUDIT_WARN, BX_DOL_AUDIT_UNDEF);
-
-        $aTmplVarsItems = array();
-        foreach ($aCheckRequirements as $sTitle => $sFunc) {
-            $sStatus = BX_DOL_AUDIT_OK;
-            foreach ($aLevels as $sLevel) { 
-                $a = $oAudit->checkRequirements($sLevel, $sFunc);
-                if (!empty($a)) {
-                    $sStatus = $sLevel;
-                    break;
-                }
-            }
-            $aTmplVarsItems[] = array('status' => $oFunc->statusOnOff($sStatus), 'msg' => _t('_adm_dbd_txt_htools_status', $sTitle, $oAudit->typeToTitle($sStatus)));
-        }
-
 		$aMenu = array(
 		$aMenu = array(
 			array(
 			array(
 				'name' => 'audit', 
 				'name' => 'audit', 
@@ -146,8 +123,43 @@ class BxBaseStudioDashboard extends BxDolStudioDashboard
 			)
 			)
 		);
 		);
 
 
+		$aTmplVarsItems = array();
+		if($bShowContent) {
+			bx_import('BxDolStudioToolsAudit');
+			$oAudit = new BxDolStudioToolsAudit();
+	
+	        bx_import('BxTemplFunctions');
+	        $oFunc = BxTemplFunctions::getInstance();
+	
+	        $aCheckRequirements = array (
+	            'PHP' => 'requirementsPHP',
+	            'MySQL' => 'requirementsMySQL',
+	            'Web Server' => 'requirementsWebServer',
+	        );
+	
+	        $aLevels = array (BX_DOL_AUDIT_FAIL, BX_DOL_AUDIT_WARN, BX_DOL_AUDIT_UNDEF);
+	
+	        $aTmplVarsItems = array();
+	        foreach ($aCheckRequirements as $sTitle => $sFunc) {
+	            $sStatus = BX_DOL_AUDIT_OK;
+	            foreach ($aLevels as $sLevel) { 
+	                $a = $oAudit->checkRequirements($sLevel, $sFunc);
+	                if (!empty($a)) {
+	                    $sStatus = $sLevel;
+	                    break;
+	                }
+	            }
+	            $aTmplVarsItems[] = array('status' => $oFunc->statusOnOff($sStatus), 'msg' => _t('_adm_dbd_txt_htools_status', $sTitle, $oAudit->typeToTitle($sStatus)));
+	        }
+		}
+
         $sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_htools.html', array(
         $sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_htools.html', array(
-	    	'bx_repeat:items' => $aTmplVarsItems,
+        	'bx_if:show_content' => array(
+        		'condition' => $bShowContent,
+        		'content' => array(
+	    			'bx_repeat:items' => $aTmplVarsItems,
+       			)
+        	)
 	    ));
 	    ));
 
 
 		return array('content' => $sContent, 'menu' => $aMenu);
 		return array('content' => $sContent, 'menu' => $aMenu);
@@ -157,20 +169,35 @@ class BxBaseStudioDashboard extends BxDolStudioDashboard
 	{
 	{
 		$sJsObject = $this->getPageJsObject();
 		$sJsObject = $this->getPageJsObject();
 
 
+		$sChartData = $this->getCacheChartData();
+		$bChartData = $sChartData !== false;
+
 		$aMenu = array();
 		$aMenu = array();
-	    foreach($this->aItemsCache as $aItem)
-			$aMenu[] = array(
-				'name' => $aItem['name'], 
-				'title' => _t($aItem['title']), 
-				'link' => 'javascript:void(0)', 
-				'onclick' => $sJsObject . ".clearCache('" . $aItem['name'] . "')"
-			);
-
-	    $sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_cache.html', array(
-	    	'js_object' => $sJsObject,
-	        'chart_data' => $this->getCacheChartData(),
-	    ));
-    
+		if($bChartData)
+		    foreach($this->aItemsCache as $aItem)
+				$aMenu[] = array(
+					'name' => $aItem['name'], 
+					'title' => _t('_adm_dbd_txt_c_clear_' . $aItem['name']), 
+					'link' => 'javascript:void(0)', 
+					'onclick' => $sJsObject . ".clearCache('" . $aItem['name'] . "')"
+				);
+
+		$sContent = BxDolStudioTemplate::getInstance()->parseHtmlByName('dbd_cache.html', array(
+			'bx_if:show_chart' => array(
+				'condition' => $bChartData,
+				'content' => array(
+					'js_object' => $sJsObject,
+		        	'chart_data' => $sChartData,
+				)
+			),
+			'bx_if:show_empty' => array(
+				'condition' => !$bChartData,
+				'content' => array(
+					'message' => MsgBox(_t('_adm_dbd_msg_c_all_disabled'))
+				)
+			),
+		));
+
 		return array('content' => $sContent, 'menu' => $aMenu);
 		return array('content' => $sContent, 'menu' => $aMenu);
 	}
 	}
 }
 }