Page MenuHomePhabricator

D15326.diff
No OneTemporary

D15326.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
@@ -79,6 +79,7 @@
'AlmanacNetwork' => 'applications/almanac/storage/AlmanacNetwork.php',
'AlmanacNetworkController' => 'applications/almanac/controller/AlmanacNetworkController.php',
'AlmanacNetworkEditController' => 'applications/almanac/controller/AlmanacNetworkEditController.php',
+ 'AlmanacNetworkEditEngine' => 'applications/almanac/editor/AlmanacNetworkEditEngine.php',
'AlmanacNetworkEditor' => 'applications/almanac/editor/AlmanacNetworkEditor.php',
'AlmanacNetworkListController' => 'applications/almanac/controller/AlmanacNetworkListController.php',
'AlmanacNetworkNameNgrams' => 'applications/almanac/storage/AlmanacNetworkNameNgrams.php',
@@ -4072,7 +4073,7 @@
'PhabricatorNgramsInterface',
),
'AlmanacNamespaceController' => 'AlmanacController',
- 'AlmanacNamespaceEditController' => 'AlmanacController',
+ 'AlmanacNamespaceEditController' => 'AlmanacNamespaceController',
'AlmanacNamespaceEditEngine' => 'PhabricatorEditEngine',
'AlmanacNamespaceEditor' => 'PhabricatorApplicationTransactionEditor',
'AlmanacNamespaceListController' => 'AlmanacNamespaceController',
@@ -4092,6 +4093,7 @@
),
'AlmanacNetworkController' => 'AlmanacController',
'AlmanacNetworkEditController' => 'AlmanacNetworkController',
+ 'AlmanacNetworkEditEngine' => 'PhabricatorEditEngine',
'AlmanacNetworkEditor' => 'PhabricatorApplicationTransactionEditor',
'AlmanacNetworkListController' => 'AlmanacNetworkController',
'AlmanacNetworkNameNgrams' => 'PhabricatorSearchNgrams',
diff --git a/src/applications/almanac/controller/AlmanacNamespaceEditController.php b/src/applications/almanac/controller/AlmanacNamespaceEditController.php
--- a/src/applications/almanac/controller/AlmanacNamespaceEditController.php
+++ b/src/applications/almanac/controller/AlmanacNamespaceEditController.php
@@ -1,6 +1,6 @@
<?php
-final class AlmanacNamespaceEditController extends AlmanacController {
+final class AlmanacNamespaceEditController extends AlmanacNamespaceController {
public function handleRequest(AphrontRequest $request) {
return id(new AlmanacNamespaceEditEngine())
diff --git a/src/applications/almanac/controller/AlmanacNetworkEditController.php b/src/applications/almanac/controller/AlmanacNetworkEditController.php
--- a/src/applications/almanac/controller/AlmanacNetworkEditController.php
+++ b/src/applications/almanac/controller/AlmanacNetworkEditController.php
@@ -1,142 +1,11 @@
<?php
-final class AlmanacNetworkEditController
- extends AlmanacNetworkController {
+final class AlmanacNetworkEditController extends AlmanacNetworkController {
public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $list_uri = $this->getApplicationURI('network/');
-
- $id = $request->getURIData('id');
- if ($id) {
- $network = id(new AlmanacNetworkQuery())
- ->setViewer($viewer)
- ->withIDs(array($id))
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- PhabricatorPolicyCapability::CAN_EDIT,
- ))
- ->executeOne();
- if (!$network) {
- return new Aphront404Response();
- }
-
- $is_new = false;
- $network_uri = $this->getApplicationURI('network/'.$network->getID().'/');
- $cancel_uri = $network_uri;
- $title = pht('Edit Network');
- $save_button = pht('Save Changes');
- } else {
- $this->requireApplicationCapability(
- AlmanacCreateNetworksCapability::CAPABILITY);
-
- $network = AlmanacNetwork::initializeNewNetwork();
- $is_new = true;
-
- $cancel_uri = $list_uri;
- $title = pht('Create Network');
- $save_button = pht('Create Network');
- }
-
- $v_name = $network->getName();
- $e_name = true;
- $validation_exception = null;
-
- if ($request->isFormPost()) {
- $v_name = $request->getStr('name');
- $v_view = $request->getStr('viewPolicy');
- $v_edit = $request->getStr('editPolicy');
-
- $type_name = AlmanacNetworkTransaction::TYPE_NAME;
- $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
- $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
-
- $xactions = array();
-
- $xactions[] = id(new AlmanacNetworkTransaction())
- ->setTransactionType($type_name)
- ->setNewValue($v_name);
-
- $xactions[] = id(new AlmanacNetworkTransaction())
- ->setTransactionType($type_view)
- ->setNewValue($v_view);
-
- $xactions[] = id(new AlmanacNetworkTransaction())
- ->setTransactionType($type_edit)
- ->setNewValue($v_edit);
-
- $editor = id(new AlmanacNetworkEditor())
- ->setActor($viewer)
- ->setContentSourceFromRequest($request)
- ->setContinueOnNoEffect(true);
-
- try {
- $editor->applyTransactions($network, $xactions);
-
- $id = $network->getID();
- $network_uri = $this->getApplicationURI("network/{$id}/");
- return id(new AphrontRedirectResponse())->setURI($network_uri);
- } catch (PhabricatorApplicationTransactionValidationException $ex) {
- $validation_exception = $ex;
- $e_name = $ex->getShortMessage($type_name);
-
- $network->setViewPolicy($v_view);
- $network->setEditPolicy($v_edit);
- }
- }
-
- $policies = id(new PhabricatorPolicyQuery())
- ->setViewer($viewer)
- ->setObject($network)
- ->execute();
-
- $form = id(new AphrontFormView())
- ->setUser($viewer)
- ->appendChild(
- id(new AphrontFormTextControl())
- ->setLabel(pht('Name'))
- ->setName('name')
- ->setValue($v_name)
- ->setError($e_name))
- ->appendChild(
- id(new AphrontFormPolicyControl())
- ->setName('viewPolicy')
- ->setPolicyObject($network)
- ->setCapability(PhabricatorPolicyCapability::CAN_VIEW)
- ->setPolicies($policies))
- ->appendChild(
- id(new AphrontFormPolicyControl())
- ->setName('editPolicy')
- ->setPolicyObject($network)
- ->setCapability(PhabricatorPolicyCapability::CAN_EDIT)
- ->setPolicies($policies))
- ->appendChild(
- id(new AphrontFormSubmitControl())
- ->addCancelButton($cancel_uri)
- ->setValue($save_button));
-
- $box = id(new PHUIObjectBoxView())
- ->setValidationException($validation_exception)
- ->setHeaderText($title)
- ->setForm($form);
-
- $crumbs = $this->buildApplicationCrumbs();
- if ($is_new) {
- $crumbs->addTextCrumb(pht('Create Network'));
- } else {
- $crumbs->addTextCrumb($network->getName(), $network_uri);
- $crumbs->addTextCrumb(pht('Edit'));
- }
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->appendChild(
- array(
- $box,
- ));
+ return id(new AlmanacNetworkEditEngine())
+ ->setController($this)
+ ->buildResponse();
}
}
diff --git a/src/applications/almanac/editor/AlmanacNetworkEditEngine.php b/src/applications/almanac/editor/AlmanacNetworkEditEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/almanac/editor/AlmanacNetworkEditEngine.php
@@ -0,0 +1,86 @@
+<?php
+
+final class AlmanacNetworkEditEngine
+ extends PhabricatorEditEngine {
+
+ const ENGINECONST = 'almanac.network';
+
+ public function isEngineConfigurable() {
+ return false;
+ }
+
+ public function getEngineName() {
+ return pht('Almanac Networks');
+ }
+
+ public function getSummaryHeader() {
+ return pht('Edit Almanac Network Configurations');
+ }
+
+ public function getSummaryText() {
+ return pht('This engine is used to edit Almanac networks.');
+ }
+
+ public function getEngineApplicationClass() {
+ return 'PhabricatorAlmanacApplication';
+ }
+
+ protected function newEditableObject() {
+ return AlmanacNetwork::initializeNewNetwork();
+ }
+
+ protected function newObjectQuery() {
+ return new AlmanacNetworkQuery();
+ }
+
+ protected function getObjectCreateTitleText($object) {
+ return pht('Create Network');
+ }
+
+ protected function getObjectCreateButtonText($object) {
+ return pht('Create Network');
+ }
+
+ protected function getObjectEditTitleText($object) {
+ return pht('Edit Network: %s', $object->getName());
+ }
+
+ protected function getObjectEditShortText($object) {
+ return pht('Edit Network');
+ }
+
+ protected function getObjectCreateShortText() {
+ return pht('Create Network');
+ }
+
+ protected function getEditorURI() {
+ return '/almanac/network/edit/';
+ }
+
+ protected function getObjectCreateCancelURI($object) {
+ return '/almanac/network/';
+ }
+
+ protected function getObjectViewURI($object) {
+ $id = $object->getID();
+ return "/almanac/network/{$id}/";
+ }
+
+ protected function getCreateNewObjectPolicy() {
+ return $this->getApplication()->getPolicy(
+ AlmanacCreateNetworksCapability::CAPABILITY);
+ }
+
+ protected function buildCustomEditFields($object) {
+ return array(
+ id(new PhabricatorTextEditField())
+ ->setKey('name')
+ ->setLabel(pht('Name'))
+ ->setDescription(pht('Name of the network.'))
+ ->setTransactionType(AlmanacNetworkTransaction::TYPE_NAME)
+ ->setIsRequired(true)
+ ->setValue($object->getName()),
+ );
+ }
+
+}
diff --git a/src/applications/almanac/storage/AlmanacNetworkTransaction.php b/src/applications/almanac/storage/AlmanacNetworkTransaction.php
--- a/src/applications/almanac/storage/AlmanacNetworkTransaction.php
+++ b/src/applications/almanac/storage/AlmanacNetworkTransaction.php
@@ -24,19 +24,16 @@
$new = $this->getNewValue();
switch ($this->getTransactionType()) {
+ case PhabricatorTransactions::TYPE_CREATE:
+ return pht(
+ '%s created this network.',
+ $this->renderHandleLink($author_phid));
case self::TYPE_NAME:
- if ($old === null) {
- return pht(
- '%s created this network.',
- $this->renderHandleLink($author_phid));
- } else {
- return pht(
- '%s renamed this network from "%s" to "%s".',
- $this->renderHandleLink($author_phid),
- $old,
- $new);
- }
- break;
+ return pht(
+ '%s renamed this network from "%s" to "%s".',
+ $this->renderHandleLink($author_phid),
+ $old,
+ $new);
}
return parent::getTitle();

File Metadata

Mime Type
text/plain
Expires
Wed, May 15, 11:06 PM (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6297074
Default Alt Text
D15326.diff (10 KB)

Event Timeline