Просмотр исходного кода

Ticket #5425 - Tasks: Functionality improvements. Stage 2. Budget.

AntonLV 1 месяц назад
Родитель
Сommit
7da4fc4b69

+ 32 - 0
modules/boonex/tasks/classes/BxTasksGridBudgetContextAdministration.php

@@ -60,6 +60,9 @@ class BxTasksGridBudgetContextAdministration extends BxBaseModGeneralGrid
     
     public function performActionAdd()
     {
+        if(!$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
         $sAction = 'add';
 
         $oForm = $this->_getFormObject($sAction);
@@ -96,6 +99,9 @@ class BxTasksGridBudgetContextAdministration extends BxBaseModGeneralGrid
 
     public function performActionEdit()
     {
+        if(!$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
         $sAction = 'edit';
 
         $iTrackId = $this->_getId();
@@ -127,6 +133,32 @@ class BxTasksGridBudgetContextAdministration extends BxBaseModGeneralGrid
         return echoJson(['popup' => ['html' => $sContent, 'options' => ['closeOnOuterClick' => false]]]);
     }
 
+    public function performActionDelete()
+    {
+        if(!$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
+        return parent::performActionDelete();
+    }
+
+    public function getCode ($isDisplayHeader = true)
+    {
+        if(!$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
+        return parent::getCode($isDisplayHeader);
+    }
+
+    protected function _isAllowedByConext($iContextPid = 0)
+    {
+        if(!$iContextPid)
+            $iContextPid = $this->_iContextPid;
+        if(!$iContextPid)
+            return false;
+
+        return $this->_oModule->isAllowManageByContext($this->_iContextPid);
+    }
+
     protected function _delete ($mixedId)
     {
         $aTrack = $this->_oModule->_oDb->getBudgetTracks(['sample' => 'id', 'id' => (int)$mixedId]);

+ 1 - 1
modules/boonex/tasks/classes/BxTasksGridTime.php

@@ -157,7 +157,7 @@ class BxTasksGridTime extends BxBaseModGeneralGrid
     protected function _getActionDelete($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = [])
     {
         if($this->_isAdministration())
-            $isDisabled = true;
+            return '';
 
         return parent::_getActionDelete($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
     }

+ 27 - 1
modules/boonex/tasks/classes/BxTasksGridTimeContextAdministration.php

@@ -41,7 +41,33 @@ class BxTasksGridTimeContextAdministration extends BxTasksGridTime
 
     public function getFormCallBackUrlAPI($sAction, $iId = 0)
     {
-         return '/api.php?r=system/perfom_action_api/TemplServiceGrid/&params[]=&o=' . $this->_sObject . '&a=' . $sAction . '&context_pid=' . $this->_iContextPid . '&id=' . $iId;
+        return '/api.php?r=system/perfom_action_api/TemplServiceGrid/&params[]=&o=' . $this->_sObject . '&a=' . $sAction . '&context_pid=' . $this->_iContextPid . '&id=' . $iId;
+    }
+
+    public function performActionCalculate()
+    {
+        if($this->_isAdministration() && !$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
+        return parent::performActionCalculate();
+    }
+
+    public function getCode ($isDisplayHeader = true)
+    {
+        if($this->_isAdministration() && !$this->_isAllowedByConext())
+            return $this->_getActionResult([]);
+
+        return parent::getCode($isDisplayHeader);
+    }
+
+    protected function _isAllowedByConext($iContextPid = 0)
+    {
+        if(!$iContextPid)
+            $iContextPid = $this->_iContextPid;
+        if(!$iContextPid)
+            return false;
+
+        return $this->_oModule->isAllowManageByContext($this->_iContextPid);
     }
 
     protected function _getFilterControls()

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

@@ -38,6 +38,7 @@ class BxTasksMenuViewContext extends BxBaseModTextMenuView
         $bResult = true;
         switch ($a['name']) {
             case 'tasks-context-time-administration':
+            case 'tasks-context-budget-administration':
             case 'tasks-context-values':
                 $bResult = $this->_oModule->isAllowManageByContext($this->_iContextId);
                 break;

+ 9 - 0
modules/boonex/tasks/classes/BxTasksModule.php

@@ -785,6 +785,9 @@ class BxTasksModule extends BxBaseModTextModule implements iBxDolCalendarService
 
         $bContextPid = !empty($iContextPid);
 
+        if($sType == 'administration' && (($bContextPid && !$this->isAllowManageByContext($iContextPid)) || (!$bContextPid && !($this->_isModerator() || $this->_isAdministrator()))))
+            return ($sMsg = _t('_sys_txt_access_denied')) && $this->_bIsApi ? [bx_api_get_msg($sMsg)] : MsgBox($sMsg);
+
         $sGrid = $CNF['OBJECT_GRID_TIME_' . ($bContextPid ? 'CONTEXT_' : '') . strtoupper($sType)];
         $oGrid = BxDolGrid::getObjectInstance($sGrid);
         if(!$oGrid)
@@ -832,6 +835,9 @@ class BxTasksModule extends BxBaseModTextModule implements iBxDolCalendarService
         if(!$bContextPid)
             return $this->_bIsApi ? [] : '';
 
+        if($sType == 'administration' && (($bContextPid && !$this->isAllowManageByContext($iContextPid)) || (!$bContextPid && !($this->_isModerator() || $this->_isAdministrator()))))
+            return ($sMsg = _t('_sys_txt_access_denied')) && $this->_bIsApi ? [bx_api_get_msg($sMsg)] : MsgBox($sMsg);
+
         $sGrid = $CNF['OBJECT_GRID_BUDGET_' . ($bContextPid ? 'CONTEXT_' : '') . strtoupper($sType)];
         $oGrid = BxDolGrid::getObjectInstance($sGrid);
         if(!$oGrid)
@@ -864,6 +870,9 @@ class BxTasksModule extends BxBaseModTextModule implements iBxDolCalendarService
 
     public function serviceGetBlockBudget($iContextPid = 0)
     {
+        if(!$iContextPid || !$this->isAllowManageByContext($iContextPid))
+            return $this->_bIsApi ? [] : '';
+
         $aBudget = $this->_oDb->getBudget(['sample'=> 'context_id', 'context_id' => $iContextPid]);
         if(!$aBudget || !is_array($aBudget))
             return $this->_bIsApi ? [] : MsgBox(_t('_Empty'));

+ 1 - 1
modules/boonex/tasks/install/sql/enable.sql

@@ -479,7 +479,7 @@ INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `fie
 ('bx_tasks_time_administration', 'Sql', 'SELECT `ttt`.*, `tt`.`title`, `tp`.`id` AS `context_id`, `tp`.`type` AS `context_module` FROM `bx_tasks_time_track` AS `ttt` INNER JOIN `bx_tasks_tasks` AS `tt` ON `ttt`.`object_id`=`tt`.`id` INNER JOIN `sys_profiles` AS `tp` ON ABS(`tt`.`allow_view_to`)=`tp`.`id` WHERE 1 ', 'bx_tasks_time_track', 'id', 'value_date', '', '', 100, NULL, 'start', '', 'ttt`.`text,tt`.`title,tt`.`text', '', 'like', 'date', '', 192, 'BxTasksGridTimeAdministration', 'modules/boonex/tasks/classes/BxTasksGridTimeAdministration.php'),
 ('bx_tasks_time_common', 'Sql', 'SELECT `ttt`.*, `tt`.`title`, `tp`.`id` AS `context_id`, `tp`.`type` AS `context_module` FROM `bx_tasks_time_track` AS `ttt` INNER JOIN `bx_tasks_tasks` AS `tt` ON `ttt`.`object_id`=`tt`.`id` INNER JOIN `sys_profiles` AS `tp` ON ABS(`tt`.`allow_view_to`)=`tp`.`id` WHERE 1 ', 'bx_tasks_time_track', 'id', 'value_date', '', '', 100, NULL, 'start', '', 'ttt`.`text,tt`.`title,tt`.`text', '', 'like', 'date', '', 2147483647, 'BxTasksGridTimeCommon', 'modules/boonex/tasks/classes/BxTasksGridTimeCommon.php'),
 
-('bx_tasks_time_context_administration', 'Sql', 'SELECT `ttt`.*, `tt`.`title` FROM `bx_tasks_time_track` AS `ttt` INNER JOIN `bx_tasks_tasks` AS `tt` ON `ttt`.`object_id`=`tt`.`id` WHERE 1 ', 'bx_tasks_time_track', 'id', 'value_date', '', '', 50, NULL, 'start', '', 'ttt`.`text,tt`.`title,tt`.`text', '', 'like', 'date', '', 192, 'BxTasksGridTimeContextAdministration', 'modules/boonex/tasks/classes/BxTasksGridTimeContextAdministration.php'),
+('bx_tasks_time_context_administration', 'Sql', 'SELECT `ttt`.*, `tt`.`title` FROM `bx_tasks_time_track` AS `ttt` INNER JOIN `bx_tasks_tasks` AS `tt` ON `ttt`.`object_id`=`tt`.`id` WHERE 1 ', 'bx_tasks_time_track', 'id', 'value_date', '', '', 50, NULL, 'start', '', 'ttt`.`text,tt`.`title,tt`.`text', '', 'like', 'date', '', 2147483647, 'BxTasksGridTimeContextAdministration', 'modules/boonex/tasks/classes/BxTasksGridTimeContextAdministration.php'),
 ('bx_tasks_time_context_common', 'Sql', 'SELECT `ttt`.*, `tt`.`title` FROM `bx_tasks_time_track` AS `ttt` INNER JOIN `bx_tasks_tasks` AS `tt` ON `ttt`.`object_id`=`tt`.`id` WHERE 1 ', 'bx_tasks_time_track', 'id', 'value_date', '', '', 50, NULL, 'start', '', 'ttt`.`text,tt`.`title,tt`.`text', '', 'like', 'date', '', 2147483647, 'BxTasksGridTimeContextCommon', 'modules/boonex/tasks/classes/BxTasksGridTimeContextCommon.php');
 
 INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES