Christopher Johnson (WMDE) has submitted this change and it was merged. Change subject: updates sprint board controllers with the new Batch Edit feature upstream D12475 2015-04-20 ......................................................................
updates sprint board controllers with the new Batch Edit feature upstream D12475 2015-04-20 Change-Id: Ib1a50692beb950c2e66195fe3387acb140206d10 --- M src/controller/board/SprintBoardColumnDetailController.php M src/controller/board/SprintBoardColumnEditController.php M src/controller/board/SprintBoardViewController.php 3 files changed, 85 insertions(+), 4 deletions(-) Approvals: Christopher Johnson (WMDE): Verified; Looks good to me, approved Objections: jenkins-bot: Fails diff --git a/src/controller/board/SprintBoardColumnDetailController.php b/src/controller/board/SprintBoardColumnDetailController.php index 7f7a580..ab85bd6 100644 --- a/src/controller/board/SprintBoardColumnDetailController.php +++ b/src/controller/board/SprintBoardColumnDetailController.php @@ -62,9 +62,7 @@ $nav->appendChild($timeline); return $this->buildApplicationPage( - array( $nav, - ), array( 'title' => $title, )); diff --git a/src/controller/board/SprintBoardColumnEditController.php b/src/controller/board/SprintBoardColumnEditController.php index 30e6a09..e7be1bd 100644 --- a/src/controller/board/SprintBoardColumnEditController.php +++ b/src/controller/board/SprintBoardColumnEditController.php @@ -155,9 +155,7 @@ $nav->appendChild($form_box); return $this->buildApplicationPage( - array( $nav, - ), array( 'title' => $title, )); diff --git a/src/controller/board/SprintBoardViewController.php b/src/controller/board/SprintBoardViewController.php index f4165c6..63bcec6 100755 --- a/src/controller/board/SprintBoardViewController.php +++ b/src/controller/board/SprintBoardViewController.php @@ -3,6 +3,8 @@ final class SprintBoardViewController extends SprintBoardController { + const BATCH_EDIT_ALL = 'all'; + private $id; private $slug; private $handles; @@ -102,6 +104,19 @@ if ($request->isFormPost()) { $saved = $engine->buildSavedQueryFromRequest($request); $engine->saveQuery($saved); + $filter_form = id(new AphrontFormView()) + ->setUser($viewer); + $engine->buildSearchForm($filter_form, $saved); + if ($engine->getErrors()) { + return $this->newDialog() + ->setWidth(AphrontDialogView::WIDTH_FULL) + ->setTitle(pht('Advanced Filter')) + ->appendChild($filter_form->buildLayoutView()) + ->setErrors($engine->getErrors()) + ->setSubmitURI($board_uri) + ->addSubmitButton(pht('Apply Filter')) + ->addCancelButton($board_uri); + } return id(new AphrontRedirectResponse())->setURI( $this->getURIWithState( $engine->getQueryResultsPageURI($saved->getQueryKey()))); @@ -202,6 +217,50 @@ ->setViewer($viewer) ->requireCapabilities(array(PhabricatorPolicyCapability::CAN_EDIT)) ->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(); @@ -534,6 +593,19 @@ ->setName($hidden_text) ->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()) ->setUser($viewer); foreach ($manage_items as $item) { @@ -579,6 +651,19 @@ )) ->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( 'board/'.$this->id.'/column/'.$column->getID().'/'); -- To view, visit https://gerrit.wikimedia.org/r/205590 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib1a50692beb950c2e66195fe3387acb140206d10 Gerrit-PatchSet: 1 Gerrit-Project: phabricator/extensions/Sprint Gerrit-Branch: master Gerrit-Owner: Christopher Johnson (WMDE) <christopher.john...@wikimedia.de> Gerrit-Reviewer: Christopher Johnson (WMDE) <christopher.john...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits