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 |