Differential D17879 Diff 43006 src/applications/project/controller/PhabricatorProjectBoardManageController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardManageController.php
| Show All 25 Lines | $layout_engine = id(new PhabricatorBoardLayoutEngine()) | ||||
| ->setFetchAllBoards(true) | ->setFetchAllBoards(true) | ||||
| ->executeLayout(); | ->executeLayout(); | ||||
| $columns = $layout_engine->getColumns($board->getPHID()); | $columns = $layout_engine->getColumns($board->getPHID()); | ||||
| $board_id = $board->getID(); | $board_id = $board->getID(); | ||||
| $header = $this->buildHeaderView($board); | $header = $this->buildHeaderView($board); | ||||
| $actions = $this->buildActionView($board); | |||||
| $properties = $this->buildPropertyView($board); | |||||
| $properties->setActionList($actions); | |||||
| $crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
| $crumbs->addTextCrumb(pht('Workboard'), "/project/board/{$board_id}/"); | $crumbs->addTextCrumb(pht('Workboard'), "/project/board/{$board_id}/"); | ||||
| $crumbs->addTextCrumb(pht('Manage')); | $crumbs->addTextCrumb(pht('Manage')); | ||||
| $crumbs->setBorder(true); | |||||
| $box = id(new PHUIObjectBoxView()) | |||||
| ->setHeader($header) | |||||
| ->addPropertyList($properties); | |||||
| $nav = $this->getProfileMenu(); | $nav = $this->getProfileMenu(); | ||||
| $columns_list = $this->buildColumnsList($board, $columns); | |||||
| $view = id(new PHUITwoColumnView()) | |||||
| ->setHeader($header) | |||||
| ->setFooter($columns_list); | |||||
| $title = array( | $title = array( | ||||
| pht('Manage Workboard'), | pht('Manage Workboard'), | ||||
| $board->getDisplayName(), | $board->getDisplayName(), | ||||
| ); | ); | ||||
| $columns_list = $this->buildColumnsList($board, $columns); | |||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle($title) | ->setTitle($title) | ||||
| ->setNavigation($nav) | ->setNavigation($nav) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild( | ->appendChild($view); | ||||
| array( | |||||
| $box, | |||||
| $columns_list, | |||||
| )); | |||||
| } | } | ||||
| private function buildHeaderView(PhabricatorProject $board) { | private function buildHeaderView(PhabricatorProject $board) { | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getViewer(); | ||||
| $header = id(new PHUIHeaderView()) | |||||
| ->setUser($viewer) | |||||
| ->setHeader(pht('Workboard: %s', $board->getDisplayName())); | |||||
| return $header; | |||||
| } | |||||
| private function buildActionView(PhabricatorProject $board) { | |||||
| $viewer = $this->getRequest()->getUser(); | |||||
| $id = $board->getID(); | |||||
| $actions = id(new PhabricatorActionListView()) | |||||
| ->setUser($viewer); | |||||
| $can_edit = PhabricatorPolicyFilter::hasCapability( | $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
| $viewer, | $viewer, | ||||
| $board, | $board, | ||||
| PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
| $reorder_uri = $this->getApplicationURI("board/{$id}/reorder/"); | $id = $board->getID(); | ||||
| $actions->addAction( | |||||
| id(new PhabricatorActionView()) | |||||
| ->setIcon('fa-exchange') | |||||
| ->setName(pht('Reorder Columns')) | |||||
| ->setHref($reorder_uri) | |||||
| ->setDisabled(!$can_edit) | |||||
| ->setWorkflow(true)); | |||||
| $background_uri = $this->getApplicationURI("board/{$id}/background/"); | |||||
| $actions->addAction( | |||||
| id(new PhabricatorActionView()) | |||||
| ->setIcon('fa-paint-brush') | |||||
| ->setName(pht('Change Background Color')) | |||||
| ->setHref($background_uri) | |||||
| ->setDisabled(!$can_edit) | |||||
| ->setWorkflow(!$can_edit)); | |||||
| $disable_uri = $this->getApplicationURI("board/{$id}/disable/"); | $disable_uri = $this->getApplicationURI("board/{$id}/disable/"); | ||||
| $actions->addAction( | $button = id(new PHUIButtonView()) | ||||
| id(new PhabricatorActionView()) | ->setTag('a') | ||||
| ->setIcon('fa-ban') | ->setIcon('fa-ban') | ||||
| ->setName(pht('Disable Board')) | ->setText(pht('Disable Board')) | ||||
| ->setHref($disable_uri) | ->setHref($disable_uri) | ||||
| ->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
| ->setWorkflow(true)); | ->setWorkflow(true); | ||||
| return $actions; | $header = id(new PHUIHeaderView()) | ||||
| } | ->setHeader(pht('Workboard: %s', $board->getDisplayName())) | ||||
| private function buildPropertyView( | |||||
| PhabricatorProject $board) { | |||||
| $viewer = $this->getRequest()->getUser(); | |||||
| $properties = id(new PHUIPropertyListView()) | |||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setObject($board); | ->setPolicyObject($board) | ||||
| ->setProfileHeader(true) | |||||
| ->addActionLink($button); | |||||
| $background = $board->getDisplayWorkboardBackgroundColor(); | return $header; | ||||
| if ($background !== null) { | |||||
| $map = PhabricatorProjectWorkboardBackgroundColor::getOptions(); | |||||
| $map = ipull($map, 'name'); | |||||
| $name = idx($map, $background, $background); | |||||
| $properties->addProperty(pht('Background Color'), $name); | |||||
| } | |||||
| return $properties; | |||||
| } | } | ||||
| private function buildColumnsList( | private function buildColumnsList( | ||||
| PhabricatorProject $board, | PhabricatorProject $board, | ||||
| array $columns) { | array $columns) { | ||||
| assert_instances_of($columns, 'PhabricatorProjectColumn'); | assert_instances_of($columns, 'PhabricatorProjectColumn'); | ||||
| $board_id = $board->getID(); | $board_id = $board->getID(); | ||||
| Show All 12 Lines | foreach ($columns as $column) { | ||||
| $detail_uri = "/project/board/{$board_id}/column/{$column_id}/"; | $detail_uri = "/project/board/{$board_id}/column/{$column_id}/"; | ||||
| $item = id(new PHUIObjectItemView()) | $item = id(new PHUIObjectItemView()) | ||||
| ->setHeader($column->getDisplayName()) | ->setHeader($column->getDisplayName()) | ||||
| ->setHref($detail_uri); | ->setHref($detail_uri); | ||||
| if ($column->isHidden()) { | if ($column->isHidden()) { | ||||
| $item->setDisabled(true); | $item->setDisabled(true); | ||||
| $item->addAttribute(pht('Hidden')); | |||||
| $item->setImageIcon('fa-columns grey'); | |||||
| } else { | |||||
| $item->addAttribute(pht('Visible')); | |||||
| $item->setImageIcon('fa-columns'); | |||||
| } | } | ||||
| $view->addItem($item); | $view->addItem($item); | ||||
| } | } | ||||
| return id(new PHUIObjectBoxView()) | return id(new PHUIObjectBoxView()) | ||||
| ->setHeaderText(pht('Columns')) | ->setHeaderText(pht('Columns')) | ||||
| ->setObjectList($view); | ->setObjectList($view); | ||||
| } | } | ||||
| } | } | ||||