mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-22 04:31:13 +01:00
Degrade more gracefully when ProfileMenu dashboards fail to render
Summary: Ref T12871. This replaces a dead end UI (user totally locked out) with one where the menu is still available, if the default menu item is one which generates a policy exception (e.g., because users can't see the dashboard). Really, we should do better than this and not select this item as the default item if the viewer can't see it, but there is currently no reliable way to test for "can the viewer see this item?" so this is a more involved change. I'm thinking we get this minor improvement into the release, then pursue a more detailed fix afterward. Test Plan: - Added a dashboard as the top item in the global menu. - Changed the dashboard to be visible to only user B. - Viewed Home as user A. - Before patch: entire page is a policy exception dialog. - After patch, things are better: {F5014179} Reviewers: chad, amckinley Reviewed By: amckinley Maniphest Tasks: T12871 Differential Revision: https://secure.phabricator.com/D18152
This commit is contained in:
parent
f704f905d2
commit
a198590533
1 changed files with 8 additions and 1 deletions
|
@ -238,7 +238,14 @@ abstract class PhabricatorProfileMenuEngine extends Phobject {
|
|||
case 'view':
|
||||
$navigation->selectFilter($selected_item->getDefaultMenuItemKey());
|
||||
|
||||
$content = $this->buildItemViewContent($selected_item);
|
||||
try {
|
||||
$content = $this->buildItemViewContent($selected_item);
|
||||
} catch (Exception $ex) {
|
||||
$content = id(new PHUIInfoView())
|
||||
->setTitle(pht('Unable to Render Dashboard'))
|
||||
->setErrors(array($ex->getMessage()));
|
||||
}
|
||||
|
||||
$crumbs->addTextCrumb($selected_item->getDisplayName());
|
||||
if (!$content) {
|
||||
return new Aphront404Response();
|
||||
|
|
Loading…
Reference in a new issue