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 @@ -1388,6 +1388,8 @@ 'HarbormasterBuildArtifactQuery' => 'applications/harbormaster/query/HarbormasterBuildArtifactQuery.php', 'HarbormasterBuildAutoplan' => 'applications/harbormaster/autoplan/HarbormasterBuildAutoplan.php', 'HarbormasterBuildDependencyDatasource' => 'applications/harbormaster/typeahead/HarbormasterBuildDependencyDatasource.php', + 'HarbormasterBuildEditAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildEditAPIMethod.php', + 'HarbormasterBuildEditEngine' => 'applications/harbormaster/editor/HarbormasterBuildEditEngine.php', 'HarbormasterBuildEngine' => 'applications/harbormaster/engine/HarbormasterBuildEngine.php', 'HarbormasterBuildFailureException' => 'applications/harbormaster/exception/HarbormasterBuildFailureException.php', 'HarbormasterBuildGraph' => 'applications/harbormaster/engine/HarbormasterBuildGraph.php', @@ -1472,6 +1474,8 @@ 'HarbormasterBuildable' => 'applications/harbormaster/storage/HarbormasterBuildable.php', 'HarbormasterBuildableActionController' => 'applications/harbormaster/controller/HarbormasterBuildableActionController.php', 'HarbormasterBuildableAdapterInterface' => 'applications/harbormaster/herald/HarbormasterBuildableAdapterInterface.php', + 'HarbormasterBuildableEditAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildableEditAPIMethod.php', + 'HarbormasterBuildableEditEngine' => 'applications/harbormaster/editor/HarbormasterBuildableEditEngine.php', 'HarbormasterBuildableEngine' => 'applications/harbormaster/engine/HarbormasterBuildableEngine.php', 'HarbormasterBuildableInterface' => 'applications/harbormaster/interface/HarbormasterBuildableInterface.php', 'HarbormasterBuildableListController' => 'applications/harbormaster/controller/HarbormasterBuildableListController.php', @@ -7605,6 +7609,8 @@ 'HarbormasterBuildArtifactQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'HarbormasterBuildAutoplan' => 'Phobject', 'HarbormasterBuildDependencyDatasource' => 'PhabricatorTypeaheadDatasource', + 'HarbormasterBuildEditAPIMethod' => 'PhabricatorEditEngineAPIMethod', + 'HarbormasterBuildEditEngine' => 'PhabricatorEditEngine', 'HarbormasterBuildEngine' => 'Phobject', 'HarbormasterBuildFailureException' => 'Exception', 'HarbormasterBuildGraph' => 'AbstractDirectedGraph', @@ -7730,6 +7736,8 @@ 'PhabricatorDestructibleInterface', ), 'HarbormasterBuildableActionController' => 'HarbormasterController', + 'HarbormasterBuildableEditAPIMethod' => 'PhabricatorEditEngineAPIMethod', + 'HarbormasterBuildableEditEngine' => 'PhabricatorEditEngine', 'HarbormasterBuildableEngine' => 'Phobject', 'HarbormasterBuildableListController' => 'HarbormasterController', 'HarbormasterBuildableMessageTransaction' => 'HarbormasterBuildableTransactionType', diff --git a/src/applications/harbormaster/conduit/HarbormasterBuildEditAPIMethod.php b/src/applications/harbormaster/conduit/HarbormasterBuildEditAPIMethod.php new file mode 100644 --- /dev/null +++ b/src/applications/harbormaster/conduit/HarbormasterBuildEditAPIMethod.php @@ -0,0 +1,20 @@ +getViewer(); + return HarbormasterBuild::initializeNewBuild($viewer); + } + + protected function newObjectQuery() { + return new HarbormasterBuildQuery(); + } + + protected function newEditableObjectForDocumentation() { + $object = new DifferentialRevision(); + + $buildable = id(new HarbormasterBuildable()) + ->attachBuildableObject($object); + + return $this->newEditableObject() + ->attachBuildable($buildable); + } + + protected function getObjectCreateTitleText($object) { + return pht('Create Build'); + } + + protected function getObjectCreateButtonText($object) { + return pht('Create Build'); + } + + protected function getObjectEditTitleText($object) { + return pht('Edit Build: %s', $object->getName()); + } + + protected function getObjectEditShortText($object) { + return pht('Edit Build'); + } + + protected function getObjectCreateShortText() { + return pht('Create Build'); + } + + protected function getObjectName() { + return pht('Build'); + } + + protected function getEditorURI() { + return '/harbormaster/build/edit/'; + } + + protected function getObjectCreateCancelURI($object) { + return '/harbormaster/'; + } + + protected function getObjectViewURI($object) { + return $object->getURI(); + } + + protected function buildCustomEditFields($object) { + return array(); + } + +} diff --git a/src/applications/harbormaster/editor/HarbormasterBuildableEditEngine.php b/src/applications/harbormaster/editor/HarbormasterBuildableEditEngine.php new file mode 100644 --- /dev/null +++ b/src/applications/harbormaster/editor/HarbormasterBuildableEditEngine.php @@ -0,0 +1,84 @@ +getViewer(); + return HarbormasterBuildable::initializeNewBuildable($viewer); + } + + protected function newObjectQuery() { + return new HarbormasterBuildableQuery(); + } + + protected function newEditableObjectForDocumentation() { + $object = new DifferentialRevision(); + + return $this->newEditableObject() + ->attachBuildableObject($object); + } + + protected function getObjectCreateTitleText($object) { + return pht('Create Buildable'); + } + + protected function getObjectCreateButtonText($object) { + return pht('Create Buildable'); + } + + protected function getObjectEditTitleText($object) { + return pht('Edit Buildable: %s', $object->getName()); + } + + protected function getObjectEditShortText($object) { + return pht('Edit Buildable'); + } + + protected function getObjectCreateShortText() { + return pht('Create Buildable'); + } + + protected function getObjectName() { + return pht('Buildable'); + } + + protected function getEditorURI() { + return '/harbormaster/buildable/edit/'; + } + + protected function getObjectCreateCancelURI($object) { + return '/harbormaster/'; + } + + protected function getObjectViewURI($object) { + return $object->getURI(); + } + + protected function buildCustomEditFields($object) { + return array(); + } + +}