Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15413593
D20362.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
22 KB
Referenced Files
None
Subscribers
None
D20362.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2905,21 +2905,19 @@
'PhabricatorDashboard' => 'applications/dashboard/storage/PhabricatorDashboard.php',
'PhabricatorDashboardAddPanelController' => 'applications/dashboard/controller/PhabricatorDashboardAddPanelController.php',
'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php',
- 'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/PhabricatorDashboardArchiveController.php',
- 'PhabricatorDashboardArrangeController' => 'applications/dashboard/controller/PhabricatorDashboardArrangeController.php',
+ 'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardArchiveController.php',
'PhabricatorDashboardConsoleController' => 'applications/dashboard/controller/PhabricatorDashboardConsoleController.php',
'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php',
'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php',
'PhabricatorDashboardDashboardHasPanelEdgeType' => 'applications/dashboard/edge/PhabricatorDashboardDashboardHasPanelEdgeType.php',
'PhabricatorDashboardDashboardPHIDType' => 'applications/dashboard/phid/PhabricatorDashboardDashboardPHIDType.php',
'PhabricatorDashboardDatasource' => 'applications/dashboard/typeahead/PhabricatorDashboardDatasource.php',
- 'PhabricatorDashboardEditController' => 'applications/dashboard/controller/PhabricatorDashboardEditController.php',
+ 'PhabricatorDashboardEditController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardEditController.php',
'PhabricatorDashboardIconSet' => 'applications/dashboard/icon/PhabricatorDashboardIconSet.php',
'PhabricatorDashboardInstall' => 'applications/dashboard/storage/PhabricatorDashboardInstall.php',
- 'PhabricatorDashboardInstallController' => 'applications/dashboard/controller/PhabricatorDashboardInstallController.php',
+ 'PhabricatorDashboardInstallController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardInstallController.php',
'PhabricatorDashboardLayoutConfig' => 'applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php',
'PhabricatorDashboardListController' => 'applications/dashboard/controller/PhabricatorDashboardListController.php',
- 'PhabricatorDashboardManageController' => 'applications/dashboard/controller/PhabricatorDashboardManageController.php',
'PhabricatorDashboardMovePanelController' => 'applications/dashboard/controller/PhabricatorDashboardMovePanelController.php',
'PhabricatorDashboardNgrams' => 'applications/dashboard/storage/PhabricatorDashboardNgrams.php',
'PhabricatorDashboardPanel' => 'applications/dashboard/storage/PhabricatorDashboardPanel.php',
@@ -2981,7 +2979,7 @@
'PhabricatorDashboardTransaction' => 'applications/dashboard/storage/PhabricatorDashboardTransaction.php',
'PhabricatorDashboardTransactionEditor' => 'applications/dashboard/editor/PhabricatorDashboardTransactionEditor.php',
'PhabricatorDashboardTransactionQuery' => 'applications/dashboard/query/PhabricatorDashboardTransactionQuery.php',
- 'PhabricatorDashboardViewController' => 'applications/dashboard/controller/PhabricatorDashboardViewController.php',
+ 'PhabricatorDashboardViewController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardViewController.php',
'PhabricatorDataCacheSpec' => 'applications/cache/spec/PhabricatorDataCacheSpec.php',
'PhabricatorDataNotAttachedException' => 'infrastructure/storage/lisk/PhabricatorDataNotAttachedException.php',
'PhabricatorDatabaseRef' => 'infrastructure/cluster/PhabricatorDatabaseRef.php',
@@ -8868,7 +8866,6 @@
'PhabricatorDashboardAddPanelController' => 'PhabricatorDashboardController',
'PhabricatorDashboardApplication' => 'PhabricatorApplication',
'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController',
- 'PhabricatorDashboardArrangeController' => 'PhabricatorDashboardProfileController',
'PhabricatorDashboardConsoleController' => 'PhabricatorDashboardController',
'PhabricatorDashboardController' => 'PhabricatorController',
'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO',
@@ -8881,7 +8878,6 @@
'PhabricatorDashboardInstallController' => 'PhabricatorDashboardController',
'PhabricatorDashboardLayoutConfig' => 'Phobject',
'PhabricatorDashboardListController' => 'PhabricatorDashboardController',
- 'PhabricatorDashboardManageController' => 'PhabricatorDashboardProfileController',
'PhabricatorDashboardMovePanelController' => 'PhabricatorDashboardController',
'PhabricatorDashboardNgrams' => 'PhabricatorSearchNgrams',
'PhabricatorDashboardPanel' => array(
diff --git a/src/applications/dashboard/application/PhabricatorDashboardApplication.php b/src/applications/dashboard/application/PhabricatorDashboardApplication.php
--- a/src/applications/dashboard/application/PhabricatorDashboardApplication.php
+++ b/src/applications/dashboard/application/PhabricatorDashboardApplication.php
@@ -41,8 +41,6 @@
=> 'PhabricatorDashboardListController',
'view/(?P<id>\d+)/' => 'PhabricatorDashboardViewController',
'archive/(?P<id>\d+)/' => 'PhabricatorDashboardArchiveController',
- 'manage/(?P<id>\d+)/' => 'PhabricatorDashboardManageController',
- 'arrange/(?P<id>\d+)/' => 'PhabricatorDashboardArrangeController',
'create/' => 'PhabricatorDashboardEditController',
'edit/(?:(?P<id>\d+)/)?' => 'PhabricatorDashboardEditController',
'install/(?:(?P<id>\d+)/)?' => 'PhabricatorDashboardInstallController',
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardArrangeController.php b/src/applications/dashboard/controller/PhabricatorDashboardArrangeController.php
deleted file mode 100644
--- a/src/applications/dashboard/controller/PhabricatorDashboardArrangeController.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-final class PhabricatorDashboardArrangeController
- extends PhabricatorDashboardProfileController {
-
- public function shouldAllowPublic() {
- return true;
- }
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
- $id = $request->getURIData('id');
-
- $dashboard = id(new PhabricatorDashboardQuery())
- ->setViewer($viewer)
- ->withIDs(array($id))
- ->needPanels(true)
- ->executeOne();
- if (!$dashboard) {
- return new Aphront404Response();
- }
- $this->setDashboard($dashboard);
-
- $can_edit = PhabricatorPolicyFilter::hasCapability(
- $viewer,
- $dashboard,
- PhabricatorPolicyCapability::CAN_EDIT);
-
- $title = $dashboard->getName();
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Arrange'));
- $header = $this->buildHeaderView();
-
- $info_view = null;
- if (!$can_edit) {
- $no_edit = pht(
- 'You do not have permission to edit this dashboard.');
-
- $info_view = id(new PHUIInfoView())
- ->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
- ->setErrors(array($no_edit));
- }
-
- $rendered_dashboard = id(new PhabricatorDashboardRenderingEngine())
- ->setViewer($viewer)
- ->setDashboard($dashboard)
- ->setArrangeMode($can_edit)
- ->renderDashboard();
-
- $dashboard_box = id(new PHUIBoxView())
- ->addClass('dashboard-preview-box')
- ->appendChild($rendered_dashboard);
-
- $install_button = id(new PHUIButtonView())
- ->setTag('a')
- ->setText('Install Dashboard')
- ->setIcon('fa-plus')
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI("/install/{$id}/"));
- $header->addActionLink($install_button);
-
- $view = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter(array(
- $info_view,
- $dashboard_box,
- ));
-
- $navigation = $this->buildSideNavView('arrange');
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($navigation)
- ->appendChild($view);
-
- }
-
-}
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php b/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php
+++ b/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php
@@ -14,10 +14,6 @@
return $this->dashboard;
}
- public function buildApplicationMenu() {
- return $this->buildSideNavView()->getMenu();
- }
-
protected function buildHeaderView() {
$viewer = $this->getViewer();
$dashboard = $this->getDashboard();
@@ -49,50 +45,10 @@
$dashboard = $this->getDashboard();
if ($dashboard) {
- $id = $dashboard->getID();
- $dashboard_uri = $this->getApplicationURI("/view/{$id}/");
- $crumbs->addTextCrumb($dashboard->getName(), $dashboard_uri);
+ $crumbs->addTextCrumb($dashboard->getName(), $dashboard->getURI());
}
return $crumbs;
}
- protected function buildSideNavView($filter = null) {
- $viewer = $this->getViewer();
- $dashboard = $this->getDashboard();
- $id = $dashboard->getID();
-
- $can_edit = PhabricatorPolicyFilter::hasCapability(
- $viewer,
- $dashboard,
- PhabricatorPolicyCapability::CAN_EDIT);
-
- $nav = id(new AphrontSideNavFilterView())
- ->setBaseURI(new PhutilURI($this->getApplicationURI()));
-
- $nav->addLabel(pht('Dashboard'));
-
- $nav->addFilter(
- 'view',
- pht('View Dashboard'),
- $this->getApplicationURI("/view/{$id}/"),
- 'fa-dashboard');
-
- $nav->addFilter(
- 'arrange',
- pht('Arrange Panels'),
- $this->getApplicationURI("/arrange/{$id}/"),
- 'fa-columns');
-
- $nav->addFilter(
- 'manage',
- pht('Manage Dashboard'),
- $this->getApplicationURI("/manage/{$id}/"),
- 'fa-gears');
-
- $nav->selectFilter($filter);
-
- return $nav;
- }
-
}
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardQueryPanelInstallController.php b/src/applications/dashboard/controller/PhabricatorDashboardQueryPanelInstallController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardQueryPanelInstallController.php
+++ b/src/applications/dashboard/controller/PhabricatorDashboardQueryPanelInstallController.php
@@ -75,7 +75,7 @@
}
if (!$errors) {
- $redirect_uri = "/dashboard/arrange/{$v_dashboard}/";
+ $redirect_uri = "/dashboard/view/{$v_dashboard}/";
$panel_type = id(new PhabricatorDashboardQueryPanelType())
->getPanelTypeKey();
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardViewController.php b/src/applications/dashboard/controller/PhabricatorDashboardViewController.php
deleted file mode 100644
--- a/src/applications/dashboard/controller/PhabricatorDashboardViewController.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-final class PhabricatorDashboardViewController
- extends PhabricatorDashboardProfileController {
-
- public function shouldAllowPublic() {
- return true;
- }
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
- $id = $request->getURIData('id');
-
- $dashboard = id(new PhabricatorDashboardQuery())
- ->setViewer($viewer)
- ->withIDs(array($id))
- ->needPanels(true)
- ->executeOne();
- if (!$dashboard) {
- return new Aphront404Response();
- }
- $this->setDashboard($dashboard);
-
- $dashboard_uri = $this->getApplicationURI("view/{$id}/");
- $title = $dashboard->getName();
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('View'));
-
- if ($dashboard->getPanelPHIDs()) {
- $rendered_dashboard = id(new PhabricatorDashboardRenderingEngine())
- ->setViewer($viewer)
- ->setDashboard($dashboard)
- ->renderDashboard();
- $content = id(new PHUIBoxView())
- ->addClass('dashboard-preview-box')
- ->appendChild($rendered_dashboard);
- } else {
- $content = id(new PHUIInfoView())
- ->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
- ->appendChild(pht('This dashboard has no panels yet.'));
- }
-
- $navigation = $this->buildSideNavView('view');
- $header = $this->buildHeaderView();
-
- $install_button = id(new PHUIButtonView())
- ->setTag('a')
- ->setText('Install Dashboard')
- ->setIcon('fa-plus')
- ->setColor(PHUIButtonView::GREEN)
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI("/install/{$id}/"));
- $header->addActionLink($install_button);
-
- $view = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter(array(
- $content,
- ));
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($navigation)
- ->appendChild($view);
- }
-
-}
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardArchiveController.php b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardArchiveController.php
rename from src/applications/dashboard/controller/PhabricatorDashboardArchiveController.php
rename to src/applications/dashboard/controller/dashboard/PhabricatorDashboardArchiveController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardArchiveController.php
+++ b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardArchiveController.php
@@ -20,7 +20,7 @@
return new Aphront404Response();
}
- $view_uri = $this->getApplicationURI('manage/'.$dashboard->getID().'/');
+ $view_uri = $dashboard->getURI();
if ($request->isFormPost()) {
if ($dashboard->isArchived()) {
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardEditController.php b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardEditController.php
rename from src/applications/dashboard/controller/PhabricatorDashboardEditController.php
rename to src/applications/dashboard/controller/dashboard/PhabricatorDashboardEditController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardEditController.php
+++ b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardEditController.php
@@ -55,8 +55,7 @@
$crumbs->addTextCrumb(pht('Create Dashboard'));
} else {
- $id = $dashboard->getID();
- $cancel_uri = $this->getApplicationURI('manage/'.$id.'/');
+ $cancel_uri = $dashboard->getURI();
$title = pht('Edit Dashboard: %s', $dashboard->getName());
$header_icon = 'fa-pencil';
@@ -117,9 +116,7 @@
->setContentSourceFromRequest($request)
->applyTransactions($dashboard, $xactions);
- $uri = $this->getApplicationURI('arrange/'.$dashboard->getID().'/');
-
- return id(new AphrontRedirectResponse())->setURI($uri);
+ return id(new AphrontRedirectResponse())->setURI($dashboard->getURI());
} catch (PhabricatorApplicationTransactionValidationException $ex) {
$validation_exception = $ex;
@@ -346,10 +343,8 @@
->setContentSourceFromRequest($request)
->applyTransactions($dashboard, $xactions);
- $manage_uri = $this->getApplicationURI('arrange/'.$dashboard->getID().'/');
-
return id(new AphrontRedirectResponse())
- ->setURI($manage_uri);
+ ->setURI($dashboard->getURI());
}
private function newPanel(
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardInstallController.php b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardInstallController.php
rename from src/applications/dashboard/controller/PhabricatorDashboardInstallController.php
rename to src/applications/dashboard/controller/dashboard/PhabricatorDashboardInstallController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardInstallController.php
+++ b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardInstallController.php
@@ -15,8 +15,7 @@
return new Aphront404Response();
}
- $cancel_uri = $this->getApplicationURI(
- 'view/'.$dashboard->getID().'/');
+ $cancel_uri = $dashboard->getURI();
$home_app = new PhabricatorHomeApplication();
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardManageController.php b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardViewController.php
rename from src/applications/dashboard/controller/PhabricatorDashboardManageController.php
rename to src/applications/dashboard/controller/dashboard/PhabricatorDashboardViewController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardManageController.php
+++ b/src/applications/dashboard/controller/dashboard/PhabricatorDashboardViewController.php
@@ -1,6 +1,6 @@
<?php
-final class PhabricatorDashboardManageController
+final class PhabricatorDashboardViewController
extends PhabricatorDashboardProfileController {
public function shouldAllowPublic() {
@@ -11,10 +11,6 @@
$viewer = $request->getViewer();
$id = $request->getURIData('id');
- // TODO: This UI should drop a lot of capabilities if the user can't
- // edit the dashboard, but we should still let them in for "Install" and
- // "View History".
-
$dashboard = id(new PhabricatorDashboardQuery())
->setViewer($viewer)
->withIDs(array($id))
@@ -31,44 +27,38 @@
PhabricatorPolicyCapability::CAN_EDIT);
$title = $dashboard->getName();
-
$crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Manage'));
-
$header = $this->buildHeaderView();
+
$curtain = $this->buildCurtainView($dashboard);
- $properties = $this->buildPropertyView($dashboard);
$timeline = $this->buildTransactionTimeline(
$dashboard,
new PhabricatorDashboardTransactionQuery());
$timeline->setShouldTerminate(true);
- $info_view = null;
- if (!$can_edit) {
- $no_edit = pht(
- 'You do not have permission to edit this dashboard.');
+ $rendered_dashboard = id(new PhabricatorDashboardRenderingEngine())
+ ->setViewer($viewer)
+ ->setDashboard($dashboard)
+ ->setArrangeMode($can_edit)
+ ->renderDashboard();
- $info_view = id(new PHUIInfoView())
- ->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
- ->setErrors(array($no_edit));
- }
+ $dashboard_box = id(new PHUIBoxView())
+ ->addClass('dashboard-preview-box')
+ ->appendChild($rendered_dashboard);
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setCurtain($curtain)
- ->setMainColumn(array(
- $info_view,
- $properties,
- $timeline,
- ));
-
- $navigation = $this->buildSideNavView('manage');
+ ->setMainColumn(
+ array(
+ $dashboard_box,
+ $timeline,
+ ));
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
- ->setNavigation($navigation)
->appendChild($view);
}
@@ -91,6 +81,13 @@
->setHref($this->getApplicationURI("edit/{$id}/"))
->setDisabled(!$can_edit));
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('Install Dashboard'))
+ ->setIcon('fa-wrench')
+ ->setHref($this->getApplicationURI("/install/{$id}/"))
+ ->setWorkflow(true));
+
if ($dashboard->isArchived()) {
$curtain->addAction(
id(new PhabricatorActionView())
@@ -112,28 +109,5 @@
return $curtain;
}
- private function buildPropertyView(PhabricatorDashboard $dashboard) {
- $viewer = $this->getViewer();
-
- $properties = id(new PHUIPropertyListView())
- ->setUser($viewer);
-
- $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions(
- $viewer,
- $dashboard);
-
- $properties->addProperty(
- pht('Editable By'),
- $descriptions[PhabricatorPolicyCapability::CAN_EDIT]);
-
- $properties->addProperty(
- pht('Panels'),
- $viewer->renderHandleList($dashboard->getPanelPHIDs()));
-
- return id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Details'))
- ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->addPropertyList($properties);
- }
}
diff --git a/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php b/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php
--- a/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php
+++ b/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php
@@ -123,15 +123,14 @@
$handles = $viewer->loadHandles($phids);
$list = id(new PHUIObjectItemListView())
- ->setUser($viewer);
+ ->setViewer($viewer);
foreach ($dashboards as $dashboard) {
- $id = $dashboard->getID();
-
$item = id(new PHUIObjectItemView())
- ->setUser($viewer)
+ ->setViewer($viewer)
+ ->setObjectName($dashboard->getObjectName())
->setHeader($dashboard->getName())
- ->setHref($this->getApplicationURI("view/{$id}/"))
+ ->setHref($dashboard->getURI())
->setObject($dashboard);
$bg_color = 'bg-dark';
diff --git a/src/applications/dashboard/storage/PhabricatorDashboard.php b/src/applications/dashboard/storage/PhabricatorDashboard.php
--- a/src/applications/dashboard/storage/PhabricatorDashboard.php
+++ b/src/applications/dashboard/storage/PhabricatorDashboard.php
@@ -118,10 +118,13 @@
return ($this->getStatus() == self::STATUS_ARCHIVED);
}
- public function getViewURI() {
- return '/dashboard/view/'.$this->getID().'/';
+ public function getURI() {
+ return urisprintf('/dashboard/view/%d/', $this->getID());
}
+ public function getObjectName() {
+ return pht('Dashboard %d', $this->getID());
+ }
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
diff --git a/src/applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php b/src/applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php
--- a/src/applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php
+++ b/src/applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php
@@ -153,7 +153,7 @@
$icon = $dashboard->getIcon();
$name = $this->getDisplayName($config);
$is_disabled = false;
- $action_uri = '/dashboard/arrange/'.$dashboard->getID().'/';
+ $action_uri = $dashboard->getURI();
}
} else {
$icon = 'fa-ban';
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 20, 7:50 PM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7682461
Default Alt Text
D20362.diff (22 KB)
Attached To
Mode
D20362: Combine the "View", "Arrange", and "Manage" modes of Dashboards into a single mode
Attached
Detach File
Event Timeline
Log In to Comment