Page MenuHomePhabricator

D17043.diff
No OneTemporary

D17043.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
@@ -518,6 +518,8 @@
'DifferentialRevisionDependedOnByRevisionEdgeType' => 'applications/differential/edge/DifferentialRevisionDependedOnByRevisionEdgeType.php',
'DifferentialRevisionDependsOnRevisionEdgeType' => 'applications/differential/edge/DifferentialRevisionDependsOnRevisionEdgeType.php',
'DifferentialRevisionEditController' => 'applications/differential/controller/DifferentialRevisionEditController.php',
+ 'DifferentialRevisionEditEngine' => 'applications/differential/editor/DifferentialRevisionEditEngine.php',
+ 'DifferentialRevisionEditProController' => 'applications/differential/controller/DifferentialRevisionEditProController.php',
'DifferentialRevisionFulltextEngine' => 'applications/differential/search/DifferentialRevisionFulltextEngine.php',
'DifferentialRevisionGraph' => 'infrastructure/graph/DifferentialRevisionGraph.php',
'DifferentialRevisionHasChildRelationship' => 'applications/differential/relationships/DifferentialRevisionHasChildRelationship.php',
@@ -5164,6 +5166,8 @@
'DifferentialRevisionDependedOnByRevisionEdgeType' => 'PhabricatorEdgeType',
'DifferentialRevisionDependsOnRevisionEdgeType' => 'PhabricatorEdgeType',
'DifferentialRevisionEditController' => 'DifferentialController',
+ 'DifferentialRevisionEditEngine' => 'PhabricatorEditEngine',
+ 'DifferentialRevisionEditProController' => 'DifferentialController',
'DifferentialRevisionFulltextEngine' => 'PhabricatorFulltextEngine',
'DifferentialRevisionGraph' => 'PhabricatorObjectGraph',
'DifferentialRevisionHasChildRelationship' => 'DifferentialRevisionRelationship',
diff --git a/src/applications/differential/application/PhabricatorDifferentialApplication.php b/src/applications/differential/application/PhabricatorDifferentialApplication.php
--- a/src/applications/differential/application/PhabricatorDifferentialApplication.php
+++ b/src/applications/differential/application/PhabricatorDifferentialApplication.php
@@ -67,6 +67,8 @@
'revision/' => array(
'edit/(?:(?P<id>[1-9]\d*)/)?'
=> 'DifferentialRevisionEditController',
+ $this->getEditRoutePattern('editpro/')
+ => 'DifferentialRevisionEditProController',
'land/(?:(?P<id>[1-9]\d*))/(?P<strategy>[^/]+)/'
=> 'DifferentialRevisionLandController',
'closedetails/(?P<phid>[^/]+)/'
diff --git a/src/applications/differential/controller/DifferentialRevisionEditProController.php b/src/applications/differential/controller/DifferentialRevisionEditProController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/controller/DifferentialRevisionEditProController.php
@@ -0,0 +1,12 @@
+<?php
+
+final class DifferentialRevisionEditProController
+ extends DifferentialController {
+
+ public function handleRequest(AphrontRequest $request) {
+ return id(new DifferentialRevisionEditEngine())
+ ->setController($this)
+ ->buildResponse();
+ }
+
+}
diff --git a/src/applications/differential/editor/DifferentialRevisionEditEngine.php b/src/applications/differential/editor/DifferentialRevisionEditEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/editor/DifferentialRevisionEditEngine.php
@@ -0,0 +1,66 @@
+<?php
+
+final class DifferentialRevisionEditEngine
+ extends PhabricatorEditEngine {
+
+ const ENGINECONST = 'differential.revision';
+
+ public function getEngineName() {
+ return pht('Revisions');
+ }
+
+ public function getSummaryHeader() {
+ return pht('Configure Revision Forms');
+ }
+
+ public function getSummaryText() {
+ return pht(
+ 'Configure creation and editing revision forms in Differential.');
+ }
+
+ public function getEngineApplicationClass() {
+ return 'PhabricatorDifferentialApplication';
+ }
+
+ protected function supportsEditEngineConfiguration() {
+ return false;
+ }
+
+ protected function newEditableObject() {
+ $viewer = $this->getViewer();
+ return DifferentialRevision::initializeNewRevision($viewer);
+ }
+
+ protected function newObjectQuery() {
+ return new DifferentialRevisionQuery();
+ }
+
+ protected function getObjectCreateTitleText($object) {
+ return pht('Create New Revision');
+ }
+
+ protected function getObjectEditTitleText($object) {
+ return pht('Edit Revision: %s', $object->getTitle());
+ }
+
+ protected function getObjectEditShortText($object) {
+ return $object->getMonogram();
+ }
+
+ protected function getObjectCreateShortText() {
+ return pht('Create Revision');
+ }
+
+ protected function getObjectName() {
+ return pht('Revision');
+ }
+
+ protected function getObjectViewURI($object) {
+ return $object->getURI();
+ }
+
+ protected function buildCustomEditFields($object) {
+ return array();
+ }
+
+}
diff --git a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldEditEngineExtension.php b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldEditEngineExtension.php
--- a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldEditEngineExtension.php
+++ b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldEditEngineExtension.php
@@ -27,6 +27,12 @@
PhabricatorEditEngine $engine,
PhabricatorApplicationTransactionInterface $object) {
+ // TODO: Remove this hack once Differential modernizes more fully. Today,
+ // its custom fields are too custom to interact cleanly with EditEngine.
+ if ($object instanceof DifferentialRevision) {
+ return array();
+ }
+
$viewer = $this->getViewer();
$field_list = PhabricatorCustomField::getObjectFields(

File Metadata

Mime Type
text/plain
Expires
Sun, Jul 20, 4:50 PM (5 h, 37 s ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8535566
Default Alt Text
D17043.diff (5 KB)

Event Timeline