Differential D9719 Diff 23354 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
Show All 18 Lines | public function willProcessRequest(array $data) { | ||||
$this->queryKey = idx($data, 'queryKey'); | $this->queryKey = idx($data, 'queryKey'); | ||||
$this->filter = (bool)idx($data, 'filter'); | $this->filter = (bool)idx($data, 'filter'); | ||||
} | } | ||||
public function processRequest() { | public function processRequest() { | ||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$viewer = $request->getUser(); | $viewer = $request->getUser(); | ||||
$show_hidden = $request->getBool('hidden'); | |||||
$project = id(new PhabricatorProjectQuery()) | $project = id(new PhabricatorProjectQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->needImages(true); | ->needImages(true); | ||||
if ($this->slug) { | if ($this->slug) { | ||||
$project->withSlugs(array($this->slug)); | $project->withSlugs(array($this->slug)); | ||||
} else { | } else { | ||||
$project->withIDs(array($this->id)); | $project->withIDs(array($this->id)); | ||||
} | } | ||||
$project = $project->executeOne(); | $project = $project->executeOne(); | ||||
if (!$project) { | if (!$project) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$this->setProject($project); | $this->setProject($project); | ||||
$columns = id(new PhabricatorProjectColumnQuery()) | $column_query = id(new PhabricatorProjectColumnQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withProjectPHIDs(array($project->getPHID())) | ->withProjectPHIDs(array($project->getPHID())); | ||||
->withStatuses(array(PhabricatorProjectColumn::STATUS_ACTIVE)) | |||||
->execute(); | if (!$show_hidden) { | ||||
$column_query->withStatuses( | |||||
array(PhabricatorProjectColumn::STATUS_ACTIVE)); | |||||
} | |||||
$columns = $column_query->execute(); | |||||
$columns = mpull($columns, null, 'getSequence'); | $columns = mpull($columns, null, 'getSequence'); | ||||
// If there's no default column, create one now. | // If there's no default column, create one now. | ||||
if (empty($columns[0])) { | if (empty($columns[0])) { | ||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | ||||
$column = PhabricatorProjectColumn::initializeNewColumn($viewer) | $column = PhabricatorProjectColumn::initializeNewColumn($viewer) | ||||
->setSequence(0) | ->setSequence(0) | ||||
->setProjectPHID($project->getPHID()) | ->setProjectPHID($project->getPHID()) | ||||
▲ Show 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | $this->initBehavior( | ||||
)); | )); | ||||
$this->handles = ManiphestTaskListView::loadTaskHandles($viewer, $tasks); | $this->handles = ManiphestTaskListView::loadTaskHandles($viewer, $tasks); | ||||
foreach ($columns as $column) { | foreach ($columns as $column) { | ||||
$panel = id(new PHUIWorkpanelView()) | $panel = id(new PHUIWorkpanelView()) | ||||
->setHeader($column->getDisplayName()) | ->setHeader($column->getDisplayName()) | ||||
->setHeaderColor($column->getHeaderColor()); | ->setHeaderColor($column->getHeaderColor()); | ||||
if (!$column->isDefaultColumn()) { | if (!$column->isDefaultColumn()) { | ||||
$panel->setEditURI($board_uri.'column/'.$column->getID().'/'); | $panel->setEditURI($board_uri.'column/'.$column->getID().'/'); | ||||
} | } | ||||
$panel->setHeaderAction(id(new PHUIIconView()) | $panel->setHeaderAction(id(new PHUIIconView()) | ||||
->setIconFont('fa-plus') | ->setIconFont('fa-plus') | ||||
->setHref('/maniphest/task/create/') | ->setHref('/maniphest/task/create/') | ||||
->addSigil('column-add-task') | ->addSigil('column-add-task') | ||||
->setMetadata( | ->setMetadata( | ||||
array('columnPHID' => $column->getPHID()))); | array('columnPHID' => $column->getPHID()))); | ||||
$cards = id(new PHUIObjectItemListView()) | $cards = id(new PHUIObjectItemListView()) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setFlush(true) | ->setFlush(true) | ||||
->setAllowEmptyList(true) | ->setAllowEmptyList(true) | ||||
->addSigil('project-column') | ->addSigil('project-column') | ||||
->setMetadata( | ->setMetadata( | ||||
array( | array( | ||||
'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
)); | )); | ||||
$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) { | ||||
$owner = null; | $owner = null; | ||||
if ($task->getOwnerPHID()) { | if ($task->getOwnerPHID()) { | ||||
$owner = $this->handles[$task->getOwnerPHID()]; | $owner = $this->handles[$task->getOwnerPHID()]; | ||||
} | } | ||||
$can_edit = idx($task_can_edit_map, $task->getPHID(), false); | $can_edit = idx($task_can_edit_map, $task->getPHID(), false); | ||||
$cards->addItem(id(new ProjectBoardTaskCard()) | $cards->addItem(id(new ProjectBoardTaskCard()) | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | public function processRequest() { | ||||
} | } | ||||
$items[] = id(new PhabricatorActionView()) | $items[] = id(new PhabricatorActionView()) | ||||
->setIcon('fa-cog') | ->setIcon('fa-cog') | ||||
->setHref($this->getApplicationURI('board/'.$this->id.'/filter/')) | ->setHref($this->getApplicationURI('board/'.$this->id.'/filter/')) | ||||
->setWorkflow(true) | ->setWorkflow(true) | ||||
->setName(pht('Advanced Filter...')); | ->setName(pht('Advanced Filter...')); | ||||
$filter_menu = id(new PhabricatorActionListView()) | $filter_menu = id(new PhabricatorActionListView()) | ||||
->setUser($viewer); | ->setUser($viewer); | ||||
foreach ($items as $item) { | foreach ($items as $item) { | ||||
$filter_menu->addAction($item); | $filter_menu->addAction($item); | ||||
} | } | ||||
$filter_button = id(new PHUIButtonView()) | $filter_button = id(new PHUIButtonView()) | ||||
->setText(pht('Filter: %s', $active_filter)) | ->setText(pht('Filter: %s', $active_filter)) | ||||
->setIcon($filter_icon) | ->setIcon($filter_icon) | ||||
->setTag('a') | ->setTag('a') | ||||
->setHref('#') | ->setHref('#') | ||||
->addSigil('boards-filter-menu') | ->addSigil('boards-filter-menu') | ||||
->setMetadata( | ->setMetadata( | ||||
array( | array( | ||||
'items' => hsprintf('%s', $filter_menu), | 'items' => hsprintf('%s', $filter_menu), | ||||
)); | )); | ||||
$header_link = phutil_tag( | $header_link = phutil_tag( | ||||
'a', | 'a', | ||||
array( | array( | ||||
'href' => $this->getApplicationURI('view/'.$project->getID().'/') | 'href' => $this->getApplicationURI('view/'.$project->getID().'/') | ||||
), | ), | ||||
$project->getName()); | $project->getName()); | ||||
if ($show_hidden) { | |||||
$hidden_uri = $request->getRequestURI() | |||||
->setQueryParam('hidden', null); | |||||
$hidden_icon = id(new PHUIIconView()) | |||||
->setIconFont('fa-eye-slash bluegrey'); | |||||
$hidden_text = pht('Hide Hidden Columns'); | |||||
} else { | |||||
$hidden_uri = $request->getRequestURI() | |||||
->setQueryParam('hidden', 'true'); | |||||
$hidden_icon = id(new PHUIIconView()) | |||||
->setIconFont('fa-eye bluegrey'); | |||||
$hidden_text = pht('Show Hidden Columns'); | |||||
} | |||||
$hidden_button = id(new PHUIButtonView()) | |||||
->setText($hidden_text) | |||||
->setIcon($hidden_icon) | |||||
->setTag('a') | |||||
->setHref($hidden_uri); | |||||
$header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
->setHeader($header_link) | ->setHeader($header_link) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setNoBackground(true) | ->setNoBackground(true) | ||||
->setImage($project->getProfileImageURI()) | ->setImage($project->getProfileImageURI()) | ||||
->setImageURL($this->getApplicationURI('view/'.$project->getID().'/')) | ->setImageURL($this->getApplicationURI('view/'.$project->getID().'/')) | ||||
->addActionLink($hidden_button) | |||||
->addActionLink($filter_button) | ->addActionLink($filter_button) | ||||
->addActionLink($add_button) | ->addActionLink($add_button) | ||||
->setPolicyObject($project); | ->setPolicyObject($project); | ||||
$board_box = id(new PHUIBoxView()) | $board_box = id(new PHUIBoxView()) | ||||
->appendChild($board) | ->appendChild($board) | ||||
->addClass('project-board-wrapper'); | ->addClass('project-board-wrapper'); | ||||
Show All 11 Lines |