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

Summary: Makes this more consistent. Also clean up spacing. Ref T9414

Test Plan: Archive/Activate Paste, Edit Paste

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T9414

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

+99 -17
+2 -2
resources/celerity/map.php
··· 80 80 'rsrc/css/application/maniphest/task-summary.css' => '11cc5344', 81 81 'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6', 82 82 'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b', 83 - 'rsrc/css/application/paste/paste.css' => 'b2f5a543', 83 + 'rsrc/css/application/paste/paste.css' => 'a5157c48', 84 84 'rsrc/css/application/people/people-profile.css' => '25970776', 85 85 'rsrc/css/application/phame/phame.css' => 'cea3c9e1', 86 86 'rsrc/css/application/pholio/pholio-edit.css' => '3ad9d1ee', ··· 730 730 'multirow-row-manager' => 'b5d57730', 731 731 'owners-path-editor' => 'aa1733d0', 732 732 'owners-path-editor-css' => '2f00933b', 733 - 'paste-css' => 'b2f5a543', 733 + 'paste-css' => 'a5157c48', 734 734 'path-typeahead' => 'f7fc67ec', 735 735 'people-profile-css' => '25970776', 736 736 'phabricator-action-list-view-css' => 'c5eba19d',
+2
src/__phutil_library_map__.php
··· 2616 2616 'PhabricatorPasswordSettingsPanel' => 'applications/settings/panel/PhabricatorPasswordSettingsPanel.php', 2617 2617 'PhabricatorPaste' => 'applications/paste/storage/PhabricatorPaste.php', 2618 2618 'PhabricatorPasteApplication' => 'applications/paste/application/PhabricatorPasteApplication.php', 2619 + 'PhabricatorPasteArchiveController' => 'applications/paste/controller/PhabricatorPasteArchiveController.php', 2619 2620 'PhabricatorPasteConfigOptions' => 'applications/paste/config/PhabricatorPasteConfigOptions.php', 2620 2621 'PhabricatorPasteController' => 'applications/paste/controller/PhabricatorPasteController.php', 2621 2622 'PhabricatorPasteDAO' => 'applications/paste/storage/PhabricatorPasteDAO.php', ··· 6824 6825 'PhabricatorSpacesInterface', 6825 6826 ), 6826 6827 'PhabricatorPasteApplication' => 'PhabricatorApplication', 6828 + 'PhabricatorPasteArchiveController' => 'PhabricatorPasteController', 6827 6829 'PhabricatorPasteConfigOptions' => 'PhabricatorApplicationConfigOptions', 6828 6830 'PhabricatorPasteController' => 'PhabricatorController', 6829 6831 'PhabricatorPasteDAO' => 'PhabricatorLiskDAO',
+1
src/applications/paste/application/PhabricatorPasteApplication.php
··· 41 41 'create/' => 'PhabricatorPasteEditController', 42 42 $this->getEditRoutePattern('edit/') => 'PhabricatorPasteEditController', 43 43 'raw/(?P<id>[1-9]\d*)/' => 'PhabricatorPasteRawController', 44 + 'archive/(?P<id>[1-9]\d*)/' => 'PhabricatorPasteArchiveController', 44 45 ), 45 46 ); 46 47 }
+65
src/applications/paste/controller/PhabricatorPasteArchiveController.php
··· 1 + <?php 2 + 3 + final class PhabricatorPasteArchiveController 4 + extends PhabricatorPasteController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + $viewer = $request->getViewer(); 8 + $id = $request->getURIData('id'); 9 + 10 + $paste = id(new PhabricatorPasteQuery()) 11 + ->setViewer($viewer) 12 + ->withIDs(array($id)) 13 + ->requireCapabilities( 14 + array( 15 + PhabricatorPolicyCapability::CAN_VIEW, 16 + PhabricatorPolicyCapability::CAN_EDIT, 17 + )) 18 + ->executeOne(); 19 + if (!$paste) { 20 + return new Aphront404Response(); 21 + } 22 + 23 + $view_uri = '/P'.$paste->getID(); 24 + 25 + if ($request->isFormPost()) { 26 + if ($paste->isArchived()) { 27 + $new_status = PhabricatorPaste::STATUS_ACTIVE; 28 + } else { 29 + $new_status = PhabricatorPaste::STATUS_ARCHIVED; 30 + } 31 + 32 + $xactions = array(); 33 + 34 + $xactions[] = id(new PhabricatorPasteTransaction()) 35 + ->setTransactionType(PhabricatorPasteTransaction::TYPE_STATUS) 36 + ->setNewValue($new_status); 37 + 38 + id(new PhabricatorPasteEditor()) 39 + ->setActor($viewer) 40 + ->setContentSourceFromRequest($request) 41 + ->setContinueOnNoEffect(true) 42 + ->setContinueOnMissingFields(true) 43 + ->applyTransactions($paste, $xactions); 44 + 45 + return id(new AphrontRedirectResponse())->setURI($view_uri); 46 + } 47 + 48 + if ($paste->isArchived()) { 49 + $title = pht('Activate Paste'); 50 + $body = pht('This paste will become consumable again.'); 51 + $button = pht('Activate Paste'); 52 + } else { 53 + $title = pht('Archive Paste'); 54 + $body = pht('This paste will be marked as expired.'); 55 + $button = pht('Archive Paste'); 56 + } 57 + 58 + return $this->newDialog() 59 + ->setTitle($title) 60 + ->appendChild($body) 61 + ->addCancelButton($view_uri) 62 + ->addSubmitButton($button); 63 + } 64 + 65 + }
+27 -6
src/applications/paste/controller/PhabricatorPasteViewController.php
··· 129 129 130 130 $id = $paste->getID(); 131 131 132 - return id(new PhabricatorActionListView()) 132 + $action_list = id(new PhabricatorActionListView()) 133 133 ->setUser($viewer) 134 134 ->setObject($paste) 135 - ->setObjectURI($this->getRequest()->getRequestURI()) 136 - ->addAction( 135 + ->setObjectURI($this->getRequest()->getRequestURI()); 136 + 137 + $action_list->addAction( 137 138 id(new PhabricatorActionView()) 138 139 ->setName(pht('Edit Paste')) 139 140 ->setIcon('fa-pencil') 140 141 ->setDisabled(!$can_edit) 141 - ->setWorkflow(!$can_edit) 142 - ->setHref($this->getApplicationURI("edit/{$id}/"))) 143 - ->addAction( 142 + ->setHref($this->getApplicationURI("edit/{$id}/"))); 143 + 144 + if ($paste->isArchived()) { 145 + $action_list->addAction( 146 + id(new PhabricatorActionView()) 147 + ->setName(pht('Activate Paste')) 148 + ->setIcon('fa-check') 149 + ->setDisabled(!$can_edit) 150 + ->setWorkflow($can_edit) 151 + ->setHref($this->getApplicationURI("archive/{$id}/"))); 152 + } else { 153 + $action_list->addAction( 154 + id(new PhabricatorActionView()) 155 + ->setName(pht('Archive Paste')) 156 + ->setIcon('fa-ban') 157 + ->setDisabled(!$can_edit) 158 + ->setWorkflow($can_edit) 159 + ->setHref($this->getApplicationURI("archive/{$id}/"))); 160 + } 161 + 162 + $action_list->addAction( 144 163 id(new PhabricatorActionView()) 145 164 ->setName(pht('View Raw File')) 146 165 ->setIcon('fa-file-text-o') 147 166 ->setHref($this->getApplicationURI("raw/{$id}/"))); 167 + 168 + return $action_list; 148 169 } 149 170 150 171 private function buildPropertyView(
-7
src/applications/paste/editor/PhabricatorPasteEditEngine.php
··· 76 76 ->setIsCopyable(true) 77 77 ->setValue($object->getLanguage()) 78 78 ->setOptions($langs), 79 - id(new PhabricatorSelectEditField()) 80 - ->setKey('status') 81 - ->setLabel(pht('Status')) 82 - ->setDescription(pht('Archive the paste.')) 83 - ->setTransactionType(PhabricatorPasteTransaction::TYPE_STATUS) 84 - ->setValue($object->getStatus()) 85 - ->setOptions(PhabricatorPaste::getStatusNameMap()), 86 79 id(new PhabricatorTextAreaEditField()) 87 80 ->setKey('text') 88 81 ->setLabel(pht('Text'))
+2 -2
webroot/rsrc/css/application/paste/paste.css
··· 3 3 */ 4 4 5 5 .container-of-paste { 6 - margin: 16px; 6 + margin: 16px 16px 0 16px; 7 7 } 8 8 9 9 .device .container-of-paste { 10 - margin: 8px; 10 + margin: 8px 8px 0 8px; 11 11 } 12 12 13 13 .paste-embed {