mirror of
https://github.com/silverstripe/silverstripe-spamprotection.git
synced 2024-10-22 14:05:59 +02:00
Merge pull request #13 from tractorcow/pulls/insertbefore
API Re-introduced ability to insert spam field before another existing field
This commit is contained in:
commit
39f7f0be45
@ -72,6 +72,7 @@ Options to configure are:
|
|||||||
|
|
||||||
*`name`* the form field name argument for the Captcha. Defaults to `Catcha`.
|
*`name`* the form field name argument for the Captcha. Defaults to `Catcha`.
|
||||||
*`title`* title of the Captcha form field. Defaults to `''`
|
*`title`* title of the Captcha form field. Defaults to `''`
|
||||||
|
*`insertBefore`* name of existing field to insert the spam protection field prior to
|
||||||
*`mapping`* an array mapping of the Form fields to the standardized list of
|
*`mapping`* an array mapping of the Form fields to the standardized list of
|
||||||
field names. The list of standardized fields to pass to the spam protector are:
|
field names. The list of standardized fields to pass to the spam protector are:
|
||||||
|
|
||||||
|
@ -93,8 +93,16 @@ class FormSpamProtectionExtension extends Extension {
|
|||||||
if($field = $protector->getFormField($name, $title)) {
|
if($field = $protector->getFormField($name, $title)) {
|
||||||
$field->setForm($this->owner);
|
$field->setForm($this->owner);
|
||||||
|
|
||||||
|
// Add before field specified by insertBefore
|
||||||
|
$inserted = false;
|
||||||
|
if(!empty($options['insertBefore'])) {
|
||||||
|
$inserted = $this->owner->Fields()->insertBefore($field, $options['insertBefore']);
|
||||||
|
}
|
||||||
|
if(!$inserted) {
|
||||||
|
// Add field to end if not added already
|
||||||
$this->owner->Fields()->push($field);
|
$this->owner->Fields()->push($field);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $this->owner;
|
return $this->owner;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
class FormSpamProtectionExtensionTest extends SapphireTest {
|
class FormSpamProtectionExtensionTest extends SapphireTest {
|
||||||
|
|
||||||
|
protected $usesDatabase = false;
|
||||||
|
|
||||||
public function setUp() {
|
public function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
@ -54,6 +56,36 @@ class FormSpamProtectionExtensionTest extends SapphireTest {
|
|||||||
|
|
||||||
$this->assertEquals('Qux', $form->Fields()->fieldByName('Borris')->Title());
|
$this->assertEquals('Qux', $form->Fields()->fieldByName('Borris')->Title());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInsertBefore() {
|
||||||
|
|
||||||
|
$form = $this->form->enableSpamProtection(array(
|
||||||
|
'protector' => 'FormSpamProtectionExtensionTest_FooProtector',
|
||||||
|
'insertBefore' => 'URL'
|
||||||
|
));
|
||||||
|
|
||||||
|
$fields = $form->Fields();
|
||||||
|
$this->assertEquals('Title', $fields[0]->Title());
|
||||||
|
$this->assertEquals('Comment', $fields[1]->Title());
|
||||||
|
$this->assertEquals('Foo', $fields[2]->Title());
|
||||||
|
$this->assertEquals('URL', $fields[3]->Title());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInsertBeforeMissing() {
|
||||||
|
|
||||||
|
$form = $this->form->enableSpamProtection(array(
|
||||||
|
'protector' => 'FormSpamProtectionExtensionTest_FooProtector',
|
||||||
|
'insertBefore' => 'NotAField'
|
||||||
|
));
|
||||||
|
|
||||||
|
// field should default to the end instead
|
||||||
|
$fields = $form->Fields();
|
||||||
|
$this->assertEquals('Title', $fields[0]->Title());
|
||||||
|
$this->assertEquals('Comment', $fields[1]->Title());
|
||||||
|
$this->assertEquals('URL', $fields[2]->Title());
|
||||||
|
$this->assertEquals('Foo', $fields[3]->Title());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user