From d7c9d5e28182886e4fcb82a99e0854e39bf30ca0 Mon Sep 17 00:00:00 2001 From: Romain Ruaud Date: Wed, 8 Feb 2017 10:54:03 +0100 Subject: [PATCH] Better attribute configuration screen (#325) * Conditioning the visibility of the is_displayed_in_autocomplete to the field being filterable in search. --- .../Attribute/Edit/Tab/FrontPlugin.php | 24 +++++++++++++++++++ .../catalog/product/attribute/js.phtml | 8 ++++++- .../catalog/product/attribute/js.phtml | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/module-elasticsuite-catalog/Block/Plugin/Adminhtml/Product/Attribute/Edit/Tab/FrontPlugin.php b/src/module-elasticsuite-catalog/Block/Plugin/Adminhtml/Product/Attribute/Edit/Tab/FrontPlugin.php index 12c915a16..6dc84185e 100644 --- a/src/module-elasticsuite-catalog/Block/Plugin/Adminhtml/Product/Attribute/Edit/Tab/FrontPlugin.php +++ b/src/module-elasticsuite-catalog/Block/Plugin/Adminhtml/Product/Attribute/Edit/Tab/FrontPlugin.php @@ -96,6 +96,8 @@ public function aroundSetForm(Front $subject, \Closure $proceed, Form $form) $form->getElement('is_used_in_autocomplete')->setValue(1); } + $this->appendFieldsDependency($form, $subject); + return $block; } @@ -353,4 +355,26 @@ private function appendSliderDisplayRelatedFields($form, $subject) return $this; } + + /** + * Manage dependency between fields. + * + * @param Front $subject The StoreFront tab + * + * @return FrontPlugin + */ + private function appendFieldsDependency($subject) + { + /** @var \Magento\Backend\Block\Widget\Form\Element\Dependence $dependencyBlock */ + $dependencyBlock = $subject->getChildBlock('form_after'); + + if ($dependencyBlock) { + $dependencyBlock + ->addFieldMap('is_displayed_in_autocomplete', 'is_displayed_in_autocomplete') + ->addFieldMap('is_filterable_in_search', 'is_filterable_in_search') + ->addFieldDependence('is_displayed_in_autocomplete', 'is_filterable_in_search', '1'); + } + + return $this; + } } diff --git a/src/module-elasticsuite-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml b/src/module-elasticsuite-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml index 66eb0a881..f32f6190e 100644 --- a/src/module-elasticsuite-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml +++ b/src/module-elasticsuite-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml @@ -62,7 +62,13 @@ { checkOptionsPanelVisibility(); switchDefaultValueField(); - if($('frontend_input') && ($('frontend_input').value=='select' || $('frontend_input').value=='multiselect' || $('frontend_input').value=='price' || $('frontend_input').value=='text')) { + if($('frontend_input') && + ($('frontend_input').value == 'select' + || $('frontend_input').value == 'multiselect' + || $('frontend_input').value == 'price' + || $('frontend_input').value == 'text') + || $('frontend_input').value == 'boolean') + ) { if($('is_filterable') && !$('is_filterable').getAttribute('readonly')){ $('is_filterable').disabled = false; } diff --git a/src/module-elasticsuite-swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml b/src/module-elasticsuite-swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml index f5adb0c2c..bfee2f10a 100644 --- a/src/module-elasticsuite-swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml +++ b/src/module-elasticsuite-swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml @@ -104,7 +104,7 @@ checkOptionsPanelVisibility(); switchDefaultValueField(); if (frontendInput - && (jQuery.inArray(frontendInput.value, selectFields) >= 0 || (frontendInput.value == "text")) + && (jQuery.inArray(frontendInput.value, selectFields) >= 0 || (frontendInput.value == "text") || frontendInput.value == "boolean") ) { if (isFilterable && !isFilterable.getAttribute('readonly')) { isFilterable.disabled = false;