Differential D7938 Diff 17973 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(); | ||||
msort($columns, 'getSequence'); | $columns = mpull($columns, null, 'getSequence'); | ||||
// If there's no default column, create one now. | |||||
if (empty($columns[0])) { | |||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | |||||
$column = PhabricatorProjectColumn::initializeNewColumn($viewer) | |||||
->setSequence(0) | |||||
->setProjectPHID($project->getPHID()) | |||||
->save(); | |||||
$column->attachProject($project); | |||||
$columns[0] = $column; | |||||
unset($unguarded); | |||||
} | |||||
ksort($columns); | |||||
$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 so made up. | |||||
$task_map = array(); | $task_map = array(); | ||||
$default_phid = $columns[0]->getPHID(); | |||||
foreach ($tasks as $task) { | foreach ($tasks as $task) { | ||||
if ($columns) { | $task_map[$default_phid][] = $task->getPHID(); | ||||
$random_column = $columns[array_rand($columns)]->getPHID(); | |||||
} else { | |||||
$random_column = 0; | |||||
} | |||||
$task_map[$random_column][] = $task->getPHID(); | |||||
} | } | ||||
$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->getDisplayName()) | ||||
->setHeaderColor($column->getHeaderColor()) | |||||
->setEditURI('edit/'.$column->getID().'/'); | ->setEditURI('edit/'.$column->getID().'/'); | ||||
$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) { | ||||
Show All 40 Lines | public function processRequest() { | ||||
return $this->buildApplicationPage( | return $this->buildApplicationPage( | ||||
array( | array( | ||||
$crumbs, | $crumbs, | ||||
$header, | $header, | ||||
$board_box, | $board_box, | ||||
), | ), | ||||
array( | array( | ||||
'title' => pht('Board'), | 'title' => pht('%s Board', $project->getName()), | ||||
'device' => true, | 'device' => true, | ||||
)); | )); | ||||
} | } | ||||
private function renderTaskCard(ManiphestTask $task) { | private function renderTaskCard(ManiphestTask $task) { | ||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$viewer = $request->getUser(); | $viewer = $request->getUser(); | ||||
Show All 24 Lines |