Differential D12475 Diff 29945 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
| <?php | <?php | ||||
| final class PhabricatorProjectBoardViewController | final class PhabricatorProjectBoardViewController | ||||
| extends PhabricatorProjectBoardController { | extends PhabricatorProjectBoardController { | ||||
| const BATCH_EDIT_ALL = 'all'; | |||||
| private $id; | private $id; | ||||
| private $slug; | private $slug; | ||||
| private $handles; | private $handles; | ||||
| private $queryKey; | private $queryKey; | ||||
| private $filter; | private $filter; | ||||
| private $sortKey; | private $sortKey; | ||||
| private $showHidden; | private $showHidden; | ||||
| ▲ Show 20 Lines • Show All 192 Lines • ▼ Show 20 Lines | if ($this->sortKey == PhabricatorProjectColumn::ORDER_NATURAL) { | ||||
| } | } | ||||
| } | } | ||||
| $task_can_edit_map = id(new PhabricatorPolicyFilter()) | $task_can_edit_map = id(new PhabricatorPolicyFilter()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->requireCapabilities(array(PhabricatorPolicyCapability::CAN_EDIT)) | ->requireCapabilities(array(PhabricatorPolicyCapability::CAN_EDIT)) | ||||
| ->apply($tasks); | ->apply($tasks); | ||||
| // If this is a batch edit, select the editable tasks in the chosen column | |||||
| // and ship the user into the batch editor. | |||||
| $batch_edit = $request->getStr('batch'); | |||||
| if ($batch_edit) { | |||||
| if ($batch_edit !== self::BATCH_EDIT_ALL) { | |||||
| $column_id_map = mpull($columns, null, 'getID'); | |||||
| $batch_column = idx($column_id_map, $batch_edit); | |||||
| if (!$batch_column) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| $batch_task_phids = idx($task_map, $batch_column->getPHID(), array()); | |||||
| foreach ($batch_task_phids as $key => $batch_task_phid) { | |||||
| if (empty($task_can_edit_map[$batch_task_phid])) { | |||||
| unset($batch_task_phids[$key]); | |||||
| } | |||||
| } | |||||
| $batch_tasks = array_select_keys($tasks, $batch_task_phids); | |||||
| } else { | |||||
| $batch_tasks = $task_can_edit_map; | |||||
| } | |||||
| if (!$batch_tasks) { | |||||
| $cancel_uri = $this->getURIWithState($board_uri); | |||||
| return $this->newDialog() | |||||
| ->setTitle(pht('No Editable Tasks')) | |||||
| ->appendParagraph( | |||||
| pht( | |||||
| 'The selected column contains no visible tasks which you '. | |||||
| 'have permission to edit.')) | |||||
| ->addCancelButton($board_uri); | |||||
| } | |||||
| $batch_ids = mpull($batch_tasks, 'getID'); | |||||
| $batch_ids = implode(',', $batch_ids); | |||||
| $batch_uri = new PhutilURI('/maniphest/batch/'); | |||||
| $batch_uri->setQueryParam('board', $this->id); | |||||
| $batch_uri->setQueryParam('batch', $batch_ids); | |||||
| return id(new AphrontRedirectResponse()) | |||||
| ->setURI($batch_uri); | |||||
| } | |||||
| $board_id = celerity_generate_unique_node_id(); | $board_id = celerity_generate_unique_node_id(); | ||||
| $board = id(new PHUIWorkboardView()) | $board = id(new PHUIWorkboardView()) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setID($board_id); | ->setID($board_id); | ||||
| $this->initBehavior( | $this->initBehavior( | ||||
| 'project-boards', | 'project-boards', | ||||
| ▲ Show 20 Lines • Show All 291 Lines • ▼ Show 20 Lines | if ($show_hidden) { | ||||
| $hidden_text = pht('Show Hidden Columns'); | $hidden_text = pht('Show Hidden Columns'); | ||||
| } | } | ||||
| $manage_items[] = id(new PhabricatorActionView()) | $manage_items[] = id(new PhabricatorActionView()) | ||||
| ->setIcon($hidden_icon) | ->setIcon($hidden_icon) | ||||
| ->setName($hidden_text) | ->setName($hidden_text) | ||||
| ->setHref($hidden_uri); | ->setHref($hidden_uri); | ||||
| $batch_edit_uri = $request->getRequestURI(); | |||||
| $batch_edit_uri->setQueryParam('batch', self::BATCH_EDIT_ALL); | |||||
| $can_batch_edit = PhabricatorPolicyFilter::hasCapability( | |||||
| $viewer, | |||||
| PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), | |||||
| ManiphestBulkEditCapability::CAPABILITY); | |||||
| $manage_items[] = id(new PhabricatorActionView()) | |||||
| ->setIcon('fa-list-ul') | |||||
| ->setName(pht('Batch Edit Visible Tasks...')) | |||||
| ->setHref($batch_edit_uri) | |||||
| ->setDisabled(!$can_batch_edit); | |||||
| $manage_menu = id(new PhabricatorActionListView()) | $manage_menu = id(new PhabricatorActionListView()) | ||||
| ->setUser($viewer); | ->setUser($viewer); | ||||
| foreach ($manage_items as $item) { | foreach ($manage_items as $item) { | ||||
| $manage_menu->addAction($item); | $manage_menu->addAction($item); | ||||
| } | } | ||||
| $manage_button = id(new PHUIButtonView()) | $manage_button = id(new PHUIButtonView()) | ||||
| ->setText(pht('Manage Board')) | ->setText(pht('Manage Board')) | ||||
| Show All 29 Lines | $column_items[] = id(new PhabricatorActionView()) | ||||
| ->setHref('/maniphest/task/create/') | ->setHref('/maniphest/task/create/') | ||||
| ->addSigil('column-add-task') | ->addSigil('column-add-task') | ||||
| ->setMetadata( | ->setMetadata( | ||||
| array( | array( | ||||
| 'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
| )) | )) | ||||
| ->setDisabled(!$can_edit); | ->setDisabled(!$can_edit); | ||||
| $batch_edit_uri = $request->getRequestURI(); | |||||
| $batch_edit_uri->setQueryParam('batch', $column->getID()); | |||||
| $can_batch_edit = PhabricatorPolicyFilter::hasCapability( | |||||
| $viewer, | |||||
| PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), | |||||
| ManiphestBulkEditCapability::CAPABILITY); | |||||
| $column_items[] = id(new PhabricatorActionView()) | |||||
| ->setIcon('fa-list-ul') | |||||
| ->setName(pht('Batch Edit Tasks...')) | |||||
| ->setHref($batch_edit_uri) | |||||
| ->setDisabled(!$can_batch_edit); | |||||
| $edit_uri = $this->getApplicationURI( | $edit_uri = $this->getApplicationURI( | ||||
| 'board/'.$this->id.'/column/'.$column->getID().'/'); | 'board/'.$this->id.'/column/'.$column->getID().'/'); | ||||
| $column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
| ->setIcon('fa-pencil') | ->setIcon('fa-pencil') | ||||
| ->setName(pht('Edit Column')) | ->setName(pht('Edit Column')) | ||||
| ->setHref($edit_uri) | ->setHref($edit_uri) | ||||
| ->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
| ▲ Show 20 Lines • Show All 99 Lines • Show Last 20 Lines | |||||