private function renderSideNav(PhabricatorRepository $repository, array $panels, $selected)
 {
     $base_uri = $repository->getPathURI('manage/');
     $base_uri = new PhutilURI($base_uri);
     $nav = id(new AphrontSideNavFilterView())->setBaseURI($base_uri);
     foreach ($panels as $panel) {
         $key = $panel->getManagementPanelKey();
         $label = $panel->getManagementPanelLabel();
         $icon = $panel->getManagementPanelIcon();
         $href = $panel->getPanelNavigationURI();
         $item = id(new PHUIListItemView())->setKey($key)->setName($label)->setType(PHUIListItemView::TYPE_LINK)->setHref($href)->setIcon($icon);
         $nav->addMenuItem($item);
     }
     $nav->selectFilter($selected);
     return $nav;
 }
 private function buildCurtain(PhabricatorRepository $repository)
 {
     $viewer = $this->getViewer();
     $edit_uri = $repository->getPathURI('manage/');
     $curtain = $this->newCurtainView($repository);
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Manage Repository'))->setIcon('fa-cogs')->setHref($edit_uri));
     if ($repository->isHosted()) {
         $push_uri = $this->getApplicationURI('pushlog/?repositories=' . $repository->getMonogram());
         $curtain->addAction(id(new PhabricatorActionView())->setName(pht('View Push Logs'))->setIcon('fa-list-alt')->setHref($push_uri));
     }
     return $curtain;
 }
 protected function getRepositoryControllerURI(PhabricatorRepository $repository, $path)
 {
     return $repository->getPathURI($path);
 }
 private function buildActionList(PhabricatorRepository $repository)
 {
     $viewer = $this->getRequest()->getUser();
     $edit_uri = $repository->getPathURI('edit/');
     $view = id(new PhabricatorActionListView())->setUser($viewer)->setObject($repository);
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $repository, PhabricatorPolicyCapability::CAN_EDIT);
     $view->addAction(id(new PhabricatorActionView())->setName(pht('Edit Repository'))->setIcon('fa-pencil')->setHref($edit_uri)->setWorkflow(!$can_edit)->setDisabled(!$can_edit));
     if ($repository->isHosted()) {
         $push_uri = $this->getApplicationURI('pushlog/?repositories=' . $repository->getMonogram());
         $view->addAction(id(new PhabricatorActionView())->setName(pht('View Push Logs'))->setIcon('fa-list-alt')->setHref($push_uri));
     }
     return $view;
 }
 private function renderHeadsupActionList(PhabricatorRepositoryCommit $commit, PhabricatorRepository $repository)
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $actions = id(new PhabricatorActionListView())->setUser($user)->setObject($commit);
     $can_edit = PhabricatorPolicyFilter::hasCapability($user, $commit, PhabricatorPolicyCapability::CAN_EDIT);
     $identifier = $commit->getCommitIdentifier();
     $uri = $repository->getPathURI("commit/{$identifier}/edit/");
     $action = id(new PhabricatorActionView())->setName(pht('Edit Commit'))->setHref($uri)->setIcon('fa-pencil')->setDisabled(!$can_edit)->setWorkflow(!$can_edit);
     $actions->addAction($action);
     require_celerity_resource('phabricator-object-selector-css');
     require_celerity_resource('javelin-behavior-phabricator-object-selector');
     $maniphest = 'PhabricatorManiphestApplication';
     if (PhabricatorApplication::isClassInstalled($maniphest)) {
         $action = id(new PhabricatorActionView())->setName(pht('Edit Maniphest Tasks'))->setIcon('fa-anchor')->setHref('/search/attach/' . $commit->getPHID() . '/TASK/edge/')->setWorkflow(true)->setDisabled(!$can_edit);
         $actions->addAction($action);
     }
     $action = id(new PhabricatorActionView())->setName(pht('Download Raw Diff'))->setHref($request->getRequestURI()->alter('diff', true))->setIcon('fa-download');
     $actions->addAction($action);
     return $actions;
 }
 private function buildCurtain(PhabricatorRepositoryCommit $commit, PhabricatorRepository $repository)
 {
     $request = $this->getRequest();
     $viewer = $this->getViewer();
     $curtain = $this->newCurtainView($commit);
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $commit, PhabricatorPolicyCapability::CAN_EDIT);
     $identifier = $commit->getCommitIdentifier();
     $uri = $repository->getPathURI("commit/{$identifier}/edit/");
     $action = id(new PhabricatorActionView())->setName(pht('Edit Commit'))->setHref($uri)->setIcon('fa-pencil')->setDisabled(!$can_edit)->setWorkflow(!$can_edit);
     $curtain->addAction($action);
     $action = id(new PhabricatorActionView())->setName(pht('Download Raw Diff'))->setHref($request->getRequestURI()->alter('diff', true))->setIcon('fa-download');
     $curtain->addAction($action);
     $relationship_list = PhabricatorObjectRelationshipList::newForObject($viewer, $commit);
     $relationship_submenu = $relationship_list->newActionMenu();
     if ($relationship_submenu) {
         $curtain->addAction($relationship_submenu);
     }
     return $curtain;
 }