mirror of
https://github.com/silverstripe/silverstripe-spamprotection.git
synced 2024-10-22 14:05:59 +02:00
FIX Missing syntax opening in readme, and tweaks for pre-emptive userforms compatibility
This commit is contained in:
parent
a1ea0df540
commit
680411e2ac
@ -101,6 +101,7 @@ be set as the spam protector. The `getFormField()` method returns the
|
||||
`FormField` to be inserted into the `Form`. The `FormField` returned should be
|
||||
in charge of the validation process.
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
use CaptchaField;
|
||||
|
@ -2,17 +2,25 @@
|
||||
|
||||
namespace SilverStripe\SpamProtection;
|
||||
|
||||
use SilverStripe\Core\ClassInfo;
|
||||
use SilverStripe\Core\Convert;
|
||||
use SilverStripe\Forms\DropdownField;
|
||||
use SilverStripe\Forms\FieldGroup;
|
||||
use SilverStripe\Forms\FieldList;
|
||||
use SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension;
|
||||
use SilverStripe\Forms\FormField;
|
||||
use SilverStripe\ORM\UnsavedRelationList;
|
||||
use SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension;
|
||||
use SilverStripe\UserForms\Model\EditableFormField;
|
||||
use SilverStripe\UserForms\Model\EditableFormField\EditableEmailField;
|
||||
use SilverStripe\UserForms\Model\EditableFormField\EditableNumericField;
|
||||
use SilverStripe\UserForms\Model\EditableFormField\EditableTextField;
|
||||
|
||||
// @todo
|
||||
use EditableEmailField;
|
||||
use EditableFormField;
|
||||
use EditableNumericField;
|
||||
use EditableTextField;
|
||||
/**
|
||||
* @todo The userforms namespaces may still change, as the branch is not merged in yet
|
||||
*/
|
||||
if (!class_exists(EditableFormFields::class)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Editable Spam Protecter Field. Used with the User Defined Forms module (if
|
||||
@ -20,10 +28,8 @@ use EditableTextField;
|
||||
*
|
||||
* @package spamprotection
|
||||
*/
|
||||
// @todo update namespaced for userforms when it is 4.0 compatible
|
||||
if (class_exists('EditableFormField')) {
|
||||
class EditableSpamProtectionField extends EditableFormField
|
||||
{
|
||||
class EditableSpamProtectionField extends EditableFormField
|
||||
{
|
||||
private static $singular_name = 'Spam Protection Field';
|
||||
|
||||
private static $plural_name = 'Spam Protection Fields';
|
||||
@ -96,7 +102,7 @@ if (class_exists('EditableFormField')) {
|
||||
{
|
||||
|
||||
// Get list of all configured classes available for spam detection
|
||||
$types = self::config()->check_fields;
|
||||
$types = $this->config()->get('check_fields');
|
||||
$typesInherit = array();
|
||||
foreach ($types as $type) {
|
||||
$subTypes = ClassInfo::subclassesFor($type);
|
||||
@ -111,16 +117,6 @@ if (class_exists('EditableFormField')) {
|
||||
->exclude('Title', ''); // Ignore this field and those without titles
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is in place for userforms 2.x
|
||||
*
|
||||
* @deprecated 3.0 Please use {@link getCMSFields()} instead
|
||||
*/
|
||||
public function getFieldConfiguration()
|
||||
{
|
||||
return $this->getCMSFields();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the spam field mapping values to a serialised DB field
|
||||
*
|
||||
@ -156,10 +152,12 @@ if (class_exists('EditableFormField')) {
|
||||
// Get protector
|
||||
$protector = FormSpamProtectionExtension::get_protector();
|
||||
if (!$protector) {
|
||||
var_dump('a');
|
||||
return $fields;
|
||||
}
|
||||
|
||||
if ($this->Parent()->Fields() instanceof UnsavedRelationList) {
|
||||
var_dump('b');
|
||||
return $fields;
|
||||
}
|
||||
|
||||
@ -173,7 +171,7 @@ if (class_exists('EditableFormField')) {
|
||||
));
|
||||
|
||||
// Generate field specific settings
|
||||
$mappableFields = Config::inst()->get(FormSpamProtectionExtension::class, 'mappable_fields');
|
||||
$mappableFields = FormSpamProtectionExtension::config()->get('mappable_fields');
|
||||
$mappableFieldsMerged = array_combine($mappableFields, $mappableFields);
|
||||
foreach ($this->getCandidateFields() as $otherField) {
|
||||
$mapSetting = "Map-{$otherField->Name}";
|
||||
@ -255,7 +253,7 @@ if (class_exists('EditableFormField')) {
|
||||
|
||||
public function getFieldValidationOptions()
|
||||
{
|
||||
return new FieldList();
|
||||
return FieldList::create();
|
||||
}
|
||||
|
||||
public function getRequired()
|
||||
@ -272,5 +270,4 @@ if (class_exists('EditableFormField')) {
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace SilverStripe\SpamProtection\Extension;
|
||||
|
||||
use SilverStripe\Core\Config\Config;
|
||||
use SilverStripe\Core\Config\Configurable;
|
||||
use SilverStripe\Core\Extension;
|
||||
use SilverStripe\Core\Injector\Injector;
|
||||
|
||||
@ -15,6 +16,8 @@ use SilverStripe\Core\Injector\Injector;
|
||||
|
||||
class FormSpamProtectionExtension extends Extension
|
||||
{
|
||||
use Configurable;
|
||||
|
||||
/**
|
||||
* @config
|
||||
*
|
||||
|
@ -2,14 +2,16 @@
|
||||
|
||||
namespace SilverStripe\SpamProtection\Tests;
|
||||
|
||||
use UserDefinedForm;
|
||||
use SilverStripe\UserForms\Model\UserDefinedForm;
|
||||
use SilverStripe\Core\Config\Config;
|
||||
use SilverStripe\Dev\SapphireTest;
|
||||
use SilverStripe\Forms\FieldGroup;
|
||||
use SilverStripe\Forms\Form;
|
||||
use SilverStripe\Forms\RequiredFields;
|
||||
use SilverStripe\Forms\TextField;
|
||||
use SilverStripe\SpamProtection\EditableSpamProtectionField;
|
||||
use SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension;
|
||||
use SilverStripe\SpamProtection\Tests\EditableSpamProtectionFieldTest\Protector;
|
||||
use SilverStripe\SpamProtection\Tests\Stub\Protector;
|
||||
|
||||
class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
{
|
||||
@ -19,7 +21,7 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
if (!class_exists('EditableSpamProtectionField')) {
|
||||
if (!class_exists(EditableSpamProtectionField::class)) {
|
||||
$this->markTestSkipped('"userforms" module not installed');
|
||||
}
|
||||
|
||||
@ -64,12 +66,7 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
$formMock
|
||||
->expects($this->once())
|
||||
->method('sessionMessage')
|
||||
->with(
|
||||
$this->anything(),
|
||||
$this->stringContains('some field message'),
|
||||
$this->anything(),
|
||||
$this->anything()
|
||||
);
|
||||
->with($this->stringContains('some field message'), $this->anything());
|
||||
|
||||
$formFieldMock->validateField(array('MyField' => null), $formMock);
|
||||
}
|
||||
@ -89,13 +86,8 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
|
||||
$formMock
|
||||
->expects($this->once())
|
||||
->method('sessionMessage')
|
||||
->with(
|
||||
$this->anything(),
|
||||
$this->stringContains('default error message'),
|
||||
$this->anything(),
|
||||
$this->anything()
|
||||
);
|
||||
->method('sessionError')
|
||||
->with($this->stringContains('default error message'));
|
||||
|
||||
$formFieldMock->validateField(array('MyField' => null), $formMock);
|
||||
}
|
||||
@ -105,7 +97,7 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
$field = $this->getEditableFormFieldMock();
|
||||
$fields = $field->getCMSFields();
|
||||
|
||||
$this->assertInstanceOf('FieldGroup', $fields->fieldByName('Root.Main.SpamFieldMapping'));
|
||||
$this->assertInstanceOf(FieldGroup::class, $fields->fieldByName('Root.Main.SpamFieldMapping'));
|
||||
}
|
||||
|
||||
public function testSpamMapSettingsAreSerialised()
|
||||
@ -121,9 +113,11 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
|
||||
protected function getFormMock()
|
||||
{
|
||||
$formMock = $this->getMockBuilder(Form::class, array('sessionMessage'))
|
||||
$formMock = $this->getMockBuilder(Form::class)
|
||||
->setMethods(['sessionMessage', 'sessionError', 'getValidator'])
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$formMock
|
||||
->expects($this->any())
|
||||
->method('getValidator')
|
||||
@ -137,7 +131,7 @@ class EditableSpamProtectionFieldTest extends SapphireTest
|
||||
$page = new UserDefinedForm();
|
||||
$page->write();
|
||||
|
||||
$formFieldMock = $this->getMockBuilder('TextField')
|
||||
$formFieldMock = $this->getMockBuilder(TextField::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user