Differential D20632 Diff 49231 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
Show All 15 Lines | public function handleRequest(AphrontRequest $request) { | ||||
if ($response) { | if ($response) { | ||||
return $response; | return $response; | ||||
} | } | ||||
$project = $this->getProject(); | $project = $this->getProject(); | ||||
$state = $this->getViewState(); | $state = $this->getViewState(); | ||||
$board_uri = $project->getWorkboardURI(); | $board_uri = $project->getWorkboardURI(); | ||||
$search_engine = id(new ManiphestTaskSearchEngine()) | $search_engine = $state->getSearchEngine(); | ||||
->setViewer($viewer) | |||||
->setBaseURI($board_uri) | |||||
->setIsBoardView(true); | |||||
if ($request->isFormPost() | |||||
&& !$request->getBool('initialize') | |||||
&& !$request->getStr('move') | |||||
&& !$request->getStr('queryColumnID')) { | |||||
epriestley: Particularly, I think getting rid of this absolute nonsense is a big step forward in clarity. | |||||
$saved = $search_engine->buildSavedQueryFromRequest($request); | |||||
$search_engine->saveQuery($saved); | |||||
$filter_form = id(new AphrontFormView()) | |||||
->setUser($viewer); | |||||
$search_engine->buildSearchForm($filter_form, $saved); | |||||
if ($search_engine->getErrors()) { | |||||
return $this->newDialog() | |||||
->setWidth(AphrontDialogView::WIDTH_FULL) | |||||
->setTitle(pht('Advanced Filter')) | |||||
->appendChild($filter_form->buildLayoutView()) | |||||
->setErrors($search_engine->getErrors()) | |||||
->setSubmitURI($board_uri) | |||||
->addSubmitButton(pht('Apply Filter')) | |||||
->addCancelButton($board_uri); | |||||
} | |||||
$query_key = $saved->getQueryKey(); | |||||
$results_uri = $search_engine->getQueryResultsPageURI($query_key); | |||||
$results_uri = $state->newURI($results_uri); | |||||
return id(new AphrontRedirectResponse())->setURI($results_uri); | |||||
} | |||||
$query_key = $state->getQueryKey(); | $query_key = $state->getQueryKey(); | ||||
$saved = $state->getSavedQuery(); | |||||
$custom_query = null; | |||||
if ($search_engine->isBuiltinQuery($query_key)) { | |||||
$saved = $search_engine->buildSavedQueryFromBuiltin($query_key); | |||||
} else { | |||||
$saved = id(new PhabricatorSavedQueryQuery()) | |||||
->setViewer($viewer) | |||||
->withQueryKeys(array($query_key)) | |||||
->executeOne(); | |||||
if (!$saved) { | if (!$saved) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
if ($saved->getID()) { | |||||
$custom_query = $saved; | $custom_query = $saved; | ||||
} | } else { | ||||
$custom_query = null; | |||||
if ($request->getURIData('filter')) { | |||||
$filter_form = id(new AphrontFormView()) | |||||
->setUser($viewer); | |||||
$search_engine->buildSearchForm($filter_form, $saved); | |||||
return $this->newDialog() | |||||
->setWidth(AphrontDialogView::WIDTH_FULL) | |||||
->setTitle(pht('Advanced Filter')) | |||||
->appendChild($filter_form->buildLayoutView()) | |||||
->setSubmitURI($board_uri) | |||||
->addSubmitButton(pht('Apply Filter')) | |||||
->addCancelButton($board_uri); | |||||
} | } | ||||
$task_query = $search_engine->buildQueryFromSavedQuery($saved); | $task_query = $search_engine->buildQueryFromSavedQuery($saved); | ||||
$select_phids = array($project->getPHID()); | $select_phids = array($project->getPHID()); | ||||
if ($project->getHasSubprojects() || $project->getHasMilestones()) { | if ($project->getHasSubprojects() || $project->getHasMilestones()) { | ||||
$descendants = id(new PhabricatorProjectQuery()) | $descendants = id(new PhabricatorProjectQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
▲ Show 20 Lines • Show All 1,333 Lines • Show Last 20 Lines |
Particularly, I think getting rid of this absolute nonsense is a big step forward in clarity. This is saying:
...apply a filter.
This is weird, non-obvious, non-local, and the approach ("do every possible action in this controller by guessing request parameters") doesn't scale very well, even ignoring how big the file has become in terms of raw line size.