Page MenuHomePhabricator

D20362.diff
No OneTemporary

D20362.diff

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

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)

Event Timeline