@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 PhabricatorOwnersArchiveController

Summary: Ability to Archive and Activate Packages from the view page. Ref T9414

Test Plan: New Package, Edit Package, Archive Package, Activate Package

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T9414

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

+94 -13
+2
src/__phutil_library_map__.php
··· 2568 2568 'PhabricatorOpcodeCacheSpec' => 'applications/cache/spec/PhabricatorOpcodeCacheSpec.php', 2569 2569 'PhabricatorOwnerPathQuery' => 'applications/owners/query/PhabricatorOwnerPathQuery.php', 2570 2570 'PhabricatorOwnersApplication' => 'applications/owners/application/PhabricatorOwnersApplication.php', 2571 + 'PhabricatorOwnersArchiveController' => 'applications/owners/controller/PhabricatorOwnersArchiveController.php', 2571 2572 'PhabricatorOwnersConfigOptions' => 'applications/owners/config/PhabricatorOwnersConfigOptions.php', 2572 2573 'PhabricatorOwnersConfiguredCustomField' => 'applications/owners/customfield/PhabricatorOwnersConfiguredCustomField.php', 2573 2574 'PhabricatorOwnersController' => 'applications/owners/controller/PhabricatorOwnersController.php', ··· 6762 6763 'PhabricatorOpcodeCacheSpec' => 'PhabricatorCacheSpec', 6763 6764 'PhabricatorOwnerPathQuery' => 'Phobject', 6764 6765 'PhabricatorOwnersApplication' => 'PhabricatorApplication', 6766 + 'PhabricatorOwnersArchiveController' => 'PhabricatorOwnersController', 6765 6767 'PhabricatorOwnersConfigOptions' => 'PhabricatorApplicationConfigOptions', 6766 6768 'PhabricatorOwnersConfiguredCustomField' => array( 6767 6769 'PhabricatorOwnersCustomField',
+1
src/applications/owners/application/PhabricatorOwnersApplication.php
··· 45 45 '(?:query/(?P<queryKey>[^/]+)/)?' => 'PhabricatorOwnersListController', 46 46 'new/' => 'PhabricatorOwnersEditController', 47 47 'package/(?P<id>[1-9]\d*)/' => 'PhabricatorOwnersDetailController', 48 + 'archive/(?P<id>[1-9]\d*)/' => 'PhabricatorOwnersArchiveController', 48 49 'paths/(?P<id>[1-9]\d*)/' => 'PhabricatorOwnersPathsController', 49 50 50 51 $this->getEditRoutePattern('edit/')
+65
src/applications/owners/controller/PhabricatorOwnersArchiveController.php
··· 1 + <?php 2 + 3 + final class PhabricatorOwnersArchiveController 4 + extends PhabricatorOwnersController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + $viewer = $request->getViewer(); 8 + $id = $request->getURIData('id'); 9 + 10 + $package = id(new PhabricatorOwnersPackageQuery()) 11 + ->setViewer($viewer) 12 + ->withIDs(array($id)) 13 + ->requireCapabilities( 14 + array( 15 + PhabricatorPolicyCapability::CAN_VIEW, 16 + PhabricatorPolicyCapability::CAN_EDIT, 17 + )) 18 + ->executeOne(); 19 + if (!$package) { 20 + return new Aphront404Response(); 21 + } 22 + 23 + $view_uri = $this->getApplicationURI('package/'.$package->getID().'/'); 24 + 25 + if ($request->isFormPost()) { 26 + if ($package->isArchived()) { 27 + $new_status = PhabricatorOwnersPackage::STATUS_ACTIVE; 28 + } else { 29 + $new_status = PhabricatorOwnersPackage::STATUS_ARCHIVED; 30 + } 31 + 32 + $xactions = array(); 33 + 34 + $xactions[] = id(new PhabricatorOwnersPackageTransaction()) 35 + ->setTransactionType(PhabricatorOwnersPackageTransaction::TYPE_STATUS) 36 + ->setNewValue($new_status); 37 + 38 + id(new PhabricatorOwnersPackageTransactionEditor()) 39 + ->setActor($viewer) 40 + ->setContentSourceFromRequest($request) 41 + ->setContinueOnNoEffect(true) 42 + ->setContinueOnMissingFields(true) 43 + ->applyTransactions($package, $xactions); 44 + 45 + return id(new AphrontRedirectResponse())->setURI($view_uri); 46 + } 47 + 48 + if ($package->isArchived()) { 49 + $title = pht('Activate Package'); 50 + $body = pht('This package will become active again.'); 51 + $button = pht('Activate Package'); 52 + } else { 53 + $title = pht('Archive Package'); 54 + $body = pht('This package will be marked as archived.'); 55 + $button = pht('Archive Package'); 56 + } 57 + 58 + return $this->newDialog() 59 + ->setTitle($title) 60 + ->appendChild($body) 61 + ->addCancelButton($view_uri) 62 + ->addSubmitButton($button); 63 + } 64 + 65 + }
+26 -6
src/applications/owners/controller/PhabricatorOwnersDetailController.php
··· 219 219 $edit_uri = $this->getApplicationURI("/edit/{$id}/"); 220 220 $paths_uri = $this->getApplicationURI("/paths/{$id}/"); 221 221 222 - $view = id(new PhabricatorActionListView()) 222 + $action_list = id(new PhabricatorActionListView()) 223 223 ->setUser($viewer) 224 - ->setObject($package) 225 - ->addAction( 224 + ->setObject($package); 225 + 226 + $action_list->addAction( 226 227 id(new PhabricatorActionView()) 227 228 ->setName(pht('Edit Package')) 228 229 ->setIcon('fa-pencil') 229 230 ->setDisabled(!$can_edit) 230 231 ->setWorkflow(!$can_edit) 231 - ->setHref($edit_uri)) 232 - ->addAction( 232 + ->setHref($edit_uri)); 233 + 234 + if ($package->isArchived()) { 235 + $action_list->addAction( 236 + id(new PhabricatorActionView()) 237 + ->setName(pht('Activate Package')) 238 + ->setIcon('fa-check') 239 + ->setDisabled(!$can_edit) 240 + ->setWorkflow($can_edit) 241 + ->setHref($this->getApplicationURI("/archive/{$id}/"))); 242 + } else { 243 + $action_list->addAction( 244 + id(new PhabricatorActionView()) 245 + ->setName(pht('Archive Package')) 246 + ->setIcon('fa-ban') 247 + ->setDisabled(!$can_edit) 248 + ->setWorkflow($can_edit) 249 + ->setHref($this->getApplicationURI("/archive/{$id}/"))); 250 + } 251 + 252 + $action_list->addAction( 233 253 id(new PhabricatorActionView()) 234 254 ->setName(pht('Edit Paths')) 235 255 ->setIcon('fa-folder-open') ··· 237 257 ->setWorkflow(!$can_edit) 238 258 ->setHref($paths_uri)); 239 259 240 - return $view; 260 + return $action_list; 241 261 } 242 262 243 263 private function renderPathsTable(array $paths, array $repositories) {
-7
src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php
··· 61 61 ->setIsCopyable(true) 62 62 ->setValue($object->getOwnerPHIDs()), 63 63 id(new PhabricatorSelectEditField()) 64 - ->setKey('status') 65 - ->setLabel(pht('Status')) 66 - ->setDescription(pht('Archive or enable the package.')) 67 - ->setTransactionType(PhabricatorOwnersPackageTransaction::TYPE_STATUS) 68 - ->setValue($object->getStatus()) 69 - ->setOptions($object->getStatusNameMap()), 70 - id(new PhabricatorSelectEditField()) 71 64 ->setKey('auditing') 72 65 ->setLabel(pht('Auditing')) 73 66 ->setDescription(