Page MenuHomePhabricator

D14726.id35613.diff
No OneTemporary

D14726.id35613.diff

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
@@ -3386,6 +3386,7 @@
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
'PholioMock' => 'applications/pholio/storage/PholioMock.php',
+ 'PholioMockArchiveController' => 'applications/pholio/controller/PholioMockArchiveController.php',
'PholioMockAuthorHeraldField' => 'applications/pholio/herald/PholioMockAuthorHeraldField.php',
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
'PholioMockDescriptionHeraldField' => 'applications/pholio/herald/PholioMockDescriptionHeraldField.php',
@@ -7762,6 +7763,7 @@
'PhabricatorSpacesInterface',
'PhabricatorMentionableInterface',
),
+ 'PholioMockArchiveController' => 'PholioController',
'PholioMockAuthorHeraldField' => 'PholioMockHeraldField',
'PholioMockCommentController' => 'PholioController',
'PholioMockDescriptionHeraldField' => 'PholioMockHeraldField',
diff --git a/src/applications/pholio/application/PhabricatorPholioApplication.php b/src/applications/pholio/application/PhabricatorPholioApplication.php
--- a/src/applications/pholio/application/PhabricatorPholioApplication.php
+++ b/src/applications/pholio/application/PhabricatorPholioApplication.php
@@ -45,6 +45,7 @@
'(?:query/(?P<queryKey>[^/]+)/)?' => 'PholioMockListController',
'new/' => 'PholioMockEditController',
'edit/(?P<id>\d+)/' => 'PholioMockEditController',
+ 'archive/(?P<id>\d+)/' => 'PholioMockArchiveController',
'comment/(?P<id>\d+)/' => 'PholioMockCommentController',
'inline/' => array(
'(?:(?P<id>\d+)/)?' => 'PholioInlineController',
diff --git a/src/applications/pholio/controller/PholioMockArchiveController.php b/src/applications/pholio/controller/PholioMockArchiveController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/pholio/controller/PholioMockArchiveController.php
@@ -0,0 +1,65 @@
+<?php
+
+final class PholioMockArchiveController
+ extends PholioController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $request->getViewer();
+ $id = $request->getURIData('id');
+
+ $mock = id(new PholioMockQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($id))
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
+ ->executeOne();
+ if (!$mock) {
+ return new Aphront404Response();
+ }
+
+ $view_uri = '/M'.$mock->getID();
+
+ if ($request->isFormPost()) {
+ if ($mock->isClosed()) {
+ $new_status = PholioMock::STATUS_OPEN;
+ } else {
+ $new_status = PholioMock::STATUS_CLOSED;
+ }
+
+ $xactions = array();
+
+ $xactions[] = id(new PholioTransaction())
+ ->setTransactionType(PholioTransaction::TYPE_STATUS)
+ ->setNewValue($new_status);
+
+ id(new PholioMockEditor())
+ ->setActor($viewer)
+ ->setContentSourceFromRequest($request)
+ ->setContinueOnNoEffect(true)
+ ->setContinueOnMissingFields(true)
+ ->applyTransactions($mock, $xactions);
+
+ return id(new AphrontRedirectResponse())->setURI($view_uri);
+ }
+
+ if ($mock->isClosed()) {
+ $title = pht('Open Pholio Mock');
+ $body = pht('This mock will become open again.');
+ $button = pht('Open Mock');
+ } else {
+ $title = pht('Close Pholio Mock');
+ $body = pht('This mock will be closed.');
+ $button = pht('Close Mock');
+ }
+
+ return $this->newDialog()
+ ->setTitle($title)
+ ->appendChild($body)
+ ->addCancelButton($view_uri)
+ ->addSubmitButton($button);
+ }
+
+}
diff --git a/src/applications/pholio/controller/PholioMockEditController.php b/src/applications/pholio/controller/PholioMockEditController.php
--- a/src/applications/pholio/controller/PholioMockEditController.php
+++ b/src/applications/pholio/controller/PholioMockEditController.php
@@ -54,7 +54,6 @@
$v_name = $mock->getName();
$v_desc = $mock->getDescription();
- $v_status = $mock->getStatus();
$v_view = $mock->getViewPolicy();
$v_edit = $mock->getEditPolicy();
$v_cc = PhabricatorSubscribersQuery::loadSubscribersForPHID(
@@ -66,7 +65,6 @@
$type_name = PholioTransaction::TYPE_NAME;
$type_desc = PholioTransaction::TYPE_DESCRIPTION;
- $type_status = PholioTransaction::TYPE_STATUS;
$type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
$type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
$type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
@@ -74,7 +72,6 @@
$v_name = $request->getStr('name');
$v_desc = $request->getStr('description');
- $v_status = $request->getStr('status');
$v_view = $request->getStr('can_view');
$v_edit = $request->getStr('can_edit');
$v_cc = $request->getArr('cc');
@@ -84,7 +81,6 @@
$mock_xactions = array();
$mock_xactions[$type_name] = $v_name;
$mock_xactions[$type_desc] = $v_desc;
- $mock_xactions[$type_status] = $v_status;
$mock_xactions[$type_view] = $v_view;
$mock_xactions[$type_edit] = $v_edit;
$mock_xactions[$type_cc] = array('=' => $v_cc);
@@ -315,20 +311,7 @@
->setName('description')
->setValue($v_desc)
->setLabel(pht('Description'))
- ->setUser($viewer));
-
- if ($id) {
- $form->appendChild(
- id(new AphrontFormSelectControl())
- ->setLabel(pht('Status'))
- ->setName('status')
- ->setValue($mock->getStatus())
- ->setOptions($mock->getStatuses()));
- } else {
- $form->addHiddenInput('status', 'open');
- }
-
- $form
+ ->setUser($viewer))
->appendControl(
id(new AphrontFormTokenizerControl())
->setLabel(pht('Projects'))
diff --git a/src/applications/pholio/controller/PholioMockViewController.php b/src/applications/pholio/controller/PholioMockViewController.php
--- a/src/applications/pholio/controller/PholioMockViewController.php
+++ b/src/applications/pholio/controller/PholioMockViewController.php
@@ -133,6 +133,24 @@
->setDisabled(!$can_edit)
->setWorkflow(!$can_edit));
+ if ($mock->isClosed()) {
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-check')
+ ->setName(pht('Open Mock'))
+ ->setHref($this->getApplicationURI('/archive/'.$mock->getID().'/'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(true));
+ } else {
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-ban')
+ ->setName(pht('Close Mock'))
+ ->setHref($this->getApplicationURI('/archive/'.$mock->getID().'/'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(true));
+ }
+
$actions->addAction(
id(new PhabricatorActionView())
->setIcon('fa-anchor')

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 3, 12:18 AM (8 h, 22 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7085664
Default Alt Text
D14726.id35613.diff (7 KB)

Event Timeline