diff --git a/src/Plugin/facets/widget/CheckboxWidget.php b/src/Plugin/facets/widget/CheckboxWidget.php index 1ab2bf6..997c928 100644 --- a/src/Plugin/facets/widget/CheckboxWidget.php +++ b/src/Plugin/facets/widget/CheckboxWidget.php @@ -46,31 +46,35 @@ class CheckboxWidget implements WidgetInterface { public function build(FacetInterface $facet) { /** @var \Drupal\facets\Result\Result[] $results */ $results = $facet->getResults(); - $form = array(); + $form = [ + '#type' => 'form', + '#method' => 'get', + ]; + $options = []; $configuration = $facet->get('widget_configs'); $show_numbers = (bool) $configuration['show_numbers']; - $options = []; + $form[$facet->getFieldAlias()] = [ + '#type' => 'checkboxes', + '#title' => $facet->getName(), + ]; + foreach ($results as $result) { - // Get the link. $text = $result->getDisplayValue(); - if ($show_numbers) { $text .= ' (' . $result->getCount() . ')'; } - $url = $result->getUrl()->toString(); - $form[$url] = array( - '#type' => 'checkbox', - '#title' => '' . $text . '', - ); + $options[$result->getRawValue()] = $text; if ($result->isActive()) { - $form[$url]['#attributes']['checked'] = 'checked'; + $form[$facet->getFieldAlias()]['#default_value'] = $result->getRawValue(); } } + $form[$facet->getFieldAlias()]['#options'] = $options; + return $form; } diff --git a/tests/src/Unit/Plugin/widget/CheckboxWidgetTest.php b/tests/src/Unit/Plugin/widget/CheckboxWidgetTest.php index 7b3c6c1..fcbdd91 100644 --- a/tests/src/Unit/Plugin/widget/CheckboxWidgetTest.php +++ b/tests/src/Unit/Plugin/widget/CheckboxWidgetTest.php @@ -53,19 +53,11 @@ class CheckboxWidgetTest extends UnitTestCase { } $this->originalResults = $original_results; - $link_generator = $this->getMockBuilder('\Drupal\Core\Utility\LinkGenerator') - ->disableOriginalConstructor() - ->getMock(); - $link_generator->expects($this->atLeastOnce()) - ->method('generate') - ->will($this->returnArgument(0)); - $string_translation = $this->getMockBuilder('\Drupal\Core\StringTranslation\TranslationManager') ->disableOriginalConstructor() ->getMock(); $container_builder = new ContainerBuilder(); - $container_builder->set('link_generator', $link_generator); $container_builder->set('string_translation', $string_translation); \Drupal::setContainer($container_builder); @@ -78,15 +70,21 @@ class CheckboxWidgetTest extends UnitTestCase { public function testDefaultSettings() { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); + $facet->setFieldIdentifier('test_field'); $output = $this->widget->build($facet); $this->assertInternalType('array', $output); - $this->assertCount(4, $output['#items']); + $this->assertCount(4, $output['test_field']['#options']); - $expected_links = ['Llama', 'Badger', 'Duck', 'Alpaca']; + $expected_links = [ + 'llama' => 'Llama', + 'badger' => 'Badger', + 'duck' => 'Duck', + 'alpaca' => 'Alpaca', + ]; foreach ($expected_links as $index => $value) { - $this->assertEquals($value, $output['#items'][$index]); + $this->assertEquals($value, $output['test_field']['#options'][$index]); } } @@ -97,15 +95,21 @@ class CheckboxWidgetTest extends UnitTestCase { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); $facet->set('widget_configs', ['show_numbers' => 1]); + $facet->setFieldIdentifier('test_field'); $output = $this->widget->build($facet); $this->assertInternalType('array', $output); - $this->assertCount(4, $output['#items']); + $this->assertCount(4, $output['test_field']['#options']); - $expected_links = ['Llama (10)', 'Badger (20)', 'Duck (15)', 'Alpaca (9)']; + $expected_links = [ + 'llama' => 'Llama (10)', + 'badger' => 'Badger (20)', + 'duck' => 'Duck (15)', + 'alpaca' => 'Alpaca (9)', + ]; foreach ($expected_links as $index => $value) { - $this->assertEquals($value, $output['#items'][$index]); + $this->assertEquals($value, $output['test_field']['#options'][$index]); } }