Support natural ordering of workboards
Summary: Ref T4807. This is probably a complete fix, but I'd be surprised if there isn't a little cleanup I missed. When users drag tasks on a "natural"-ordered workboard, leave things where they put them. This isn't //too// bad since a lot of the existing work is completely reusable (e.g., we don't need any new JS). Test Plan: - Dragged a bunch of stuff around, it stayed where I put it after dropped and when reloaded. - Dragged stuff across priorities, no zany priority changes (in "natural" mode). - Created new tasks, they show up at the top. - Tagged new tasks, they show up at the top of backlog. - Swapped to "priority" mode and got sorting and the old priority-altering reordering. - Added tasks in priority mode. - Viewed task transactions for correctness/sanity. Reviewers: btrahan, chad Reviewed By: chad Subscribers: chad, epriestley Maniphest Tasks: T4807 Differential Revision: https://secure.phabricator.com/D10182
This commit is contained in:
@@ -178,6 +178,23 @@ final class PhabricatorProjectBoardViewController
|
||||
$task_map[$column_phid][] = $task_phid;
|
||||
}
|
||||
|
||||
// If we're showing the board in "natural" order, sort columns by their
|
||||
// column positions.
|
||||
if ($this->sortKey == PhabricatorProjectColumn::ORDER_NATURAL) {
|
||||
foreach ($task_map as $column_phid => $task_phids) {
|
||||
$order = array();
|
||||
foreach ($task_phids as $task_phid) {
|
||||
if (isset($positions[$task_phid])) {
|
||||
$order[$task_phid] = $positions[$task_phid]->getOrderingKey();
|
||||
} else {
|
||||
$order[$task_phid] = 0;
|
||||
}
|
||||
}
|
||||
asort($order);
|
||||
$task_map[$column_phid] = array_keys($order);
|
||||
}
|
||||
}
|
||||
|
||||
$task_can_edit_map = id(new PhabricatorPolicyFilter())
|
||||
->setViewer($viewer)
|
||||
->requireCapabilities(array(PhabricatorPolicyCapability::CAN_EDIT))
|
||||
|
||||
Reference in New Issue
Block a user