From 92ccadaa42d2d91314c051a08756f9012927af3a Mon Sep 17 00:00:00 2001 From: lkassianik Date: Tue, 27 May 2014 15:34:41 -0700 Subject: [PATCH] Create an empty state for dashboards Summary: Fixes T5177. Not sure if checking for panelPHIDs is right, but seemed like a better choice than adding a new property on dashboard. Test Plan: Create dashboard with no panels. Go to view dashboard. "view" page should have a placeholder that directs user to Manage Dashboard Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: epriestley, Korvin Maniphest Tasks: T5177 Differential Revision: https://secure.phabricator.com/D9312 --- .../PhabricatorDashboardViewController.php | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/applications/dashboard/controller/PhabricatorDashboardViewController.php b/src/applications/dashboard/controller/PhabricatorDashboardViewController.php index 5fded53dab..0201a8e2ee 100644 --- a/src/applications/dashboard/controller/PhabricatorDashboardViewController.php +++ b/src/applications/dashboard/controller/PhabricatorDashboardViewController.php @@ -26,10 +26,14 @@ final class PhabricatorDashboardViewController $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Dashboard %d', $dashboard->getID())); - $rendered_dashboard = id(new PhabricatorDashboardRenderingEngine()) - ->setViewer($viewer) - ->setDashboard($dashboard) - ->renderDashboard(); + if ($dashboard->getPanelPHIDs()) { + $rendered_dashboard = id(new PhabricatorDashboardRenderingEngine()) + ->setViewer($viewer) + ->setDashboard($dashboard) + ->renderDashboard(); + } else { + $rendered_dashboard = $this->buildEmptyView(); + } return $this->buildApplicationPage( array( @@ -50,9 +54,24 @@ final class PhabricatorDashboardViewController id(new PHUIListItemView()) ->setIcon('fa-th') ->setName(pht('Manage Dashboard')) - ->setHref($this->getApplicationURI()."manage/{$id}/")); + ->setHref($this->getApplicationURI("manage/{$id}/"))); return $crumbs; } + public function buildEmptyView() { + $id = $this->id; + $manage_uri = $this->getApplicationURI("manage/{$id}/"); + + return id(new AphrontErrorView()) + ->setSeverity(AphrontErrorView::SEVERITY_NODATA) + ->appendChild( + pht('This dashboard has no panels '. + 'yet. Use %s to add panels.', + phutil_tag( + 'a', + array('href'=>$manage_uri), + pht('Manage Dashboard')))); + } + }