Merge pull request #310 from silverstripeltd/bugfix/read-only-mode-fix

ENH Refactor the way selected options are returned for read only tag fields
This commit is contained in:
Guy Sartorelli 2024-10-07 13:17:09 +13:00 committed by GitHub
commit 63cfb0d591
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 1 deletions

View File

@ -27,7 +27,8 @@ class ReadonlyTagField extends TagField
{
$options = array();
foreach ($this->getOptions()->filter('Selected', true) as $option) {
// only get the selected options
foreach ($this->getOptions(true) as $option) {
$options[] = $option->Title;
}

View File

@ -408,6 +408,22 @@ class TagFieldTest extends SapphireTest
$field->setTitleField('Name');
$readOnlyField = $field->performReadonlyTransformation();
$this->assertEquals('Name', $readOnlyField->getTitleField());
// Also check Field options
$field = new TagField('Tags', '', TagFieldTestBlogTag::get());
$field->setTitleField('Title');
$field->setValue(['Tag1']);
// When not read only (and not lazy-loading) all source options are returned
$htmlText = $field->Field();
$this->assertStringContainsString('Tag1', $htmlText);
$this->assertStringContainsString('222', $htmlText);
// When read only mode, only selected options are returned
$readOnlyField = $field->performReadonlyTransformation();
$htmlText = $readOnlyField->Field();
$this->assertStringContainsString('Tag1', $htmlText);
$this->assertStringNotContainsString('222', $htmlText);
}
public function testItDisplaysWithSelectedValuesFromDataList()