Differential D20637 Diff 49237 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
Show First 20 Lines • Show All 489 Lines • ▼ Show 20 Lines | foreach ($named as $key => $name) { | ||||
} | } | ||||
$item = id(new PhabricatorActionView()) | $item = id(new PhabricatorActionView()) | ||||
->setIcon('fa-search') | ->setIcon('fa-search') | ||||
->setSelected($is_selected) | ->setSelected($is_selected) | ||||
->setName($name); | ->setName($name); | ||||
if ($is_custom) { | if ($is_custom) { | ||||
$uri = $this->getApplicationURI( | // When you're using a custom filter already and you select "Custom | ||||
'board/'.$project->getID().'/filter/query/'.$key.'/'); | // Filter", you get a dialog back to let you edit the filter. This is | ||||
// equivalent to selecting "Advanced Filter..." to configure a new | |||||
// filter. | |||||
$filter_uri = $state->newWorkboardURI('filter/'); | |||||
$item->setWorkflow(true); | $item->setWorkflow(true); | ||||
} else { | } else { | ||||
$uri = $engine->getQueryResultsPageURI($key); | $filter_uri = urisprintf('query/%s/', $key); | ||||
$filter_uri = $state->newWorkboardURI($filter_uri); | |||||
$filter_uri->removeQueryParam('filter'); | |||||
} | } | ||||
$uri = $this->getURIWithState($uri) | $item->setHref($filter_uri); | ||||
->removeQueryParam('filter'); | |||||
$item->setHref($uri); | |||||
$items[] = $item; | $items[] = $item; | ||||
} | } | ||||
$id = $project->getID(); | $id = $project->getID(); | ||||
$filter_uri = $this->getApplicationURI("board/{$id}/filter/"); | $filter_uri = $state->newWorkboardURI('filter/'); | ||||
$filter_uri = $this->getURIWithState($filter_uri, $force = true); | |||||
$items[] = id(new PhabricatorActionView()) | $items[] = id(new PhabricatorActionView()) | ||||
->setIcon('fa-cog') | ->setIcon('fa-cog') | ||||
->setHref($filter_uri) | ->setHref($filter_uri) | ||||
->setWorkflow(true) | ->setWorkflow(true) | ||||
->setName(pht('Advanced Filter...')); | ->setName(pht('Advanced Filter...')); | ||||
$save_uri = $state->newWorkboardURI('default/filter/'); | $save_uri = $state->newWorkboardURI('default/filter/'); | ||||
▲ Show 20 Lines • Show All 187 Lines • ▼ Show 20 Lines | private function buildColumnMenu( | ||||
$query_uri = urisprintf('viewquery/%d/', $column->getID()); | $query_uri = urisprintf('viewquery/%d/', $column->getID()); | ||||
$query_uri = $state->newWorkboardURI($query_uri); | $query_uri = $state->newWorkboardURI($query_uri); | ||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setName(pht('View Tasks as Query')) | ->setName(pht('View Tasks as Query')) | ||||
->setIcon('fa-search') | ->setIcon('fa-search') | ||||
->setHref($query_uri); | ->setHref($query_uri); | ||||
$column_move_uri = $state->newWorkboardURI( | $column_move_uri = urisprintf('bulkmove/%d/column/', $column->getID()); | ||||
urisprintf( | $column_move_uri = $state->newWorkboardURI($column_move_uri); | ||||
'bulkmove/%d/column/', | |||||
$column->getID())); | |||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setIcon('fa-arrows-h') | ->setIcon('fa-arrows-h') | ||||
->setName(pht('Move Tasks to Column...')) | ->setName(pht('Move Tasks to Column...')) | ||||
->setHref($column_move_uri) | ->setHref($column_move_uri) | ||||
->setWorkflow(true); | ->setWorkflow(true); | ||||
$project_move_uri = $state->newWorkboardURI( | $project_move_uri = urisprintf('bulkmove/%d/project/', $column->getID()); | ||||
urisprintf( | $project_move_uri = $state->newWorkboardURI($project_move_uri); | ||||
'bulkmove/%d/project/', | |||||
$column->getID())); | |||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setIcon('fa-arrows') | ->setIcon('fa-arrows') | ||||
->setName(pht('Move Tasks to Project...')) | ->setName(pht('Move Tasks to Project...')) | ||||
->setHref($project_move_uri) | ->setHref($project_move_uri) | ||||
->setWorkflow(true); | ->setWorkflow(true); | ||||
$bulk_edit_uri = $state->newWorkboardURI( | $bulk_edit_uri = urisprintf('bulk/%d/', $column->getID()); | ||||
urisprintf( | $bulk_edit_uri = $state->newWorkboardURI($bulk_edit_uri); | ||||
'bulk/%d/', | |||||
$column->getID())); | |||||
epriestley: No actual changes here, just making the code look more similar throughout the controller. | |||||
$can_bulk_edit = PhabricatorPolicyFilter::hasCapability( | $can_bulk_edit = PhabricatorPolicyFilter::hasCapability( | ||||
$viewer, | $viewer, | ||||
PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), | PhabricatorApplication::getByClass('PhabricatorManiphestApplication'), | ||||
ManiphestBulkEditCapability::CAPABILITY); | ManiphestBulkEditCapability::CAPABILITY); | ||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setIcon('fa-pencil-square-o') | ->setIcon('fa-pencil-square-o') | ||||
->setName(pht('Bulk Edit Tasks...')) | ->setName(pht('Bulk Edit Tasks...')) | ||||
->setHref($bulk_edit_uri) | ->setHref($bulk_edit_uri) | ||||
->setDisabled(!$can_bulk_edit); | ->setDisabled(!$can_bulk_edit); | ||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setType(PhabricatorActionView::TYPE_DIVIDER); | ->setType(PhabricatorActionView::TYPE_DIVIDER); | ||||
$edit_uri = 'board/'.$project->getID().'/edit/'.$column->getID().'/'; | $edit_uri = 'board/'.$project->getID().'/edit/'.$column->getID().'/'; | ||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setName(pht('Edit Column')) | ->setName(pht('Edit Column')) | ||||
->setIcon('fa-pencil') | ->setIcon('fa-pencil') | ||||
->setHref($this->getApplicationURI($edit_uri)) | ->setHref($this->getApplicationURI($edit_uri)) | ||||
->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
->setWorkflow(true); | ->setWorkflow(true); | ||||
$can_hide = ($can_edit && !$column->isDefaultColumn()); | $can_hide = ($can_edit && !$column->isDefaultColumn()); | ||||
$hide_uri = 'board/'.$project->getID().'/hide/'.$column->getID().'/'; | |||||
$hide_uri = $this->getApplicationURI($hide_uri); | $hide_uri = urisprintf('hide/%d/', $column->getID()); | ||||
$hide_uri = $this->getURIWithState($hide_uri); | $hide_uri = $state->newWorkboardURI($hide_uri); | ||||
if (!$column->isHidden()) { | if (!$column->isHidden()) { | ||||
$column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
->setName(pht('Hide Column')) | ->setName(pht('Hide Column')) | ||||
->setIcon('fa-eye-slash') | ->setIcon('fa-eye-slash') | ||||
->setHref($hide_uri) | ->setHref($hide_uri) | ||||
->setDisabled(!$can_hide) | ->setDisabled(!$can_hide) | ||||
->setWorkflow(true); | ->setWorkflow(true); | ||||
▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | $trigger_button = id(new PHUIIconView()) | ||||
array( | array( | ||||
'items' => hsprintf('%s', $trigger_menu), | 'items' => hsprintf('%s', $trigger_menu), | ||||
'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
)); | )); | ||||
return $trigger_button; | return $trigger_button; | ||||
} | } | ||||
/** | |||||
* Add current state parameters (like order and the visibility of hidden | |||||
* columns) to a URI. | |||||
* | |||||
* This allows actions which toggle or adjust one piece of state to keep | |||||
* the rest of the board state persistent. If no URI is provided, this method | |||||
* starts with the request URI. | |||||
* | |||||
* @param string|null URI to add state parameters to. | |||||
* @param bool True to explicitly include all state. | |||||
* @return PhutilURI URI with state parameters. | |||||
*/ | |||||
private function getURIWithState($base = null, $force = false) { | |||||
if ($base === null) { | |||||
$base = $this->getProject()->getWorkboardURI(); | |||||
} | |||||
return $this->getViewState()->newURI($base, $force); | |||||
} | |||||
private function buildInitializeContent(PhabricatorProject $project) { | private function buildInitializeContent(PhabricatorProject $project) { | ||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$type = $request->getStr('initialize-type'); | $type = $request->getStr('initialize-type'); | ||||
$id = $project->getID(); | $id = $project->getID(); | ||||
▲ Show 20 Lines • Show All 158 Lines • Show Last 20 Lines |
No actual changes here, just making the code look more similar throughout the controller.