public function buildIconNavView(PhabricatorProject $project) { $this->setProject($project); $viewer = $this->getViewer(); $id = $project->getID(); $picture = $project->getProfileImageURI(); $name = $project->getName(); $columns = id(new PhabricatorProjectColumnQuery())->setViewer($viewer)->withProjectPHIDs(array($project->getPHID()))->execute(); if ($columns) { $board_icon = 'fa-columns'; } else { $board_icon = 'fa-columns grey'; } $nav = new AphrontSideNavFilterView(); $nav->setIconNav(true); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addIcon("profile/{$id}/", $name, null, $picture); $class = 'PhabricatorManiphestApplication'; if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { $phid = $project->getPHID(); $nav->addIcon("board/{$id}/", pht('Workboard'), $board_icon); $query_uri = urisprintf('/maniphest/?statuses=open()&projects=%s#R', $phid); $nav->addIcon(null, pht('Open Tasks'), 'fa-anchor', null, $query_uri); } $nav->addIcon("feed/{$id}/", pht('Feed'), 'fa-newspaper-o'); $nav->addIcon("members/{$id}/", pht('Members'), 'fa-group'); $nav->addIcon("details/{$id}/", pht('Edit Details'), 'fa-pencil'); return $nav; }
public function buildIconNavView(PhabricatorUser $user) { $viewer = $this->getViewer(); $picture = $user->getProfileImageURI(); $name = $user->getUsername(); $nav = new AphrontSideNavFilterView(); $nav->setIconNav(true); $nav->setBaseURI(new PhutilURI('/p/')); $nav->addIcon("{$name}/", $name, null, $picture); $nav->addIcon("{$name}/feed/", pht('Feed'), 'fa-newspaper-o'); $class = 'PhabricatorCalendarApplication'; if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { $nav->addIcon("{$name}/calendar/", pht('Calendar'), 'fa-calendar'); } $class = 'PhabricatorManiphestApplication'; if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { $phid = $user->getPHID(); $view_uri = sprintf('/maniphest/?statuses=open()&assigned=%s#R', $phid); $nav->addIcon('maniphest', pht('Open Tasks'), 'fa-anchor', null, $view_uri); } $class = 'PhabricatorDifferentialApplication'; if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { $username = phutil_escape_uri($name); $view_uri = '/differential/?authors=' . $username; $nav->addIcon('differential', pht('Revisions'), 'fa-cog', null, $view_uri); } $class = 'PhabricatorAuditApplication'; if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { $username = phutil_escape_uri($name); $view_uri = '/audit/?authors=' . $username; $nav->addIcon('audit', pht('Commits'), 'fa-code', null, $view_uri); } return $nav; }
public static function newFromMenu(PHUIListView $menu) { $object = new AphrontSideNavFilterView(); $object->setBaseURI(new PhutilURI('/')); $object->menu = $menu; return $object; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $base_uri = new PhutilURI('/owners/'); $nav->setBaseURI($base_uri); $nav->addLabel(pht('Packages')); $this->getExtraPackageViews($nav); $nav->addFilter('view/owned', pht('Owned')); $nav->addFilter('view/projects', pht('Projects')); $nav->addFilter('view/all', pht('All')); $nav->selectFilter($this->getSideNavFilter(), 'view/owned'); $filter = $nav->getSelectedFilter(); switch ($filter) { case 'view/owned': $title = pht('Owned Packages'); break; case 'view/all': $title = pht('All Packages'); break; case 'view/projects': $title = pht('Projects'); break; case 'new': $title = pht('New Package'); break; default: $title = pht('Package'); break; } $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($title); $crumbs->addAction(id(new PHUIListItemView())->setName(pht('Create Package'))->setHref('/owners/new/')->setIcon('fa-plus-square')); $nav->setCrumbs($crumbs); return $nav; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); id(new DrydockLogSearchEngine())->setViewer($this->getRequest()->getUser())->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
public function buildSideNavView($for_app = false) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $viewer = $this->getRequest()->getUser(); id(new PhabricatorPeopleLogSearchEngine())->setViewer($viewer)->addNavigationItems($nav->getMenu()); return $nav; }
protected function buildSideNavView() { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); id(new PhabricatorFeedSearchEngine())->setViewer($user)->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
public function buildSideNavView($for_app = false) { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $this->getSearchEngine()->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
public function buildSideNavView() { $viewer = $this->getViewer(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); id(new PhortuneChargeSearchEngine())->setViewer($viewer)->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $engine = id(new DrydockRepositoryOperationSearchEngine())->setViewer($this->getViewer()); $engine->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
protected function buildSideNavView($for_app = false) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); if ($for_app) { $nav->addLabel(pht('Create')); $nav->addFilter('', pht('Add Authentication Provider'), $this->getApplicationURI('/config/new/')); } return $nav; }
public function buildStandardPageResponse($view, array $data) { $page = $this->buildStandardPageView(); $page->setApplicationName('Herald'); $page->setBaseURI('/herald/'); $page->setTitle(idx($data, 'title')); $page->setGlyph("☿"); $doclink = PhabricatorEnv::getDoclink('article/Herald_User_Guide.html'); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI('/herald/'))->addLabel('Rules')->addFilter('new', 'Create Rule'); $rules_map = HeraldContentTypeConfig::getContentTypeMap(); $first_filter = null; foreach ($rules_map as $key => $value) { $nav->addFilter('view/' . $key, $value); if (!$first_filter) { $first_filter = 'view/' . $key; } } $nav->addSpacer()->addLabel('Utilities')->addFilter('test', 'Test Console')->addFilter('transcript', 'Transcripts'); $user = $this->getRequest()->getUser(); if ($user->getIsAdmin()) { $nav->addSpacer()->addLabel('Admin'); $view_PHID = nonempty($this->getRequest()->getStr('phid'), null); foreach ($rules_map as $key => $value) { $nav->addFilter('all/view/' . $key, $value); } } $nav->selectFilter($this->getFilter(), $first_filter); $nav->appendChild($view); $page->appendChild($nav); $tabs = array('help' => array('href' => $doclink, 'name' => 'Help')); $page->setTabs($tabs, null); $response = new AphrontWebpageResponse(); return $response->setContent($page->render()); }
public function buildSideNavView($filter = null, $for_app = false) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel(pht('Guides')); $modules = PhabricatorGuideModule::getEnabledModules(); foreach ($modules as $key => $module) { $nav->addFilter($key . '/', $module->getModuleName()); } return $nav; }
public function buildSideNav($for_app = false) { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $engine = id(new LegalpadDocumentSignatureSearchEngine())->setViewer($user); if ($this->document) { $engine->setDocument($this->document); } $engine->addNavigationItems($nav->getMenu()); return $nav; }
private function renderSideNav($oauth_providers) { $sidenav = new AphrontSideNavFilterView(); $sidenav->setBaseURI(new PhutilURI('/settings/page/'))->addLabel('Account Information')->addFilter('account', 'Account')->addFilter('profile', 'Profile')->addSpacer()->addLabel('Email')->addFilter('email', 'Email Address')->addFilter('emailpref', 'Email Preferences')->addSpacer()->addLabel('Authentication'); if (PhabricatorEnv::getEnvConfig('account.editable') && PhabricatorEnv::getEnvConfig('auth.password-auth-enabled')) { $sidenav->addFilter('password', 'Password'); } $sidenav->addFilter('conduit', 'Conduit Certificate'); if (PhabricatorUserSSHKeysSettingsPanelController::isEnabled()) { $sidenav->addFilter('sshkeys', 'SSH Public Keys'); } $sidenav->addSpacer(); $sidenav->addLabel('Application Settings'); $sidenav->addFilter('preferences', 'Display Preferences'); $sidenav->addFilter('search', 'Search Preferences'); $items = array(); foreach ($oauth_providers as $provider) { if (!$provider->isProviderEnabled()) { continue; } $key = $provider->getProviderKey(); $name = $provider->getProviderName(); $items[$key] = $name . ' Account'; } if ($items) { $sidenav->addSpacer(); $sidenav->addLabel('Linked Accounts'); foreach ($items as $key => $name) { $sidenav->addFilter($key, $name); } } return $sidenav; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel('Mail Logs'); $nav->addFilter('sent', 'Sent Mail', $this->getApplicationURI()); $nav->addFilter('received', 'Received Mail'); $nav->addSpacer(); if ($this->getRequest()->getUser()->getIsAdmin()) { $nav->addLabel('Diagnostics'); $nav->addFilter('send', 'Send Test'); $nav->addFilter('receive', 'Receive Test'); } return $nav; }
public function buildNav() { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI('/')); $nav->addLabel('Phabricator'); $nav->addFilter('home', 'Tactical Command', '/'); $nav->addFilter('jump', 'Jump Nav'); $nav->addFilter('feed', 'Feed'); $nav->addSpacer(); $nav->addFilter('applications', 'More Stuff'); return $nav; }
public function buildNav() { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI('/')); $applications = id(new PhabricatorApplicationQuery())->setViewer($user)->withInstalled(true)->withUnlisted(false)->withLaunchable(true)->execute(); $pinned = $user->loadPreferences()->getPinnedApplications($applications, $user); // Force "Applications" to appear at the bottom. $meta_app = 'PhabricatorApplicationsApplication'; $pinned = array_fuse($pinned); unset($pinned[$meta_app]); $pinned[$meta_app] = $meta_app; $applications[$meta_app] = PhabricatorApplication::getByClass($meta_app); $tiles = array(); $home_app = new PhabricatorHomeApplication(); $tiles[] = id(new PhabricatorApplicationLaunchView())->setApplication($home_app)->setApplicationStatus($home_app->loadStatus($user))->addClass('phabricator-application-launch-phone-only')->setUser($user); foreach ($pinned as $pinned_application) { if (empty($applications[$pinned_application])) { continue; } $application = $applications[$pinned_application]; $tile = id(new PhabricatorApplicationLaunchView())->setApplication($application)->setApplicationStatus($application->loadStatus($user))->setUser($user); $tiles[] = $tile; } $nav->addCustomBlock(phutil_tag('div', array('class' => 'application-tile-group'), $tiles)); $nav->addFilter('', pht('Customize Applications...'), '/settings/panel/home/'); $nav->addClass('phabricator-side-menu-home'); $nav->selectFilter(null); return $nav; }
protected function buildSideNavView(PhabricatorCalendarEvent $status = null) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel(pht('Calendar')); $nav->addFilter('/', pht('My Events')); $nav->addFilter('all/', pht('View All')); $nav->addFilter('event/create/', pht('Create Event')); if ($status && $status->getID()) { $nav->addFilter('event/edit/' . $status->getID() . '/', pht('Edit Event')); } $nav->addFilter('event/', pht('Upcoming Events')); return $nav; }
public function buildStandardPageResponse($view, array $data) { $page = $this->buildStandardPageView(); $page->setApplicationName('Conduit'); $page->setBaseURI('/conduit/'); $page->setTitle(idx($data, 'title')); $page->setGlyph("⇵"); if ($this->showSideNav()) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI('/conduit/')); $method_filters = $this->getMethodFilters(); foreach ($method_filters as $group => $methods) { $nav->addLabel($group); foreach ($methods as $method) { $method_name = $method['full_name']; $display_name = $method_name; switch ($method['status']) { case ConduitAPIMethod::METHOD_STATUS_DEPRECATED: $display_name = '(' . $display_name . ')'; break; } $nav->addFilter('method/' . $method_name, $display_name); } $nav->addSpacer(); } $nav->selectFilter($this->getFilter()); $nav->appendChild($view); $body = $nav; } else { $body = $view; } $page->appendChild($body); $response = new AphrontWebpageResponse(); return $response->setContent($page->render()); }
public function processRequest() { $classes = id(new PhutilSymbolLoader())->setAncestorClass('PhabricatorUIExample')->setConcreteOnly(true)->selectAndLoadSymbols(); $classes = ipull($classes, 'name', 'name'); foreach ($classes as $class => $ignored) { $classes[$class] = newv($class, array()); } $classes = msort($classes, 'getName'); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI('view/'))); foreach ($classes as $class => $obj) { $name = $obj->getName(); $nav->addFilter($class, $name); } $selected = $nav->selectFilter($this->class, head_key($classes)); require_celerity_resource('phabricator-ui-example-css'); $example = $classes[$selected]; $example->setRequest($this->getRequest()); $result = $example->renderExample(); if ($result instanceof AphrontResponse) { // This allows examples to generate dialogs, etc., for demonstration. return $result; } $nav->appendChild('<div class="phabricator-ui-example-header">' . '<h1 class="phabricator-ui-example-name">' . phutil_escape_html($example->getName()) . ' (' . get_class($example) . ')' . '</h1>' . '<p class="phabricator-ui-example-description">' . $example->getDescription() . '</p>' . '</div>'); $nav->appendChild($result); return $this->buildApplicationPage($nav, array('title' => 'UI Example', 'device' => true)); }
protected function buildSideNavView(PhabricatorFileImageMacro $macro = null) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel('Create'); $nav->addFilter('edit', 'Create Macro'); $nav->addSpacer(); $nav->addLabel('Macros'); $nav->addFilter('', 'All Macros'); return $nav; }
protected function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel(pht('Daemons')); $nav->addFilter('/', pht('Console')); $nav->addFilter('log', pht('All Daemons')); $nav->addLabel(pht('Bulk Jobs')); $nav->addFilter('bulk', pht('Manage Bulk Jobs')); return $nav; }
protected final function buildSideNav($selected) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI('/drydock/')); $nav->addFilter('resource', 'Resources'); $nav->addFilter('lease', 'Leases'); $nav->addSpacer(); $nav->addFilter('log', 'Logs'); $nav->selectFilter($selected, 'resource'); return $nav; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); // These are only used on mobile. $nav->addFilter('blueprint', pht('Blueprints')); $nav->addFilter('resource', pht('Resources')); $nav->addFilter('lease', pht('Leases')); $nav->addFilter('operation', pht('Repository Operations')); $nav->selectFilter(null); return $nav; }
public function buildSideNavView($filter = null, $for_app = false) { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel(pht('Site Configuration')); $nav->addFilter('/', pht('Option Groups')); $nav->addFilter('all/', pht('All Settings')); $nav->addFilter('issue/', pht('Setup Issues')); $nav->addFilter('welcome/', pht('Welcome Screen')); return $nav; }
private function renderSideNav(array $panels) { $nav = new AphrontSideNavFilterView(); if ($this->isSelf()) { $base_uri = 'panel/'; } else { $base_uri = $this->getUser()->getID() . '/panel/'; } $nav->setBaseURI(new PhutilURI($this->getApplicationURI($base_uri))); $group = null; foreach ($panels as $panel) { if ($panel->getPanelGroup() != $group) { $group = $panel->getPanelGroup(); $nav->addLabel($group); } $nav->addFilter($panel->getPanelKey(), $panel->getPanelName()); } return $nav; }
public function buildSideNavView() { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $engine = id(new DrydockLogSearchEngine())->setViewer($this->getRequest()->getUser()); $blueprint = $this->getBlueprint(); if ($blueprint) { $engine->setBlueprint($blueprint); } $resource = $this->getResource(); if ($resource) { $engine->setResource($resource); } $lease = $this->getLease(); if ($lease) { $engine->setLease($lease); } $engine->addNavigationItems($nav->getMenu()); $nav->selectFilter(null); return $nav; }
public function handleRequest(AphrontRequest $request) { $id = $request->getURIData('class'); $classes = id(new PhutilSymbolLoader())->setAncestorClass('PhabricatorUIExample')->loadObjects(); $classes = msort($classes, 'getName'); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI('view/'))); foreach ($classes as $class => $obj) { $name = $obj->getName(); $nav->addFilter($class, $name); } $selected = $nav->selectFilter($id, head_key($classes)); $example = $classes[$selected]; $example->setRequest($this->getRequest()); $result = $example->renderExample(); if ($result instanceof AphrontResponse) { // This allows examples to generate dialogs, etc., for demonstration. return $result; } require_celerity_resource('phabricator-ui-example-css'); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($example->getName()); $note = id(new PHUIInfoView())->setTitle(pht('%s (%s)', $example->getName(), get_class($example)))->appendChild($example->getDescription())->setSeverity(PHUIInfoView::SEVERITY_NODATA); $nav->appendChild(array($crumbs, $note, $result)); return $this->buildApplicationPage($nav, array('title' => $example->getName())); }
public function processRequest() { $classes = id(new PhutilSymbolLoader())->setAncestorClass('PhabricatorUIExample')->loadObjects(); $classes = msort($classes, 'getName'); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI('view/'))); foreach ($classes as $class => $obj) { $name = $obj->getName(); $nav->addFilter($class, $name); } $selected = $nav->selectFilter($this->class, head_key($classes)); $example = $classes[$selected]; $example->setRequest($this->getRequest()); $result = $example->renderExample(); if ($result instanceof AphrontResponse) { // This allows examples to generate dialogs, etc., for demonstration. return $result; } require_celerity_resource('phabricator-ui-example-css'); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($example->getName()); $header = id(new PHUIHeaderView())->setHeader(pht('%s (%s)', $example->getName(), get_class($example)))->setSubheader($example->getDescription())->setNoBackground(true); $nav->appendChild(array($crumbs, $header, phutil_tag('br'), $result)); return $this->buildApplicationPage($nav, array('title' => $example->getName())); }