Page MenuHomePhabricator

D15008.id.diff
No OneTemporary

D15008.id.diff

diff --git a/src/applications/project/controller/PhabricatorProjectBoardController.php b/src/applications/project/controller/PhabricatorProjectBoardController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardController.php
@@ -3,11 +3,12 @@
abstract class PhabricatorProjectBoardController
extends PhabricatorProjectController {
- public function buildIconNavView(PhabricatorProject $project) {
- $id = $project->getID();
- $nav = parent::buildIconNavView($project);
- $nav->selectFilter(PhabricatorProject::PANEL_WORKBOARD);
- $nav->addClass('project-board-nav');
- return $nav;
+ protected function getProfileMenu() {
+ $menu = parent::getProfileMenu();
+
+ $menu->selectFilter(PhabricatorProject::PANEL_WORKBOARD);
+ $menu->addClass('project-board-nav');
+
+ return $menu;
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
@@ -384,7 +384,7 @@
->appendChild($board)
->addClass('project-board-wrapper');
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
return $this->newPage()
->setTitle(pht('%s Board', $project->getName()))
diff --git a/src/applications/project/controller/PhabricatorProjectColumnDetailController.php b/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
--- a/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
+++ b/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
@@ -49,15 +49,16 @@
->setHeader($header)
->addPropertyList($properties);
- $nav = $this->buildIconNavView($project);
- $nav->appendChild($box);
- $nav->appendChild($timeline);
-
- return $this->buildApplicationPage(
- $nav,
- array(
- 'title' => $title,
- ));
+ $nav = $this->getProfileMenu();
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setNavigation($nav)
+ ->appendChild(
+ array(
+ $box,
+ $timeline,
+ ));
}
private function buildHeaderView(PhabricatorProjectColumn $column) {
diff --git a/src/applications/project/controller/PhabricatorProjectColumnEditController.php b/src/applications/project/controller/PhabricatorProjectColumnEditController.php
--- a/src/applications/project/controller/PhabricatorProjectColumnEditController.php
+++ b/src/applications/project/controller/PhabricatorProjectColumnEditController.php
@@ -144,13 +144,11 @@
->setValidationException($validation_exception)
->setForm($form);
- $nav = $this->buildIconNavView($project);
- $nav->appendChild($form_box);
-
- return $this->buildApplicationPage(
- $nav,
- array(
- 'title' => $title,
- ));
+ $nav = $this->getProfileMenu();
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setNavigation($nav)
+ ->appendChild($form_box);
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectController.php b/src/applications/project/controller/PhabricatorProjectController.php
--- a/src/applications/project/controller/PhabricatorProjectController.php
+++ b/src/applications/project/controller/PhabricatorProjectController.php
@@ -3,6 +3,7 @@
abstract class PhabricatorProjectController extends PhabricatorController {
private $project;
+ private $profileMenu;
protected function setProject(PhabricatorProject $project) {
$this->project = $project;
@@ -80,50 +81,33 @@
}
public function buildApplicationMenu() {
- return $this->buildSideNavView(true)->getMenu();
- }
+ $menu = $this->newApplicationMenu();
- public function buildSideNavView($for_app = false) {
- $project = $this->getProject();
+ $profile_menu = $this->getProfileMenu();
+ if ($profile_menu) {
+ $menu->setProfileMenu($profile_menu);
+ }
+ $menu->setSearchEngine(new PhabricatorProjectSearchEngine());
+ return $menu;
+ }
- $nav = new AphrontSideNavFilterView();
- $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
+ protected function getProfileMenu() {
+ if (!$this->profileMenu) {
+ $project = $this->getProject();
+ if ($project) {
+ $viewer = $this->getViewer();
- $viewer = $this->getViewer();
+ $engine = id(new PhabricatorProfilePanelEngine())
+ ->setViewer($viewer)
+ ->setProfileObject($project);
- $id = null;
- if ($for_app) {
- if ($project) {
- $id = $project->getID();
- $nav->addFilter("profile/{$id}/", pht('Profile'));
- $nav->addFilter("board/{$id}/", pht('Workboard'));
- $nav->addFilter("members/{$id}/", pht('Members'));
- $nav->addFilter("feed/{$id}/", pht('Feed'));
+ $this->profileMenu = $engine->buildNavigation();
}
- $nav->addFilter('create', pht('Create Project'));
- }
-
- if (!$id) {
- id(new PhabricatorProjectSearchEngine())
- ->setViewer($viewer)
- ->addNavigationItems($nav->getMenu());
}
- $nav->selectFilter(null);
-
- return $nav;
- }
-
- public function buildIconNavView(PhabricatorProject $project) {
- $viewer = $this->getViewer();
-
- $engine = id(new PhabricatorProfilePanelEngine())
- ->setViewer($viewer)
- ->setProfileObject($project);
-
- return $engine->buildNavigation();
+ return $this->profileMenu;
}
protected function buildApplicationCrumbs() {
diff --git a/src/applications/project/controller/PhabricatorProjectEditPictureController.php b/src/applications/project/controller/PhabricatorProjectEditPictureController.php
--- a/src/applications/project/controller/PhabricatorProjectEditPictureController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditPictureController.php
@@ -21,6 +21,8 @@
return new Aphront404Response();
}
+ $this->setProject($project);
+
$edit_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
$view_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
@@ -280,15 +282,16 @@
->setHeaderText(pht('Upload New Picture'))
->setForm($upload_form);
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorProject::PANEL_PROFILE);
- $nav->appendChild($form_box);
- $nav->appendChild($upload_box);
- return $this->buildApplicationPage(
- $nav,
- array(
- 'title' => $title,
- ));
+ return $this->newPage()
+ ->setTitle($title)
+ ->setNavigation($nav)
+ ->appendChild(
+ array(
+ $form_box,
+ $upload_box,
+ ));
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectFeedController.php b/src/applications/project/controller/PhabricatorProjectFeedController.php
--- a/src/applications/project/controller/PhabricatorProjectFeedController.php
+++ b/src/applications/project/controller/PhabricatorProjectFeedController.php
@@ -33,7 +33,7 @@
->setHeaderText(pht('Project Activity'))
->appendChild($feed);
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter('feed');
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/project/controller/PhabricatorProjectListController.php b/src/applications/project/controller/PhabricatorProjectListController.php
--- a/src/applications/project/controller/PhabricatorProjectListController.php
+++ b/src/applications/project/controller/PhabricatorProjectListController.php
@@ -8,19 +8,9 @@
}
public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
- $query_key = $request->getURIData('queryKey');
-
- $controller = id(new PhabricatorApplicationSearchController())
- ->setQueryKey($query_key)
- ->setSearchEngine(new PhabricatorProjectSearchEngine())
- ->setNavigation($this->buildSideNavView());
-
- return $this->delegateToController($controller);
- }
-
- public function buildApplicationMenu() {
- return $this->buildSideNavView(true)->getMenu();
+ return id(new PhabricatorProjectSearchEngine())
+ ->setController($this)
+ ->buildResponse();
}
protected function buildApplicationCrumbs() {
diff --git a/src/applications/project/controller/PhabricatorProjectMembersEditController.php b/src/applications/project/controller/PhabricatorProjectMembersEditController.php
--- a/src/applications/project/controller/PhabricatorProjectMembersEditController.php
+++ b/src/applications/project/controller/PhabricatorProjectMembersEditController.php
@@ -17,6 +17,8 @@
return new Aphront404Response();
}
+ $this->setProject($project);
+
$member_phids = $project->getMemberPHIDs();
if ($request->isFormPost()) {
@@ -95,7 +97,7 @@
$member_list = $this->renderMemberList($project, $handles);
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorProject::PANEL_MEMBERS);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/project/controller/PhabricatorProjectMilestonesController.php b/src/applications/project/controller/PhabricatorProjectMilestonesController.php
--- a/src/applications/project/controller/PhabricatorProjectMilestonesController.php
+++ b/src/applications/project/controller/PhabricatorProjectMilestonesController.php
@@ -76,7 +76,7 @@
->setProjects($milestones)
->renderList());
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorProject::PANEL_MILESTONES);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/project/controller/PhabricatorProjectProfileController.php b/src/applications/project/controller/PhabricatorProjectProfileController.php
--- a/src/applications/project/controller/PhabricatorProjectProfileController.php
+++ b/src/applications/project/controller/PhabricatorProjectProfileController.php
@@ -43,7 +43,7 @@
new PhabricatorProjectTransactionQuery());
$timeline->setShouldTerminate(true);
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorProject::PANEL_PROFILE);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/project/controller/PhabricatorProjectSubprojectsController.php b/src/applications/project/controller/PhabricatorProjectSubprojectsController.php
--- a/src/applications/project/controller/PhabricatorProjectSubprojectsController.php
+++ b/src/applications/project/controller/PhabricatorProjectSubprojectsController.php
@@ -75,7 +75,7 @@
->setProjects($subprojects)
->renderList());
- $nav = $this->buildIconNavView($project);
+ $nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorProject::PANEL_SUBPROJECTS);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/view/layout/PHUIApplicationMenuView.php b/src/view/layout/PHUIApplicationMenuView.php
--- a/src/view/layout/PHUIApplicationMenuView.php
+++ b/src/view/layout/PHUIApplicationMenuView.php
@@ -5,6 +5,7 @@
private $viewer;
private $crumbs;
private $searchEngine;
+ private $profileMenu;
private $items = array();
@@ -32,6 +33,16 @@
return $this->addItem($item);
}
+ public function setProfileMenu(
+ AphrontSideNavFilterView $nav) {
+ $this->profileMenu = $nav;
+ return $this;
+ }
+
+ public function getProfileMenu() {
+ return $this->profileMenu;
+ }
+
public function addItem(PHUIListItemView $item) {
$this->items[] = $item;
return $this;
@@ -61,6 +72,15 @@
$view = id(new PHUIListView())
->setUser($viewer);
+ $profile_menu = $this->getProfileMenu();
+ if ($profile_menu) {
+ foreach ($profile_menu->getMenu()->getItems() as $item) {
+ $item = clone $item;
+ $item->setRenderNameAsTooltip(false);
+ $view->addMenuItem($item);
+ }
+ }
+
$crumbs = $this->getCrumbs();
if ($crumbs) {
$actions = $crumbs->getActions();

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 9:29 AM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7223740
Default Alt Text
D15008.id.diff (12 KB)

Event Timeline