Merge pull request #7982 from wilr/pulls/fix-selectiongroup

Fix invalid markup in SelectionGroup selected values
This commit is contained in:
Damian Mooyman 2018-04-10 13:16:16 +12:00 committed by GitHub
commit facaad5a03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 6 deletions

View File

@ -2,7 +2,7 @@
<ul class="SelectionGroup<% if extraClass %> $extraClass<% end_if %>">
<% loop $FieldSet %>
<% if $Selected %>
<li$Selected>
<li class="selected">
$RadioLabel
$FieldHolder
</li>
@ -12,7 +12,7 @@
<% else %>
<ul class="SelectionGroup<% if extraClass %> $extraClass<% end_if %>">
<% loop $FieldSet %>
<li$Selected>
<li <% if Selected %>class="selected"<% end_if %>>
<label>{$RadioButton} {$RadioLabel}</label>
<% if $FieldList %>
$FieldHolder

View File

@ -10,8 +10,7 @@ use SilverStripe\Forms\SelectionGroup;
class SelectionGroupTest extends SapphireTest
{
function testFieldHolder()
public function testFieldHolder()
{
$items = array(
new SelectionGroup_Item(
@ -41,7 +40,34 @@ class SelectionGroupTest extends SapphireTest
$this->assertContains('two view', (string)$listElTwo->div);
}
function testLegacyItemsFieldHolder()
public function testSelectedFieldHolder()
{
$items = array(
new SelectionGroup_Item(
'one',
new LiteralField('one', 'one view'),
'one title'
),
new SelectionGroup_Item(
'two',
new LiteralField('two', 'two view'),
'two title'
),
);
$field = new SelectionGroup('MyGroup', $items);
$field->setValue('two');
$parser = new CSSContentParser($field->FieldHolder());
$listEls = $parser->getBySelector('li');
$listElOne = $listEls[0];
$listElTwo = $listEls[1];
$this->assertEquals('one', (string)$listElOne->label[0]->input[0]['value']);
$this->assertEquals('two', (string)$listElTwo->label[0]->input[0]['value']);
$this->assertEquals('selected', (string)$listElTwo->attributes()->class);
}
public function testLegacyItemsFieldHolder()
{
$items = array(
'one' => new LiteralField('one', 'one view'),
@ -60,7 +86,7 @@ class SelectionGroupTest extends SapphireTest
$this->assertEquals(' two', (string)$listElTwo->label[0]);
}
function testLegacyItemsFieldHolderWithTitle()
public function testLegacyItemsFieldHolderWithTitle()
{
$items = array(
'one//one title' => new LiteralField('one', 'one view'),