@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add DashboardArchiveController

Summary: So Fancy, Much JavaScript. Ref T9414

Test Plan: Archive a Dashboard, Activate a Dashboard, Edit a Dashboard

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T9414

Differential Revision: https://secure.phabricator.com/D14725

+91 -18
+2
src/__phutil_library_map__.php
··· 2042 2042 'PhabricatorDashboard' => 'applications/dashboard/storage/PhabricatorDashboard.php', 2043 2043 'PhabricatorDashboardAddPanelController' => 'applications/dashboard/controller/PhabricatorDashboardAddPanelController.php', 2044 2044 'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php', 2045 + 'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/PhabricatorDashboardArchiveController.php', 2045 2046 'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php', 2046 2047 'PhabricatorDashboardCopyController' => 'applications/dashboard/controller/PhabricatorDashboardCopyController.php', 2047 2048 'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php', ··· 6157 6158 ), 6158 6159 'PhabricatorDashboardAddPanelController' => 'PhabricatorDashboardController', 6159 6160 'PhabricatorDashboardApplication' => 'PhabricatorApplication', 6161 + 'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController', 6160 6162 'PhabricatorDashboardController' => 'PhabricatorController', 6161 6163 'PhabricatorDashboardCopyController' => 'PhabricatorDashboardController', 6162 6164 'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO',
+1
src/applications/dashboard/application/PhabricatorDashboardApplication.php
··· 25 25 '(?:query/(?P<queryKey>[^/]+)/)?' 26 26 => 'PhabricatorDashboardListController', 27 27 'view/(?P<id>\d+)/' => 'PhabricatorDashboardViewController', 28 + 'archive/(?P<id>\d+)/' => 'PhabricatorDashboardArchiveController', 28 29 'manage/(?P<id>\d+)/' => 'PhabricatorDashboardManageController', 29 30 'history/(?P<id>\d+)/' => 'PhabricatorDashboardHistoryController', 30 31 'create/' => 'PhabricatorDashboardEditController',
+65
src/applications/dashboard/controller/PhabricatorDashboardArchiveController.php
··· 1 + <?php 2 + 3 + final class PhabricatorDashboardArchiveController 4 + extends PhabricatorDashboardController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + $viewer = $request->getViewer(); 8 + $id = $request->getURIData('id'); 9 + 10 + $dashboard = id(new PhabricatorDashboardQuery()) 11 + ->setViewer($viewer) 12 + ->withIDs(array($id)) 13 + ->requireCapabilities( 14 + array( 15 + PhabricatorPolicyCapability::CAN_VIEW, 16 + PhabricatorPolicyCapability::CAN_EDIT, 17 + )) 18 + ->executeOne(); 19 + if (!$dashboard) { 20 + return new Aphront404Response(); 21 + } 22 + 23 + $view_uri = $this->getApplicationURI('manage/'.$dashboard->getID().'/'); 24 + 25 + if ($request->isFormPost()) { 26 + if ($dashboard->isArchived()) { 27 + $new_status = PhabricatorDashboard::STATUS_ACTIVE; 28 + } else { 29 + $new_status = PhabricatorDashboard::STATUS_ARCHIVED; 30 + } 31 + 32 + $xactions = array(); 33 + 34 + $xactions[] = id(new PhabricatorDashboardTransaction()) 35 + ->setTransactionType(PhabricatorDashboardTransaction::TYPE_STATUS) 36 + ->setNewValue($new_status); 37 + 38 + id(new PhabricatorDashboardTransactionEditor()) 39 + ->setActor($viewer) 40 + ->setContentSourceFromRequest($request) 41 + ->setContinueOnNoEffect(true) 42 + ->setContinueOnMissingFields(true) 43 + ->applyTransactions($dashboard, $xactions); 44 + 45 + return id(new AphrontRedirectResponse())->setURI($view_uri); 46 + } 47 + 48 + if ($dashboard->isArchived()) { 49 + $title = pht('Activate Dashboard'); 50 + $body = pht('This dashboard will become active again.'); 51 + $button = pht('Activate Dashboard'); 52 + } else { 53 + $title = pht('Archive Dashboard'); 54 + $body = pht('This dashboard will be marked as archived.'); 55 + $button = pht('Archive Dashboard'); 56 + } 57 + 58 + return $this->newDialog() 59 + ->setTitle($title) 60 + ->appendChild($body) 61 + ->addCancelButton($view_uri) 62 + ->addSubmitButton($button); 63 + } 64 + 65 + }
+1 -13
src/applications/dashboard/controller/PhabricatorDashboardEditController.php
··· 67 67 } 68 68 69 69 $v_name = $dashboard->getName(); 70 - $v_stat = $dashboard->getStatus(); 71 70 $v_layout_mode = $dashboard->getLayoutConfigObject()->getLayoutMode(); 72 71 $e_name = true; 73 72 ··· 78 77 $v_view_policy = $request->getStr('viewPolicy'); 79 78 $v_edit_policy = $request->getStr('editPolicy'); 80 79 $v_projects = $request->getArr('projects'); 81 - $v_stat = $request->getStr('status'); 82 80 83 81 $xactions = array(); 84 82 85 83 $type_name = PhabricatorDashboardTransaction::TYPE_NAME; 86 84 $type_layout_mode = PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE; 87 - $type_stat = PhabricatorDashboardTransaction::TYPE_STATUS; 88 85 $type_view_policy = PhabricatorTransactions::TYPE_VIEW_POLICY; 89 86 $type_edit_policy = PhabricatorTransactions::TYPE_EDIT_POLICY; 90 87 ··· 100 97 $xactions[] = id(new PhabricatorDashboardTransaction()) 101 98 ->setTransactionType($type_edit_policy) 102 99 ->setNewValue($v_edit_policy); 103 - $xactions[] = id(new PhabricatorDashboardTransaction()) 104 - ->setTransactionType($type_stat) 105 - ->setNewValue($v_stat); 106 100 107 101 $proj_edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; 108 102 $xactions[] = id(new PhabricatorDashboardTransaction()) ··· 163 157 ->setLabel(pht('Layout Mode')) 164 158 ->setName('layout_mode') 165 159 ->setValue($v_layout_mode) 166 - ->setOptions($layout_mode_options)) 167 - ->appendChild( 168 - id(new AphrontFormSelectControl()) 169 - ->setLabel(pht('Status')) 170 - ->setName('status') 171 - ->setValue($v_stat) 172 - ->setOptions($dashboard->getStatusNameMap())); 160 + ->setOptions($layout_mode_options)); 173 161 174 162 $form->appendControl( 175 163 id(new AphrontFormTokenizerControl())
+20 -3
src/applications/dashboard/controller/PhabricatorDashboardManageController.php
··· 75 75 private function buildHeaderView(PhabricatorDashboard $dashboard) { 76 76 $viewer = $this->getRequest()->getUser(); 77 77 78 - if ($dashboard->isClosed()) { 78 + if ($dashboard->isArchived()) { 79 79 $status_icon = 'fa-ban'; 80 80 $status_color = 'dark'; 81 81 } else { ··· 119 119 ->setName(pht('Edit Dashboard')) 120 120 ->setIcon('fa-pencil') 121 121 ->setHref($this->getApplicationURI("edit/{$id}/")) 122 - ->setDisabled(!$can_edit) 123 - ->setWorkflow(!$can_edit)); 122 + ->setDisabled(!$can_edit)); 123 + 124 + if ($dashboard->isArchived()) { 125 + $actions->addAction( 126 + id(new PhabricatorActionView()) 127 + ->setName(pht('Activate Dashboard')) 128 + ->setIcon('fa-check') 129 + ->setHref($this->getApplicationURI("archive/{$id}/")) 130 + ->setDisabled(!$can_edit) 131 + ->setWorkflow($can_edit)); 132 + } else { 133 + $actions->addAction( 134 + id(new PhabricatorActionView()) 135 + ->setName(pht('Archive Dashboard')) 136 + ->setIcon('fa-ban') 137 + ->setHref($this->getApplicationURI("archive/{$id}/")) 138 + ->setDisabled(!$can_edit) 139 + ->setWorkflow($can_edit)); 140 + } 124 141 125 142 $actions->addAction( 126 143 id(new PhabricatorActionView())
+1 -1
src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php
··· 140 140 ->setSlim(true) 141 141 ->setHandles($project_handles)); 142 142 143 - if ($dashboard->isClosed()) { 143 + if ($dashboard->isArchived()) { 144 144 $item->setDisabled(true); 145 145 } 146 146
+1 -1
src/applications/dashboard/storage/PhabricatorDashboard.php
··· 109 109 return $this->assertAttached($this->panels); 110 110 } 111 111 112 - public function isClosed() { 112 + public function isArchived() { 113 113 return ($this->getStatus() == self::STATUS_ARCHIVED); 114 114 } 115 115