Differential D19366 Diff 46335 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
| Show All 30 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| $search_engine = id(new ManiphestTaskSearchEngine()) | $search_engine = id(new ManiphestTaskSearchEngine()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->setBaseURI($board_uri) | ->setBaseURI($board_uri) | ||||
| ->setIsBoardView(true); | ->setIsBoardView(true); | ||||
| if ($request->isFormPost() | if ($request->isFormPost() | ||||
| && !$request->getBool('initialize') | && !$request->getBool('initialize') | ||||
| && !$request->getStr('move')) { | && !$request->getStr('move') | ||||
| && !$request->getStr('queryColumnID')) { | |||||
| $saved = $search_engine->buildSavedQueryFromRequest($request); | $saved = $search_engine->buildSavedQueryFromRequest($request); | ||||
| $search_engine->saveQuery($saved); | $search_engine->saveQuery($saved); | ||||
| $filter_form = id(new AphrontFormView()) | $filter_form = id(new AphrontFormView()) | ||||
| ->setUser($viewer); | ->setUser($viewer); | ||||
| $search_engine->buildSearchForm($filter_form, $saved); | $search_engine->buildSearchForm($filter_form, $saved); | ||||
| if ($search_engine->getErrors()) { | if ($search_engine->getErrors()) { | ||||
| return $this->newDialog() | return $this->newDialog() | ||||
| ->setWidth(AphrontDialogView::WIDTH_FULL) | ->setWidth(AphrontDialogView::WIDTH_FULL) | ||||
| ▲ Show 20 Lines • Show All 135 Lines • ▼ Show 20 Lines | if (!$columns || !$project->getHasWorkboard()) { | ||||
| $project->getDisplayName(), | $project->getDisplayName(), | ||||
| pht('Workboard'), | pht('Workboard'), | ||||
| )) | )) | ||||
| ->setNavigation($nav) | ->setNavigation($nav) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild($content); | ->appendChild($content); | ||||
| } | } | ||||
| // If the user wants to turn a particular column into a query, build an | |||||
| // apropriate filter and redirect them to the query results page. | |||||
| $query_column_id = $request->getInt('queryColumnID'); | |||||
| if ($query_column_id) { | |||||
| $column_id_map = mpull($columns, null, 'getID'); | |||||
| $query_column = idx($column_id_map, $query_column_id); | |||||
| if (!$query_column) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| // Create a saved query to combine the active filter on the workboard | |||||
| // with the column filter. If the user currently has constraints on the | |||||
| // board, we want to add a new column or project constraint, not | |||||
| // completely replace the constraints. | |||||
| $saved_query = clone $saved; | |||||
| if ($query_column->getProxyPHID()) { | |||||
| $project_phids = $saved_query->getParameter('projectPHIDs'); | |||||
| if (!$project_phids) { | |||||
| $project_phids = array(); | |||||
| } | |||||
| $project_phids[] = $query_column->getProxyPHID(); | |||||
| $saved_query->setParameter('projectPHIDs', $project_phids); | |||||
| } else { | |||||
| $saved_query->setParameter( | |||||
| 'columnPHIDs', | |||||
| array($query_column->getPHID())); | |||||
| } | |||||
| $search_engine = id(new ManiphestTaskSearchEngine()) | |||||
| ->setViewer($viewer); | |||||
| $search_engine->saveQuery($saved_query); | |||||
| $query_key = $saved_query->getQueryKey(); | |||||
| $query_uri = new PhutilURI("/maniphest/query/{$query_key}/#R"); | |||||
| return id(new AphrontRedirectResponse()) | |||||
| ->setURI($query_uri); | |||||
| } | |||||
| $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 | // If this is a batch edit, select the editable tasks in the chosen column | ||||
| // and ship the user into the batch editor. | // and ship the user into the batch editor. | ||||
| $batch_edit = $request->getStr('batch'); | $batch_edit = $request->getStr('batch'); | ||||
| ▲ Show 20 Lines • Show All 865 Lines • ▼ Show 20 Lines | private function buildColumnMenu( | ||||
| $batch_move_uri = $request->getRequestURI(); | $batch_move_uri = $request->getRequestURI(); | ||||
| $batch_move_uri->setQueryParam('move', $column->getID()); | $batch_move_uri->setQueryParam('move', $column->getID()); | ||||
| $column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
| ->setIcon('fa-arrow-right') | ->setIcon('fa-arrow-right') | ||||
| ->setName(pht('Move Tasks to Column...')) | ->setName(pht('Move Tasks to Column...')) | ||||
| ->setHref($batch_move_uri) | ->setHref($batch_move_uri) | ||||
| ->setWorkflow(true); | ->setWorkflow(true); | ||||
| // Column Related Actions Below | $query_uri = $request->getRequestURI(); | ||||
| // | $query_uri->setQueryParam('queryColumnID', $column->getID()); | ||||
| $column_items[] = id(new PhabricatorActionView()) | |||||
| ->setName(pht('View as Query')) | |||||
| ->setIcon('fa-search') | |||||
| ->setHref($query_uri); | |||||
| $edit_uri = 'board/'.$this->id.'/edit/'.$column->getID().'/'; | $edit_uri = 'board/'.$this->id.'/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); | ||||
| ▲ Show 20 Lines • Show All 244 Lines • Show Last 20 Lines | |||||