Differential D20269 Diff 48404 src/applications/project/controller/PhabricatorProjectMoveController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectMoveController.php
| <?php | <?php | ||||
| final class PhabricatorProjectMoveController | final class PhabricatorProjectMoveController | ||||
| extends PhabricatorProjectController { | extends PhabricatorProjectController { | ||||
| public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
| $viewer = $request->getViewer(); | $viewer = $request->getViewer(); | ||||
| $id = $request->getURIData('id'); | $id = $request->getURIData('id'); | ||||
| $request->validateCSRF(); | $request->validateCSRF(); | ||||
| $column_phid = $request->getStr('columnPHID'); | $column_phid = $request->getStr('columnPHID'); | ||||
| $object_phid = $request->getStr('objectPHID'); | $object_phid = $request->getStr('objectPHID'); | ||||
| $after_phid = $request->getStr('afterPHID'); | $after_phid = $request->getStr('afterPHID'); | ||||
| $before_phid = $request->getStr('beforePHID'); | $before_phid = $request->getStr('beforePHID'); | ||||
| $order = $request->getStr('order', PhabricatorProjectColumn::DEFAULT_ORDER); | |||||
| $order = $request->getStr('order'); | |||||
| if (!strlen($order)) { | |||||
| $order = PhabricatorProjectColumnNaturalOrder::ORDERKEY; | |||||
| } | |||||
| $ordering = PhabricatorProjectColumnOrder::getOrderByKey($order); | |||||
| $ordering = id(clone $ordering) | |||||
| ->setViewer($viewer); | |||||
| $edit_header = null; | $edit_header = null; | ||||
| $raw_header = $request->getStr('header'); | $raw_header = $request->getStr('header'); | ||||
| if (strlen($raw_header)) { | if (strlen($raw_header)) { | ||||
| $edit_header = phutil_json_decode($raw_header); | $edit_header = phutil_json_decode($raw_header); | ||||
| } else { | } else { | ||||
| $edit_header = array(); | $edit_header = array(); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | $xactions[] = id(new ManiphestTransaction()) | ||||
| ->setTransactionType(PhabricatorTransactions::TYPE_COLUMNS) | ->setTransactionType(PhabricatorTransactions::TYPE_COLUMNS) | ||||
| ->setNewValue( | ->setNewValue( | ||||
| array( | array( | ||||
| array( | array( | ||||
| 'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
| ) + $order_params, | ) + $order_params, | ||||
| )); | )); | ||||
| $header_xactions = $this->newHeaderTransactions( | $header_xactions = $ordering->getColumnTransactions( | ||||
| $object, | $object, | ||||
| $order, | |||||
| $edit_header); | $edit_header); | ||||
| foreach ($header_xactions as $header_xaction) { | foreach ($header_xactions as $header_xaction) { | ||||
| $xactions[] = $header_xaction; | $xactions[] = $header_xaction; | ||||
| } | } | ||||
| $editor = id(new ManiphestTransactionEditor()) | $editor = id(new ManiphestTransactionEditor()) | ||||
| ->setActor($viewer) | ->setActor($viewer) | ||||
| ->setContinueOnMissingFields(true) | ->setContinueOnMissingFields(true) | ||||
| ->setContinueOnNoEffect(true) | ->setContinueOnNoEffect(true) | ||||
| ->setContentSourceFromRequest($request); | ->setContentSourceFromRequest($request); | ||||
| $editor->applyTransactions($object, $xactions); | $editor->applyTransactions($object, $xactions); | ||||
| return $this->newCardResponse($board_phid, $object_phid); | return $this->newCardResponse($board_phid, $object_phid, $ordering); | ||||
| } | |||||
| private function newHeaderTransactions( | |||||
| ManiphestTask $task, | |||||
| $order, | |||||
| array $header) { | |||||
| $xactions = array(); | |||||
| switch ($order) { | |||||
| case PhabricatorProjectColumn::ORDER_PRIORITY: | |||||
| $new_priority = idx($header, $order); | |||||
| if ($task->getPriority() !== $new_priority) { | |||||
| $keyword_map = ManiphestTaskPriority::getTaskPriorityKeywordsMap(); | |||||
| $keyword = head(idx($keyword_map, $new_priority)); | |||||
| $xactions[] = id(new ManiphestTransaction()) | |||||
| ->setTransactionType( | |||||
| ManiphestTaskPriorityTransaction::TRANSACTIONTYPE) | |||||
| ->setNewValue($keyword); | |||||
| } | |||||
| break; | |||||
| } | |||||
| return $xactions; | |||||
| } | } | ||||
| } | } | ||||