Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15337203
D15326.id36965.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Referenced Files
None
Subscribers
None
D15326.id36965.diff
View Options
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
@@ -78,6 +78,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',
@@ -4073,7 +4074,7 @@
'PhabricatorNgramsInterface',
),
'AlmanacNamespaceController' => 'AlmanacController',
- 'AlmanacNamespaceEditController' => 'AlmanacController',
+ 'AlmanacNamespaceEditController' => 'AlmanacNamespaceController',
'AlmanacNamespaceEditEngine' => 'PhabricatorEditEngine',
'AlmanacNamespaceEditor' => 'PhabricatorApplicationTransactionEditor',
'AlmanacNamespaceListController' => 'AlmanacNamespaceController',
@@ -4093,6 +4094,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
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 10, 4:40 AM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7399441
Default Alt Text
D15326.id36965.diff (10 KB)
Attached To
Mode
D15326: Use EditEngine for Almanac Services, Devices, and Networks
Attached
Detach File
Event Timeline
Log In to Comment