Christopher Johnson (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/205590

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(-)


  git pull ssh://gerrit.wikimedia.org:29418/phabricator/extensions/Sprint 
refs/changes/90/205590/1

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: newchange
Gerrit-Change-Id: Ib1a50692beb950c2e66195fe3387acb140206d10
Gerrit-PatchSet: 1
Gerrit-Project: phabricator/extensions/Sprint
Gerrit-Branch: master
Gerrit-Owner: Christopher Johnson (WMDE) <christopher.john...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to