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;
 }