mirror of
https://github.com/silverstripe/silverstripe-multiform
synced 2024-10-22 11:05:49 +02:00
MINOR Updating code to support SS 3.0, still maintains backwards compatibility with 2.4, just not in the tests.
This commit is contained in:
parent
18ab6d3933
commit
6bbe69079d
@ -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
|
* 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,
|
* calls the action {@link finish()} to finalise the submission. Otherwise,
|
||||||
* we push in a next button which calls the action {@link next()} to determine
|
* 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.
|
* 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
|
* 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
|
* step class), then we allow a previous button, which calls the previous action
|
||||||
* to determine which step to go back to.
|
* to determine which step to go back to.
|
||||||
*
|
*
|
||||||
* If there are any extra actions defined in MultiFormStep->getExtraActions()
|
* 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
|
* then that set of actions is appended to the end of the actions FieldSet we
|
||||||
* have created in this method.
|
* have created in this method.
|
||||||
*
|
*
|
||||||
* @param $currentStep Subclass of MultiFormStep
|
* @param $currentStep Subclass of MultiFormStep
|
||||||
* @return FieldSet of FormAction objects
|
* @return FieldList of FormAction objects
|
||||||
*/
|
*/
|
||||||
function actionsFor($step) {
|
function actionsFor($step) {
|
||||||
// Create default multi step actions (next, prev), and merge with extra actions, if any
|
// 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
|
// 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
|
// 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
|
* @return DataObjectSet
|
||||||
*/
|
*/
|
||||||
public function getAllStepsLinear() {
|
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}");
|
$firstStep = DataObject::get_one($this->stat('start_step'), "\"SessionID\" = {$this->session->ID}");
|
||||||
$templateData = array(
|
$templateData = array(
|
||||||
|
@ -75,11 +75,11 @@ class MultiFormStep extends DataObject {
|
|||||||
/**
|
/**
|
||||||
* Form fields to be rendered with this step.
|
* Form fields to be rendered with this step.
|
||||||
* (Form object is created in {@link MultiForm}.
|
* (Form object is created in {@link MultiForm}.
|
||||||
*
|
*
|
||||||
* This function needs to be implemented on your
|
* This function needs to be implemented on your
|
||||||
* subclasses of MultiFormStep.
|
* subclasses of MultiFormStep.
|
||||||
*
|
*
|
||||||
* @return FieldSet
|
* @return FieldList
|
||||||
*/
|
*/
|
||||||
public function getFields() {
|
public function getFields() {
|
||||||
user_error('Please implement getFields on your MultiFormStep subclass', E_USER_ERROR);
|
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.
|
* Additional form actions to be added to this step.
|
||||||
* (Form object is created in {@link MultiForm}.
|
* (Form object is created in {@link MultiForm}.
|
||||||
*
|
*
|
||||||
* Note: This is optional, and is to be implemented
|
* Note: This is optional, and is to be implemented
|
||||||
* on your subclasses of MultiFormStep.
|
* on your subclasses of MultiFormStep.
|
||||||
*
|
*
|
||||||
* @return FieldSet
|
* @return FieldList
|
||||||
*/
|
*/
|
||||||
public function getExtraActions() {
|
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
|
* individually, rather than assuming that all data
|
||||||
* serialized through {@link saveData()} can be saved
|
* serialized through {@link saveData()} can be saved
|
||||||
* as a simple value outside of the original FormField context.
|
* as a simple value outside of the original FormField context.
|
||||||
*
|
*
|
||||||
* @param DataObject $obj
|
* @param DataObject $obj
|
||||||
*/
|
*/
|
||||||
public function saveInto($obj) {
|
public function saveInto($obj) {
|
||||||
@ -174,7 +174,7 @@ class MultiFormStep extends DataObject {
|
|||||||
Controller::curr(),
|
Controller::curr(),
|
||||||
'Form',
|
'Form',
|
||||||
$this->getFields(),
|
$this->getFields(),
|
||||||
new FieldSet()
|
((class_exists('FieldList')) ? new FieldList() : new FieldSet())
|
||||||
);
|
);
|
||||||
$form->loadDataFrom($this->loadData());
|
$form->loadDataFrom($this->loadData());
|
||||||
$form->saveInto($obj);
|
$form->saveInto($obj);
|
||||||
@ -185,11 +185,11 @@ class MultiFormStep extends DataObject {
|
|||||||
* Custom validation for a step. In most cases, it should be sufficient
|
* Custom validation for a step. In most cases, it should be sufficient
|
||||||
* to have built-in validation through the {@link Validator} class
|
* to have built-in validation through the {@link Validator} class
|
||||||
* on the {@link getValidator()} method.
|
* on the {@link getValidator()} method.
|
||||||
*
|
*
|
||||||
* Use {@link Form->sessionMessage()} to feed back validation messages
|
* Use {@link Form->sessionMessage()} to feed back validation messages
|
||||||
* to the user. Please don't redirect from this method,
|
* to the user. Please don't redirect from this method,
|
||||||
* this is taken care of in {@link next()}.
|
* this is taken care of in {@link next()}.
|
||||||
*
|
*
|
||||||
* @param array $data Request data
|
* @param array $data Request data
|
||||||
* @param Form $form
|
* @param Form $form
|
||||||
* @return boolean Validation success
|
* @return boolean Validation success
|
||||||
|
@ -64,29 +64,10 @@ class MultiFormTest extends FunctionalTest {
|
|||||||
function testTotalStepCount() {
|
function testTotalStepCount() {
|
||||||
$this->assertEquals(3, $this->form->getAllStepsLinear()->Count());
|
$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() {
|
function testCompletedSession() {
|
||||||
$this->form->setCurrentSessionHash($this->form->session->Hash);
|
$this->form->setCurrentSessionHash($this->form->session->Hash);
|
||||||
$this->assertType('MultiFormSession', $this->form->getCurrentSession());
|
$this->assertInstanceOf('MultiFormSession', $this->form->getCurrentSession());
|
||||||
$this->form->session->markCompleted();
|
$this->form->session->markCompleted();
|
||||||
$this->assertFalse($this->form->getCurrentSession());
|
$this->assertFalse($this->form->getCurrentSession());
|
||||||
}
|
}
|
||||||
@ -96,7 +77,7 @@ class MultiFormTest extends FunctionalTest {
|
|||||||
$this->assertFalse($this->form->getCurrentSession());
|
$this->assertFalse($this->form->getCurrentSession());
|
||||||
|
|
||||||
// A new session is generated, even though we made up the identifier
|
// 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';
|
public static $next_steps = 'MultiFormTest_StepTwo';
|
||||||
|
|
||||||
function getFields() {
|
function getFields() {
|
||||||
return new FieldSet(
|
return new FieldList(
|
||||||
new TextField('FirstName', 'First name'),
|
new TextField('FirstName', 'First name'),
|
||||||
new TextField('Surname', 'Surname'),
|
new TextField('Surname', 'Surname'),
|
||||||
new EmailField('Email', 'Email address')
|
new EmailField('Email', 'Email address')
|
||||||
@ -140,7 +121,7 @@ class MultiFormTest_StepTwo extends MultiFormStep implements TestOnly {
|
|||||||
public static $next_steps = 'MultiFormTest_StepThree';
|
public static $next_steps = 'MultiFormTest_StepThree';
|
||||||
|
|
||||||
function getFields() {
|
function getFields() {
|
||||||
return new FieldSet(
|
return new FieldList(
|
||||||
new TextareaField('Comments', 'Tell us a bit about yourself...')
|
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;
|
public static $is_final_step = true;
|
||||||
|
|
||||||
function getFields() {
|
function getFields() {
|
||||||
return new FieldSet(
|
return new FieldList(
|
||||||
new TextField('Test', 'Anything else you\'d like to tell us?')
|
new TextField('Test', 'Anything else you\'d like to tell us?')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user