Summary: Depends on D20355. Ref T13275. Ref T13247. Currently, "Hamburger" menus are not automatically built from navigation menus. However, this is (I'm almost completely sure?) a reasonable and appropriate default behavior, and saves us some code around profile menus. With this rule in place, we can remove `setApplicationMenu()` and `getApplicationMenu()` from `StandardPageView`, since they have no callers. This also updates a lot of profile menu callsites to a new API which is added in the next change. Test Plan: See the next two changes. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13275, T13247 Differential Revision: https://secure.phabricator.com/D20356
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
final class PhabricatorProjectViewController
|
|
extends PhabricatorProjectController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$request = $this->getRequest();
|
|
$viewer = $request->getViewer();
|
|
|
|
$response = $this->loadProject();
|
|
if ($response) {
|
|
return $response;
|
|
}
|
|
$project = $this->getProject();
|
|
|
|
$engine = $this->getProfileMenuEngine();
|
|
$default = $engine->getDefaultMenuItemConfiguration();
|
|
|
|
// If defaults are broken somehow, serve the manage page. See T13033 for
|
|
// discussion.
|
|
if ($default) {
|
|
$default_key = $default->getBuiltinKey();
|
|
} else {
|
|
$default_key = PhabricatorProject::ITEM_MANAGE;
|
|
}
|
|
|
|
switch ($default_key) {
|
|
case PhabricatorProject::ITEM_WORKBOARD:
|
|
$controller_object = new PhabricatorProjectBoardViewController();
|
|
break;
|
|
case PhabricatorProject::ITEM_PROFILE:
|
|
$controller_object = new PhabricatorProjectProfileController();
|
|
break;
|
|
case PhabricatorProject::ITEM_MANAGE:
|
|
$controller_object = new PhabricatorProjectManageController();
|
|
break;
|
|
default:
|
|
return $engine->buildResponse();
|
|
}
|
|
|
|
return $this->delegateToController($controller_object);
|
|
}
|
|
|
|
}
|