API Implement SS4 namespacing, add userforms namespaces

This commit is contained in:
Robbie Averill 2017-08-09 11:55:09 +12:00
parent e11cbc5cfc
commit eaf374adc5
65 changed files with 1324 additions and 219 deletions

65
.upgrade.yml Normal file
View File

@ -0,0 +1,65 @@
mappings:
SecureEditableFileField: SilverStripe\UserForms\Extension\SecureEditableFileField
UserFormFieldEditorExtension: SilverStripe\UserForms\Extension\UserFormFieldEditorExtension
UserFormValidator: SilverStripe\UserForms\Extension\UserFormValidator
GridFieldAddClassesButton: SilverStripe\UserForms\Form\GridFieldAddClassesButton
UserForm: SilverStripe\UserForms\Form\UserForm
UserFormsGridFieldFilterHeader: SilverStripe\UserForms\Form\UserFormsGridFieldFilterHeader
UserFormsCheckboxSetField: SilverStripe\UserForms\FormField\UserFormsCheckboxSetField
UserFormsCompositeField: SilverStripe\UserForms\FormField\UserFormsCompositeField
UserFormsFieldContainer: SilverStripe\UserForms\FormField\UserFormsFieldContainer
UserFormsFieldList: SilverStripe\UserForms\FormField\UserFormsFieldList
UserFormsGroupField: SilverStripe\UserForms\FormField\UserFormsGroupField
UserFormsStepField: SilverStripe\UserForms\FormField\UserFormsStepField
UserformsTreeDropdownField: SilverStripe\UserForms\FormField\UserformsTreeDropdownField
EditableCustomRule: SilverStripe\UserForms\Model\EditableCustomRule
UserDefinedForm: SilverStripe\UserForms\Model\UserDefinedForm
UserDefinedFormController: SilverStripe\UserForms\Model\UserDefinedFormController
EditableCheckbox: SilverStripe\UserForms\Model\EditableFormField\EditableCheckbox
EditableCheckboxGroupField: SilverStripe\UserForms\Model\EditableFormField\EditableCheckboxGroupField
EditableCountryDropdownField: SilverStripe\UserForms\Model\EditableFormField\EditableCountryDropdownField
EditableDateField: SilverStripe\UserForms\Model\EditableFormField\EditableDateField
EditableDateField_FormField: SilverStripe\UserForms\Model\EditableFormField\EditableDateField_FormField
EditableDropdown: SilverStripe\UserForms\Model\EditableFormField\EditableDropdown
EditableEmailField: SilverStripe\UserForms\Model\EditableFormField\EditableEmailField
EditableFieldGroup: SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup
EditableFieldGroupEnd: SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd
EditableFileField: SilverStripe\UserForms\Model\EditableFormField\EditableFileField
EditableFormField: SilverStripe\UserForms\Model\EditableFormField\EditableFormField
EditableFormFieldValidator: SilverStripe\UserForms\Model\EditableFormField\EditableFormFieldValidator
EditableFormHeading: SilverStripe\UserForms\Model\EditableFormField\EditableFormHeading
EditableFormStep: SilverStripe\UserForms\Model\EditableFormField\EditableFormStep
EditableLiteralField: SilverStripe\UserForms\Model\EditableFormField\EditableLiteralField
EditableMemberListField: SilverStripe\UserForms\Model\EditableFormField\EditableMemberListField
EditableMultipleOptionField: SilverStripe\UserForms\Model\EditableFormField\EditableMultipleOptionField
EditableNumericField: SilverStripe\UserForms\Model\EditableFormField\EditableNumericField
EditableOption: SilverStripe\UserForms\Model\EditableFormField\EditableOption
EditableRadioField: SilverStripe\UserForms\Model\EditableFormField\EditableRadioField
EditableTextField: SilverStripe\UserForms\Model\EditableFormField\EditableTextField
UserDefinedForm_EmailRecipient: SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipient
UserDefinedForm_EmailRecipientCondition: SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipientCondition
UserFormRecipientEmail: SilverStripe\UserForms\Model\Recipient\UserFormRecipientEmail
UserFormRecipientItemRequest: SilverStripe\UserForms\Model\Recipient\UserFormRecipientItemRequest
SubmittedFileField: SilverStripe\UserForms\Model\Submission\SubmittedFileField
SubmittedForm: SilverStripe\UserForms\Model\Submission\SubmittedForm
SubmittedFormField: SilverStripe\UserForms\Model\Submission\SubmittedFormField
DisambiguationSegmentFieldModifier: SilverStripe\UserForms\Modifier\DisambiguationSegmentFieldModifier
UnderscoreSegmentFieldModifier: SilverStripe\UserForms\Modifier\UnderscoreSegmentFieldModifier
UserFormsColumnCleanTask: SilverStripe\UserForms\Task\UserFormsColumnCleanTask
UserFormsUpgradeService: SilverStripe\UserForms\Task\UserFormsUpgradeService
UserFormsUpgradeTask: SilverStripe\UserForms\Task\UserFormsUpgradeTask
UserFormsVersionedTask: SilverStripe\UserForms\Task\UserFormsVersionedTask
UserFormTest: SilverStripe\UserForms\Test\Form\UserFormTest
UserFormsCheckboxSetFieldTest: SilverStripe\UserForms\Test\FormField\UserFormsCheckboxSetFieldTest
EditableCustomRuleTest: SilverStripe\UserForms\Test\Model\EditableCustomRuleTest
UserDefinedFormControllerTest: SilverStripe\UserForms\Test\Model\UserDefinedFormControllerTest
UserDefinedFormControllerTest_Controller: SilverStripe\UserForms\Test\Model\UserDefinedFormControllerTest_Controller
UserDefinedFormTest: SilverStripe\UserForms\Test\Model\UserDefinedFormTest
EditableDropdownTest: SilverStripe\UserForms\Test\Model\EditableFormField\EditableDropdownTest
EditableFileFieldTest: SilverStripe\UserForms\Test\Model\EditableFormField\EditableFileFieldTest
EditableFormFieldTest: SilverStripe\UserForms\Test\Model\EditableFormField\EditableFormFieldTest
EditableLiteralFieldTest: SilverStripe\UserForms\Test\Model\EditableFormField\EditableLiteralFieldTest
SecureEditableFileFieldTest: SilverStripe\UserForms\Test\Model\EditableFormField\SecureEditableFileFieldTest
UserDefinedForm_EmailRecipientConditionTest: SilverStripe\UserForms\Test\Model\Recipient\UserDefinedForm_EmailRecipientConditionTest
UserFormsUpgradeServiceTest: SilverStripe\UserForms\Test\Task\UserFormsUpgradeServiceTest
UserFormsVersionedTaskTest: SilverStripe\UserForms\Test\Task\UserFormsVersionedTaskTest

View File

@ -2,6 +2,6 @@
Name: userformsroutes Name: userformsroutes
After: framework/routes#coreroutes After: framework/routes#coreroutes
--- ---
Director: SilverStripe\Control\Director:
rules: rules:
'UserDefinedForm_Controller//$Action' : 'UserDefinedForm_Controller' UserDefinedForm_Controller//$Action: UserDefinedForm_Controller

View File

@ -3,14 +3,13 @@ Name: userformssecurity
Only: Only:
ModuleExists: secureassets ModuleExists: secureassets
--- ---
EditableFileField: SilverStripe\UserForms\Model\EditableFormField\EditableFileField:
extensions: extensions:
- SecureEditableFileField - SilverStripe\UserForms\Extension\SecureEditableFileField
--- ---
Name: userformsnosecurity Name: userformsnosecurity
Except: Except:
ModuleExists: secureassets ModuleExists: secureassets
--- ---
EditableFileField: SilverStripe\UserForms\Model\EditableFormField\EditableFileField:
hidden: true hidden: true

View File

@ -1,5 +1,21 @@
<?php <?php
namespace SilverStripe\UserForms\Extension;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\ORM\DB;
use SilverStripe\Assets\Folder;
use SilverStripe\Security\Group;
use SilverStripe\Security\Permission;
use SilverStripe\ORM\DataExtension;
/** /**
* Provides additional file security for uploaded files when the securefiles module is installed * Provides additional file security for uploaded files when the securefiles module is installed
* *
@ -110,7 +126,7 @@ class SecureEditableFileField extends DataExtension
*/ */
protected function findAdminGroup() protected function findAdminGroup()
{ {
singleton('Group')->requireDefaultRecords(); singleton(Group::class)->requireDefaultRecords();
return Permission::get_groups_by_permission('ADMIN')->First(); return Permission::get_groups_by_permission('ADMIN')->First();
} }

View File

@ -1,5 +1,47 @@
<?php <?php
namespace SilverStripe\UserForms\Extension;
use GridFieldEditableColumns;
use GridFieldOrderableRows;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Tab;
use SilverStripe\View\Requirements;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
use SilverStripe\UserForms\Form\GridFieldAddClassesButton;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormStep;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\Forms\GridField\GridFieldEditButton;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use SilverStripe\Forms\GridField\GridFieldDetailForm;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Versioned\Versioned;
use SilverStripe\ORM\DataExtension;
/** /**
* @package userforms * @package userforms
*/ */
@ -10,7 +52,7 @@ class UserFormFieldEditorExtension extends DataExtension
* @var array * @var array
*/ */
private static $has_many = array( private static $has_many = array(
'Fields' => 'EditableFormField' 'Fields' => EditableFormField::class
); );
/** /**
@ -42,7 +84,7 @@ class UserFormFieldEditorExtension extends DataExtension
$this->createInitialFormStep(true); $this->createInitialFormStep(true);
$editableColumns = new GridFieldEditableColumns(); $editableColumns = new GridFieldEditableColumns();
$fieldClasses = singleton('EditableFormField')->getEditableFieldClasses(); $fieldClasses = singleton(EditableFormField::class)->getEditableFieldClasses();
$editableColumns->setDisplayFields(array( $editableColumns->setDisplayFields(array(
'ClassName' => function ($record, $column, $grid) use ($fieldClasses) { 'ClassName' => function ($record, $column, $grid) use ($fieldClasses) {
if ($record instanceof EditableFormField) { if ($record instanceof EditableFormField) {
@ -60,12 +102,12 @@ class UserFormFieldEditorExtension extends DataExtension
->addComponents( ->addComponents(
$editableColumns, $editableColumns,
new GridFieldButtonRow(), new GridFieldButtonRow(),
GridFieldAddClassesButton::create('EditableTextField') GridFieldAddClassesButton::create(EditableTextField::class)
->setButtonName(_t('UserFormFieldEditorExtension.ADD_FIELD', 'Add Field')) ->setButtonName(_t('UserFormFieldEditorExtension.ADD_FIELD', 'Add Field'))
->setButtonClass('ss-ui-action-constructive'), ->setButtonClass('ss-ui-action-constructive'),
GridFieldAddClassesButton::create('EditableFormStep') GridFieldAddClassesButton::create(EditableFormStep::class)
->setButtonName(_t('UserFormFieldEditorExtension.ADD_PAGE_BREAK', 'Add Page Break')), ->setButtonName(_t('UserFormFieldEditorExtension.ADD_PAGE_BREAK', 'Add Page Break')),
GridFieldAddClassesButton::create(array('EditableFieldGroup', 'EditableFieldGroupEnd')) GridFieldAddClassesButton::create(array(EditableFieldGroup::class, EditableFieldGroupEnd::class))
->setButtonName(_t('UserFormFieldEditorExtension.ADD_FIELD_GROUP', 'Add Field Group')), ->setButtonName(_t('UserFormFieldEditorExtension.ADD_FIELD_GROUP', 'Add Field Group')),
new GridFieldEditButton(), new GridFieldEditButton(),
new GridFieldDeleteAction(), new GridFieldDeleteAction(),
@ -153,7 +195,7 @@ class UserFormFieldEditorExtension extends DataExtension
} }
// fetch any orphaned live records // fetch any orphaned live records
$live = Versioned::get_by_stage("EditableFormField", "Live") $live = Versioned::get_by_stage(EditableFormField::class, "Live")
->filter(array( ->filter(array(
'ParentID' => $original->ID, 'ParentID' => $original->ID,
)); ));

View File

@ -1,5 +1,20 @@
<?php <?php
namespace SilverStripe\UserForms\Extension;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormStep;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\Forms\RequiredFields;
class UserFormValidator extends RequiredFields class UserFormValidator extends RequiredFields
{ {

View File

@ -1,5 +1,21 @@
<?php <?php
namespace SilverStripe\UserForms\Form;
use Object;
use SilverStripe\Forms\GridField\GridField_FormAction;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Control\HTTPResponse_Exception;
use SilverStripe\Forms\GridField\GridField_HTMLProvider;
use SilverStripe\Forms\GridField\GridField_ActionProvider;
/** /**
* A button which allows objects to be created with a specified classname(s) * A button which allows objects to be created with a specified classname(s)
*/ */
@ -231,7 +247,7 @@ class GridFieldAddClassesButton extends Object implements GridField_HTMLProvider
{ {
$classes = $this->getClassesCreate($grid); $classes = $this->getClassesCreate($grid);
if (empty($classes)) { if (empty($classes)) {
throw new SS_HTTPResponse_Exception(400); throw new HTTPResponse_Exception(400);
} }
// Add item to gridfield // Add item to gridfield

View File

@ -1,5 +1,27 @@
<?php <?php
namespace SilverStripe\UserForms\Form;
use ResetFormAction;
use SilverStripe\Control\Controller;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FieldList;
use SilverStripe\Control\Session;
use SilverStripe\UserForms\FormField\UserFormsStepField;
use SilverStripe\UserForms\FormField\UserFormsFieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\RequiredFields;
/** /**
* @package userforms * @package userforms
*/ */
@ -10,7 +32,7 @@ class UserForm extends Form
* @param Controller $controller * @param Controller $controller
* @param string $name * @param string $name
*/ */
public function __construct(Controller $controller, $name = 'Form') public function __construct(Controller $controller, $name = Form::class)
{ {
$this->controller = $controller; $this->controller = $controller;
$this->setRedirectToFormOnValidationError(true); $this->setRedirectToFormOnValidationError(true);

View File

@ -1,5 +1,34 @@
<?php <?php
namespace SilverStripe\UserForms\Form;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\ORM\ArrayList;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\CompositeField;
use SilverStripe\Forms\FieldGroup;
use SilverStripe\Forms\DateField;
use SilverStripe\Forms\GridField\GridField_FormAction;
use SilverStripe\View\ArrayData;
use SilverStripe\ORM\SS_List;
use SilverStripe\Core\Convert;
use SilverStripe\Forms\GridField\GridFieldFilterHeader;
/** /**
* Extension to the build in SilverStripe {@link GridField} to allow for * Extension to the build in SilverStripe {@link GridField} to allow for
* filtering {@link SubmittedForm} objects in the submissions tab by * filtering {@link SubmittedForm} objects in the submissions tab by

View File

@ -1,5 +1,12 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\Forms\CheckboxSetField;
/** /**
* @package userforms * @package userforms
*/ */

View File

@ -1,5 +1,16 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormStep;
use SilverStripe\Forms\CompositeField;
/** /**
* Represents a composite field group, which may contain other groups * Represents a composite field group, which may contain other groups
*/ */

View File

@ -1,5 +1,12 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
/** /**
* Represents a field container which can iteratively process nested fields, converting it into a fieldset * Represents a field container which can iteratively process nested fields, converting it into a fieldset
*/ */

View File

@ -1,5 +1,14 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Forms\FieldList;
/** /**
* A list of formfields which allows for iterative processing of nested composite fields * A list of formfields which allows for iterative processing of nested composite fields
*/ */

View File

@ -1,5 +1,14 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
/** /**
* Front end composite field for userforms * Front end composite field for userforms
*/ */

View File

@ -1,5 +1,10 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
/** /**
* Represents a page step in a form, which may contain form fields or other groups * Represents a page step in a form, which may contain form fields or other groups
*/ */

View File

@ -1,5 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\FormField;
use SilverStripe\Security\Group;
use SilverStripe\Dev\Deprecation;
use SilverStripe\Forms\TreeDropdownField;
/** /**
* {@link TreeDropdownField} subclass for handling loading folders through the * {@link TreeDropdownField} subclass for handling loading folders through the
* nested {@link FormField} instances of the {@link FieldEditor} * nested {@link FormField} instances of the {@link FieldEditor}
@ -10,7 +20,7 @@
class UserformsTreeDropdownField extends TreeDropdownField class UserformsTreeDropdownField extends TreeDropdownField
{ {
public function __construct($name, $title = null, $sourceObject = 'Group', $keyField = 'ID', $labelField = 'TreeTitle', $showSearch = true) public function __construct($name, $title = null, $sourceObject = Group::class, $keyField = 'ID', $labelField = 'TreeTitle', $showSearch = true)
{ {
parent::__construct($name, $title, $sourceObject, $keyField, $labelField, $showSearch); parent::__construct($name, $title, $sourceObject, $keyField, $labelField, $showSearch);

View File

@ -1,5 +1,20 @@
<?php <?php
namespace SilverStripe\UserForms\Model;
use LogicException;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Control\Controller;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\Core\Convert;
use SilverStripe\ORM\DataObject;
/** /**
* A custom rule for showing / hiding an EditableFormField * A custom rule for showing / hiding an EditableFormField
* based the value of another EditableFormField. * based the value of another EditableFormField.
@ -32,8 +47,8 @@ class EditableCustomRule extends DataObject
); );
private static $has_one = array( private static $has_one = array(
'Parent' => 'EditableFormField', 'Parent' => EditableFormField::class,
'ConditionField' => 'EditableFormField' 'ConditionField' => EditableFormField::class
); );
/** /**

View File

@ -1,4 +1,11 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\CheckboxField;
/** /**
* EditableCheckbox * EditableCheckbox
* *

View File

@ -1,4 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\FormField\UserFormsCheckboxSetField;
use SilverStripe\UserForms\Model\EditableCustomRule;
/** /**
* EditableCheckboxGroup * EditableCheckboxGroup
* *

View File

@ -1,5 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use CountryDropdownField;
use SilverStripe\UserForms\Model\EditableCustomRule;
/** /**
* A dropdown field which allows the user to select a country * A dropdown field which allows the user to select a country
* *

View File

@ -1,4 +1,17 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\Forms\DateField;
/** /**
* EditableDateField * EditableDateField
* *
@ -46,7 +59,7 @@ class EditableDateField extends EditableFormField
public function getFormField() public function getFormField()
{ {
$defaultValue = $this->DefaultToToday $defaultValue = $this->DefaultToToday
? SS_Datetime::now()->Format('Y-m-d') ? DBDatetime::now()->Format('Y-m-d')
: $this->Default; : $this->Default;
$field = EditableDateField_FormField::create($this->Name, $this->EscapedTitle, $defaultValue) $field = EditableDateField_FormField::create($this->Name, $this->EscapedTitle, $defaultValue)

View File

@ -1,5 +1,18 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\DropdownField;
use SilverStripe\UserForms\Model\EditableCustomRule;
/** /**
* EditableDropdown * EditableDropdown
* *

View File

@ -1,4 +1,11 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\EmailField;
/** /**
* EditableEmailField * EditableEmailField
* *

View File

@ -1,5 +1,17 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\Forms\LabelField;
use SilverStripe\UserForms\FormField\UserFormsGroupField;
use SilverStripe\Core\Convert;
/** /**
* Specifies that this ends a group of fields * Specifies that this ends a group of fields
*/ */
@ -7,7 +19,7 @@ class EditableFieldGroup extends EditableFormField
{ {
private static $has_one = array( private static $has_one = array(
'End' => 'EditableFieldGroupEnd' 'End' => EditableFieldGroupEnd::class
); );
/** /**

View File

@ -1,5 +1,16 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup;
use SilverStripe\Security\Group;
use SilverStripe\Forms\LabelField;
use SilverStripe\Forms\HiddenField;
/** /**
* Specifies that this ends a group of fields * Specifies that this ends a group of fields
*/ */
@ -7,7 +18,7 @@ class EditableFieldGroupEnd extends EditableFormField
{ {
private static $belongs_to = array( private static $belongs_to = array(
'Group' => 'EditableFieldGroup' 'Group' => EditableFieldGroup::class
); );
/** /**
@ -33,7 +44,7 @@ class EditableFieldGroupEnd extends EditableFormField
'EditableFieldGroupEnd.FIELD_GROUP_END', 'EditableFieldGroupEnd.FIELD_GROUP_END',
'{group} end', '{group} end',
array( array(
'group' => ($group && $group->exists()) ? $group->CMSTitle : 'Group' 'group' => ($group && $group->exists()) ? $group->CMSTitle : Group::class
) )
); );
} }

View File

@ -1,5 +1,25 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Assets\Folder;
use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\NumericField;
use SilverStripe\Forms\FileField;
use SilverStripe\Core\Config\Config;
use SilverStripe\Assets\File;
use SilverStripe\UserForms\Model\Submission\SubmittedFileField;
/** /**
* Allows a user to add a field that can be used to upload a file. * Allows a user to add a field that can be used to upload a file.
* *
@ -17,7 +37,7 @@ class EditableFileField extends EditableFormField
); );
private static $has_one = array( private static $has_one = array(
'Folder' => 'Folder' // From CustomFields 'Folder' => Folder::class // From CustomFields
); );
/** /**
@ -41,7 +61,7 @@ class EditableFileField extends EditableFormField
TreeDropdownField::create( TreeDropdownField::create(
'FolderID', 'FolderID',
_t('EditableUploadField.SELECTUPLOADFOLDER', 'Select upload folder'), _t('EditableUploadField.SELECTUPLOADFOLDER', 'Select upload folder'),
'Folder' Folder::class
) )
); );
@ -93,7 +113,7 @@ class EditableFileField extends EditableFormField
$field->getValidator()->setAllowedExtensions( $field->getValidator()->setAllowedExtensions(
array_diff( array_diff(
// filter out '' since this would be a regex problem on JS end // filter out '' since this would be a regex problem on JS end
array_filter(Config::inst()->get('File', 'allowed_extensions')), array_filter(Config::inst()->get(File::class, 'allowed_extensions')),
$this->config()->allowed_extensions_blacklist $this->config()->allowed_extensions_blacklist
) )
); );
@ -137,9 +157,9 @@ class EditableFileField extends EditableFormField
public function migrateSettings($data) public function migrateSettings($data)
{ {
// Migrate 'Folder' setting to 'FolderID' // Migrate 'Folder' setting to 'FolderID'
if (isset($data['Folder'])) { if (isset($data[Folder::class])) {
$this->FolderID = $data['Folder']; $this->FolderID = $data[Folder::class];
unset($data['Folder']); unset($data[Folder::class]);
} }
parent::migrateSettings($data); parent::migrateSettings($data);

View File

@ -1,7 +1,79 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\SegmentField; use SilverStripe\Forms\SegmentField;
use GridFieldEditableColumns;
use GridFieldAddNewInlineButton;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\ReadonlyField;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\UserForms\Modifier\UnderscoreSegmentFieldModifier;
use SilverStripe\UserForms\Modifier\DisambiguationSegmentFieldModifier;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\LabelField;
use SilverStripe\Core\Config\Config;
use SilverStripe\UserForms\Model\EditableCustomRule;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\ORM\ValidationException;
use SilverStripe\Control\Controller;
use SilverStripe\CMS\Controllers\CMSPageEditController;
use SilverStripe\UserForms\Extension\UserFormFieldEditorExtension;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\Versioned\Versioned;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Dev\Deprecation;
use SilverStripe\Core\Convert;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormStep;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\UserForms\Model\Submission\SubmittedFormField;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Core\ClassInfo;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
/** /**
* Represents the base class of a editable form field * Represents the base class of a editable form field
* object like {@link EditableTextField}. * object like {@link EditableTextField}.
@ -112,7 +184,7 @@ class EditableFormField extends DataObject
* @var array * @var array
*/ */
private static $has_one = array( private static $has_one = array(
"Parent" => "UserDefinedForm", "Parent" => UserDefinedForm::class,
); );
/** /**
@ -305,7 +377,7 @@ class EditableFormField extends DataObject
))->map('ID', 'Title')); ))->map('ID', 'Title'));
}, },
'ConditionOption' => function ($record, $column, $grid) { 'ConditionOption' => function ($record, $column, $grid) {
$options = Config::inst()->get('EditableCustomRule', 'condition_options'); $options = Config::inst()->get(EditableCustomRule::class, 'condition_options');
return DropdownField::create($column, '', $options); return DropdownField::create($column, '', $options);
}, },
@ -431,7 +503,7 @@ class EditableFormField extends DataObject
$parent = $controller->getRecord($controller->currentPageID()); $parent = $controller->getRecord($controller->currentPageID());
// Only allow this behaviour on pages using UserFormFieldEditorExtension, such // Only allow this behaviour on pages using UserFormFieldEditorExtension, such
// as UserDefinedForm page type. // as UserDefinedForm page type.
if ($parent && $parent->hasExtension('UserFormFieldEditorExtension')) { if ($parent && $parent->hasExtension(UserFormFieldEditorExtension::class)) {
return $parent->canEdit($member); return $parent->canEdit($member);
} }
} }
@ -554,7 +626,7 @@ class EditableFormField extends DataObject
} }
// remove any orphans from the "fromStage" // remove any orphans from the "fromStage"
$rules = Versioned::get_by_stage('EditableCustomRule', $toStage) $rules = Versioned::get_by_stage(EditableCustomRule::class, $toStage)
->filter('ParentID', $this->ID); ->filter('ParentID', $this->ID);
if (!empty($seenRuleIDs)) { if (!empty($seenRuleIDs)) {
@ -574,7 +646,7 @@ class EditableFormField extends DataObject
public function doDeleteFromStage($stage) public function doDeleteFromStage($stage)
{ {
// Remove custom rules in this stage // Remove custom rules in this stage
$rules = Versioned::get_by_stage('EditableCustomRule', $stage) $rules = Versioned::get_by_stage(EditableCustomRule::class, $stage)
->filter('ParentID', $this->ID); ->filter('ParentID', $this->ID);
foreach ($rules as $rule) { foreach ($rules as $rule) {
$rule->deleteFromStage($stage); $rule->deleteFromStage($stage);
@ -611,8 +683,8 @@ class EditableFormField extends DataObject
return false; return false;
} }
$stageVersion = Versioned::get_versionnumber_by_stage('EditableFormField', 'Stage', $this->ID); $stageVersion = Versioned::get_versionnumber_by_stage(EditableFormField::class, 'Stage', $this->ID);
$liveVersion = Versioned::get_versionnumber_by_stage('EditableFormField', 'Live', $this->ID); $liveVersion = Versioned::get_versionnumber_by_stage(EditableFormField::class, 'Live', $this->ID);
return ($stageVersion && $stageVersion != $liveVersion); return ($stageVersion && $stageVersion != $liveVersion);
} }
@ -742,14 +814,14 @@ class EditableFormField extends DataObject
$prior = 0; // Number of prior group at this level $prior = 0; // Number of prior group at this level
$stack = array(); // Current stack of nested groups, where the top level = the page $stack = array(); // Current stack of nested groups, where the top level = the page
foreach ($fields->map('ID', 'ClassName') as $id => $className) { foreach ($fields->map('ID', 'ClassName') as $id => $className) {
if ($className === 'EditableFormStep') { if ($className === EditableFormStep::class) {
$priorPage = empty($stack) ? $prior : $stack[0]; $priorPage = empty($stack) ? $prior : $stack[0];
$stack = array($priorPage + 1); $stack = array($priorPage + 1);
$prior = 0; $prior = 0;
} elseif ($className === 'EditableFieldGroup') { } elseif ($className === EditableFieldGroup::class) {
$stack[] = $prior + 1; $stack[] = $prior + 1;
$prior = 0; $prior = 0;
} elseif ($className === 'EditableFieldGroupEnd') { } elseif ($className === EditableFieldGroupEnd::class) {
$prior = array_pop($stack); $prior = array_pop($stack);
} }
if ($id == $this->ID) { if ($id == $this->ID) {
@ -1007,7 +1079,7 @@ class EditableFormField extends DataObject
*/ */
public function getEditableFieldClasses($includeLiterals = true) public function getEditableFieldClasses($includeLiterals = true)
{ {
$classes = ClassInfo::getValidSubClasses('EditableFormField'); $classes = ClassInfo::getValidSubClasses(EditableFormField::class);
// Remove classes we don't want to display in the dropdown. // Remove classes we don't want to display in the dropdown.
$editableFieldClasses = array(); $editableFieldClasses = array();
@ -1078,7 +1150,7 @@ class EditableFormField extends DataObject
foreach ($this->EffectiveDisplayRules() as $rule) { foreach ($this->EffectiveDisplayRules() as $rule) {
// Get the field which is effected // Get the field which is effected
/** @var EditableFormField $formFieldWatch */ /** @var EditableFormField $formFieldWatch */
$formFieldWatch = DataObject::get_by_id('EditableFormField', $rule->ConditionFieldID); $formFieldWatch = DataObject::get_by_id(EditableFormField::class, $rule->ConditionFieldID);
// Skip deleted fields // Skip deleted fields
if (! $formFieldWatch) { if (! $formFieldWatch) {
continue; continue;

View File

@ -1,5 +1,14 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableCustomRule;
use SilverStripe\Forms\RequiredFields;
class EditableFormFieldValidator extends RequiredFields class EditableFormFieldValidator extends RequiredFields
{ {

View File

@ -1,4 +1,17 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\HeaderField;
use SilverStripe\Core\Convert;
/** /**
* Allows an editor to insert a generic heading into a field * Allows an editor to insert a generic heading into a field
* *

View File

@ -1,4 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\FormField\UserFormsStepField;
use SilverStripe\Forms\LabelField;
/** /**
* A step in multi-page user form * A step in multi-page user form
* *

View File

@ -1,5 +1,23 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\HTMLEditor\HTMLEditorConfig;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Forms\HTMLEditor\HTMLEditorSanitiser;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\CompositeField;
/** /**
* Editable Literal Field. A literal field is just a blank slate where * Editable Literal Field. A literal field is just a blank slate where
* you can add your own HTML / Images / Flash * you can add your own HTML / Images / Flash
@ -41,17 +59,17 @@ class EditableLiteralField extends EditableFormField
); );
/** /**
* Returns the {@see HtmlEditorConfig} instance to use for sanitisation * Returns the {@see HTMLEditorConfig} instance to use for sanitisation
* *
* @return HtmlEditorConfig * @return HTMLEditorConfig
*/ */
protected function getEditorConfig() protected function getEditorConfig()
{ {
$editorConfig = $this->config()->editor_config; $editorConfig = $this->config()->editor_config;
if ($editorConfig) { if ($editorConfig) {
return HtmlEditorConfig::get($editorConfig); return HTMLEditorConfig::get($editorConfig);
} }
return HtmlEditorConfig::get_active(); return HTMLEditorConfig::get_active();
} }
/** /**
@ -63,13 +81,13 @@ class EditableLiteralField extends EditableFormField
protected function sanitiseContent($content) protected function sanitiseContent($content)
{ {
// Check if sanitisation is enabled // Check if sanitisation is enabled
if (!HtmlEditorField::config()->sanitise_server_side) { if (!HTMLEditorField::config()->sanitise_server_side) {
return $content; return $content;
} }
// Perform sanitisation // Perform sanitisation
$htmlValue = Injector::inst()->create('HTMLValue', $content); $htmlValue = Injector::inst()->create('HTMLValue', $content);
$santiser = Injector::inst()->create('HtmlEditorSanitiser', $this->getEditorConfig()); $santiser = Injector::inst()->create(HTMLEditorSanitiser::class, $this->getEditorConfig());
$santiser->sanitise($htmlValue); $santiser->sanitise($htmlValue);
return $htmlValue->getContent(); return $htmlValue->getContent();
} }

View File

@ -1,4 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Security\Group;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Security\Member;
/** /**
* Creates an editable field that displays members in a given group * Creates an editable field that displays members in a given group
* *
@ -13,7 +24,7 @@ class EditableMemberListField extends EditableFormField
private static $plural_name = 'Member List Fields'; private static $plural_name = 'Member List Fields';
private static $has_one = array( private static $has_one = array(
'Group' => 'Group' 'Group' => Group::class
); );
/** /**
@ -30,7 +41,7 @@ class EditableMemberListField extends EditableFormField
'Root.Main', 'Root.Main',
DropdownField::create( DropdownField::create(
"GroupID", "GroupID",
_t('EditableFormField.GROUP', 'Group'), _t('EditableFormField.GROUP', Group::class),
Group::get()->map() Group::get()->map()
)->setEmptyString(' ') )->setEmptyString(' ')
); );

View File

@ -1,5 +1,35 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use GridFieldEditableColumns;
use GridFieldTitleHeader;
use GridFieldOrderableRows;
use GridFieldAddNewInlineButton;
use SilverStripe\UserForms\Model\EditableFormField\EditableOption;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\Tab;
use SilverStripe\Versioned\Versioned;
use SilverStripe\ORM\Map;
/** /**
* Base class for multiple option fields such as {@link EditableDropdownField} * Base class for multiple option fields such as {@link EditableDropdownField}
* and radio sets. * and radio sets.
@ -25,7 +55,7 @@ class EditableMultipleOptionField extends EditableFormField
private static $abstract = true; private static $abstract = true;
private static $has_many = array( private static $has_many = array(
"Options" => "EditableOption" "Options" => EditableOption::class
); );
/** /**
@ -118,7 +148,7 @@ class EditableMultipleOptionField extends EditableFormField
} }
// remove any orphans from the "fromStage" // remove any orphans from the "fromStage"
$options = Versioned::get_by_stage('EditableOption', $toStage) $options = Versioned::get_by_stage(EditableOption::class, $toStage)
->filter('ParentID', $this->ID); ->filter('ParentID', $this->ID);
if (!empty($seenIDs)) { if (!empty($seenIDs)) {
@ -140,7 +170,7 @@ class EditableMultipleOptionField extends EditableFormField
public function doDeleteFromStage($stage) public function doDeleteFromStage($stage)
{ {
// Remove options // Remove options
$options = Versioned::get_by_stage('EditableOption', $stage) $options = Versioned::get_by_stage(EditableOption::class, $stage)
->filter('ParentID', $this->ID); ->filter('ParentID', $this->ID);
foreach ($options as $option) { foreach ($options as $option) {
$option->deleteFromStage($stage); $option->deleteFromStage($stage);
@ -208,7 +238,7 @@ class EditableMultipleOptionField extends EditableFormField
{ {
$optionSet = $this->Options(); $optionSet = $this->Options();
$optionMap = $optionSet->map('Value', 'Title'); $optionMap = $optionSet->map('Value', 'Title');
if ($optionMap instanceof SS_Map) { if ($optionMap instanceof Map) {
return $optionMap->toArray(); return $optionMap->toArray();
} }
return $optionMap; return $optionMap;

View File

@ -1,4 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\NumericField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\FieldGroup;
/** /**
* EditableNumericField * EditableNumericField
* *

View File

@ -1,5 +1,19 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableMultipleOptionField;
use SilverStripe\Core\Convert;
use SilverStripe\Control\Controller;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\ORM\DataObject;
/** /**
* Base Class for EditableOption Fields such as the ones used in * Base Class for EditableOption Fields such as the ones used in
* dropdown fields and in radio check box groups * dropdown fields and in radio check box groups
@ -21,7 +35,7 @@ class EditableOption extends DataObject
); );
private static $has_one = array( private static $has_one = array(
"Parent" => "EditableMultipleOptionField", "Parent" => EditableMultipleOptionField::class,
); );
private static $extensions = array( private static $extensions = array(

View File

@ -1,4 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\UserForms\Model\EditableCustomRule;
/** /**
* EditableRadioField * EditableRadioField
* *

View File

@ -1,4 +1,22 @@
<?php <?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Control\Email\Email;
use SilverStripe\Forms\NumericField;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\FieldGroup;
use SilverStripe\Forms\TextareaField;
use SilverStripe\Forms\TextField;
/** /**
* EditableTextField * EditableTextField
* *
@ -26,7 +44,7 @@ class EditableTextField extends EditableFormField
'family-name' => 'Family name', 'family-name' => 'Family name',
'honorific-suffix' => 'Suffix (e.g Jr.)', 'honorific-suffix' => 'Suffix (e.g Jr.)',
'nickname' => 'Nickname', 'nickname' => 'Nickname',
'email' => 'Email', 'email' => Email::class,
'organization-title' => 'Job title', 'organization-title' => 'Job title',
'organization' => 'Organization', 'organization' => 'Organization',
'street-address' => 'Street address', 'street-address' => 'Street address',

View File

@ -1,5 +1,67 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Recipient;
use GridFieldAddNewInlineButton;
use GridFieldEditableColumns;
use Tabset;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipientCondition;
use SilverStripe\Control\Email\Email;
use SilverStripe\Control\Session;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\TextField;
use SilverStripe\View\Requirements;
use SilverStripe\UserForms\Model\EditableFormField\EditableMultipleOptionField;
use SilverStripe\UserForms\Model\EditableFormField\EditableEmailField;
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
use SilverStripe\ORM\ArrayList;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FieldGroup;
use SilverStripe\CMS\Controllers\CMSPageEditController;
use SilverStripe\Control\Controller;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use SilverStripe\Forms\TextareaField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\Form;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\Assets\FileFinder;
use SilverStripe\ORM\DataObject;
/** /**
* A Form can have multiply members / emails to email the submission * A Form can have multiply members / emails to email the submission
@ -24,14 +86,14 @@ class UserDefinedForm_EmailRecipient extends DataObject
); );
private static $has_one = array( private static $has_one = array(
'Form' => 'UserDefinedForm', 'Form' => UserDefinedForm::class,
'SendEmailFromField' => 'EditableFormField', 'SendEmailFromField' => EditableFormField::class,
'SendEmailToField' => 'EditableFormField', 'SendEmailToField' => EditableFormField::class,
'SendEmailSubjectField' => 'EditableFormField' 'SendEmailSubjectField' => EditableFormField::class
); );
private static $has_many = array( private static $has_many = array(
'CustomRules' => 'UserDefinedForm_EmailRecipientCondition' 'CustomRules' => UserDefinedForm_EmailRecipientCondition::class
); );
private static $summary_fields = array( private static $summary_fields = array(
@ -55,7 +117,7 @@ class UserDefinedForm_EmailRecipient extends DataObject
{ {
$fields = parent::summaryFields(); $fields = parent::summaryFields();
if (isset($fields['EmailAddress'])) { if (isset($fields['EmailAddress'])) {
$fields['EmailAddress'] = _t('UserDefinedForm.EMAILADDRESS', 'Email'); $fields['EmailAddress'] = _t('UserDefinedForm.EMAILADDRESS', Email::class);
} }
if (isset($fields['EmailSubject'])) { if (isset($fields['EmailSubject'])) {
$fields['EmailSubject'] = _t('UserDefinedForm.EMAILSUBJECT', 'Subject'); $fields['EmailSubject'] = _t('UserDefinedForm.EMAILSUBJECT', 'Subject');
@ -229,7 +291,7 @@ class UserDefinedForm_EmailRecipient extends DataObject
$preview = sprintf( $preview = sprintf(
'<p><a href="%s" target="_blank" class="ss-ui-button">%s</a></p><em>%s</em>', '<p><a href="%s" target="_blank" class="ss-ui-button">%s</a></p><em>%s</em>',
Controller::join_links( Controller::join_links(
singleton('CMSPageEditController')->getEditForm()->FormAction(), singleton(CMSPageEditController::class)->getEditForm()->FormAction(),
"field/EmailRecipients/item/{$this->ID}/preview" "field/EmailRecipients/item/{$this->ID}/preview"
), ),
_t('UserDefinedForm.PREVIEW_EMAIL', 'Preview email'), _t('UserDefinedForm.PREVIEW_EMAIL', 'Preview email'),
@ -323,8 +385,8 @@ class UserDefinedForm_EmailRecipient extends DataObject
protected function getCanCreateContext($args) protected function getCanCreateContext($args)
{ {
// Inspect second parameter to canCreate for a 'Parent' context // Inspect second parameter to canCreate for a 'Parent' context
if (isset($args[1]['Form'])) { if (isset($args[1][Form::class])) {
return $args[1]['Form']; return $args[1][Form::class];
} }
// Hack in currently edited page if context is missing // Hack in currently edited page if context is missing
if (Controller::has_curr() && Controller::curr() instanceof CMSMain) { if (Controller::has_curr() && Controller::curr() instanceof CMSMain) {
@ -433,7 +495,7 @@ class UserDefinedForm_EmailRecipient extends DataObject
{ {
$templates = array(); $templates = array();
$finder = new SS_FileFinder(); $finder = new FileFinder();
$finder->setOption('name_regex', '/^.*\.ss$/'); $finder->setOption('name_regex', '/^.*\.ss$/');
$found = $finder->find(BASE_PATH . '/' . UserDefinedForm::config()->email_template_directory); $found = $finder->find(BASE_PATH . '/' . UserDefinedForm::config()->email_template_directory);

View File

@ -1,5 +1,19 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Recipient;
use LogicException;
use SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipient;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Control\Controller;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\ORM\DataObject;
/** /**
* Declares a condition that determines whether an email can be sent to a given recipient * Declares a condition that determines whether an email can be sent to a given recipient
@ -37,8 +51,8 @@ class UserDefinedForm_EmailRecipientCondition extends DataObject
); );
private static $has_one = array( private static $has_one = array(
'Parent' => 'UserDefinedForm_EmailRecipient', 'Parent' => UserDefinedForm_EmailRecipient::class,
'ConditionField' => 'EditableFormField' 'ConditionField' => EditableFormField::class
); );
/** /**

View File

@ -1,5 +1,12 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Recipient;
use SilverStripe\Control\Email\Email;
/** /**
* Email that gets sent to the people listed in the Email Recipients when a * Email that gets sent to the people listed in the Email Recipients when a

View File

@ -1,5 +1,23 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Recipient;
use SilverStripe\Core\Config\Config;
use SilverStripe\View\SSViewer;
use SilverStripe\View\ArrayData;
use SilverStripe\ORM\ArrayList;
use SilverStripe\UserForms\Model\EditableFormField\EditableLiteralField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormHeading;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest;
/** /**
* Controller that handles requests to EmailRecipient's * Controller that handles requests to EmailRecipient's
* *
@ -22,7 +40,7 @@ class UserFormRecipientItemRequest extends GridFieldDetailForm_ItemRequest
{ {
// Enable theme for preview (may be needed for Shortcodes) // Enable theme for preview (may be needed for Shortcodes)
Config::nest(); Config::nest();
Config::inst()->update('SSViewer', 'theme_enabled', true); Config::inst()->update(SSViewer::class, 'theme_enabled', true);
$content = $this->customise(new ArrayData(array( $content = $this->customise(new ArrayData(array(
'Body' => $this->record->getEmailBodyContent(), 'Body' => $this->record->getEmailBodyContent(),
@ -44,8 +62,8 @@ class UserFormRecipientItemRequest extends GridFieldDetailForm_ItemRequest
$data = new ArrayList(); $data = new ArrayList();
$fields = $this->record->Form()->Fields()->filter(array( $fields = $this->record->Form()->Fields()->filter(array(
'ClassName:not' => 'EditableLiteralField', 'ClassName:not' => EditableLiteralField::class,
'ClassName:not' => 'EditableFormHeading' 'ClassName:not' => EditableFormHeading::class
)); ));
foreach ($fields as $field) { foreach ($fields as $field) {

View File

@ -1,5 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Submission;
use SilverStripe\Assets\File;
use SilverStripe\ORM\FieldType\DBField;
/** /**
* A file uploaded on a {@link UserDefinedForm} and attached to a single * A file uploaded on a {@link UserDefinedForm} and attached to a single
* {@link SubmittedForm}. * {@link SubmittedForm}.
@ -11,7 +19,7 @@ class SubmittedFileField extends SubmittedFormField
{ {
private static $has_one = array( private static $has_one = array(
"UploadedFile" => "File" "UploadedFile" => File::class
); );
/** /**

View File

@ -1,4 +1,26 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Submission;
use SilverStripe\Security\Member;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Model\Submission\SubmittedFormField;
use SilverStripe\Forms\ReadonlyField;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldExportButton;
use SilverStripe\Forms\GridField\GridFieldPrintButton;
use SilverStripe\ORM\DataObject;
/** /**
* Contents of an UserDefinedForm submission * Contents of an UserDefinedForm submission
* *
@ -9,12 +31,12 @@ class SubmittedForm extends DataObject
{ {
private static $has_one = array( private static $has_one = array(
"SubmittedBy" => "Member", "SubmittedBy" => Member::class,
"Parent" => "UserDefinedForm", "Parent" => UserDefinedForm::class,
); );
private static $has_many = array( private static $has_many = array(
"Values" => "SubmittedFormField" "Values" => SubmittedFormField::class
); );
private static $summary_fields = array( private static $summary_fields = array(
@ -77,7 +99,7 @@ class SubmittedForm extends DataObject
$values = GridField::create( $values = GridField::create(
'Values', 'Values',
'SubmittedFormField', SubmittedFormField::class,
$self->Values()->sort('Created', 'ASC') $self->Values()->sort('Created', 'ASC')
); );

View File

@ -1,4 +1,12 @@
<?php <?php
namespace SilverStripe\UserForms\Model\Submission;
use SilverStripe\UserForms\Model\Submission\SubmittedForm;
use SilverStripe\ORM\DataObject;
/** /**
* Data received from a UserDefinedForm submission * Data received from a UserDefinedForm submission
* *
@ -15,7 +23,7 @@ class SubmittedFormField extends DataObject
); );
private static $has_one = array( private static $has_one = array(
"Parent" => "SubmittedForm" "Parent" => SubmittedForm::class
); );
private static $summary_fields = array( private static $summary_fields = array(

View File

@ -1,5 +1,73 @@
<?php <?php
namespace SilverStripe\UserForms\Model;
use Page;
use HtmlEditorField;
use GridFieldBulkManager;
use SilverStripe\UserForms\Extension\UserFormFieldEditorExtension;
use SilverStripe\UserForms\Model\Submission\SubmittedForm;
use SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipient;
use SilverStripe\View\Requirements;
use SilverStripe\Forms\LabelField;
use SilverStripe\Forms\CompositeField;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldDetailForm;
use SilverStripe\UserForms\Model\Recipient\UserFormRecipientItemRequest;
use SilverStripe\ORM\DB;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use SilverStripe\Forms\GridField\GridFieldSortableHeader;
use SilverStripe\UserForms\Form\UserFormsGridFieldFilterHeader;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldEditButton;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridFieldPageCount;
use SilverStripe\Forms\GridField\GridFieldPaginator;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\Forms\GridField\GridFieldExportButton;
use SilverStripe\Forms\GridField\GridFieldPrintButton;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\ORM\ArrayList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\UserForms\Task\UserFormsUpgradeService;
use SilverStripe\UserForms\Extension\UserFormValidator;
/** /**
* @package userforms * @package userforms
*/ */
@ -55,7 +123,7 @@ class UserDefinedForm extends Page
* @var array * @var array
*/ */
private static $extensions = array( private static $extensions = array(
'UserFormFieldEditorExtension' UserFormFieldEditorExtension::class
); );
/** /**
@ -86,8 +154,8 @@ class UserDefinedForm extends Page
* @var array * @var array
*/ */
private static $has_many = array( private static $has_many = array(
"Submissions" => "SubmittedForm", "Submissions" => SubmittedForm::class,
"EmailRecipients" => "UserDefinedForm_EmailRecipient" "EmailRecipients" => UserDefinedForm_EmailRecipient::class
); );
/** /**
@ -156,7 +224,7 @@ class UserDefinedForm extends Page
// Define config for email recipients // Define config for email recipients
$emailRecipientsConfig = GridFieldConfig_RecordEditor::create(10); $emailRecipientsConfig = GridFieldConfig_RecordEditor::create(10);
$emailRecipientsConfig->getComponentByType('GridFieldAddNewButton') $emailRecipientsConfig->getComponentByType(GridFieldAddNewButton::class)
->setButtonName( ->setButtonName(
_t('UserDefinedForm.ADDEMAILRECIPIENT', 'Add Email Recipient') _t('UserDefinedForm.ADDEMAILRECIPIENT', 'Add Email Recipient')
); );
@ -170,8 +238,8 @@ class UserDefinedForm extends Page
); );
$emailRecipients $emailRecipients
->getConfig() ->getConfig()
->getComponentByType('GridFieldDetailForm') ->getComponentByType(GridFieldDetailForm::class)
->setItemRequestClass('UserFormRecipientItemRequest'); ->setItemRequestClass(UserFormRecipientItemRequest::class);
$fields->addFieldsToTab('Root.FormOptions', $onCompleteFieldSet); $fields->addFieldsToTab('Root.FormOptions', $onCompleteFieldSet);
$fields->addFieldToTab('Root.Recipients', $emailRecipients); $fields->addFieldToTab('Root.Recipients', $emailRecipients);
@ -223,7 +291,7 @@ SQL;
} }
} }
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields($summaryarray); $config->getComponentByType(GridFieldDataColumns::class)->setDisplayFields($summaryarray);
/** /**
* Support for {@link https://github.com/colymba/GridFieldBulkEditingTools} * Support for {@link https://github.com/colymba/GridFieldBulkEditingTools}
@ -347,7 +415,7 @@ SQL;
// Perform migrations // Perform migrations
Injector::inst() Injector::inst()
->create('UserFormsUpgradeService') ->create(UserFormsUpgradeService::class)
->setQuiet(true) ->setQuiet(true)
->run(); ->run();

View File

@ -1,5 +1,46 @@
<?php <?php
namespace SilverStripe\UserForms\Model;
use PageController;
use Object;
use SilverStripe\View\Requirements;
use SilverStripe\i18n\i18n;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\UserForms\Form\UserForm;
use SilverStripe\Forms\Form;
use SilverStripe\Control\Controller;
use SilverStripe\UserForms\Model\Submission\SubmittedForm;
use SilverStripe\Security\Member;
use SilverStripe\ORM\ArrayList;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\Assets\Upload;
use SilverStripe\Assets\File;
use SilverStripe\ORM\ValidationException;
use SilverStripe\UserForms\Model\Recipient\UserFormRecipientEmail;
use SilverStripe\Control\HTTP;
use SilverStripe\View\SSViewer;
use SilverStripe\Control\Session;
use SilverStripe\View\ArrayData;
/** /**
* Controller for the {@link UserDefinedForm} page type. * Controller for the {@link UserDefinedForm} page type.
* *
@ -96,7 +137,7 @@ class UserDefinedFormController extends PageController
public function Form() public function Form()
{ {
$form = UserForm::create($this, 'Form_' . $this->ID); $form = UserForm::create($this, 'Form_' . $this->ID);
$form->setFormAction(Controller::join_links($this->Link(), 'Form')); $form->setFormAction(Controller::join_links($this->Link(), Form::class));
$this->generateConditionalJavascript(); $this->generateConditionalJavascript();
return $form; return $form;
} }
@ -150,7 +191,7 @@ JS
*/ */
public function process($data, $form) public function process($data, $form)
{ {
$submittedForm = Object::create('SubmittedForm'); $submittedForm = Object::create(SubmittedForm::class);
$submittedForm->SubmittedByID = ($id = Member::currentUserID()) ? $id : 0; $submittedForm->SubmittedByID = ($id = Member::currentUserID()) ? $id : 0;
$submittedForm->ParentID = $this->ID; $submittedForm->ParentID = $this->ID;
@ -182,7 +223,7 @@ JS
} }
if (!empty($data[$field->Name])) { if (!empty($data[$field->Name])) {
if (in_array("EditableFileField", $field->getClassAncestry())) { if (in_array(EditableFileField::class, $field->getClassAncestry())) {
if (!empty($_FILES[$field->Name]['name'])) { if (!empty($_FILES[$field->Name]['name'])) {
$foldername = $field->getFormField()->getFolderName(); $foldername = $field->getFormField()->getFolderName();

View File

@ -1,7 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Modifier;
use SilverStripe\Forms\SegmentFieldModifier\AbstractSegmentFieldModifier; use SilverStripe\Forms\SegmentFieldModifier\AbstractSegmentFieldModifier;
use EditableformField;
use SilverStripe\Forms\Form;
class DisambiguationSegmentFieldModifier extends AbstractSegmentFieldModifier class DisambiguationSegmentFieldModifier extends AbstractSegmentFieldModifier
{ {
/** /**

View File

@ -1,7 +1,12 @@
<?php <?php
namespace SilverStripe\UserForms\Modifier;
use SilverStripe\Forms\SegmentFieldModifier\SlugSegmentFieldModifier; use SilverStripe\Forms\SegmentFieldModifier\SlugSegmentFieldModifier;
class UnderscoreSegmentFieldModifier extends SlugSegmentFieldModifier class UnderscoreSegmentFieldModifier extends SlugSegmentFieldModifier
{ {
/** /**

View File

@ -1,5 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Task;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\ORM\DB;
use SilverStripe\Dev\MigrationTask;
/** /**
* UserForms Column Clean Task * UserForms Column Clean Task
* *
@ -15,7 +25,7 @@ class UserFormsColumnCleanTask extends MigrationTask
protected $description = "Removes unused columns from EditableFormField for MySQL databases;"; protected $description = "Removes unused columns from EditableFormField for MySQL databases;";
protected $tables = array('EditableFormField'); protected $tables = array(EditableFormField::class);
protected $keepColumns = array('ID'); protected $keepColumns = array('ID');

View File

@ -1,5 +1,20 @@
<?php <?php
namespace SilverStripe\UserForms\Task;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Versioned\Versioned;
use SilverStripe\UserForms\Model\EditableCustomRule;
use SilverStripe\Control\Director;
use SilverStripe\ORM\DB;
/** /**
* Service to support upgrade of userforms module * Service to support upgrade of userforms module
*/ */
@ -16,7 +31,7 @@ class UserFormsUpgradeService
$this->log("Upgrading formfield rules and custom settings"); $this->log("Upgrading formfield rules and custom settings");
// List of rules that have been created in all stages // List of rules that have been created in all stages
$fields = Versioned::get_including_deleted('EditableFormField'); $fields = Versioned::get_including_deleted(EditableFormField::class);
foreach ($fields as $field) { foreach ($fields as $field) {
$this->upgradeField($field); $this->upgradeField($field);
} }
@ -33,8 +48,8 @@ class UserFormsUpgradeService
// Check versions this field exists on // Check versions this field exists on
$filter = sprintf('"EditableFormField"."ID" = \'%d\' AND "Migrated" = 0', $field->ID); $filter = sprintf('"EditableFormField"."ID" = \'%d\' AND "Migrated" = 0', $field->ID);
$stageField = Versioned::get_one_by_stage('EditableFormField', 'Stage', $filter); $stageField = Versioned::get_one_by_stage(EditableFormField::class, 'Stage', $filter);
$liveField = Versioned::get_one_by_stage('EditableFormField', 'Live', $filter); $liveField = Versioned::get_one_by_stage(EditableFormField::class, 'Live', $filter);
if ($stageField) { if ($stageField) {
$this->upgradeFieldInStage($stageField, 'Stage'); $this->upgradeFieldInStage($stageField, 'Stage');
@ -171,7 +186,7 @@ class UserFormsUpgradeService
// If live, search stage record for matching one // If live, search stage record for matching one
if ($stage === 'Live') { if ($stage === 'Live') {
$list = Versioned::get_by_stage('EditableCustomRule', 'Stage') $list = Versioned::get_by_stage(EditableCustomRule::class, 'Stage')
->filter(array( ->filter(array(
'ParentID' => $field->ID, 'ParentID' => $field->ID,
'ConditionFieldID' => $conditionField ? $conditionField->ID : 0, 'ConditionFieldID' => $conditionField ? $conditionField->ID : 0,

View File

@ -1,5 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Task;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\UserForms\Task\UserFormsUpgradeService;
use SilverStripe\Dev\BuildTask;
/** /**
* Assists with upgrade of userforms to 3.0 * Assists with upgrade of userforms to 3.0
* *
@ -14,7 +24,7 @@ class UserFormsUpgradeTask extends BuildTask
public function run($request) public function run($request)
{ {
$service = Injector::inst()->create('UserFormsUpgradeService'); $service = Injector::inst()->create(UserFormsUpgradeService::class);
$service->log("Upgrading userforms module"); $service->log("Upgrading userforms module");
$service->setQuiet(false) $service->setQuiet(false)
->run(); ->run();

View File

@ -1,5 +1,15 @@
<?php <?php
namespace SilverStripe\UserForms\Task;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\Versioned\Versioned;
use SilverStripe\Dev\MigrationTask;
/** /**
* UserForms Versioned Task * UserForms Versioned Task
* *
@ -23,7 +33,7 @@ class UserFormsVersionedTask extends MigrationTask
*/ */
public function run($request) public function run($request)
{ {
$forms = Versioned::get_by_stage('UserDefinedForm', 'Live'); $forms = Versioned::get_by_stage(UserDefinedForm::class, 'Live');
if ($forms) { if ($forms) {
foreach ($forms as $form) { foreach ($forms as $form) {

View File

@ -1,5 +1,17 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Form;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\CMS\Controllers\ModelAsController;
use SilverStripe\UserForms\Form\UserForm;
use SilverStripe\Dev\SapphireTest;
class UserFormTest extends SapphireTest class UserFormTest extends SapphireTest
{ {
@ -11,7 +23,7 @@ class UserFormTest extends SapphireTest
*/ */
public function testEmptyPages() public function testEmptyPages()
{ {
$page = $this->objFromFixture('UserDefinedForm', 'empty-page'); $page = $this->objFromFixture(UserDefinedForm::class, 'empty-page');
$this->assertEquals(5, $page->Fields()->count()); $this->assertEquals(5, $page->Fields()->count());
$controller = ModelAsController::controller_for($page); $controller = ModelAsController::controller_for($page);
$form = new UserForm($controller); $form = new UserForm($controller);

View File

@ -1,5 +1,16 @@
<?php <?php
namespace SilverStripe\UserForms\Test\FormField;
use SilverStripe\UserForms\FormField\UserFormsCheckboxSetField;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Dev\SapphireTest;
class UserFormsCheckboxSetFieldTest extends SapphireTest class UserFormsCheckboxSetFieldTest extends SapphireTest
{ {
public function testValidate() { public function testValidate() {

View File

@ -1,5 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model;
use SilverStripe\UserForms\Model\EditableCustomRule;
use SilverStripe\Dev\SapphireTest;
/** /**
* Class EditableCustomRulesTest * Class EditableCustomRulesTest
*/ */
@ -10,7 +18,7 @@ class EditableCustomRuleTest extends SapphireTest
public function testBuildExpression() public function testBuildExpression()
{ {
/** @var EditableCustomRule $rule1 */ /** @var EditableCustomRule $rule1 */
$rule1 = $this->objFromFixture('EditableCustomRule', 'rule1'); $rule1 = $this->objFromFixture(EditableCustomRule::class, 'rule1');
$result1 = $rule1->buildExpression(); $result1 = $rule1->buildExpression();
//Dropdowns expect change event //Dropdowns expect change event
@ -20,7 +28,7 @@ class EditableCustomRuleTest extends SapphireTest
$this->assertContains('==', $result1['operation']); $this->assertContains('==', $result1['operation']);
/** @var EditableCustomRule $rule2 */ /** @var EditableCustomRule $rule2 */
$rule2 = $this->objFromFixture('EditableCustomRule', 'rule2'); $rule2 = $this->objFromFixture(EditableCustomRule::class, 'rule2');
$result2 = $rule2->buildExpression(); $result2 = $rule2->buildExpression();
//TextField expect change event //TextField expect change event
$this->assertEquals('keyup', $result2['event']); $this->assertEquals('keyup', $result2['event']);
@ -35,7 +43,7 @@ class EditableCustomRuleTest extends SapphireTest
*/ */
public function testToggleDisplayText() public function testToggleDisplayText()
{ {
$rule1 = $this->objFromFixture('EditableCustomRule', 'rule1'); $rule1 = $this->objFromFixture(EditableCustomRule::class, 'rule1');
$this->assertSame('addClass("hide")', $rule1->toggleDisplayText('show')); $this->assertSame('addClass("hide")', $rule1->toggleDisplayText('show'));
$this->assertSame('removeClass("hide")', $rule1->toggleDisplayText('hide')); $this->assertSame('removeClass("hide")', $rule1->toggleDisplayText('hide'));
} }

View File

@ -1,5 +1,14 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableDropdown;
use SilverStripe\Dev\SapphireTest;
/** /**
* Tests the {@see EditableDropdown} class * Tests the {@see EditableDropdown} class
*/ */
@ -19,7 +28,7 @@ class EditableDropdownTest extends SapphireTest
public function testFormField() public function testFormField()
{ {
if (!$dropdown = EditableDropdown::get()->filter('UseEmptyString', true)->first()) { if (!$dropdown = EditableDropdown::get()->filter('UseEmptyString', true)->first()) {
$dropdown = $this->objFromFixture('EditableDropdown', 'basic-dropdown'); $dropdown = $this->objFromFixture(EditableDropdown::class, 'basic-dropdown');
$dropdown->UseEmptyString = true; $dropdown->UseEmptyString = true;
$dropdown->EmptyString = 'My Default Empty String'; $dropdown->EmptyString = 'My Default Empty String';
@ -29,7 +38,7 @@ class EditableDropdownTest extends SapphireTest
$field = $dropdown->getFormField(); $field = $dropdown->getFormField();
$this->assertEquals($field->getEmptyString(), 'My Default Empty String'); $this->assertEquals($field->getEmptyString(), 'My Default Empty String');
$alternateDropdown = $this->objFromFixture('EditableDropdown', 'department-dropdown'); $alternateDropdown = $this->objFromFixture(EditableDropdown::class, 'department-dropdown');
$formField = $alternateDropdown->getFormField(); $formField = $alternateDropdown->getFormField();
$this->assertFalse($formField->getHasEmptyDefault()); $this->assertFalse($formField->getHasEmptyDefault());

View File

@ -1,5 +1,14 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\ORM\ValidationException;
use SilverStripe\Dev\SapphireTest;
/** /**
* @package userforms * @package userforms
*/ */
@ -23,7 +32,7 @@ class EditableFileFieldTest extends SapphireTest
{ {
parent::setUp(); parent::setUp();
$editableFileField = singleton('EditableFileField'); $editableFileField = singleton(EditableFileField::class);
$this->php_max_file_size = $editableFileField::get_php_max_file_size(); $this->php_max_file_size = $editableFileField::get_php_max_file_size();
} }
@ -33,7 +42,7 @@ class EditableFileFieldTest extends SapphireTest
*/ */
public function testDefaultMaxFileSize() public function testDefaultMaxFileSize()
{ {
$fileField = $this->objFromFixture('EditableFileField', 'file-field'); $fileField = $this->objFromFixture(EditableFileField::class, 'file-field');
$formField = $fileField->getFormField(); $formField = $fileField->getFormField();
$this->assertEquals($this->php_max_file_size, $formField->getValidator()->getAllowedMaxFileSize()); $this->assertEquals($this->php_max_file_size, $formField->getValidator()->getAllowedMaxFileSize());
@ -45,8 +54,8 @@ class EditableFileFieldTest extends SapphireTest
public function testValidateFileSizeFieldValue() public function testValidateFileSizeFieldValue()
{ {
$fileField = $this->objFromFixture('EditableFileField', 'file-field'); $fileField = $this->objFromFixture(EditableFileField::class, 'file-field');
$this->setExpectedException('ValidationException'); $this->setExpectedException(ValidationException::class);
$fileField->MaxFileSizeMB = $this->php_max_file_size * 2; $fileField->MaxFileSizeMB = $this->php_max_file_size * 2;
$fileField->write(); $fileField->write();
} }
@ -56,7 +65,7 @@ class EditableFileFieldTest extends SapphireTest
*/ */
public function testUpdatedMaxFileSize() public function testUpdatedMaxFileSize()
{ {
$fileField = $this->objFromFixture('EditableFileField', 'file-field'); $fileField = $this->objFromFixture(EditableFileField::class, 'file-field');
$fileField->MaxFileSizeMB = .25; $fileField->MaxFileSizeMB = .25;
$fileField->write(); $fileField->write();

View File

@ -1,5 +1,29 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
use SilverStripe\Security\Member;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Model\EditableFormField\EditableCheckbox;
use SilverStripe\UserForms\Model\EditableFormField\EditableOption;
use SilverStripe\UserForms\Model\EditableFormField\EditableDropdown;
use SilverStripe\Forms\DropdownField;
use SilverStripe\UserForms\Model\EditableFormField\EditableRadioField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\Core\Config\Config;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\Dev\FunctionalTest;
/** /**
* @package userforms * @package userforms
*/ */
@ -11,7 +35,7 @@ class EditableFormFieldTest extends FunctionalTest
public function testFormFieldPermissions() public function testFormFieldPermissions()
{ {
$text = $this->objFromFixture('EditableTextField', 'basic-text'); $text = $this->objFromFixture(EditableTextField::class, 'basic-text');
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$this->assertTrue($text->canCreate()); $this->assertTrue($text->canCreate());
@ -49,10 +73,10 @@ class EditableFormFieldTest extends FunctionalTest
public function testCustomRules() public function testCustomRules()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'custom-rules-form'); $form = $this->objFromFixture(UserDefinedForm::class, 'custom-rules-form');
$checkbox = $form->Fields()->find('ClassName', 'EditableCheckbox'); $checkbox = $form->Fields()->find('ClassName', EditableCheckbox::class);
$field = $form->Fields()->find('ClassName', 'EditableTextField'); $field = $form->Fields()->find('ClassName', EditableTextField::class);
$rules = $checkbox->DisplayRules(); $rules = $checkbox->DisplayRules();
@ -78,7 +102,7 @@ class EditableFormFieldTest extends FunctionalTest
*/ */
public function testEditableOptionEmptyValue() public function testEditableOptionEmptyValue()
{ {
$option = $this->objFromFixture('EditableOption', 'option-1'); $option = $this->objFromFixture(EditableOption::class, 'option-1');
$option->Value = ''; $option->Value = '';
// Disallow empty values // Disallow empty values
@ -96,12 +120,12 @@ class EditableFormFieldTest extends FunctionalTest
public function testEditableDropdownField() public function testEditableDropdownField()
{ {
$dropdown = $this->objFromFixture('EditableDropdown', 'basic-dropdown'); $dropdown = $this->objFromFixture(EditableDropdown::class, 'basic-dropdown');
$field = $dropdown->getFormField(); $field = $dropdown->getFormField();
$this->assertThat($field, $this->isInstanceOf('DropdownField')); $this->assertThat($field, $this->isInstanceOf(DropdownField::class));
$values = $field->getSource(); $values = $field->getSource();
$this->assertEquals(array('Option 1' => 'Option 1', 'Option 2' => 'Option 2'), $values); $this->assertEquals(array('Option 1' => 'Option 1', 'Option 2' => 'Option 2'), $values);
@ -109,11 +133,11 @@ class EditableFormFieldTest extends FunctionalTest
public function testEditableRadioField() public function testEditableRadioField()
{ {
$radio = $this->objFromFixture('EditableRadioField', 'radio-field'); $radio = $this->objFromFixture(EditableRadioField::class, 'radio-field');
$field = $radio->getFormField(); $field = $radio->getFormField();
$this->assertThat($field, $this->isInstanceOf('OptionsetField')); $this->assertThat($field, $this->isInstanceOf(OptionsetField::class));
$values = $field->getSource(); $values = $field->getSource();
$this->assertEquals(array('Option 5' => 'Option 5', 'Option 6' => 'Option 6'), $values); $this->assertEquals(array('Option 5' => 'Option 5', 'Option 6' => 'Option 6'), $values);
@ -121,7 +145,7 @@ class EditableFormFieldTest extends FunctionalTest
public function testMultipleOptionDuplication() public function testMultipleOptionDuplication()
{ {
$dropdown = $this->objFromFixture('EditableDropdown', 'basic-dropdown'); $dropdown = $this->objFromFixture(EditableDropdown::class, 'basic-dropdown');
$clone = $dropdown->duplicate(); $clone = $dropdown->duplicate();
@ -136,7 +160,7 @@ class EditableFormFieldTest extends FunctionalTest
public function testFileField() public function testFileField()
{ {
$fileField = $this->objFromFixture('EditableFileField', 'file-field'); $fileField = $this->objFromFixture(EditableFileField::class, 'file-field');
$formField = $fileField->getFormField(); $formField = $fileField->getFormField();
$this->assertContains('jpg', $formField->getValidator()->getAllowedExtensions()); $this->assertContains('jpg', $formField->getValidator()->getAllowedExtensions());
@ -145,8 +169,8 @@ class EditableFormFieldTest extends FunctionalTest
public function testFileFieldAllowedExtensionsBlacklist() public function testFileFieldAllowedExtensionsBlacklist()
{ {
Config::inst()->update('EditableFileField', 'allowed_extensions_blacklist', array('jpg')); Config::inst()->update(EditableFileField::class, 'allowed_extensions_blacklist', array('jpg'));
$fileField = $this->objFromFixture('EditableFileField', 'file-field'); $fileField = $this->objFromFixture(EditableFileField::class, 'file-field');
$formField = $fileField->getFormField(); $formField = $fileField->getFormField();
$this->assertNotContains('jpg', $formField->getValidator()->getAllowedExtensions()); $this->assertNotContains('jpg', $formField->getValidator()->getAllowedExtensions());
@ -177,7 +201,7 @@ class EditableFormFieldTest extends FunctionalTest
public function testLengthRange() public function testLengthRange()
{ {
/** @var EditableTextField $textField */ /** @var EditableTextField $textField */
$textField = $this->objFromFixture('EditableTextField', 'basic-text'); $textField = $this->objFromFixture(EditableTextField::class, 'basic-text');
// Empty range // Empty range
/** @var TextField $formField */ /** @var TextField $formField */
@ -207,7 +231,7 @@ class EditableFormFieldTest extends FunctionalTest
public function testFormatDisplayRules() public function testFormatDisplayRules()
{ {
$field = $this->objFromFixture('EditableFormField', 'irdNumberField'); $field = $this->objFromFixture(EditableFormField::class, 'irdNumberField');
$displayRules = $field->formatDisplayRules(); $displayRules = $field->formatDisplayRules();
$this->assertNotNull($displayRules); $this->assertNotNull($displayRules);
$this->assertCount(1, $displayRules['operations']); $this->assertCount(1, $displayRules['operations']);

View File

@ -1,5 +1,19 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\EditableFormField;
use HtmlEditorConfig;
use SilverStripe\UserForms\Model\EditableFormField\EditableLiteralField;
use SilverStripe\Core\Config\Config;
use SilverStripe\Forms\CompositeField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Dev\SapphireTest;
/** /**
* Tests the {@see EditableLiteralField} class * Tests the {@see EditableLiteralField} class
*/ */
@ -48,7 +62,7 @@ class EditableLiteralFieldTest extends SapphireTest
public function testLiteralFieldHasUpdateFormFieldMethodCalled() public function testLiteralFieldHasUpdateFormFieldMethodCalled()
{ {
$field = $this->getMockBuilder('EditableLiteralField') $field = $this->getMockBuilder(EditableLiteralField::class)
->setMethods(array('doUpdateFormField')) ->setMethods(array('doUpdateFormField'))
->getMock(); ->getMock();
@ -66,9 +80,9 @@ class EditableLiteralFieldTest extends SapphireTest
$field = new EditableLiteralField; $field = new EditableLiteralField;
$formField = $field->getFormField(); $formField = $field->getFormField();
$this->assertInstanceOf('CompositeField', $formField, 'Literal field is contained within a composite field'); $this->assertInstanceOf(CompositeField::class, $formField, 'Literal field is contained within a composite field');
$this->assertInstanceOf( $this->assertInstanceOf(
'LiteralField', LiteralField::class,
$formField->FieldList()->first(), $formField->FieldList()->first(),
'Actual literal field exists in composite field children' 'Actual literal field exists in composite field children'
); );

View File

@ -1,5 +1,20 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\EditableFormField;
use SilverStripe\Core\Config\Config;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\Assets\Filesystem;
use SilverStripe\Assets\Folder;
use SilverStripe\Dev\SapphireTest;
/** /**
* Tests integration of EditableFileField with the securefiles module * Tests integration of EditableFileField with the securefiles module
* *
@ -18,7 +33,7 @@ class SecureEditableFileFieldTest extends SapphireTest
$this->skipTest = true; $this->skipTest = true;
$this->markTestSkipped(get_class() . ' skipped unless running with securefiles'); $this->markTestSkipped(get_class() . ' skipped unless running with securefiles');
} }
Config::inst()->update('EditableFileField', 'secure_folder_name', 'SecureEditableFileFieldTest/SecureUploads'); Config::inst()->update(EditableFileField::class, 'secure_folder_name', 'SecureEditableFileFieldTest/SecureUploads');
$this->clearPath(); $this->clearPath();
} }
@ -54,7 +69,7 @@ class SecureEditableFileFieldTest extends SapphireTest
*/ */
public function testCreateInsecure() public function testCreateInsecure()
{ {
Config::inst()->update('EditableFileField', 'disable_security', true); Config::inst()->update(EditableFileField::class, 'disable_security', true);
// Esure folder is created without a folder // Esure folder is created without a folder
$field = new EditableFileField(); $field = new EditableFileField();
@ -73,8 +88,8 @@ class SecureEditableFileFieldTest extends SapphireTest
$this->assertEquals('Inherit', $field->Folder()->CanViewType); $this->assertEquals('Inherit', $field->Folder()->CanViewType);
// Enabling security and re-saving will force this field to be made secure (but not changed) // Enabling security and re-saving will force this field to be made secure (but not changed)
Config::inst()->update('EditableFileField', 'disable_security', false); Config::inst()->update(EditableFileField::class, 'disable_security', false);
singleton('EditableFileField')->requireDefaultRecords(); singleton(EditableFileField::class)->requireDefaultRecords();
// Reload record from DB // Reload record from DB
$field = EditableFileField::get()->byID($field->ID); $field = EditableFileField::get()->byID($field->ID);

View File

@ -1,5 +1,13 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model\Recipient;
use SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipientCondition;
use SilverStripe\Dev\SapphireTest;
/** /**
* Class EditableCustomRulesTest * Class EditableCustomRulesTest
*/ */
@ -12,7 +20,7 @@ class UserDefinedForm_EmailRecipientConditionTest extends SapphireTest
*/ */
public function testMatches() public function testMatches()
{ {
$fixtureClass = 'UserDefinedForm_EmailRecipientCondition'; $fixtureClass = UserDefinedForm_EmailRecipientCondition::class;
//Test Blank //Test Blank
/** @var UserDefinedForm_EmailRecipientCondition $blankObj */ /** @var UserDefinedForm_EmailRecipientCondition $blankObj */
$blankObj = $this->objFromFixture($fixtureClass, 'blankTest'); $blankObj = $this->objFromFixture($fixtureClass, 'blankTest');

View File

@ -1,5 +1,33 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model;
use ResetFormAction;
use UserDefinedForm_Controller;
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
use SilverStripe\UserForms\Model\Submission\SubmittedFormField;
use SilverStripe\ORM\DataObject;
use SilverStripe\Dev\CSSContentParser;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\FieldList;
use SilverStripe\View\ArrayData;
use SilverStripe\UserForms\Test\Model\UserDefinedFormControllerTest;
use SilverStripe\Security\Member;
use SilverStripe\Dev\FunctionalTest;
use SilverStripe\Dev\TestOnly;
/** /**
* @package userforms * @package userforms
*/ */
@ -21,12 +49,12 @@ class UserDefinedFormControllerTest extends FunctionalTest
// load the form // load the form
$this->get($form->URLSegment); $this->get($form->URLSegment);
$field = $this->objFromFixture('EditableTextField', 'basic-text'); $field = $this->objFromFixture(EditableTextField::class, 'basic-text');
$response = $this->submitForm('UserForm_Form_' . $form->ID, null, array($field->Name => 'Basic Value')); $response = $this->submitForm('UserForm_Form_' . $form->ID, null, array($field->Name => 'Basic Value'));
// should have a submitted form field now // should have a submitted form field now
$submitted = DataObject::get('SubmittedFormField', "\"Name\" = 'basic-text-name'"); $submitted = DataObject::get(SubmittedFormField::class, "\"Name\" = 'basic-text-name'");
$this->assertDOSAllMatch(array('Name' => 'basic-text-name', 'Value' => 'Basic Value', 'Title' => 'Basic Text Field'), $submitted); $this->assertDOSAllMatch(array('Name' => 'basic-text-name', 'Value' => 'Basic Value', 'Title' => 'Basic Text Field'), $submitted);
// check emails // check emails
@ -124,7 +152,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
public function testForm() public function testForm()
{ {
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$controller = new UserDefinedFormControllerTest_Controller($form); $controller = new UserDefinedFormControllerTest_Controller($form);
@ -134,7 +162,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
$this->assertEquals($controller->Form()->Actions()->Count(), 1); $this->assertEquals($controller->Form()->Actions()->Count(), 1);
$this->assertEquals(count($controller->Form()->getValidator()->getRequired()), 0); $this->assertEquals(count($controller->Form()->getValidator()->getRequired()), 0);
$requiredForm = $this->objFromFixture('UserDefinedForm', 'validation-form'); $requiredForm = $this->objFromFixture(UserDefinedForm::class, 'validation-form');
$controller = new UserDefinedFormControllerTest_Controller($requiredForm); $controller = new UserDefinedFormControllerTest_Controller($requiredForm);
$this->assertEquals($controller->Form()->Fields()->Count(), 1); // disabled SecurityID token fields $this->assertEquals($controller->Form()->Fields()->Count(), 1); // disabled SecurityID token fields
@ -145,7 +173,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
public function testGetFormFields() public function testGetFormFields()
{ {
// generating the fieldset of fields // generating the fieldset of fields
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$controller = new UserDefinedFormControllerTest_Controller($form); $controller = new UserDefinedFormControllerTest_Controller($form);
@ -156,7 +184,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
$this->assertEquals($firstStep->getChildren()->Count(), 1); $this->assertEquals($firstStep->getChildren()->Count(), 1);
// custom error message on a form field // custom error message on a form field
$requiredForm = $this->objFromFixture('UserDefinedForm', 'validation-form'); $requiredForm = $this->objFromFixture(UserDefinedForm::class, 'validation-form');
$controller = new UserDefinedFormControllerTest_Controller($requiredForm); $controller = new UserDefinedFormControllerTest_Controller($requiredForm);
UserDefinedForm::config()->required_identifier = "*"; UserDefinedForm::config()->required_identifier = "*";
@ -180,7 +208,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
$this->assertEquals($firstStep->getChildren()->First()->RightTitle(), "Right Title"); $this->assertEquals($firstStep->getChildren()->First()->RightTitle(), "Right Title");
// test empty form // test empty form
$emptyForm = $this->objFromFixture('UserDefinedForm', 'empty-form'); $emptyForm = $this->objFromFixture(UserDefinedForm::class, 'empty-form');
$controller = new UserDefinedFormControllerTest_Controller($emptyForm); $controller = new UserDefinedFormControllerTest_Controller($emptyForm);
$this->assertFalse($controller->Form()->getFormFields()->exists()); $this->assertFalse($controller->Form()->getFormFields()->exists());
@ -189,7 +217,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
public function testGetFormActions() public function testGetFormActions()
{ {
// generating the fieldset of actions // generating the fieldset of actions
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$controller = new UserDefinedFormControllerTest_Controller($form); $controller = new UserDefinedFormControllerTest_Controller($form);
$actions = $controller->Form()->getFormActions(); $actions = $controller->Form()->getFormActions();
@ -201,7 +229,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
$this->assertEquals($actions, $expected); $this->assertEquals($actions, $expected);
// the custom popup should have a reset button and a custom text // the custom popup should have a reset button and a custom text
$custom = $this->objFromFixture('UserDefinedForm', 'form-with-reset-and-custom-action'); $custom = $this->objFromFixture(UserDefinedForm::class, 'form-with-reset-and-custom-action');
$controller = new UserDefinedFormControllerTest_Controller($custom); $controller = new UserDefinedFormControllerTest_Controller($custom);
$actions = $controller->Form()->getFormActions(); $actions = $controller->Form()->getFormActions();
@ -223,7 +251,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
// check to see if $Form is replaced to inside the content // check to see if $Form is replaced to inside the content
$index = new ArrayData($controller->index()); $index = new ArrayData($controller->index());
$parser = new CSSContentParser($index->renderWith(array('UserDefinedFormControllerTest'))); $parser = new CSSContentParser($index->renderWith(array(UserDefinedFormControllerTest::class)));
$this->checkTemplateIsCorrect($parser, $form); $this->checkTemplateIsCorrect($parser, $form);
} }
@ -236,7 +264,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
// check to see if $Form is replaced to inside the content // check to see if $Form is replaced to inside the content
$index = new ArrayData($controller->index()); $index = new ArrayData($controller->index());
$parser = new CSSContentParser($index->renderWith(array('UserDefinedFormControllerTest'))); $parser = new CSSContentParser($index->renderWith(array(UserDefinedFormControllerTest::class)));
$this->checkTemplateIsCorrect($parser, $form); $this->checkTemplateIsCorrect($parser, $form);
} }
@ -248,7 +276,7 @@ class UserDefinedFormControllerTest extends FunctionalTest
*/ */
protected function setupFormFrontend($fixtureName = 'basic-form-page') protected function setupFormFrontend($fixtureName = 'basic-form-page')
{ {
$form = $this->objFromFixture('UserDefinedForm', $fixtureName); $form = $this->objFromFixture(UserDefinedForm::class, $fixtureName);
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form->doPublish(); $form->doPublish();

View File

@ -1,5 +1,41 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Model;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\Versioned\Versioned;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\UserForms\Model\Recipient\UserDefinedForm_EmailRecipient;
use SilverStripe\UserForms\Model\EditableFormField\EditableEmailField;
use SilverStripe\Forms\DropdownField;
use SilverStripe\UserForms\Model\EditableFormField\EditableDropdown;
use SilverStripe\Security\Member;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormField;
use SilverStripe\UserForms\Model\EditableCustomRule;
use SilverStripe\ORM\DB;
use SilverStripe\UserForms\Extension\UserFormValidator;
use SilverStripe\Control\Controller;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FieldList;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroup;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\Core\Convert;
use SilverStripe\Dev\FunctionalTest;
/** /**
* @package userforms * @package userforms
*/ */
@ -16,7 +52,7 @@ class UserDefinedFormTest extends FunctionalTest
// @todo // @todo
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$form->SubmitButtonText = 'Button Text'; $form->SubmitButtonText = 'Button Text';
$form->write(); $form->write();
@ -28,19 +64,19 @@ class UserDefinedFormTest extends FunctionalTest
$form->doPublish(); $form->doPublish();
// check published site // check published site
$updated = Versioned::get_one_by_stage("UserDefinedForm", "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID"); $updated = Versioned::get_one_by_stage(UserDefinedForm::class, "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID");
$this->assertEquals($updated->SubmitButtonText, 'Updated Button Text'); $this->assertEquals($updated->SubmitButtonText, 'Updated Button Text');
$form->doRollbackTo($origVersion); $form->doRollbackTo($origVersion);
$orignal = Versioned::get_one_by_stage("UserDefinedForm", "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID"); $orignal = Versioned::get_one_by_stage(UserDefinedForm::class, "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID");
$this->assertEquals($orignal->SubmitButtonText, 'Button Text'); $this->assertEquals($orignal->SubmitButtonText, 'Button Text');
} }
public function testGetCMSFields() public function testGetCMSFields()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$fields = $form->getCMSFields(); $fields = $form->getCMSFields();
@ -54,14 +90,14 @@ class UserDefinedFormTest extends FunctionalTest
public function testGetCMSFieldsShowInSummary() public function testGetCMSFieldsShowInSummary()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'summary-rules-form'); $form = $this->objFromFixture(UserDefinedForm::class, 'summary-rules-form');
$fields = $form->getCMSFields(); $fields = $form->getCMSFields();
$this->assertInstanceOf('GridField', $fields->dataFieldByName('Submissions')); $this->assertInstanceOf(GridField::class, $fields->dataFieldByName('Submissions'));
$submissionsgrid = $fields->dataFieldByName('Submissions'); $submissionsgrid = $fields->dataFieldByName('Submissions');
$gridFieldDataColumns = $submissionsgrid->getConfig()->getComponentByType('GridFieldDataColumns'); $gridFieldDataColumns = $submissionsgrid->getConfig()->getComponentByType(GridFieldDataColumns::class);
$summaryFields = $gridFieldDataColumns->getDisplayFields($submissionsgrid); $summaryFields = $gridFieldDataColumns->getDisplayFields($submissionsgrid);
@ -74,7 +110,7 @@ class UserDefinedFormTest extends FunctionalTest
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$popup = new UserDefinedForm_EmailRecipient(); $popup = new UserDefinedForm_EmailRecipient();
$popup->FormID = $form->ID; $popup->FormID = $form->ID;
@ -89,16 +125,16 @@ class UserDefinedFormTest extends FunctionalTest
$this->assertTrue($fields->dataFieldByName('EmailBody') !== null); $this->assertTrue($fields->dataFieldByName('EmailBody') !== null);
// add an email field, it should now add a or from X address picker // add an email field, it should now add a or from X address picker
$email = $this->objFromFixture('EditableEmailField', 'email-field'); $email = $this->objFromFixture(EditableEmailField::class, 'email-field');
$form->Fields()->add($email); $form->Fields()->add($email);
$popup->write(); $popup->write();
$fields = $popup->getCMSFields(); $fields = $popup->getCMSFields();
$this->assertThat($fields->dataFieldByName('SendEmailToFieldID'), $this->isInstanceOf('DropdownField')); $this->assertThat($fields->dataFieldByName('SendEmailToFieldID'), $this->isInstanceOf(DropdownField::class));
// if the front end has checkboxs or dropdown they can select from that can also be used to send things // if the front end has checkboxs or dropdown they can select from that can also be used to send things
$dropdown = $this->objFromFixture('EditableDropdown', 'department-dropdown'); $dropdown = $this->objFromFixture(EditableDropdown::class, 'department-dropdown');
$form->Fields()->add($dropdown); $form->Fields()->add($dropdown);
$fields = $popup->getCMSFields(); $fields = $popup->getCMSFields();
@ -157,7 +193,7 @@ class UserDefinedFormTest extends FunctionalTest
public function testCanEditAndDeleteRecipient() public function testCanEditAndDeleteRecipient()
{ {
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
foreach ($form->EmailRecipients() as $recipient) { foreach ($form->EmailRecipients() as $recipient) {
@ -179,30 +215,30 @@ class UserDefinedFormTest extends FunctionalTest
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$form->write(); $form->write();
$form->doPublish(); $form->doPublish();
$live = Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID"); $live = Versioned::get_one_by_stage(UserDefinedForm::class, "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID");
$this->assertNotNull($live); $this->assertNotNull($live);
$this->assertEquals(2, $live->Fields()->Count()); // one page and one field $this->assertEquals(2, $live->Fields()->Count()); // one page and one field
$dropdown = $this->objFromFixture('EditableDropdown', 'basic-dropdown'); $dropdown = $this->objFromFixture(EditableDropdown::class, 'basic-dropdown');
$form->Fields()->add($dropdown); $form->Fields()->add($dropdown);
$stage = Versioned::get_one_by_stage("UserDefinedForm", "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID"); $stage = Versioned::get_one_by_stage(UserDefinedForm::class, "Stage", "\"UserDefinedForm\".\"ID\" = $form->ID");
$this->assertEquals(3, $stage->Fields()->Count()); $this->assertEquals(3, $stage->Fields()->Count());
// should not have published the dropdown // should not have published the dropdown
$liveDropdown = Versioned::get_one_by_stage("EditableFormField", "Live", "\"EditableFormField_Live\".\"ID\" = $dropdown->ID"); $liveDropdown = Versioned::get_one_by_stage(EditableFormField::class, "Live", "\"EditableFormField_Live\".\"ID\" = $dropdown->ID");
$this->assertNull($liveDropdown); $this->assertNull($liveDropdown);
// when publishing it should have added it // when publishing it should have added it
$form->doPublish(); $form->doPublish();
$live = Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID"); $live = Versioned::get_one_by_stage(UserDefinedForm::class, "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID");
$this->assertEquals(3, $live->Fields()->Count()); $this->assertEquals(3, $live->Fields()->Count());
// edit the title // edit the title
@ -210,12 +246,12 @@ class UserDefinedFormTest extends FunctionalTest
$text->Title = 'Edited title'; $text->Title = 'Edited title';
$text->write(); $text->write();
$liveText = Versioned::get_one_by_stage("EditableFormField", "Live", "\"EditableFormField_Live\".\"ID\" = $text->ID"); $liveText = Versioned::get_one_by_stage(EditableFormField::class, "Live", "\"EditableFormField_Live\".\"ID\" = $text->ID");
$this->assertFalse($liveText->Title == $text->Title); $this->assertFalse($liveText->Title == $text->Title);
$form->doPublish(); $form->doPublish();
$liveText = Versioned::get_one_by_stage("EditableFormField", "Live", "\"EditableFormField_Live\".\"ID\" = $text->ID"); $liveText = Versioned::get_one_by_stage(EditableFormField::class, "Live", "\"EditableFormField_Live\".\"ID\" = $text->ID");
$this->assertTrue($liveText->Title == $text->Title); $this->assertTrue($liveText->Title == $text->Title);
// Add a display rule to the dropdown // Add a display rule to the dropdown
@ -226,37 +262,37 @@ class UserDefinedFormTest extends FunctionalTest
$ruleID = $displayRule->ID; $ruleID = $displayRule->ID;
// Not live // Not live
$liveRule = Versioned::get_one_by_stage("EditableCustomRule", "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID"); $liveRule = Versioned::get_one_by_stage(EditableCustomRule::class, "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID");
$this->assertEmpty($liveRule); $this->assertEmpty($liveRule);
// Publish form, it's now live // Publish form, it's now live
$form->doPublish(); $form->doPublish();
$liveRule = Versioned::get_one_by_stage("EditableCustomRule", "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID"); $liveRule = Versioned::get_one_by_stage(EditableCustomRule::class, "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID");
$this->assertNotEmpty($liveRule); $this->assertNotEmpty($liveRule);
// Remove rule // Remove rule
$displayRule->delete(); $displayRule->delete();
// Live rule still exists // Live rule still exists
$liveRule = Versioned::get_one_by_stage("EditableCustomRule", "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID"); $liveRule = Versioned::get_one_by_stage(EditableCustomRule::class, "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID");
$this->assertNotEmpty($liveRule); $this->assertNotEmpty($liveRule);
// Publish form, it should remove this rule // Publish form, it should remove this rule
$form->doPublish(); $form->doPublish();
$liveRule = Versioned::get_one_by_stage("EditableCustomRule", "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID"); $liveRule = Versioned::get_one_by_stage(EditableCustomRule::class, "Live", "\"EditableCustomRule_Live\".\"ID\" = $ruleID");
$this->assertEmpty($liveRule); $this->assertEmpty($liveRule);
} }
public function testUnpublishing() public function testUnpublishing()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$form->write(); $form->write();
$this->assertEquals(0, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value()); $this->assertEquals(0, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value());
$form->doPublish(); $form->doPublish();
// assert that it exists and has a field // assert that it exists and has a field
$live = Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID"); $live = Versioned::get_one_by_stage(UserDefinedForm::class, "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID");
$this->assertTrue(isset($live)); $this->assertTrue(isset($live));
$this->assertEquals(2, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value()); $this->assertEquals(2, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value());
@ -264,14 +300,14 @@ class UserDefinedFormTest extends FunctionalTest
// unpublish // unpublish
$form->doUnpublish(); $form->doUnpublish();
$this->assertNull(Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID")); $this->assertNull(Versioned::get_one_by_stage(UserDefinedForm::class, "Live", "\"UserDefinedForm_Live\".\"ID\" = $form->ID"));
$this->assertEquals(0, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value()); $this->assertEquals(0, DB::query("SELECT COUNT(*) FROM \"EditableFormField_Live\"")->value());
} }
public function testDoRevertToLive() public function testDoRevertToLive()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$field = $form->Fields()->First(); $field = $form->Fields()->First();
$field->Title = 'Title'; $field->Title = 'Title';
@ -283,14 +319,14 @@ class UserDefinedFormTest extends FunctionalTest
$field->write(); $field->write();
// check that the published version is not updated // check that the published version is not updated
$live = Versioned::get_one_by_stage("EditableFormField", "Live", "\"EditableFormField_Live\".\"ID\" = $field->ID"); $live = Versioned::get_one_by_stage(EditableFormField::class, "Live", "\"EditableFormField_Live\".\"ID\" = $field->ID");
$this->assertEquals('Title', $live->Title); $this->assertEquals('Title', $live->Title);
// revert back to the live data // revert back to the live data
$form->doRevertToLive(); $form->doRevertToLive();
$form->flushCache(); $form->flushCache();
$check = Versioned::get_one_by_stage("EditableFormField", "Stage", "\"EditableFormField\".\"ID\" = $field->ID"); $check = Versioned::get_one_by_stage(EditableFormField::class, "Stage", "\"EditableFormField\".\"ID\" = $field->ID");
$this->assertEquals('Title', $check->Title); $this->assertEquals('Title', $check->Title);
} }
@ -298,7 +334,7 @@ class UserDefinedFormTest extends FunctionalTest
public function testDuplicatingForm() public function testDuplicatingForm()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$duplicate = $form->duplicate(); $duplicate = $form->duplicate();
@ -309,25 +345,25 @@ class UserDefinedFormTest extends FunctionalTest
$this->assertEquals($form->Fields()->First()->Title, $duplicate->Fields()->First()->Title); $this->assertEquals($form->Fields()->First()->Title, $duplicate->Fields()->First()->Title);
// Test duplicate with group // Test duplicate with group
$form2 = $this->objFromFixture('UserDefinedForm', 'page-with-group'); $form2 = $this->objFromFixture(UserDefinedForm::class, 'page-with-group');
$form2Validator = new UserFormValidator(); $form2Validator = new UserFormValidator();
$form2Validator->setForm(new Form(new Controller(), 'Form', new FieldList(), new FieldList())); $form2Validator->setForm(new Form(new Controller(), Form::class, new FieldList(), new FieldList()));
$this->assertTrue($form2Validator->php($form2->toMap())); $this->assertTrue($form2Validator->php($form2->toMap()));
// Check field groups exist // Check field groups exist
$form2GroupStart = $form2->Fields()->filter('ClassName', 'EditableFieldGroup')->first(); $form2GroupStart = $form2->Fields()->filter('ClassName', EditableFieldGroup::class)->first();
$form2GroupEnd = $form2->Fields()->filter('ClassName', 'EditableFieldGroupEnd')->first(); $form2GroupEnd = $form2->Fields()->filter('ClassName', EditableFieldGroupEnd::class)->first();
$this->assertEquals($form2GroupEnd->ID, $form2GroupStart->EndID); $this->assertEquals($form2GroupEnd->ID, $form2GroupStart->EndID);
// Duplicate this // Duplicate this
$form3 = $form2->duplicate(); $form3 = $form2->duplicate();
$form3Validator = new UserFormValidator(); $form3Validator = new UserFormValidator();
$form3Validator->setForm(new Form(new Controller(), 'Form', new FieldList(), new FieldList())); $form3Validator->setForm(new Form(new Controller(), Form::class, new FieldList(), new FieldList()));
$this->assertTrue($form3Validator->php($form3->toMap())); $this->assertTrue($form3Validator->php($form3->toMap()));
// Check field groups exist // Check field groups exist
$form3GroupStart = $form3->Fields()->filter('ClassName', 'EditableFieldGroup')->first(); $form3GroupStart = $form3->Fields()->filter('ClassName', EditableFieldGroup::class)->first();
$form3GroupEnd = $form3->Fields()->filter('ClassName', 'EditableFieldGroupEnd')->first(); $form3GroupEnd = $form3->Fields()->filter('ClassName', EditableFieldGroupEnd::class)->first();
$this->assertEquals($form3GroupEnd->ID, $form3GroupStart->EndID); $this->assertEquals($form3GroupEnd->ID, $form3GroupStart->EndID);
$this->assertNotEquals($form2GroupEnd->ID, $form3GroupStart->EndID); $this->assertNotEquals($form2GroupEnd->ID, $form3GroupStart->EndID);
} }
@ -335,7 +371,7 @@ class UserDefinedFormTest extends FunctionalTest
public function testFormOptions() public function testFormOptions()
{ {
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
$form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$fields = $form->getFormOptions(); $fields = $form->getFormOptions();
$submit = $fields->fieldByName('SubmitButtonText'); $submit = $fields->fieldByName('SubmitButtonText');
@ -348,7 +384,7 @@ class UserDefinedFormTest extends FunctionalTest
public function testEmailRecipientFilters() public function testEmailRecipientFilters()
{ {
/** @var UserDefinedForm $form */ /** @var UserDefinedForm $form */
$form = $this->objFromFixture('UserDefinedForm', 'filtered-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'filtered-form-page');
// Check unfiltered recipients // Check unfiltered recipients
$result0 = $form $result0 = $form
@ -442,7 +478,7 @@ class UserDefinedFormTest extends FunctionalTest
public function testIndex() public function testIndex()
{ {
// Test that the $UserDefinedForm is stripped out // Test that the $UserDefinedForm is stripped out
$page = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $page = $this->objFromFixture(UserDefinedForm::class, 'basic-form-page');
$page->publish('Stage', 'Live'); $page->publish('Stage', 'Live');
$result = $this->get($page->Link()); $result = $this->get($page->Link());
@ -461,7 +497,7 @@ class UserDefinedFormTest extends FunctionalTest
$this->logInWithPermission('ADMIN'); $this->logInWithPermission('ADMIN');
// test invalid email addresses fail validation // test invalid email addresses fail validation
$recipient = $this->objFromFixture('UserDefinedForm_EmailRecipient', $recipient = $this->objFromFixture(UserDefinedForm_EmailRecipient::class,
'invalid-recipient-list'); 'invalid-recipient-list');
$result = $recipient->validate(); $result = $recipient->validate();
$this->assertFalse($result->valid()); $this->assertFalse($result->valid());
@ -469,7 +505,7 @@ class UserDefinedFormTest extends FunctionalTest
$this->assertNotContains('filtered2@example.com', $result->message()); $this->assertNotContains('filtered2@example.com', $result->message());
// test valid email addresses pass validation // test valid email addresses pass validation
$recipient = $this->objFromFixture('UserDefinedForm_EmailRecipient', $recipient = $this->objFromFixture(UserDefinedForm_EmailRecipient::class,
'valid-recipient-list'); 'valid-recipient-list');
$result = $recipient->validate(); $result = $recipient->validate();
$this->assertTrue($result->valid()); $this->assertTrue($result->valid());

View File

@ -1,5 +1,26 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Task;
use SilverStripe\Core\Config\Config;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
use SilverStripe\UserForms\Model\EditableFormField\EditableNumericField;
use SilverStripe\Security\Group;
use SilverStripe\UserForms\Model\EditableFormField\EditableMemberListField;
use SilverStripe\UserForms\Model\EditableFormField\EditableLiteralField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFormHeading;
use SilverStripe\Assets\Folder;
use SilverStripe\UserForms\Model\EditableFormField\EditableFileField;
use SilverStripe\UserForms\Model\EditableFormField\EditableDateField;
use SilverStripe\UserForms\Model\EditableFormField\EditableCheckbox;
use SilverStripe\UserForms\Task\UserFormsUpgradeService;
use SilverStripe\Dev\SapphireTest;
class UserFormsUpgradeServiceTest extends SapphireTest class UserFormsUpgradeServiceTest extends SapphireTest
{ {
@ -7,13 +28,13 @@ class UserFormsUpgradeServiceTest extends SapphireTest
public function setUp() public function setUp()
{ {
Config::inst()->update('UserDefinedForm', 'upgrade_on_build', false); Config::inst()->update(UserDefinedForm::class, 'upgrade_on_build', false);
parent::setUp(); parent::setUp();
// Assign rules programatically // Assign rules programatically
$field1 = $this->objFromFixture('EditableTextField', 'text1'); $field1 = $this->objFromFixture(EditableTextField::class, 'text1');
$field2 = $this->objFromFixture('EditableTextField', 'text2'); $field2 = $this->objFromFixture(EditableTextField::class, 'text2');
$field3 = $this->objFromFixture('EditableTextField', 'text3'); $field3 = $this->objFromFixture(EditableTextField::class, 'text3');
$field3->CustomRules = serialize(array( $field3->CustomRules = serialize(array(
array( array(
@ -32,7 +53,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
$field3->write(); $field3->write();
// Assign settings programatically // Assign settings programatically
$field4 = $this->objFromFixture('EditableTextField', 'text4'); $field4 = $this->objFromFixture(EditableTextField::class, 'text4');
$field4->CustomSettings = serialize(array( $field4->CustomSettings = serialize(array(
'MinLength' => 20, 'MinLength' => 20,
'MaxLength' => 100, 'MaxLength' => 100,
@ -44,7 +65,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
)); ));
$field4->write(); $field4->write();
$numeric1 = $this->objFromFixture('EditableNumericField', 'numeric1'); $numeric1 = $this->objFromFixture(EditableNumericField::class, 'numeric1');
$numeric1->CustomSettings = serialize(array( $numeric1->CustomSettings = serialize(array(
'RightTitle' => 'Number of %', 'RightTitle' => 'Number of %',
'Default' => 1, 'Default' => 1,
@ -54,8 +75,8 @@ class UserFormsUpgradeServiceTest extends SapphireTest
)); ));
$numeric1->write(); $numeric1->write();
$group1 = $this->objFromFixture('Group', 'group1'); $group1 = $this->objFromFixture(Group::class, 'group1');
$members1 = $this->objFromFixture('EditableMemberListField', 'members1'); $members1 = $this->objFromFixture(EditableMemberListField::class, 'members1');
$members1->CustomSettings = serialize(array( $members1->CustomSettings = serialize(array(
'RightTitle' => 'Select group', 'RightTitle' => 'Select group',
'GroupID' => $group1->ID, 'GroupID' => $group1->ID,
@ -63,7 +84,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
)); ));
$members1->write(); $members1->write();
$literal1 = $this->objFromFixture('EditableLiteralField', 'literal1'); $literal1 = $this->objFromFixture(EditableLiteralField::class, 'literal1');
$literal1->CustomSettings = serialize(array( $literal1->CustomSettings = serialize(array(
'HideFromReports' => 1, 'HideFromReports' => 1,
'RightTitle' => 'Literal', 'RightTitle' => 'Literal',
@ -72,7 +93,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
)); ));
$literal1->write(); $literal1->write();
$heading1 = $this->objFromFixture('EditableFormHeading', 'heading1'); $heading1 = $this->objFromFixture(EditableFormHeading::class, 'heading1');
$heading1->CustomSettings = serialize(array( $heading1->CustomSettings = serialize(array(
'RightTitle' => 'Right', 'RightTitle' => 'Right',
'Level' => 3, 'Level' => 3,
@ -81,22 +102,22 @@ class UserFormsUpgradeServiceTest extends SapphireTest
)); ));
$heading1->write(); $heading1->write();
$folder = $this->objFromFixture('Folder', 'folder1'); $folder = $this->objFromFixture(Folder::class, 'folder1');
$file1 = $this->objFromFixture('EditableFileField', 'file1'); $file1 = $this->objFromFixture(EditableFileField::class, 'file1');
$file1->CustomSettings = serialize(array( $file1->CustomSettings = serialize(array(
'RightTitle' => 'File field', 'RightTitle' => 'File field',
'Folder' => $folder->ID 'Folder' => $folder->ID
)); ));
$file1->write(); $file1->write();
$date1 = $this->objFromFixture('EditableDateField', 'date1'); $date1 = $this->objFromFixture(EditableDateField::class, 'date1');
$date1->CustomSettings = serialize(array( $date1->CustomSettings = serialize(array(
'RightTitle' => 'Date field', 'RightTitle' => 'Date field',
'DefaultToToday' => '1' 'DefaultToToday' => '1'
)); ));
$date1->write(); $date1->write();
$checkbox1 = $this->objFromFixture('EditableCheckbox', 'checkbox1'); $checkbox1 = $this->objFromFixture(EditableCheckbox::class, 'checkbox1');
$checkbox1->CustomSettings = serialize(array( $checkbox1->CustomSettings = serialize(array(
'Default' => true, 'Default' => true,
'RightTitle' => 'Check this' 'RightTitle' => 'Check this'
@ -109,7 +130,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
*/ */
protected function getService() protected function getService()
{ {
return singleton('UserFormsUpgradeService'); return singleton(UserFormsUpgradeService::class);
} }
/** /**
@ -121,9 +142,9 @@ class UserFormsUpgradeServiceTest extends SapphireTest
$service->setQuiet(true); $service->setQuiet(true);
$service->run(); $service->run();
$field1 = $this->objFromFixture('EditableTextField', 'text1'); $field1 = $this->objFromFixture(EditableTextField::class, 'text1');
$field2 = $this->objFromFixture('EditableTextField', 'text2'); $field2 = $this->objFromFixture(EditableTextField::class, 'text2');
$field3 = $this->objFromFixture('EditableTextField', 'text3'); $field3 = $this->objFromFixture(EditableTextField::class, 'text3');
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array( array(
@ -149,13 +170,13 @@ class UserFormsUpgradeServiceTest extends SapphireTest
$service->setQuiet(true); $service->setQuiet(true);
$service->run(); $service->run();
$group1 = $this->objFromFixture('Group', 'group1'); $group1 = $this->objFromFixture(Group::class, 'group1');
$form = $this->objFromFixture('UserDefinedForm', 'form-with-settings'); $form = $this->objFromFixture(UserDefinedForm::class, 'form-with-settings');
$folder = $this->objFromFixture('Folder', 'folder1'); $folder = $this->objFromFixture(Folder::class, 'folder1');
$this->assertDOSEquals(array( $this->assertDOSEquals(array(
array( array(
'ClassName' => 'EditableTextField', 'ClassName' => EditableTextField::class,
'Title' => 'Text with rule', 'Title' => 'Text with rule',
'MinLength' => 20, 'MinLength' => 20,
'MaxLength' => 100, 'MaxLength' => 100,
@ -166,7 +187,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
'Default' => 'Enter your text here', 'Default' => 'Enter your text here',
), ),
array( array(
'ClassName' => 'EditableNumericField', 'ClassName' => EditableNumericField::class,
'Title' => 'Numeric 1', 'Title' => 'Numeric 1',
'RightTitle' => 'Number of %', 'RightTitle' => 'Number of %',
'Default' => 1, 'Default' => 1,
@ -175,14 +196,14 @@ class UserFormsUpgradeServiceTest extends SapphireTest
'ShowOnLoad' => true, 'ShowOnLoad' => true,
), ),
array( array(
'ClassName' => 'EditableMemberListField', 'ClassName' => EditableMemberListField::class,
'Title' => 'Members 1', 'Title' => 'Members 1',
'RightTitle' => 'Select group', 'RightTitle' => 'Select group',
'GroupID' => $group1->ID, 'GroupID' => $group1->ID,
'ShowOnLoad' => false, 'ShowOnLoad' => false,
), ),
array( array(
'ClassName' => 'EditableLiteralField', 'ClassName' => EditableLiteralField::class,
'Title' => 'Literal 1', 'Title' => 'Literal 1',
'HideFromReports' => true, 'HideFromReports' => true,
'RightTitle' => 'Literal', 'RightTitle' => 'Literal',
@ -190,7 +211,7 @@ class UserFormsUpgradeServiceTest extends SapphireTest
'ShowOnLoad' => true, 'ShowOnLoad' => true,
), ),
array( array(
'ClassName' => 'EditableFormHeading', 'ClassName' => EditableFormHeading::class,
'Title' => 'Heading 1', 'Title' => 'Heading 1',
'RightTitle' => 'Right', 'RightTitle' => 'Right',
'Level' => 3, 'Level' => 3,
@ -198,19 +219,19 @@ class UserFormsUpgradeServiceTest extends SapphireTest
'ShowOnLoad' => false, 'ShowOnLoad' => false,
), ),
array( array(
'ClassName' => 'EditableFileField', 'ClassName' => EditableFileField::class,
'Title' => 'File 1', 'Title' => 'File 1',
'RightTitle' => 'File field', 'RightTitle' => 'File field',
'FolderID' => $folder->ID, 'FolderID' => $folder->ID,
), ),
array( array(
'ClassName' => 'EditableDateField', 'ClassName' => EditableDateField::class,
'Title' => 'Date 1', 'Title' => 'Date 1',
'RightTitle' => 'Date field', 'RightTitle' => 'Date field',
'DefaultToToday' => true, 'DefaultToToday' => true,
), ),
array( array(
'ClassName' => 'EditableCheckbox', 'ClassName' => EditableCheckbox::class,
'Title' => 'Checkbox 1', 'Title' => 'Checkbox 1',
'CheckedDefault' => true, 'CheckedDefault' => true,
'RightTitle' => 'Check this', 'RightTitle' => 'Check this',

View File

@ -1,5 +1,18 @@
<?php <?php
namespace SilverStripe\UserForms\Test\Task;
use SilverStripe\Versioned\Versioned;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Model\EditableFormField\EditableOption;
use SilverStripe\UserForms\Model\EditableFormField\EditableCheckboxGroupField;
use SilverStripe\Dev\SapphireTest;
class UserFormsVersionedTaskTest extends SapphireTest class UserFormsVersionedTaskTest extends SapphireTest
{ {
@ -14,20 +27,20 @@ class UserFormsVersionedTaskTest extends SapphireTest
public function testPublishing() public function testPublishing()
{ {
/** @var UserDefinedForm $form */ /** @var UserDefinedForm $form */
$form = $this->objFromFixture('UserDefinedForm', 'filtered-form-page'); $form = $this->objFromFixture(UserDefinedForm::class, 'filtered-form-page');
// Get id of options // Get id of options
$optionID = $this->idFromFixture('EditableOption', 'option-3'); $optionID = $this->idFromFixture(EditableOption::class, 'option-3');
$this->assertEmpty(Versioned::get_one_by_stage('EditableOption', 'Live', array('"ID" = ?' => $optionID))); $this->assertEmpty(Versioned::get_one_by_stage(EditableOption::class, 'Live', array('"ID" = ?' => $optionID)));
// Publishing writes this to live // Publishing writes this to live
$form->doPublish(); $form->doPublish();
$liveVersion = Versioned::get_versionnumber_by_stage('EditableOption', 'Live', $optionID, false); $liveVersion = Versioned::get_versionnumber_by_stage(EditableOption::class, 'Live', $optionID, false);
$this->assertNotEmpty($liveVersion); $this->assertNotEmpty($liveVersion);
// Add new option, and repeat publish process // Add new option, and repeat publish process
/** @var EditableCheckboxGroupField $list */ /** @var EditableCheckboxGroupField $list */
$list = $this->objFromFixture('EditableCheckboxGroupField', 'checkbox-group'); $list = $this->objFromFixture(EditableCheckboxGroupField::class, 'checkbox-group');
$newOption = new EditableOption(); $newOption = new EditableOption();
$newOption->Title = 'New option'; $newOption->Title = 'New option';
$newOption->Value = 'ok'; $newOption->Value = 'ok';
@ -38,12 +51,12 @@ class UserFormsVersionedTaskTest extends SapphireTest
$form->doPublish(); $form->doPublish();
// Un-modified option should not create a new version // Un-modified option should not create a new version
$newLiveVersion = Versioned::get_versionnumber_by_stage('EditableOption', 'Live', $optionID, false); $newLiveVersion = Versioned::get_versionnumber_by_stage(EditableOption::class, 'Live', $optionID, false);
$this->assertNotEmpty($newLiveVersion); $this->assertNotEmpty($newLiveVersion);
$this->assertEquals($liveVersion, $newLiveVersion); $this->assertEquals($liveVersion, $newLiveVersion);
// New option is successfully published // New option is successfully published
$newOptionLiveVersion = Versioned::get_versionnumber_by_stage('EditableOption', 'Live', $newOptionID, false); $newOptionLiveVersion = Versioned::get_versionnumber_by_stage(EditableOption::class, 'Live', $newOptionID, false);
$this->assertNotEmpty($newOptionLiveVersion); $this->assertNotEmpty($newOptionLiveVersion);
} }
} }