Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/transactions/controller/PhabricatorEditEngineController.php b/src/applications/transactions/controller/PhabricatorEditEngineController.php
index e7306c7866..9c712f7e3a 100644
--- a/src/applications/transactions/controller/PhabricatorEditEngineController.php
+++ b/src/applications/transactions/controller/PhabricatorEditEngineController.php
@@ -1,86 +1,79 @@
<?php
abstract class PhabricatorEditEngineController
extends PhabricatorApplicationTransactionController {
private $engineKey;
public function setEngineKey($engine_key) {
$this->engineKey = $engine_key;
return $this;
}
public function getEngineKey() {
return $this->engineKey;
}
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('Edit Engines'), '/transactions/editengine/');
$engine_key = $this->getEngineKey();
if ($engine_key !== null) {
$engine = PhabricatorEditEngine::getByKey(
$this->getViewer(),
$engine_key);
if ($engine) {
$crumbs->addTextCrumb(
$engine->getEngineName(),
"/transactions/editengine/{$engine_key}/");
}
}
return $crumbs;
}
protected function loadConfigForEdit() {
return $this->loadConfig($need_edit = true);
}
protected function loadConfigForView() {
return $this->loadConfig($need_edit = false);
}
private function loadConfig($need_edit) {
$request = $this->getRequest();
$viewer = $this->getViewer();
$engine_key = $request->getURIData('engineKey');
$this->setEngineKey($engine_key);
$key = $request->getURIData('key');
if ($need_edit) {
$capabilities = array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
);
} else {
$capabilities = array(
PhabricatorPolicyCapability::CAN_VIEW,
);
}
$config = id(new PhabricatorEditEngineConfigurationQuery())
->setViewer($viewer)
->withEngineKeys(array($engine_key))
->withIdentifiers(array($key))
->requireCapabilities($capabilities)
->executeOne();
if ($config) {
$engine = $config->getEngine();
-
- // TODO: When we're editing the meta-engine, we need to set the engine
- // itself as its own target. This is hacky and it would be nice to find
- // a cleaner approach later.
- if ($engine instanceof PhabricatorEditEngineConfigurationEditEngine) {
- $engine->setTargetEngine($engine);
- }
}
return $config;
}
}
diff --git a/src/applications/transactions/editor/PhabricatorEditEngineConfigurationEditEngine.php b/src/applications/transactions/editor/PhabricatorEditEngineConfigurationEditEngine.php
index de667ace4e..0c1c4787db 100644
--- a/src/applications/transactions/editor/PhabricatorEditEngineConfigurationEditEngine.php
+++ b/src/applications/transactions/editor/PhabricatorEditEngineConfigurationEditEngine.php
@@ -1,99 +1,100 @@
<?php
final class PhabricatorEditEngineConfigurationEditEngine
extends PhabricatorEditEngine {
const ENGINECONST = 'transactions.editengine.config';
private $targetEngine;
public function setTargetEngine(PhabricatorEditEngine $target_engine) {
$this->targetEngine = $target_engine;
return $this;
}
public function getTargetEngine() {
if (!$this->targetEngine) {
- throw new PhutilInvalidStateException('setTargetEngine');
+ // If we don't have a target engine, assume we're editing ourselves.
+ return new PhabricatorEditEngineConfigurationEditEngine();
}
return $this->targetEngine;
}
protected function getCreateNewObjectPolicy() {
return $this->getTargetEngine()
->getApplication()
->getPolicy(PhabricatorPolicyCapability::CAN_EDIT);
}
public function getEngineName() {
return pht('Edit Configurations');
}
public function getEngineApplicationClass() {
return 'PhabricatorTransactionsApplication';
}
protected function newEditableObject() {
return PhabricatorEditEngineConfiguration::initializeNewConfiguration(
$this->getViewer(),
$this->getTargetEngine());
}
protected function newObjectQuery() {
return id(new PhabricatorEditEngineConfigurationQuery());
}
protected function getObjectCreateTitleText($object) {
return pht('Create New Form');
}
protected function getObjectEditTitleText($object) {
return pht('Edit Form %d: %s', $object->getID(), $object->getDisplayName());
}
protected function getObjectEditShortText($object) {
return pht('Form %d', $object->getID());
}
protected function getObjectCreateShortText() {
return pht('Create Form');
}
protected function getObjectViewURI($object) {
$id = $object->getID();
return $this->getURI("view/{$id}/");
}
protected function getEditorURI() {
return $this->getURI('edit/');
}
protected function getObjectCreateCancelURI($object) {
return $this->getURI();
}
private function getURI($path = null) {
$engine_key = $this->getTargetEngine()->getEngineKey();
return "/transactions/editengine/{$engine_key}/{$path}";
}
protected function buildCustomEditFields($object) {
return array(
id(new PhabricatorTextEditField())
->setKey('name')
->setLabel(pht('Name'))
->setDescription(pht('Name of the form.'))
->setTransactionType(
PhabricatorEditEngineConfigurationTransaction::TYPE_NAME)
->setValue($object->getName()),
id(new PhabricatorRemarkupEditField())
->setKey('preamble')
->setLabel(pht('Preamble'))
->setDescription(pht('Optional instructions, shown above the form.'))
->setTransactionType(
PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE)
->setValue($object->getPreamble()),
);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Wed, Jun 11, 12:46 AM (1 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
141517
Default Alt Text
(5 KB)

Event Timeline