private function buildPropertyView(PhabricatorProject $board) { $viewer = $this->getRequest()->getUser(); $properties = id(new PHUIPropertyListView())->setUser($viewer)->setObject($board); $background = $board->getDisplayWorkboardBackgroundColor(); if ($background !== null) { $map = PhabricatorProjectWorkboardBackgroundColor::getOptions(); $map = ipull($map, 'name'); $name = idx($map, $background, $background); $properties->addProperty(pht('Background Color'), $name); } return $properties; }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getUser(); $board_id = $request->getURIData('projectID'); $board = id(new PhabricatorProjectQuery())->setViewer($viewer)->withIDs(array($board_id))->needImages(true)->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$board) { return new Aphront404Response(); } if (!$board->getHasWorkboard()) { return new Aphront404Response(); } $this->setProject($board); $id = $board->getID(); $manage_uri = $this->getApplicationURI("board/{$id}/manage/"); if ($request->isFormPost()) { $background_key = $request->getStr('backgroundKey'); $xactions = array(); $xactions[] = id(new PhabricatorProjectTransaction())->setTransactionType(PhabricatorProjectTransaction::TYPE_BACKGROUND)->setNewValue($background_key); id(new PhabricatorProjectTransactionEditor())->setActor($viewer)->setContentSourceFromRequest($request)->setContinueOnNoEffect(true)->setContinueOnMissingFields(true)->applyTransactions($board, $xactions); return id(new AphrontRedirectResponse())->setURI($manage_uri); } $nav = $this->getProfileMenu(); $crumbs = id($this->buildApplicationCrumbs())->addTextCrumb(pht('Workboard'), "/project/board/{$board_id}/")->addTextCrumb(pht('Manage'), $manage_uri)->addTextCrumb(pht('Background Color')); $form = id(new AphrontFormView())->setUser($viewer); $group_info = array('basic' => array('label' => pht('Basics')), 'solid' => array('label' => pht('Solid Colors')), 'gradient' => array('label' => pht('Gradients'))); $groups = array(); $options = PhabricatorProjectWorkboardBackgroundColor::getOptions(); $option_groups = igroup($options, 'group'); require_celerity_resource('people-profile-css'); require_celerity_resource('phui-workboard-color-css'); Javelin::initBehavior('phabricator-tooltips', array()); foreach ($group_info as $group_key => $spec) { $buttons = array(); $available_options = idx($option_groups, $group_key, array()); foreach ($available_options as $option) { $buttons[] = $this->renderOptionButton($option); } $form->appendControl(id(new AphrontFormMarkupControl())->setLabel($spec['label'])->setValue($buttons)); } // NOTE: Each button is its own form, so we can't wrap them in a normal // form. $layout_view = $form->buildLayoutView(); $form_box = id(new PHUIObjectBoxView())->setHeaderText(pht('Edit Background Color'))->appendChild($layout_view); return $this->newPage()->setTitle(array(pht('Edit Background Color'), $board->getDisplayName()))->setCrumbs($crumbs)->setNavigation($nav)->appendChild($form_box); }