Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13237573
D15431.id.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
D15431.id.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
@@ -1436,6 +1436,7 @@
'NuanceQueueController' => 'applications/nuance/controller/NuanceQueueController.php',
'NuanceQueueDatasource' => 'applications/nuance/typeahead/NuanceQueueDatasource.php',
'NuanceQueueEditController' => 'applications/nuance/controller/NuanceQueueEditController.php',
+ 'NuanceQueueEditEngine' => 'applications/nuance/editor/NuanceQueueEditEngine.php',
'NuanceQueueEditor' => 'applications/nuance/editor/NuanceQueueEditor.php',
'NuanceQueueListController' => 'applications/nuance/controller/NuanceQueueListController.php',
'NuanceQueuePHIDType' => 'applications/nuance/phid/NuanceQueuePHIDType.php',
@@ -5683,6 +5684,7 @@
'NuanceQueueController' => 'NuanceController',
'NuanceQueueDatasource' => 'PhabricatorTypeaheadDatasource',
'NuanceQueueEditController' => 'NuanceQueueController',
+ 'NuanceQueueEditEngine' => 'PhabricatorEditEngine',
'NuanceQueueEditor' => 'PhabricatorApplicationTransactionEditor',
'NuanceQueueListController' => 'NuanceQueueController',
'NuanceQueuePHIDType' => 'PhabricatorPHIDType',
diff --git a/src/applications/nuance/application/PhabricatorNuanceApplication.php b/src/applications/nuance/application/PhabricatorNuanceApplication.php
--- a/src/applications/nuance/application/PhabricatorNuanceApplication.php
+++ b/src/applications/nuance/application/PhabricatorNuanceApplication.php
@@ -45,16 +45,16 @@
'new/' => 'NuanceItemEditController',
),
'source/' => array(
- '(?:query/(?P<queryKey>[^/]+)/)?' => 'NuanceSourceListController',
+ $this->getQueryRoutePattern() => 'NuanceSourceListController',
'view/(?P<id>[1-9]\d*)/' => 'NuanceSourceViewController',
'edit/(?P<id>[1-9]\d*)/' => 'NuanceSourceEditController',
'new/(?P<type>[^/]+)/' => 'NuanceSourceEditController',
'create/' => 'NuanceSourceCreateController',
),
'queue/' => array(
- '(?:query/(?P<queryKey>[^/]+)/)?' => 'NuanceQueueListController',
+ $this->getQueryRoutePattern() => 'NuanceQueueListController',
+ $this->getEditRoutePattern('edit/') => 'NuanceQueueEditController',
'view/(?P<id>[1-9]\d*)/' => 'NuanceQueueViewController',
- 'edit/(?P<id>[1-9]\d*)/' => 'NuanceQueueEditController',
'new/' => 'NuanceQueueEditController',
),
'requestor/' => array(
diff --git a/src/applications/nuance/controller/NuanceQueueEditController.php b/src/applications/nuance/controller/NuanceQueueEditController.php
--- a/src/applications/nuance/controller/NuanceQueueEditController.php
+++ b/src/applications/nuance/controller/NuanceQueueEditController.php
@@ -4,133 +4,9 @@
extends NuanceQueueController {
public function handleRequest(AphrontRequest $request) {
- $viewer = $this->getViewer();
- $queues_uri = $this->getApplicationURI('queue/');
-
- $queue_id = $request->getURIData('id');
- $is_new = !$queue_id;
- if ($is_new) {
- $queue = NuanceQueue::initializeNewQueue();
- $cancel_uri = $queues_uri;
- } else {
- $queue = id(new NuanceQueueQuery())
- ->setViewer($viewer)
- ->withIDs(array($queue_id))
- ->executeOne();
- if (!$queue) {
- return new Aphront404Response();
- }
- $cancel_uri = $queue->getURI();
- }
-
- $v_name = $queue->getName();
- $e_name = true;
- $v_edit = $queue->getEditPolicy();
- $v_view = $queue->getViewPolicy();
-
- $validation_exception = null;
- if ($request->isFormPost()) {
- $e_name = null;
-
- $v_name = $request->getStr('name');
- $v_edit = $request->getStr('editPolicy');
- $v_view = $request->getStr('viewPolicy');
-
- $type_name = NuanceQueueTransaction::TYPE_NAME;
- $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
- $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
-
- $xactions = array();
-
- $xactions[] = id(new NuanceQueueTransaction())
- ->setTransactionType($type_name)
- ->setNewValue($v_name);
-
- $xactions[] = id(new NuanceQueueTransaction())
- ->setTransactionType($type_view)
- ->setNewValue($v_view);
-
- $xactions[] = id(new NuanceQueueTransaction())
- ->setTransactionType($type_edit)
- ->setNewValue($v_edit);
-
- $editor = id(new NuanceQueueEditor())
- ->setActor($viewer)
- ->setContentSourceFromRequest($request)
- ->setContinueOnNoEffect(true);
-
- try {
-
- $editor->applyTransactions($queue, $xactions);
-
- $uri = $queue->getURI();
- return id(new AphrontRedirectResponse())->setURI($uri);
- } catch (PhabricatorApplicationTransactionValidationException $ex) {
- $validation_exception = $ex;
-
- $e_name = $ex->getShortMessage($type_name);
- }
- }
-
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Queues'), $queues_uri);
-
- if ($is_new) {
- $title = pht('Create Queue');
- $crumbs->addTextCrumb(pht('Create'));
- } else {
- $title = pht('Edit %s', $queue->getName());
- $crumbs->addTextCrumb($queue->getName(), $queue->getURI());
- $crumbs->addTextCrumb(pht('Edit'));
- }
-
- $policies = id(new PhabricatorPolicyQuery())
- ->setViewer($viewer)
- ->setObject($queue)
- ->execute();
-
- $form = id(new AphrontFormView())
- ->setUser($viewer)
- ->appendChild(
- id(new AphrontFormTextControl())
- ->setLabel(pht('Name'))
- ->setName('name')
- ->setError($e_name)
- ->setValue($v_name))
- ->appendChild(
- id(new AphrontFormPolicyControl())
- ->setUser($viewer)
- ->setCapability(PhabricatorPolicyCapability::CAN_VIEW)
- ->setPolicyObject($queue)
- ->setPolicies($policies)
- ->setValue($v_view)
- ->setName('viewPolicy'))
- ->appendChild(
- id(new AphrontFormPolicyControl())
- ->setUser($viewer)
- ->setCapability(PhabricatorPolicyCapability::CAN_EDIT)
- ->setPolicyObject($queue)
- ->setPolicies($policies)
- ->setValue($v_edit)
- ->setName('editPolicy'))
- ->appendChild(
- id(new AphrontFormSubmitControl())
- ->addCancelButton($cancel_uri)
- ->setValue(pht('Save')));
-
- $box = id(new PHUIObjectBoxView())
- ->setHeaderText($title)
- ->setValidationException($validation_exception)
- ->appendChild($form);
-
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $box,
- ),
- array(
- 'title' => $title,
- ));
+ return id(new NuanceQueueEditEngine())
+ ->setController($this)
+ ->buildResponse();
}
}
diff --git a/src/applications/nuance/editor/NuanceQueueEditEngine.php b/src/applications/nuance/editor/NuanceQueueEditEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/editor/NuanceQueueEditEngine.php
@@ -0,0 +1,80 @@
+<?php
+
+final class NuanceQueueEditEngine
+ extends PhabricatorEditEngine {
+
+ const ENGINECONST = 'nuance.queue';
+
+ public function isEngineConfigurable() {
+ return false;
+ }
+
+ public function getEngineName() {
+ return pht('Nuance Queues');
+ }
+
+ public function getSummaryHeader() {
+ return pht('Edit Nuance Queue Configurations');
+ }
+
+ public function getSummaryText() {
+ return pht('This engine is used to edit Nuance queues.');
+ }
+
+ public function getEngineApplicationClass() {
+ return 'PhabricatorNuanceApplication';
+ }
+
+ protected function newEditableObject() {
+ return NuanceQueue::initializeNewQueue();
+ }
+
+ protected function newObjectQuery() {
+ return new NuanceQueueQuery();
+ }
+
+ protected function getObjectCreateTitleText($object) {
+ return pht('Create Queue');
+ }
+
+ protected function getObjectCreateButtonText($object) {
+ return pht('Create Queue');
+ }
+
+ protected function getObjectEditTitleText($object) {
+ return pht('Edit Queue: %s', $object->getName());
+ }
+
+ protected function getObjectEditShortText($object) {
+ return pht('Edit Queue');
+ }
+
+ protected function getObjectCreateShortText() {
+ return pht('Create Queue');
+ }
+
+ protected function getEditorURI() {
+ return '/nuance/queue/edit/';
+ }
+
+ protected function getObjectCreateCancelURI($object) {
+ return '/nuance/queue/';
+ }
+
+ protected function getObjectViewURI($object) {
+ return $object->getURI();
+ }
+
+ protected function buildCustomEditFields($object) {
+ return array(
+ id(new PhabricatorTextEditField())
+ ->setKey('name')
+ ->setLabel(pht('Name'))
+ ->setDescription(pht('Name of the queue.'))
+ ->setTransactionType(NuanceQueueTransaction::TYPE_NAME)
+ ->setIsRequired(true)
+ ->setValue($object->getName()),
+ );
+ }
+
+}
diff --git a/src/applications/nuance/editor/NuanceQueueEditor.php b/src/applications/nuance/editor/NuanceQueueEditor.php
--- a/src/applications/nuance/editor/NuanceQueueEditor.php
+++ b/src/applications/nuance/editor/NuanceQueueEditor.php
@@ -68,6 +68,7 @@
return parent::applyCustomExternalTransaction($object, $xaction);
}
+
protected function validateTransaction(
PhabricatorLiskDAO $object,
$type,
diff --git a/src/applications/nuance/storage/NuanceQueue.php b/src/applications/nuance/storage/NuanceQueue.php
--- a/src/applications/nuance/storage/NuanceQueue.php
+++ b/src/applications/nuance/storage/NuanceQueue.php
@@ -27,7 +27,9 @@
}
public static function initializeNewQueue() {
- return new NuanceQueue();
+ return id(new self())
+ ->setViewPolicy(PhabricatorPolicies::POLICY_USER)
+ ->setEditPolicy(PhabricatorPolicies::POLICY_USER);
}
public function save() {
diff --git a/src/applications/nuance/storage/NuanceQueueTransaction.php b/src/applications/nuance/storage/NuanceQueueTransaction.php
--- a/src/applications/nuance/storage/NuanceQueueTransaction.php
+++ b/src/applications/nuance/storage/NuanceQueueTransaction.php
@@ -12,18 +12,6 @@
return new NuanceQueueTransactionComment();
}
- public function shouldHide() {
- $old = $this->getOldValue();
- $type = $this->getTransactionType();
-
- switch ($type) {
- case self::TYPE_NAME:
- return ($old === null);
- }
-
- return parent::shouldHide();
- }
-
public function getTitle() {
$old = $this->getOldValue();
$new = $this->getNewValue();
@@ -32,6 +20,10 @@
$author_phid = $this->getAuthorPHID();
switch ($type) {
+ case PhabricatorTransactions::TYPE_CREATE:
+ return pht(
+ '%s created this queue.',
+ $this->renderHandleLink($author_phid));
case self::TYPE_NAME:
return pht(
'%s renamed this queue from "%s" to "%s".',
File Metadata
Details
Attached
Mime Type
text/plain
Expires
May 22 2024, 1:53 PM (4 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6297396
Default Alt Text
D15431.id.diff (10 KB)
Attached To
Mode
D15431: Move Nuance Queues to EditEngine
Attached
Detach File
Event Timeline
Log In to Comment