mirror of
https://github.com/silverstripe/silverstripe-userforms.git
synced 2024-10-22 17:05:42 +02:00
API Implement SS4 namespacing, add userforms namespaces
This commit is contained in:
parent
e11cbc5cfc
commit
eaf374adc5
65
.upgrade.yml
Normal file
65
.upgrade.yml
Normal 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
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
));
|
));
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\UserForms\FormField;
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Forms\CheckboxSetField;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @package userforms
|
* @package userforms
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\UserForms\Model\EditableFormField;
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Forms\CheckboxField;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EditableCheckbox
|
* EditableCheckbox
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\UserForms\Model\EditableFormField;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\UserForms\FormField\UserFormsCheckboxSetField;
|
||||||
|
use SilverStripe\UserForms\Model\EditableCustomRule;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EditableCheckboxGroup
|
* EditableCheckboxGroup
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\UserForms\Model\EditableFormField;
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Forms\EmailField;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EditableEmailField
|
* EditableEmailField
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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(' ')
|
||||||
);
|
);
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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(
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\UserForms\Model\EditableFormField;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Forms\OptionsetField;
|
||||||
|
use SilverStripe\UserForms\Model\EditableCustomRule;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EditableRadioField
|
* EditableRadioField
|
||||||
*
|
*
|
||||||
|
@ -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',
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -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');
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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();
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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() {
|
||||||
|
@ -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'));
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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']);
|
||||||
|
@ -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'
|
||||||
);
|
);
|
||||||
|
@ -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);
|
||||||
|
@ -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');
|
||||||
|
@ -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();
|
||||||
|
@ -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());
|
||||||
|
@ -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',
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user