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

Summary: Allows closing a mock from the action list. Ref T9414

Test Plan: New Mock, Edit Mock, Close Mock, Open Mock

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T9414

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

+87 -18
+2
src/__phutil_library_map__.php
··· 3386 3386 'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php', 3387 3387 'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php', 3388 3388 'PholioMock' => 'applications/pholio/storage/PholioMock.php', 3389 + 'PholioMockArchiveController' => 'applications/pholio/controller/PholioMockArchiveController.php', 3389 3390 'PholioMockAuthorHeraldField' => 'applications/pholio/herald/PholioMockAuthorHeraldField.php', 3390 3391 'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php', 3391 3392 'PholioMockDescriptionHeraldField' => 'applications/pholio/herald/PholioMockDescriptionHeraldField.php', ··· 7762 7763 'PhabricatorSpacesInterface', 7763 7764 'PhabricatorMentionableInterface', 7764 7765 ), 7766 + 'PholioMockArchiveController' => 'PholioController', 7765 7767 'PholioMockAuthorHeraldField' => 'PholioMockHeraldField', 7766 7768 'PholioMockCommentController' => 'PholioController', 7767 7769 'PholioMockDescriptionHeraldField' => 'PholioMockHeraldField',
+1
src/applications/pholio/application/PhabricatorPholioApplication.php
··· 45 45 '(?:query/(?P<queryKey>[^/]+)/)?' => 'PholioMockListController', 46 46 'new/' => 'PholioMockEditController', 47 47 'edit/(?P<id>\d+)/' => 'PholioMockEditController', 48 + 'archive/(?P<id>\d+)/' => 'PholioMockArchiveController', 48 49 'comment/(?P<id>\d+)/' => 'PholioMockCommentController', 49 50 'inline/' => array( 50 51 '(?:(?P<id>\d+)/)?' => 'PholioInlineController',
+65
src/applications/pholio/controller/PholioMockArchiveController.php
··· 1 + <?php 2 + 3 + final class PholioMockArchiveController 4 + extends PholioController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + $viewer = $request->getViewer(); 8 + $id = $request->getURIData('id'); 9 + 10 + $mock = id(new PholioMockQuery()) 11 + ->setViewer($viewer) 12 + ->withIDs(array($id)) 13 + ->requireCapabilities( 14 + array( 15 + PhabricatorPolicyCapability::CAN_VIEW, 16 + PhabricatorPolicyCapability::CAN_EDIT, 17 + )) 18 + ->executeOne(); 19 + if (!$mock) { 20 + return new Aphront404Response(); 21 + } 22 + 23 + $view_uri = '/M'.$mock->getID(); 24 + 25 + if ($request->isFormPost()) { 26 + if ($mock->isClosed()) { 27 + $new_status = PholioMock::STATUS_OPEN; 28 + } else { 29 + $new_status = PholioMock::STATUS_CLOSED; 30 + } 31 + 32 + $xactions = array(); 33 + 34 + $xactions[] = id(new PholioTransaction()) 35 + ->setTransactionType(PholioTransaction::TYPE_STATUS) 36 + ->setNewValue($new_status); 37 + 38 + id(new PholioMockEditor()) 39 + ->setActor($viewer) 40 + ->setContentSourceFromRequest($request) 41 + ->setContinueOnNoEffect(true) 42 + ->setContinueOnMissingFields(true) 43 + ->applyTransactions($mock, $xactions); 44 + 45 + return id(new AphrontRedirectResponse())->setURI($view_uri); 46 + } 47 + 48 + if ($mock->isClosed()) { 49 + $title = pht('Open Pholio Mock'); 50 + $body = pht('This mock will become open again.'); 51 + $button = pht('Open Mock'); 52 + } else { 53 + $title = pht('Close Pholio Mock'); 54 + $body = pht('This mock will be closed.'); 55 + $button = pht('Close Mock'); 56 + } 57 + 58 + return $this->newDialog() 59 + ->setTitle($title) 60 + ->appendChild($body) 61 + ->addCancelButton($view_uri) 62 + ->addSubmitButton($button); 63 + } 64 + 65 + }
+1 -18
src/applications/pholio/controller/PholioMockEditController.php
··· 54 54 55 55 $v_name = $mock->getName(); 56 56 $v_desc = $mock->getDescription(); 57 - $v_status = $mock->getStatus(); 58 57 $v_view = $mock->getViewPolicy(); 59 58 $v_edit = $mock->getEditPolicy(); 60 59 $v_cc = PhabricatorSubscribersQuery::loadSubscribersForPHID( ··· 66 65 67 66 $type_name = PholioTransaction::TYPE_NAME; 68 67 $type_desc = PholioTransaction::TYPE_DESCRIPTION; 69 - $type_status = PholioTransaction::TYPE_STATUS; 70 68 $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY; 71 69 $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY; 72 70 $type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS; ··· 74 72 75 73 $v_name = $request->getStr('name'); 76 74 $v_desc = $request->getStr('description'); 77 - $v_status = $request->getStr('status'); 78 75 $v_view = $request->getStr('can_view'); 79 76 $v_edit = $request->getStr('can_edit'); 80 77 $v_cc = $request->getArr('cc'); ··· 84 81 $mock_xactions = array(); 85 82 $mock_xactions[$type_name] = $v_name; 86 83 $mock_xactions[$type_desc] = $v_desc; 87 - $mock_xactions[$type_status] = $v_status; 88 84 $mock_xactions[$type_view] = $v_view; 89 85 $mock_xactions[$type_edit] = $v_edit; 90 86 $mock_xactions[$type_cc] = array('=' => $v_cc); ··· 315 311 ->setName('description') 316 312 ->setValue($v_desc) 317 313 ->setLabel(pht('Description')) 318 - ->setUser($viewer)); 319 - 320 - if ($id) { 321 - $form->appendChild( 322 - id(new AphrontFormSelectControl()) 323 - ->setLabel(pht('Status')) 324 - ->setName('status') 325 - ->setValue($mock->getStatus()) 326 - ->setOptions($mock->getStatuses())); 327 - } else { 328 - $form->addHiddenInput('status', 'open'); 329 - } 330 - 331 - $form 314 + ->setUser($viewer)) 332 315 ->appendControl( 333 316 id(new AphrontFormTokenizerControl()) 334 317 ->setLabel(pht('Projects'))
+18
src/applications/pholio/controller/PholioMockViewController.php
··· 133 133 ->setDisabled(!$can_edit) 134 134 ->setWorkflow(!$can_edit)); 135 135 136 + if ($mock->isClosed()) { 137 + $actions->addAction( 138 + id(new PhabricatorActionView()) 139 + ->setIcon('fa-check') 140 + ->setName(pht('Open Mock')) 141 + ->setHref($this->getApplicationURI('/archive/'.$mock->getID().'/')) 142 + ->setDisabled(!$can_edit) 143 + ->setWorkflow(true)); 144 + } else { 145 + $actions->addAction( 146 + id(new PhabricatorActionView()) 147 + ->setIcon('fa-ban') 148 + ->setName(pht('Close Mock')) 149 + ->setHref($this->getApplicationURI('/archive/'.$mock->getID().'/')) 150 + ->setDisabled(!$can_edit) 151 + ->setWorkflow(true)); 152 + } 153 + 136 154 $actions->addAction( 137 155 id(new PhabricatorActionView()) 138 156 ->setIcon('fa-anchor')