public function handleRequest(AphrontRequest $request) { $response = $this->loadDiffusionContext(); if ($response) { return $response; } $viewer = $this->getViewer(); $drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository(); $panels = DiffusionRepositoryManagementPanel::getAllPanels(); foreach ($panels as $key => $panel) { $panel->setViewer($viewer)->setRepository($repository)->setController($this); if (!$panel->shouldEnableForRepository($repository)) { unset($panels[$key]); continue; } } $selected = $request->getURIData('panel'); if (!strlen($selected)) { $selected = head_key($panels); } if (empty($panels[$selected])) { return new Aphront404Response(); } $nav = $this->renderSideNav($repository, $panels, $selected); $this->navigation = $nav; $panel = $panels[$selected]; $content = $panel->buildManagementPanelContent(); $title = array($panel->getManagementPanelLabel(), $repository->getDisplayName()); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($panel->getManagementPanelLabel()); $crumbs->setBorder(true); $header_text = pht('%s: %s', $repository->getDisplayName(), $panel->getManagementPanelLabel()); $header = id(new PHUIHeaderView())->setHeader($header_text)->setHeaderIcon('fa-pencil'); if ($repository->isTracked()) { $header->setStatus('fa-check', 'bluegrey', pht('Active')); } else { $header->setStatus('fa-ban', 'dark', pht('Inactive')); } $header->addActionLink(id(new PHUIButtonView())->setTag('a')->setText(pht('View Repository'))->setHref($repository->getURI())->setIcon('fa-code')); $view = id(new PHUITwoColumnView())->setHeader($header)->setNavigation($nav)->setMainColumn($content); $curtain = $panel->buildManagementPanelCurtain(); if ($curtain) { $view->setCurtain($curtain); } return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($view); }
protected function newPages($object) { $panels = DiffusionRepositoryManagementPanel::getAllPanels(); $pages = array(); $uris = array(); foreach ($panels as $panel_key => $panel) { $panel->setRepository($object); $uris[$panel_key] = $panel->getPanelURI(); $page = $panel->newEditEnginePage(); if (!$page) { continue; } $pages[] = $page; } $basics_key = DiffusionRepositoryBasicsManagementPanel::PANELKEY; $basics_uri = $uris[$basics_key]; $more_pages = array(id(new PhabricatorEditPage())->setKey('encoding')->setLabel(pht('Text Encoding'))->setViewURI($basics_uri)->setFieldKeys(array('encoding')), id(new PhabricatorEditPage())->setKey('extensions')->setLabel(pht('Extensions'))->setIsDefault(true)); foreach ($more_pages as $page) { $pages[] = $page; } return $pages; }