diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index a401d35d1b..47991d04db 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1467,6 +1467,7 @@ phutil_register_library_map(array( 'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php', 'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php', 'PhabricatorDashboardEditController' => 'applications/dashboard/controller/PhabricatorDashboardEditController.php', + 'PhabricatorDashboardHistoryController' => 'applications/dashboard/controller/PhabricatorDashboardHistoryController.php', 'PhabricatorDashboardInstall' => 'applications/dashboard/storage/PhabricatorDashboardInstall.php', 'PhabricatorDashboardInstallController' => 'applications/dashboard/controller/PhabricatorDashboardInstallController.php', 'PhabricatorDashboardLayoutConfig' => 'applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php', @@ -4266,6 +4267,7 @@ phutil_register_library_map(array( 'PhabricatorDashboardController' => 'PhabricatorController', 'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO', 'PhabricatorDashboardEditController' => 'PhabricatorDashboardController', + 'PhabricatorDashboardHistoryController' => 'PhabricatorDashboardController', 'PhabricatorDashboardInstall' => 'PhabricatorDashboardDAO', 'PhabricatorDashboardInstallController' => 'PhabricatorDashboardController', 'PhabricatorDashboardListController' => 'PhabricatorDashboardController', diff --git a/src/applications/dashboard/application/PhabricatorApplicationDashboard.php b/src/applications/dashboard/application/PhabricatorApplicationDashboard.php index c453d9a4b3..4c3f57b5ad 100644 --- a/src/applications/dashboard/application/PhabricatorApplicationDashboard.php +++ b/src/applications/dashboard/application/PhabricatorApplicationDashboard.php @@ -22,6 +22,7 @@ final class PhabricatorApplicationDashboard extends PhabricatorApplication { => 'PhabricatorDashboardListController', 'view/(?P\d+)/' => 'PhabricatorDashboardViewController', 'manage/(?P\d+)/' => 'PhabricatorDashboardManageController', + 'history/(?P\d+)/' => 'PhabricatorDashboardHistoryController', 'create/' => 'PhabricatorDashboardEditController', 'edit/(?:(?P\d+)/)?' => 'PhabricatorDashboardEditController', 'install/(?P\d+)/' => 'PhabricatorDashboardInstallController', diff --git a/src/applications/dashboard/controller/PhabricatorDashboardHistoryController.php b/src/applications/dashboard/controller/PhabricatorDashboardHistoryController.php new file mode 100644 index 0000000000..4e7082ec7c --- /dev/null +++ b/src/applications/dashboard/controller/PhabricatorDashboardHistoryController.php @@ -0,0 +1,68 @@ +id = $data['id']; + } + + public function processRequest() { + $request = $this->getRequest(); + $viewer = $request->getUser(); + $id = $this->id; + $dashboard_view_uri = $this->getApplicationURI('view/'.$id.'/'); + $dashboard_manage_uri = $this->getApplicationURI('manage/'.$id.'/'); + + $dashboard = id(new PhabricatorDashboardQuery()) + ->setViewer($viewer) + ->withIDs(array($this->id)) + ->executeOne(); + if (!$dashboard) { + return new Aphront404Response(); + } + + $title = $dashboard->getName(); + + $crumbs = $this->buildApplicationCrumbs(); + $crumbs->addTextCrumb( + pht('Dashboard %d', $dashboard->getID()), + $dashboard_view_uri); + $crumbs->addTextCrumb( + pht('Manage'), + $dashboard_manage_uri); + $crumbs->addTextCrumb(pht('History')); + + $timeline = $this->buildTransactions($dashboard); + + return $this->buildApplicationPage( + array( + $crumbs, + $timeline, + ), + array( + 'title' => $title, + 'device' => true, + )); + } + + private function buildTransactions(PhabricatorDashboard $dashboard) { + $viewer = $this->getRequest()->getUser(); + + $xactions = id(new PhabricatorDashboardTransactionQuery()) + ->setViewer($viewer) + ->withObjectPHIDs(array($dashboard->getPHID())) + ->execute(); + + $timeline = id(new PhabricatorApplicationTransactionView()) + ->setUser($viewer) + ->setShouldTerminate(true) + ->setObjectPHID($dashboard->getPHID()) + ->setTransactions($xactions); + + return $timeline; + } + +} diff --git a/src/applications/dashboard/controller/PhabricatorDashboardManageController.php b/src/applications/dashboard/controller/PhabricatorDashboardManageController.php index d82e8f78a1..192a7d7d10 100644 --- a/src/applications/dashboard/controller/PhabricatorDashboardManageController.php +++ b/src/applications/dashboard/controller/PhabricatorDashboardManageController.php @@ -35,7 +35,6 @@ final class PhabricatorDashboardManageController $header = $this->buildHeaderView($dashboard); $actions = $this->buildActionView($dashboard); $properties = $this->buildPropertyView($dashboard); - $timeline = $this->buildTransactions($dashboard); $properties->setActionList($actions); $box = id(new PHUIObjectBoxView()) @@ -52,7 +51,6 @@ final class PhabricatorDashboardManageController array( $crumbs, $box, - $timeline, $rendered_dashboard, ), array( @@ -111,6 +109,12 @@ final class PhabricatorDashboardManageController ->setHref($this->getApplicationURI($href_install)) ->setWorkflow(true)); + $actions->addAction( + id(new PhabricatorActionView()) + ->setName(pht('View History')) + ->setIcon('fa-history') + ->setHref($this->getApplicationURI("history/{$id}/"))); + return $actions; } @@ -138,24 +142,4 @@ final class PhabricatorDashboardManageController return $properties; } - - private function buildTransactions(PhabricatorDashboard $dashboard) { - $viewer = $this->getRequest()->getUser(); - - $xactions = id(new PhabricatorDashboardTransactionQuery()) - ->setViewer($viewer) - ->withObjectPHIDs(array($dashboard->getPHID())) - ->execute(); - - $engine = id(new PhabricatorMarkupEngine()) - ->setViewer($viewer); - - $timeline = id(new PhabricatorApplicationTransactionView()) - ->setUser($viewer) - ->setObjectPHID($dashboard->getPHID()) - ->setTransactions($xactions); - - return $timeline; - } - } diff --git a/src/applications/dashboard/controller/PhabricatorDashboardPanelViewController.php b/src/applications/dashboard/controller/PhabricatorDashboardPanelViewController.php index ba8e256dd1..fe824727fe 100644 --- a/src/applications/dashboard/controller/PhabricatorDashboardPanelViewController.php +++ b/src/applications/dashboard/controller/PhabricatorDashboardPanelViewController.php @@ -47,14 +47,15 @@ final class PhabricatorDashboardPanelViewController $view = id(new PHUIBoxView()) ->addMargin(PHUI::MARGIN_LARGE_LEFT) ->addMargin(PHUI::MARGIN_LARGE_RIGHT) + ->addMargin(PHUI::MARGIN_LARGE_TOP) ->appendChild($rendered_panel); return $this->buildApplicationPage( array( $crumbs, $box, - $timeline, $view, + $timeline, ), array( 'title' => $title, @@ -155,6 +156,7 @@ final class PhabricatorDashboardPanelViewController $timeline = id(new PhabricatorApplicationTransactionView()) ->setUser($viewer) + ->setShouldTerminate(true) ->setObjectPHID($panel->getPHID()) ->setTransactions($xactions);