diff --git a/code/MultiForm.php b/code/MultiForm.php index 5af06aa..22a3252 100644 --- a/code/MultiForm.php +++ b/code/MultiForm.php @@ -302,27 +302,27 @@ abstract class MultiForm extends Form { } /** - * Build a FieldSet of the FormAction fields for the given step. - * + * Build a FieldList of the FormAction fields for the given step. + * * If the current step is the final step, we push in a submit button, which * calls the action {@link finish()} to finalise the submission. Otherwise, * we push in a next button which calls the action {@link next()} to determine * where to go next in our step process, and save any form data collected. - * + * * If there's a previous step (a step that has the current step as it's next * step class), then we allow a previous button, which calls the previous action * to determine which step to go back to. - * + * * If there are any extra actions defined in MultiFormStep->getExtraActions() * then that set of actions is appended to the end of the actions FieldSet we * have created in this method. - * + * * @param $currentStep Subclass of MultiFormStep - * @return FieldSet of FormAction objects + * @return FieldList of FormAction objects */ function actionsFor($step) { // Create default multi step actions (next, prev), and merge with extra actions, if any - $actions = new FieldSet(); + $actions = (class_exists('FieldList')) ? new FieldList() : new FieldSet(); // If the form is at final step, create a submit button to perform final actions // The last step doesn't have a next button, so add that action to any step that isn't the final one @@ -543,7 +543,7 @@ abstract class MultiForm extends Form { * @return DataObjectSet */ public function getAllStepsLinear() { - $stepsFound = new DataObjectSet(); + $stepsFound = (class_exists('ArrayList')) ? new ArrayList() : new DataObjectSet(); $firstStep = DataObject::get_one($this->stat('start_step'), "\"SessionID\" = {$this->session->ID}"); $templateData = array( diff --git a/code/MultiFormStep.php b/code/MultiFormStep.php index 7816459..dfc11e2 100644 --- a/code/MultiFormStep.php +++ b/code/MultiFormStep.php @@ -75,11 +75,11 @@ class MultiFormStep extends DataObject { /** * Form fields to be rendered with this step. * (Form object is created in {@link MultiForm}. - * + * * This function needs to be implemented on your * subclasses of MultiFormStep. * - * @return FieldSet + * @return FieldList */ public function getFields() { user_error('Please implement getFields on your MultiFormStep subclass', E_USER_ERROR); @@ -88,14 +88,14 @@ class MultiFormStep extends DataObject { /** * Additional form actions to be added to this step. * (Form object is created in {@link MultiForm}. - * + * * Note: This is optional, and is to be implemented * on your subclasses of MultiFormStep. - * - * @return FieldSet + * + * @return FieldList */ public function getExtraActions() { - return new FieldSet(); + return (class_exists('FieldList')) ? new FieldList() : new FieldSet(); } /** @@ -166,7 +166,7 @@ class MultiFormStep extends DataObject { * individually, rather than assuming that all data * serialized through {@link saveData()} can be saved * as a simple value outside of the original FormField context. - * + * * @param DataObject $obj */ public function saveInto($obj) { @@ -174,7 +174,7 @@ class MultiFormStep extends DataObject { Controller::curr(), 'Form', $this->getFields(), - new FieldSet() + ((class_exists('FieldList')) ? new FieldList() : new FieldSet()) ); $form->loadDataFrom($this->loadData()); $form->saveInto($obj); @@ -185,11 +185,11 @@ class MultiFormStep extends DataObject { * Custom validation for a step. In most cases, it should be sufficient * to have built-in validation through the {@link Validator} class * on the {@link getValidator()} method. - * + * * Use {@link Form->sessionMessage()} to feed back validation messages * to the user. Please don't redirect from this method, * this is taken care of in {@link next()}. - * + * * @param array $data Request data * @param Form $form * @return boolean Validation success diff --git a/tests/MultiFormTest.php b/tests/MultiFormTest.php index 397e080..0b6cc1c 100644 --- a/tests/MultiFormTest.php +++ b/tests/MultiFormTest.php @@ -64,29 +64,10 @@ class MultiFormTest extends FunctionalTest { function testTotalStepCount() { $this->assertEquals(3, $this->form->getAllStepsLinear()->Count()); } - - // TODO Returns "page not found", doesn't test anything really - // function testStepTraversal() { - // $this->get($this->controller->class); - // - // $actionNextResponse = $this->submitForm('MultiFormTest_Form', 'action_next', array( - // 'FirstName' => 'Joe', - // 'Surname' => 'Bloggs', - // 'Email' => 'joe@bloggs.com' - // )); - // - // $this->assertEquals(200, $actionNextResponse->getStatusCode()); - // $this->assertNotNull($actionNextResponse->getBody()); - // - // $actionPrevResponse = $this->submitForm('MultiFormTest_Form', 'action_prev'); - // - // $this->assertEquals(200, $actionPrevResponse->getStatusCode()); - // $this->assertNotNull($actionPrevResponse->getBody()); - // } - + function testCompletedSession() { $this->form->setCurrentSessionHash($this->form->session->Hash); - $this->assertType('MultiFormSession', $this->form->getCurrentSession()); + $this->assertInstanceOf('MultiFormSession', $this->form->getCurrentSession()); $this->form->session->markCompleted(); $this->assertFalse($this->form->getCurrentSession()); } @@ -96,7 +77,7 @@ class MultiFormTest extends FunctionalTest { $this->assertFalse($this->form->getCurrentSession()); // A new session is generated, even though we made up the identifier - $this->assertType('MultiFormSession', $this->form->session); + $this->assertInstanceOf('MultiFormSession', $this->form->session); } } @@ -127,7 +108,7 @@ class MultiFormTest_StepOne extends MultiFormStep implements TestOnly { public static $next_steps = 'MultiFormTest_StepTwo'; function getFields() { - return new FieldSet( + return new FieldList( new TextField('FirstName', 'First name'), new TextField('Surname', 'Surname'), new EmailField('Email', 'Email address') @@ -140,7 +121,7 @@ class MultiFormTest_StepTwo extends MultiFormStep implements TestOnly { public static $next_steps = 'MultiFormTest_StepThree'; function getFields() { - return new FieldSet( + return new FieldList( new TextareaField('Comments', 'Tell us a bit about yourself...') ); } @@ -151,7 +132,7 @@ class MultiFormTest_StepThree extends MultiFormStep implements TestOnly { public static $is_final_step = true; function getFields() { - return new FieldSet( + return new FieldList( new TextField('Test', 'Anything else you\'d like to tell us?') ); }