diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php --- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php @@ -728,6 +728,11 @@ ->setIcon('fa-search') ->setHref($query_uri); + $can_bulk_edit = PhabricatorPolicyFilter::hasCapability( + $viewer, + PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), + ManiphestBulkEditCapability::CAPABILITY); + $column_move_uri = urisprintf('bulkmove/%d/column/', $column->getID()); $column_move_uri = $state->newWorkboardURI($column_move_uri); @@ -735,6 +740,7 @@ ->setIcon('fa-arrows-h') ->setName(pht('Move Tasks to Column...')) ->setHref($column_move_uri) + ->setDisabled(!$can_bulk_edit) ->setWorkflow(true); $project_move_uri = urisprintf('bulkmove/%d/project/', $column->getID()); @@ -744,16 +750,12 @@ ->setIcon('fa-arrows') ->setName(pht('Move Tasks to Project...')) ->setHref($project_move_uri) + ->setDisabled(!$can_bulk_edit) ->setWorkflow(true); $bulk_edit_uri = urisprintf('bulk/%d/', $column->getID()); $bulk_edit_uri = $state->newWorkboardURI($bulk_edit_uri); - $can_bulk_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), - ManiphestBulkEditCapability::CAPABILITY); - $column_items[] = id(new PhabricatorActionView()) ->setIcon('fa-pencil-square-o') ->setName(pht('Bulk Edit Tasks...')) diff --git a/src/applications/project/controller/PhabricatorProjectColumnBulkMoveController.php b/src/applications/project/controller/PhabricatorProjectColumnBulkMoveController.php --- a/src/applications/project/controller/PhabricatorProjectColumnBulkMoveController.php +++ b/src/applications/project/controller/PhabricatorProjectColumnBulkMoveController.php @@ -40,6 +40,20 @@ $move_tasks = array_select_keys($tasks, $move_task_phids); + $can_bulk_edit = PhabricatorPolicyFilter::hasCapability( + $viewer, + PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), + ManiphestBulkEditCapability::CAPABILITY); + + if (!$can_bulk_edit) { + return $this->newDialog() + ->setTitle(pht('No Movable Tasks')) + ->appendParagraph( + pht( + 'You do not have permission to bulk edit tasks.')) + ->addCancelButton($board_uri); + } + $move_tasks = id(new PhabricatorPolicyFilter()) ->setViewer($viewer) ->requireCapabilities(array(PhabricatorPolicyCapability::CAN_EDIT))