Przeglądaj źródła

Ticket #5186 - Tasks: Functionality improvements. Point 2.

AntonLV 11 miesięcy temu
rodzic
commit
c06bac6849

+ 7 - 0
inc/classes/BxDolReport.php

@@ -74,6 +74,7 @@ class BxDolReport extends BxDolObject
     protected $_oTemplate;
 
     protected $_bUndo;
+    protected $_bProcessible;   ///< Determines whether the report should be processed by admins/moderators or not.
     protected $_sBaseUrl;
 
     protected $_sObjectCmts;
@@ -100,6 +101,7 @@ class BxDolReport extends BxDolObject
             $this->_oTemplate = BxDolTemplate::getInstance();
 
         $this->_bUndo = true;
+        $this->_bProcessible = true;
 
         $this->_sBaseUrl = BxDolPermalinks::getInstance()->permalink($this->_aSystem['base_url']);
         if(get_mb_substr($this->_sBaseUrl, 0, 4) != 'http')
@@ -193,6 +195,11 @@ class BxDolReport extends BxDolObject
         return (int)$this->_bUndo == 1;
     }
 
+    public function isProcessible()
+    {
+        return $this->_bProcessible;
+    }
+
     public function getBaseUrl()
     {
         return $this->_replaceMarkers($this->_sBaseUrl);

+ 1 - 0
modules/boonex/tasks/classes/BxTasksTime.php

@@ -27,6 +27,7 @@ class BxTasksTime extends BxTemplReport
         $this->_oQuery = new BxTasksTimeQuery($this);
 
         $this->_bUndo = false;
+        $this->_bProcessible = false;
 
         $this->_sFormObject = $CNF['OBJECT_FORM_TIME'];
         $this->_sFormDisplayPost = $CNF['OBJECT_FORM_TIME_DISPLAY_ADD'];

+ 14 - 13
template/scripts/BxBaseDashboardServices.php

@@ -18,29 +18,30 @@ class BxBaseDashboardServices extends BxDol
         $oMenu = BxDolMenu::getObjectInstance('sys_dashboard_reports');
         if(!$oMenu)
             return '';
-        
+
         $aSystems = BxDolReport::getSystems();
-        $sSelected = bx_get('object');
-        
-        if ($sSelected == ''){
+
+        $sSelected = '';
+        if(($_sSelected = bx_get('object')) !== false)
+            $sSelected = bx_process_input($_sSelected);
+        if(!$sSelected)
             $sSelected = reset($aSystems)['name'];
-        }
-        
+
         $oGrid = BxDolGrid::getObjectInstance('sys_reports_administration');
         $oGrid->setObject($aSystems[$sSelected]['name']);
-        
+
         if(!$oGrid)
             return '';
 
         $oTemplate = BxDolTemplate::getInstance();
-        $oTemplate->addJs(array('BxDolReportsManageTools.js', 'BxDolGrid.js'));
-		$oTemplate->addCss(array('manage_tools.css'));
-        $oTemplate->addJsTranslation(array('_sys_grid_search'));
-        
-    	return array(
+        $oTemplate->addJs(['BxDolReportsManageTools.js', 'BxDolGrid.js']);
+        $oTemplate->addCss(['manage_tools.css']);
+        $oTemplate->addJsTranslation(['_sys_grid_search']);
+
+    	return [
             'content' =>$oGrid->getCode(),
             'menu' => $oMenu
-        );
+        ];
     }
     
     public function serviceGetReportsCount($sObjectReposrt, $iStatus)

+ 22 - 18
template/scripts/BxBaseMenuDashboardReportsManage.php

@@ -27,23 +27,29 @@ class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
         $this->_bDisplayAddons = true;
     }
 
-    
     protected function getMenuItemsRaw ()
     {
-        $aResult = array();
         $aUrl = bx_get_base_url_inline();
         
         $aSystems = BxDolReport::getSystems();
-        
-        $sSelected = bx_get('object');
-        
-        if ($sSelected == ''){
+
+        $sSelected = '';
+        if(($_sSelected = bx_get('object')) !== false)
+            $sSelected = bx_process_input($_sSelected);
+        if(!$sSelected)
             $sSelected = reset($aSystems)['name'];
-        }
-       
-        foreach($aSystems as $aSystem){
+
+        $aResult = [];
+        foreach($aSystems as $aSystem) {
             $sName = $aSystem['name'];
-            $aResult[$sName] = array(
+
+            if(!empty($aSystem['class_name'])) {
+                $oReport = BxDolReport::getObjectInstance($sName, 0, false);
+                if(!$oReport->isProcessible())
+                    continue;
+            }
+
+            $aResult[$sName] = [
                 'name' => $sName,
                 'title' => _t('_' . $sName),
                 'link' => bx_append_url_params($aUrl[0], array_merge($aUrl[1], array('object' => $sName))),
@@ -58,11 +64,11 @@ class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
                     'class' => 'TemplDashboardServices'
                     ]),
                 'selected' => $sSelected == $sName ? true : false
-            );   
+            ];
     	}
         
         if(!empty($aResult) && is_array($aResult)){
-            $aResult['more-auto'] = array(
+            $aResult['more-auto'] = [
                 'module' => 'system', 
                 'id' => 'more-auto', 
                 'name' => 'more-auto',
@@ -70,17 +76,15 @@ class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
                 'title' => '_sys_menu_item_title_va_more_auto', 
                 'href' => 'javascript:void(0)', 
                 'icon' => 'ellipsis-v',
-            );
+            ];
         }
-        
+
         return $aResult;
     }
-    
+
     protected function _isSelected ($a)
     {
-        if (isset($a['selected']))
-            return $a['selected'];
-        return false;
+        return isset($a['selected']) ? $a['selected'] : false;
     }
 }
 

+ 12 - 5
template/scripts/BxBaseReportsGrid.php

@@ -40,20 +40,27 @@ class BxBaseReportsGrid extends BxTemplGrid
             $this->_aQueryAppend[$this->_sFilter1Name] = $this->_sFilter1Value;
         }
 
-        if (bx_get('object')){
-            $this->setObject(bx_get('object'));
-        }
+        $this->_aReportSystemInfo = [];
+        if(($sObject = bx_get('object')) !== false)
+            $this->setObject($sObject);
     }
-    
+
     public function getCode($isDisplayHeader = true)
     {
+        if(!$this->_aReportSystemInfo)
+            return '';
+
         return $this->getJsCode() . parent::getCode($isDisplayHeader);
     }
     
     public function setObject($sObjectName)
     {
-        $oReport = BxDolReport::getObjectInstance($sObjectName, -1, false);
+        $oReport = BxDolReport::getObjectInstance($sObjectName, 0, false);
+        if(!$oReport->isProcessible())
+            return;
+
         $this->_aReportSystemInfo = $oReport->getSystemInfo();
+
         $this->_aOptions['table'] = $this->_aReportSystemInfo['table_track'];
         $this->_aQueryAppend['object'] = $sObjectName;
     }