API Mark EditableFormField::EffectiveDisplayRules() for deprecation

This commit is contained in:
Maxime Rainville 2020-01-13 12:12:14 +13:00
parent a0cedaeb38
commit 793f437289
3 changed files with 27 additions and 1 deletions

View File

@ -55,3 +55,9 @@ mappings:
EditableLiteralFieldTest: SilverStripe\UserForms\Tests\Model\EditableFormField\EditableLiteralFieldTest
SecureEditableFileFieldTest: SilverStripe\UserForms\Tests\Model\EditableFormField\SecureEditableFileFieldTest
UserDefinedForm_EmailRecipientConditionTest: SilverStripe\UserForms\Tests\Model\Recipient\EmailRecipientConditionTest
warnings:
methods:
'SilverStripe\UserForms\Model\EditableFormField->EffectiveDisplayRules()':
message: 'EffectiveDisplayRules deprecated because of new support for conditional required field'
url: 'https://github.com/silverstripe/silverstripe-userforms/pull/770/'

View File

@ -926,6 +926,20 @@ class EditableFormField extends DataObject
->setRecord($this);
}
/**
* Determine effective display rules for this field.
*
* @return SS_List
* @deprecated 5.6 No longer needed because of support for conditional required field.
*/
public function EffectiveDisplayRules()
{
if ($this->Required) {
return ArrayList::create();
}
return $this->DisplayRules();
}
/**
* Extracts info from DisplayRules into array so UserDefinedForm->buildWatchJS can run through it.
* @return array|null

View File

@ -73,12 +73,19 @@ class EditableFormFieldTest extends FunctionalTest
// it has 1 rule - when ticked the checkbox hides the text field
$this->assertEquals(1, $rules->Count());
// EffectiveDisplayRules rule has been deprecated
$this->assertEquals($rules, $checkbox->EffectiveDisplayRules());
$checkboxRule = $rules->First();
$checkboxRule->ConditionFieldID = $field->ID;
$this->assertEquals($checkboxRule->Display, 'Hide');
$this->assertEquals($checkboxRule->ConditionOption, 'HasValue');
$this->assertEquals($checkboxRule->FieldValue, '6');
// If field is required then all custom rules are disabled
$checkbox->Required = true;
$this->assertEquals(0, $checkbox->EffectiveDisplayRules()->count());
}
public function testEditableOptionEmptyValue()
@ -285,5 +292,4 @@ class EditableFormFieldTest extends FunctionalTest
$field = $this->objFromFixture(EditableTextField::class, $fieldName);
$this->assertEquals($expected, $field->isDisplayed($data));
}
}