@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 122 lines 3.2 kB view raw
1<?php 2 3final class PeopleMainMenuBarExtension 4 extends PhabricatorMainMenuBarExtension { 5 6 const MAINMENUBARKEY = 'user'; 7 8 public function isExtensionEnabledForViewer(PhabricatorUser $viewer) { 9 return $viewer->isLoggedIn(); 10 } 11 12 public function shouldRequireFullSession() { 13 return false; 14 } 15 16 public function getExtensionOrder() { 17 return 1200; 18 } 19 20 public function buildMainMenus() { 21 $viewer = $this->getViewer(); 22 $application = $this->getApplication(); 23 $dropdown_menu = $this->newDropdown($viewer, $application); 24 25 $menu_id = celerity_generate_unique_node_id(); 26 27 Javelin::initBehavior( 28 'user-menu', 29 array( 30 'menuID' => $menu_id, 31 'menu' => $dropdown_menu->getDropdownMenuMetadata(), 32 )); 33 34 $image = $viewer->getProfileImageURI(); 35 $profile_image = id(new PHUIIconView()) 36 ->setImage($image) 37 ->setHeadSize(PHUIIconView::HEAD_SMALL); 38 39 $user_menu = id(new PHUIButtonView()) 40 ->setID($menu_id) 41 ->setTag('a') 42 ->setHref('/p/'.$viewer->getUsername().'/') 43 ->setIcon($profile_image) 44 ->addClass('phabricator-core-user-menu') 45 ->setHasCaret(true) 46 ->setNoCSS(true) 47 ->setAuralLabel(pht('Account Menu')); 48 49 return array( 50 $user_menu, 51 ); 52 } 53 54 private function newDropdown( 55 PhabricatorUser $viewer, 56 $application) { 57 58 $person_to_show = id(new PHUIObjectItemView()) 59 ->setObjectName($viewer->getRealName()) 60 ->setSubHead($viewer->getUsername()) 61 ->setImageURI($viewer->getProfileImageURI()); 62 63 $user_view = id(new PHUIObjectItemListView()) 64 ->setViewer($viewer) 65 ->setFlush(true) 66 ->setSimple(true) 67 ->addItem($person_to_show) 68 ->addClass('phabricator-core-user-profile-object'); 69 70 $view = id(new PhabricatorActionListView()) 71 ->setViewer($viewer); 72 73 if ($this->getIsFullSession()) { 74 $view->addAction( 75 id(new PhabricatorActionView()) 76 ->appendChild($user_view)); 77 78 $view->addAction( 79 id(new PhabricatorActionView()) 80 ->setType(PhabricatorActionView::TYPE_DIVIDER)); 81 82 $view->addAction( 83 id(new PhabricatorActionView()) 84 ->setName(pht('Profile')) 85 ->setHref('/p/'.$viewer->getUsername().'/')); 86 87 $view->addAction( 88 id(new PhabricatorActionView()) 89 ->setName(pht('Settings')) 90 ->setHref('/settings/user/'.$viewer->getUsername().'/')); 91 92 $view->addAction( 93 id(new PhabricatorActionView()) 94 ->setName(pht('Manage')) 95 ->setHref('/people/manage/'.$viewer->getID().'/')); 96 97 if ($application) { 98 $help_links = $application->getHelpMenuItems($viewer); 99 if ($help_links) { 100 foreach ($help_links as $link) { 101 $view->addAction($link); 102 } 103 } 104 } 105 106 $view->addAction( 107 id(new PhabricatorActionView()) 108 ->addSigil('logout-item') 109 ->setType(PhabricatorActionView::TYPE_DIVIDER)); 110 } 111 112 $view->addAction( 113 id(new PhabricatorActionView()) 114 ->setName(pht('Log Out %s', $viewer->getUsername())) 115 ->addSigil('logout-item') 116 ->setHref('/logout/') 117 ->setWorkflow(true)); 118 119 return $view; 120 } 121 122}