Page MenuHomePhabricator

D14724.diff
No OneTemporary

D14724.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -80,7 +80,7 @@
'rsrc/css/application/maniphest/task-summary.css' => '11cc5344',
'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6',
'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b',
- 'rsrc/css/application/paste/paste.css' => 'b2f5a543',
+ 'rsrc/css/application/paste/paste.css' => 'a5157c48',
'rsrc/css/application/people/people-profile.css' => '25970776',
'rsrc/css/application/phame/phame.css' => 'cea3c9e1',
'rsrc/css/application/pholio/pholio-edit.css' => '3ad9d1ee',
@@ -730,7 +730,7 @@
'multirow-row-manager' => 'b5d57730',
'owners-path-editor' => 'aa1733d0',
'owners-path-editor-css' => '2f00933b',
- 'paste-css' => 'b2f5a543',
+ 'paste-css' => 'a5157c48',
'path-typeahead' => 'f7fc67ec',
'people-profile-css' => '25970776',
'phabricator-action-list-view-css' => 'c5eba19d',
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2616,6 +2616,7 @@
'PhabricatorPasswordSettingsPanel' => 'applications/settings/panel/PhabricatorPasswordSettingsPanel.php',
'PhabricatorPaste' => 'applications/paste/storage/PhabricatorPaste.php',
'PhabricatorPasteApplication' => 'applications/paste/application/PhabricatorPasteApplication.php',
+ 'PhabricatorPasteArchiveController' => 'applications/paste/controller/PhabricatorPasteArchiveController.php',
'PhabricatorPasteConfigOptions' => 'applications/paste/config/PhabricatorPasteConfigOptions.php',
'PhabricatorPasteController' => 'applications/paste/controller/PhabricatorPasteController.php',
'PhabricatorPasteDAO' => 'applications/paste/storage/PhabricatorPasteDAO.php',
@@ -6824,6 +6825,7 @@
'PhabricatorSpacesInterface',
),
'PhabricatorPasteApplication' => 'PhabricatorApplication',
+ 'PhabricatorPasteArchiveController' => 'PhabricatorPasteController',
'PhabricatorPasteConfigOptions' => 'PhabricatorApplicationConfigOptions',
'PhabricatorPasteController' => 'PhabricatorController',
'PhabricatorPasteDAO' => 'PhabricatorLiskDAO',
diff --git a/src/applications/paste/application/PhabricatorPasteApplication.php b/src/applications/paste/application/PhabricatorPasteApplication.php
--- a/src/applications/paste/application/PhabricatorPasteApplication.php
+++ b/src/applications/paste/application/PhabricatorPasteApplication.php
@@ -41,6 +41,7 @@
'create/' => 'PhabricatorPasteEditController',
$this->getEditRoutePattern('edit/') => 'PhabricatorPasteEditController',
'raw/(?P<id>[1-9]\d*)/' => 'PhabricatorPasteRawController',
+ 'archive/(?P<id>[1-9]\d*)/' => 'PhabricatorPasteArchiveController',
),
);
}
diff --git a/src/applications/paste/controller/PhabricatorPasteArchiveController.php b/src/applications/paste/controller/PhabricatorPasteArchiveController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/paste/controller/PhabricatorPasteArchiveController.php
@@ -0,0 +1,65 @@
+<?php
+
+final class PhabricatorPasteArchiveController
+ extends PhabricatorPasteController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $request->getViewer();
+ $id = $request->getURIData('id');
+
+ $paste = id(new PhabricatorPasteQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($id))
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
+ ->executeOne();
+ if (!$paste) {
+ return new Aphront404Response();
+ }
+
+ $view_uri = '/P'.$paste->getID();
+
+ if ($request->isFormPost()) {
+ if ($paste->isArchived()) {
+ $new_status = PhabricatorPaste::STATUS_ACTIVE;
+ } else {
+ $new_status = PhabricatorPaste::STATUS_ARCHIVED;
+ }
+
+ $xactions = array();
+
+ $xactions[] = id(new PhabricatorPasteTransaction())
+ ->setTransactionType(PhabricatorPasteTransaction::TYPE_STATUS)
+ ->setNewValue($new_status);
+
+ id(new PhabricatorPasteEditor())
+ ->setActor($viewer)
+ ->setContentSourceFromRequest($request)
+ ->setContinueOnNoEffect(true)
+ ->setContinueOnMissingFields(true)
+ ->applyTransactions($paste, $xactions);
+
+ return id(new AphrontRedirectResponse())->setURI($view_uri);
+ }
+
+ if ($paste->isArchived()) {
+ $title = pht('Activate Paste');
+ $body = pht('This paste will become consumable again.');
+ $button = pht('Activate Paste');
+ } else {
+ $title = pht('Archive Paste');
+ $body = pht('This paste will be marked as expired.');
+ $button = pht('Archive Paste');
+ }
+
+ return $this->newDialog()
+ ->setTitle($title)
+ ->appendChild($body)
+ ->addCancelButton($view_uri)
+ ->addSubmitButton($button);
+ }
+
+}
diff --git a/src/applications/paste/controller/PhabricatorPasteViewController.php b/src/applications/paste/controller/PhabricatorPasteViewController.php
--- a/src/applications/paste/controller/PhabricatorPasteViewController.php
+++ b/src/applications/paste/controller/PhabricatorPasteViewController.php
@@ -129,22 +129,43 @@
$id = $paste->getID();
- return id(new PhabricatorActionListView())
+ $action_list = id(new PhabricatorActionListView())
->setUser($viewer)
->setObject($paste)
- ->setObjectURI($this->getRequest()->getRequestURI())
- ->addAction(
+ ->setObjectURI($this->getRequest()->getRequestURI());
+
+ $action_list->addAction(
id(new PhabricatorActionView())
->setName(pht('Edit Paste'))
->setIcon('fa-pencil')
->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit)
- ->setHref($this->getApplicationURI("edit/{$id}/")))
- ->addAction(
+ ->setHref($this->getApplicationURI("edit/{$id}/")));
+
+ if ($paste->isArchived()) {
+ $action_list->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('Activate Paste'))
+ ->setIcon('fa-check')
+ ->setDisabled(!$can_edit)
+ ->setWorkflow($can_edit)
+ ->setHref($this->getApplicationURI("archive/{$id}/")));
+ } else {
+ $action_list->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('Archive Paste'))
+ ->setIcon('fa-ban')
+ ->setDisabled(!$can_edit)
+ ->setWorkflow($can_edit)
+ ->setHref($this->getApplicationURI("archive/{$id}/")));
+ }
+
+ $action_list->addAction(
id(new PhabricatorActionView())
->setName(pht('View Raw File'))
->setIcon('fa-file-text-o')
->setHref($this->getApplicationURI("raw/{$id}/")));
+
+ return $action_list;
}
private function buildPropertyView(
diff --git a/src/applications/paste/editor/PhabricatorPasteEditEngine.php b/src/applications/paste/editor/PhabricatorPasteEditEngine.php
--- a/src/applications/paste/editor/PhabricatorPasteEditEngine.php
+++ b/src/applications/paste/editor/PhabricatorPasteEditEngine.php
@@ -76,13 +76,6 @@
->setIsCopyable(true)
->setValue($object->getLanguage())
->setOptions($langs),
- id(new PhabricatorSelectEditField())
- ->setKey('status')
- ->setLabel(pht('Status'))
- ->setDescription(pht('Archive the paste.'))
- ->setTransactionType(PhabricatorPasteTransaction::TYPE_STATUS)
- ->setValue($object->getStatus())
- ->setOptions(PhabricatorPaste::getStatusNameMap()),
id(new PhabricatorTextAreaEditField())
->setKey('text')
->setLabel(pht('Text'))
diff --git a/webroot/rsrc/css/application/paste/paste.css b/webroot/rsrc/css/application/paste/paste.css
--- a/webroot/rsrc/css/application/paste/paste.css
+++ b/webroot/rsrc/css/application/paste/paste.css
@@ -3,11 +3,11 @@
*/
.container-of-paste {
- margin: 16px;
+ margin: 16px 16px 0 16px;
}
.device .container-of-paste {
- margin: 8px;
+ margin: 8px 8px 0 8px;
}
.paste-embed {

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 9, 9:25 AM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7226230
Default Alt Text
D14724.diff (8 KB)

Event Timeline