From 14163aaeefabcf1666a1f13c54545b44047f943b Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 25 Jan 2011 13:26:09 -0800 Subject: [PATCH] RevisionEdit --- src/__phutil_library_map__.php | 4 +- ...AphrontDefaultApplicationConfiguration.php | 4 +- .../DifferentialRevisionEditController.php | 135 ++++++++++++++++++ .../controller/revisionedit/__init__.php | 19 +++ .../storage/revision/DifferentialRevision.php | 3 +- webroot/rsrc/css/aphront/form-view.css | 6 +- 6 files changed, 164 insertions(+), 7 deletions(-) create mode 100644 src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php create mode 100644 src/applications/differential/controller/revisionedit/__init__.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index a413bd6734..6d9c2ecb28 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -76,6 +76,7 @@ phutil_register_library_map(array( 'DifferentialLintStatus' => 'applications/differential/constants/lintstatus', 'DifferentialRevision' => 'applications/differential/storage/revision', 'DifferentialRevisionControlSystem' => 'applications/differential/constants/revisioncontrolsystem', + 'DifferentialRevisionEditController' => 'applications/differential/controller/revisionedit', 'DifferentialRevisionStatus' => 'applications/differential/constants/revisionstatus', 'DifferentialUnitStatus' => 'applications/differential/constants/unitstatus', 'Javelin' => 'infratructure/javelin/api', @@ -128,7 +129,7 @@ phutil_register_library_map(array( array( '_qsprintf_check_scalar_type' => 'storage/qsprintf', '_qsprintf_check_type' => 'storage/qsprintf', - 'celerity_gen_unique_node_id' => 'infratructure/celerity/api', + 'celerity_generate_unique_node_id' => 'infratructure/celerity/api', 'celerity_register_resource_map' => 'infratructure/celerity/map', 'javelin_render_tag' => 'infratructure/javelin/markup', 'qsprintf' => 'storage/qsprintf', @@ -191,6 +192,7 @@ phutil_register_library_map(array( 'DifferentialDiffViewController' => 'DifferentialController', 'DifferentialHunk' => 'DifferentialDAO', 'DifferentialRevision' => 'DifferentialDAO', + 'DifferentialRevisionEditController' => 'DifferentialController', 'PhabricatorConduitAPIController' => 'PhabricatorConduitController', 'PhabricatorConduitConnectionLog' => 'PhabricatorConduitDAO', 'PhabricatorConduitConsoleController' => 'PhabricatorConduitController', diff --git a/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php b/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php index 67f624a94f..31d9e89bf6 100644 --- a/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php +++ b/src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php @@ -79,14 +79,14 @@ class AphrontDefaultApplicationConfiguration '/differential/' => array( 'diff/(?\d+)/$' => 'DifferentialDiffViewController', 'changeset/(?\d+)/$' => 'DifferentialChangesetViewController', + 'revision/edit/(?:(?\d+)/)?$' + => 'DifferentialRevisionEditController', ), '/res/' => array( '(?[a-f0-9]{8})/(?.+\.(?:css|js))$' => 'CelerityResourceController', ), - - '.*' => 'AphrontDefaultApplicationController', ); } diff --git a/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php b/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php new file mode 100644 index 0000000000..2bab3f81c5 --- /dev/null +++ b/src/applications/differential/controller/revisionedit/DifferentialRevisionEditController.php @@ -0,0 +1,135 @@ +id = idx($data, 'id'); + } + + public function processRequest() { + + if ($this->id) { + $revision = id(new DifferentialRevision())->load($this->id); + if (!$revision) { + return new Aphront404Response(); + } + } else { + $revision = new DifferentialRevision(); + } +/* + $e_name = true; + $errors = array(); + + $request = $this->getRequest(); + if ($request->isFormPost()) { + $category->setName($request->getStr('name')); + $category->setSequence($request->getStr('sequence')); + + if (!strlen($category->getName())) { + $errors[] = 'Category name is required.'; + $e_name = 'Required'; + } + + if (!$errors) { + $category->save(); + return id(new AphrontRedirectResponse()) + ->setURI('/directory/category/'); + } + } + + $error_view = null; + if ($errors) { + $error_view = id(new AphrontErrorView()) + ->setTitle('Form Errors') + ->setErrors($errors); + } +*/ + $e_name = true; + + $form = new AphrontFormView(); + if ($revision->getID()) { + $form->setAction('/differential/revision/edit/'.$category->getID().'/'); + } else { + $form->setAction('/differential/revision/edit/'); + } + + $form + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('Name') + ->setName('name') + ->setValue($revision->getName()) + ->setError($e_name)) + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('Summary') + ->setName('summary') + ->setValue($revision->getSummary())) + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('Test Plan') + ->setName('testplan') + ->setValue($revision->getTestPlan()) + ->setError($e_testplan)) + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('Reviewers') + ->setName('reviewers')) + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('CC') + ->setName('cc')) + ->appendChild( + id(new AphrontFormTextControl()) + ->setLabel('Blame Revision') + ->setName('blame') + ->setValue($revision->getBlameRevision()) + ->setCaption('Revision which broke the stuff which this '. + 'change fixes.')) + ->appendChild( + id(new AphrontFormTextAreaControl()) + ->setLabel('Revert') + ->setName('revert') + ->setValue($revision->getRevertPlan()) + ->setCaption('Special steps required to safely revert this change.')) + ->appendChild( + id(new AphrontFormSubmitControl()) + ->setValue('Save')); + + $panel = new AphrontPanelView(); + if ($revision->getID()) { + $panel->setHeader('Edit Differential Revision'); + } else { + $panel->setHeader('Create New Differential Revision'); + } + + $panel->appendChild($form); + $panel->setWidth(AphrontPanelView::WIDTH_FORM); + + $error_view = null; + return $this->buildStandardPageResponse( + array($error_view, $panel), + array( + 'title' => 'Edit Differential Revision', + )); + } + +} diff --git a/src/applications/differential/controller/revisionedit/__init__.php b/src/applications/differential/controller/revisionedit/__init__.php new file mode 100644 index 0000000000..4c5fa1f85e --- /dev/null +++ b/src/applications/differential/controller/revisionedit/__init__.php @@ -0,0 +1,19 @@ +