Page MenuHomePhabricator

D18821.diff
No OneTemporary

D18821.diff

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

File Metadata

Mime Type
text/plain
Expires
Mon, May 20, 3:19 AM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6286771
Default Alt Text
D18821.diff (2 KB)

Event Timeline