diff --git a/src/applications/search/engine/PhabricatorProfileMenuEngine.php b/src/applications/search/engine/PhabricatorProfileMenuEngine.php --- a/src/applications/search/engine/PhabricatorProfileMenuEngine.php +++ b/src/applications/search/engine/PhabricatorProfileMenuEngine.php @@ -365,6 +365,8 @@ $first_item->willBuildNavigationItems($group); } + $selected_item = null; + foreach ($menu_items as $menu_item) { if ($menu_item->isDisabled()) { continue; @@ -385,6 +387,9 @@ $default_key = $menu_item->getDefaultMenuItemKey(); $item->setKey($default_key); } + if ($menu_item->needsFilter()) { + $selected_item = $item->getKey(); + } } foreach ($items as $item) { @@ -392,7 +397,7 @@ } } - $nav->selectFilter(null); + $nav->selectFilter($selected_item); $this->navigation = $nav; return $this->navigation; diff --git a/src/applications/search/menuitem/PhabricatorProfileMenuItem.php b/src/applications/search/menuitem/PhabricatorProfileMenuItem.php --- a/src/applications/search/menuitem/PhabricatorProfileMenuItem.php +++ b/src/applications/search/menuitem/PhabricatorProfileMenuItem.php @@ -4,10 +4,13 @@ private $viewer; private $engine; + private $href; final public function buildNavigationMenuItems( PhabricatorProfileMenuItemConfiguration $config) { - return $this->newNavigationMenuItems($config); + $items = $this->newNavigationMenuItems($config); + $this->href = head($items)->getHref(); + return $items; } abstract protected function newNavigationMenuItems( @@ -15,6 +18,22 @@ public function willBuildNavigationItems(array $items) {} + public function needsFilter(PhabricatorProfileMenuItemConfiguration $config) { + $needs_filter = false; + $engine = $this->getEngine(); + $controller = $engine->getController(); + + if ($controller) { + $request = $controller->getRequest(); + $request_uri = 'http://'.$request->getHost().$request->getPath(); + $item_uri = $this->href; + + $needs_filter = ($request_uri == $item_uri); + } + + return $needs_filter; + } + public function getMenuItemTypeIcon() { return null; } diff --git a/src/applications/search/storage/PhabricatorProfileMenuItemConfiguration.php b/src/applications/search/storage/PhabricatorProfileMenuItemConfiguration.php --- a/src/applications/search/storage/PhabricatorProfileMenuItemConfiguration.php +++ b/src/applications/search/storage/PhabricatorProfileMenuItemConfiguration.php @@ -118,6 +118,10 @@ return $this->getMenuItem()->canHideMenuItem($this); } + public function needsFilter() { + return $this->getMenuItem()->needsFilter($this); + } + public function shouldEnableForObject($object) { return $this->getMenuItem()->shouldEnableForObject($object); }