diff --git a/FEATURES/163422 b/FEATURES/163422 new file mode 100644 index 0000000000000000000000000000000000000000..82b60ad67f4220518e9516e6f18ffe1d9fa0f716 --- /dev/null +++ b/FEATURES/163422 @@ -0,0 +1,10 @@ + '163422' => + ['Label' => $this->_('Boite Recherche : Affichage des options dans l'ordre de selection des facettes pour la recherche'), + 'Desc' => 'Les options proposées suivent dorénavant l\'ordonnancement tel qu\'il a été défini côté Administration dans l\écran de conception des facettes de domaines. Auparavant les options étaient affichées dans l'ordre alphabétique.', + 'Image' => '', + 'Video' => '', + 'Category' => '', + 'Right' => function($feature_description, $user) {return true;}, + 'Wiki' => '', + 'Test' => '', + 'Date' => '2022-09-23'], \ No newline at end of file diff --git a/VERSIONS_WIP/163422 b/VERSIONS_WIP/163422 new file mode 100644 index 0000000000000000000000000000000000000000..d61f89cfe7016a1cddedd74c93a19c91084fbca2 --- /dev/null +++ b/VERSIONS_WIP/163422 @@ -0,0 +1 @@ + - fonctionnalité #163422 : Boite Recherche : Les options dans les selecteurs pour les facettes de domaines sont dorénavant affichées dans l'ordre de selection côté administration et non dans l'ordre alphabétique. \ No newline at end of file diff --git a/library/templates/Intonation/Library/Widget/Search/View.php b/library/templates/Intonation/Library/Widget/Search/View.php index 2e3c77137879db14cbc1da280e4253bbbb6a4ff3..271adf615d139a0da40fbc240587e1cbb6e6cd34 100644 --- a/library/templates/Intonation/Library/Widget/Search/View.php +++ b/library/templates/Intonation/Library/Widget/Search/View.php @@ -353,17 +353,19 @@ abstract class IntonationSearchRenderAbstract { protected function _createDomainSelectorByFacetCode(ZendAfi_Form $form, string $facet_code) : ?Zend_Form_Element { $facet_thesaurus_id = substr($facet_code, 1); - if ((!$facets = Class_CodifThesaurus::findAllBy([Class_CodifThesaurus::clauseStart('id_thesaurus', $facet_thesaurus_id), - Class_CodifThesaurus::clauseNotIs('id_origine'), - 'code' => Class_CodifThesaurusFixed::CODE_DOMAIN_FACET, - 'order' => 'libelle_facette']))) - return null; - $parent_facet = Class_CodifThesaurus::findFirstBy(['id_thesaurus' => $facet_thesaurus_id]); + if ((!$domain_ids = $parent_facet->getRuleListDomainId())) + return null; $options = ['' => $parent_facet->getLibelleFacette()]; - foreach ($facets as $facet) + foreach($domain_ids as $domain_id) { + $domain = Class_Catalogue::find($domain_id); + if(!$facet = Class_CodifThesaurus::findFirstBy(['libelle_facette' => $domain->getLibelle(), + Class_CodifThesaurus::clauseNotIs('id_origine'), + 'code' => Class_CodifThesaurusFixed::CODE_DOMAIN_FACET])) + continue; $options[Class_CodifThesaurus::CODE_FACETTE . $facet->getIdThesaurus()] = $facet->getLibelleFacette(); + } return $form->createElement('select', 'custom_multifacets_' . $facet_code, diff --git a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsFixture.php b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsFixture.php index 7d96a57d200d8002cc7bfe68c48eb27c995d2cfe..8a7247a81adf64c273c2a536d9941908f490405b 100644 --- a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsFixture.php +++ b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsFixture.php @@ -118,7 +118,7 @@ class DynamicFacetOnDomainsFixture { 'id_thesaurus' => 'SUPP', 'libelle' => 'Supports', 'libelle_facette' => 'Les supports', - 'rule_list_domain_id' => [2, 3, 4] + 'rule_list_domain_id' => [3, 2, 4] ]); return $this; diff --git a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsSearchWidgetTest.php b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsSearchWidgetTest.php index 29dcb731a83a8685169ef46a95040dad2dfbf37d..b68d7046c07e03ab96cb9260cb46147de3084873 100644 --- a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsSearchWidgetTest.php +++ b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsSearchWidgetTest.php @@ -123,16 +123,28 @@ class DynamicFacetOnDomainsSearchWidgetWithFacetsTest extends AbstractController /** @test */ public function formRechercheShouldContainsSelectCustomMultifacetsHSUPPWithOptionsHSUPP0001_HSUPP0002_Supports() { - $this->assertXPath('//div[@id="boite_1"]//select[@name="custom_multifacets_HSUPP"]/option[@value="HSUPP0002"][text()="Numérique"]/following-sibling::option[@value="HSUPP0001"][text()="Papier"]'); + $this->assertXPath('//div[@id="boite_1"]//select[@name="custom_multifacets_HSUPP"]/option[@value="HSUPP0001"][text()="Papier"]/following-sibling::option[@value="HSUPP0002"][text()="Numérique"]'); } /** @test */ - public function selectCustomMultifacetsFirstOptionShouldBeLesSupportsWithEmptyValue() { + public function selectCustomMultifacetsSecondOptionShouldBeLesSupportsWithEmptyValue() { $this->assertXPath('//div[@id="boite_1"]//select[@name="custom_multifacets_HSUPP"]/option[1][@value=0][text()="Les supports"]'); } + /** @test */ + public function selectCustomMultifacetsFirstOptionShouldBePapierWithValueHSUPP001() { + $this->assertXPath('//div[@id="boite_1"]//select[@name="custom_multifacets_HSUPP"]/option[2][@value="HSUPP0001"][text()="Papier"]'); + } + + + /** @test */ + public function selectCustomMultifacetsSecondOptionShouldBeNumeriqueWithValueHSUPP002() { + $this->assertXPath('//div[@id="boite_1"]//select[@name="custom_multifacets_HSUPP"]/option[3][@value="HSUPP0002"][text()="Numérique"]'); + } + + /** @test */ public function selectCustomMultifacetsShouldContainsThreeOptions() { $this->assertXPathCount('//select[@name="custom_multifacets_HSUPP"]/option', 3);