Differential D7933 Diff 17953 src/applications/project/controller/PhabricatorProjectBoardController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardController.php
Show All 24 Lines | if (!$project) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$columns = id(new PhabricatorProjectColumnQuery()) | $columns = id(new PhabricatorProjectColumnQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withProjectPHIDs(array($project->getPHID())) | ->withProjectPHIDs(array($project->getPHID())) | ||||
->execute(); | ->execute(); | ||||
// TODO: Completely making this part up. | |||||
$columns[] = id(new PhabricatorProjectColumn()) | |||||
->setName('Backlog') | |||||
->setPHID(0) | |||||
->setSequence(0); | |||||
$columns[] = id(new PhabricatorProjectColumn()) | |||||
->setName('Assigned') | |||||
->setPHID(1) | |||||
->setSequence(1); | |||||
$columns[] = id(new PhabricatorProjectColumn()) | |||||
->setName('In Progress') | |||||
->setPHID(2) | |||||
->setSequence(2); | |||||
$columns[] = id(new PhabricatorProjectColumn()) | |||||
->setName('Completed') | |||||
->setPHID(3) | |||||
->setSequence(3); | |||||
msort($columns, 'getSequence'); | msort($columns, 'getSequence'); | ||||
$tasks = id(new ManiphestTaskQuery()) | $tasks = id(new ManiphestTaskQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withAllProjects(array($project->getPHID())) | ->withAllProjects(array($project->getPHID())) | ||||
->withStatus(ManiphestTaskQuery::STATUS_OPEN) | ->withStatus(ManiphestTaskQuery::STATUS_OPEN) | ||||
->setOrderBy(ManiphestTaskQuery::ORDER_PRIORITY) | ->setOrderBy(ManiphestTaskQuery::ORDER_PRIORITY) | ||||
->execute(); | ->execute(); | ||||
$tasks = mpull($tasks, null, 'getPHID'); | $tasks = mpull($tasks, null, 'getPHID'); | ||||
// TODO: This is also made up. | // TODO: This is so made up. | ||||
$task_map = array(); | $task_map = array(); | ||||
foreach ($tasks as $task) { | foreach ($tasks as $task) { | ||||
$task_map[mt_rand(0, 3)][] = $task->getPHID(); | if ($columns) { | ||||
$random_column = $columns[array_rand($columns)]->getPHID(); | |||||
} else { | |||||
$random_column = 0; | |||||
} | |||||
$task_map[$random_column][] = $task->getPHID(); | |||||
epriestley: This probably derps for projects with no columns yet, but that's fine. | |||||
} | } | ||||
$board = id(new PHUIWorkboardView()) | $board = id(new PHUIWorkboardView()) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setFluidishLayout(true); | ->setFluidishLayout(true); | ||||
foreach ($columns as $column) { | foreach ($columns as $column) { | ||||
$panel = id(new PHUIWorkpanelView()) | $panel = id(new PHUIWorkpanelView()) | ||||
->setHeader($column->getName()); | ->setHeader($column->getName()) | ||||
->setEditURI('edit/'.$column->getID().'/'); | |||||
Not Done Inline ActionsFor consistency, include the trailing "/" in this URI. We'll add it automatically if it's omitted, but Phabricator URIs generally end with a "/". epriestley: For consistency, include the trailing "/" in this URI. We'll add it automatically if it's… | |||||
$cards = id(new PHUIObjectItemListView()) | $cards = id(new PHUIObjectItemListView()) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setCards(true) | ->setCards(true) | ||||
->setFlush(true); | ->setFlush(true); | ||||
$task_phids = idx($task_map, $column->getPHID(), array()); | $task_phids = idx($task_map, $column->getPHID(), array()); | ||||
foreach (array_select_keys($tasks, $task_phids) as $task) { | foreach (array_select_keys($tasks, $task_phids) as $task) { | ||||
$cards->addItem($this->renderTaskCard($task)); | $cards->addItem($this->renderTaskCard($task)); | ||||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |
This probably derps for projects with no columns yet, but that's fine.