From 25bb67c54b1cb25254bd156f98066ebe4faf0d4b Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Mon, 12 Sep 2016 17:58:45 +0200 Subject: [PATCH 01/29] removeWordsIfNoResults on suggestion index set to lastWords. Improves relevancy --- .../Algoliasearch/Helper/Entity/Suggestionhelper.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Suggestionhelper.php b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Suggestionhelper.php index 710db38e..ebec0a35 100644 --- a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Suggestionhelper.php +++ b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Suggestionhelper.php @@ -13,10 +13,11 @@ protected function getIndexNameSuffix() public function getIndexSettings($storeId) { return array( - 'attributesToIndex' => array('query'), - 'customRanking' => array('desc(popularity)', 'desc(number_of_results)', 'asc(date)'), - 'typoTolerance' => false, - 'attributesToRetrieve' => array('query'), + 'attributesToIndex' => array('query'), + 'customRanking' => array('desc(popularity)', 'desc(number_of_results)', 'asc(date)'), + 'typoTolerance' => false, + 'attributesToRetrieve' => array('query'), + 'removeWordsIfNoResults' => 'lastWords', ); } From 92148552ab4aa8b72a07239ebcbb569c0b7b4cd3 Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Mon, 12 Sep 2016 18:22:04 +0200 Subject: [PATCH 02/29] Hide IS page info panel on no results --- js/algoliasearch/instantsearch.js | 7 +++++++ skin/frontend/base/default/algoliasearch/algoliasearch.css | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/js/algoliasearch/instantsearch.js b/js/algoliasearch/instantsearch.js index 58acf535..950cc63f 100644 --- a/js/algoliasearch/instantsearch.js +++ b/js/algoliasearch/instantsearch.js @@ -191,6 +191,8 @@ document.addEventListener("DOMContentLoaded", function (event) { } }, render: function (data) { + var $infosContainer = $('#algolia-right-container').find('.infos'); + if (data.results.hits.length === 0) { var content = '
'; content += '
' + algoliaConfig.translations.noProducts + ' "' + $("
").text(data.results.query).html() + '"
'; @@ -206,6 +208,11 @@ document.addEventListener("DOMContentLoaded", function (event) { content += '
'; $('#instant-search-results-container').html(content); + + $infosContainer.addClass('hidden'); + } + else { + $infosContainer.removeClass('hidden'); } } }); diff --git a/skin/frontend/base/default/algoliasearch/algoliasearch.css b/skin/frontend/base/default/algoliasearch/algoliasearch.css index 6ec07c68..c1f478ea 100644 --- a/skin/frontend/base/default/algoliasearch/algoliasearch.css +++ b/skin/frontend/base/default/algoliasearch/algoliasearch.css @@ -1489,3 +1489,7 @@ a.ais-current-refined-values--link:hover clear: both; content: ''; } + +#algolia-right-container .infos.hidden { + display: none; +} \ No newline at end of file From 57362d605b70b3ad0a371111a884ed8083a7b0ac Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Tue, 13 Sep 2016 11:11:18 +0200 Subject: [PATCH 03/29] Prefix vague CSS selectors and remove unused styles --- .../default/algoliasearch/algoliasearch.css | 363 ++---------------- 1 file changed, 36 insertions(+), 327 deletions(-) diff --git a/skin/frontend/base/default/algoliasearch/algoliasearch.css b/skin/frontend/base/default/algoliasearch/algoliasearch.css index c1f478ea..bf763a8e 100644 --- a/skin/frontend/base/default/algoliasearch/algoliasearch.css +++ b/skin/frontend/base/default/algoliasearch/algoliasearch.css @@ -120,7 +120,7 @@ input::-ms-clear { margin-right: 10px; } -.current-refinements +#algolia_instant_selector .current-refinements { position: relative; } @@ -476,12 +476,12 @@ a.ais-current-refined-values--link:hover content: ''; } -.col9 { +#algolia-autocomplete-container .col9 { float: right; width: 100%; } -.col3 { +#algolia-autocomplete-container .col3 { float: right; width: 100%; } @@ -497,13 +497,13 @@ a.ais-current-refined-values--link:hover } @media (min-width: 768px) { - .col9 { + #algolia-autocomplete-container .col9 { border-left: solid 1px #eeeeee; float: right; width: 70%; } - .col3 { + #algolia-autocomplete-container .col3 { float: right; width: 30%; } @@ -520,7 +520,7 @@ a.ais-current-refined-values--link:hover } } -.other-sections { +#algolia-autocomplete-container .other-sections { margin: 20px 10px; margin-bottom: 70px; } @@ -1120,367 +1120,76 @@ a.ais-current-refined-values--link:hover box-sizing: border-box; } -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} @media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { + #algolia_instant_selector .col-sm-6 { width: 50%; + float: left; } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } } + +#algolia_instant_selector .col-md-3, #algolia_instant_selector .col-md-4, #algolia_instant_selector .col-md-9, #algolia_instant_selector .col-md-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} + @media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + #algolia_instant_selector .col-md-3, #algolia_instant_selector .col-md-4, #algolia_instant_selector .col-md-9, #algolia_instant_selector .col-md-12 { float: left; } - .col-md-12 { + #algolia_instant_selector .col-md-12 { width: 100%; } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { + #algolia_instant_selector .col-md-9 { width: 75%; } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { + #algolia_instant_selector .col-md-4 { width: 33.33333333%; } - .col-md-3 { + #algolia_instant_selector .col-md-3 { width: 25%; } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } } -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } + +#algolia_instant_selector .row { + margin-left: -15px; + margin-right: -15px; } -.row:before, -.row:after { + +#algolia_instant_selector .row:before, #algolia_instant_selector .row:after { content: " "; display: table; } -.row:after { + +#algolia_instant_selector .row:after { clear: both; } -.visible-xs, .visible-sm { - display: none!important +#algolia_instant_selector .visible-xs, #algolia_instant_selector .visible-sm { + display: none !important } -.hidden-xs, .hidden-sm { +#algolia_instant_selector .hidden-xs, #algolia_instant_selector .hidden-sm { display: block !important } @media (max-width: 767px) { - .visible-xs { + #algolia_instant_selector .visible-xs { display: block !important } - .hidden-xs { + #algolia_instant_selector .hidden-xs { display: none!important } } @media (max-width: 992px) { - .visible-sm { + #algolia_instant_selector .visible-sm { display: block !important } - .hidden-sm { + #algolia_instant_selector .hidden-sm { display: none!important } } From e33e6d92d2d4438d3827ecfba0c10e76312ece91 Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Tue, 13 Sep 2016 11:41:23 +0200 Subject: [PATCH 04/29] Less aggressive "new version" message. Added small line with rate request --- js/algoliasearch/internals/adminhtml/admin_scripts.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/js/algoliasearch/internals/adminhtml/admin_scripts.js b/js/algoliasearch/internals/adminhtml/admin_scripts.js index 5ef6de13..10a61250 100644 --- a/js/algoliasearch/internals/adminhtml/admin_scripts.js +++ b/js/algoliasearch/internals/adminhtml/admin_scripts.js @@ -21,14 +21,15 @@ algoliaAdminBundle.$(function($) { var latestVersion = payload.name; if(compareVersion(algoliaSearchExtentionsVersion, latestVersion) > 0) { - $('.content-header h3').after('' + + $('.content-header h3').after('' + '' + ' You are using old version of Algolia extension. ' + 'Latest version of the extension is '+latestVersion+'. ' + 'You can get it on ' + 'Magento Connect.
' + - '' + - 'It\'s highly recommended to update your version to avoid any unexpecting issues and to get new features.' + + '' + + 'It\'s highly recommended to update your version to avoid any unexpecting issues and to get new features.
' + + 'If you are happy with the extension, please rate the extension on Magento Connect.' + '
'); } }); From 12ca9e77fa510cdf399ff569c34a81ab2ae520bd Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Tue, 13 Sep 2016 12:21:29 +0200 Subject: [PATCH 05/29] Don't include some bundled products' attributes within its' master product. --- .../Helper/Entity/Producthelper.php | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php index 98fa0278..d80feeb4 100644 --- a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php +++ b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php @@ -16,6 +16,14 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias 'tax_class_id', // Needed for tax calculation ); + private $excludedAttrsFromBundledProducts = array( + 'news_from_date', + 'news_to_date', + 'special_price', + 'special_from_date', + 'special_to_date', + ); + protected function getIndexNameSuffix() { return '_products'; @@ -848,20 +856,22 @@ public function getObject(Mage_Catalog_Model_Product $product) $all_sub_products_out_of_stock = true; - foreach ($sub_products as $sub_product) { - $isInStock = (int) $sub_product->getStockItem()->getIsInStock(); + if ($type !== 'bundle' || in_array($attribute_name, $this->excludedAttrsFromBundledProducts, true) === false) { + foreach ($sub_products as $sub_product) { + $isInStock = (int)$sub_product->getStockItem()->getIsInStock(); - if ($isInStock == false && $this->config->indexOutOfStockOptions($product->getStoreId()) == false) { - continue; - } + if ($isInStock == false && $this->config->indexOutOfStockOptions($product->getStoreId()) == false) { + continue; + } - $all_sub_products_out_of_stock = false; + $all_sub_products_out_of_stock = false; - $value = $sub_product->getData($attribute_name); + $value = $sub_product->getData($attribute_name); - if ($value) { - $values[] = $this->getValueOrValueText($sub_product, $attribute_name, - $attribute_resource, $index_no_value); + if ($value) { + $values[] = $this->getValueOrValueText($sub_product, $attribute_name, + $attribute_resource, $index_no_value); + } } } From ddec96fe4f368cb573f00cb21c1928b29d6eca70 Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Wed, 14 Sep 2016 10:39:36 +0200 Subject: [PATCH 06/29] Add option to disable synonyms management in Magento --- .../Algolia/Algoliasearch/Helper/Config.php | 6 ++ .../Helper/Entity/Producthelper.php | 56 ++++++++++--------- .../Algolia/Algoliasearch/etc/config.xml | 3 + .../Algolia/Algoliasearch/etc/system.xml | 14 +++++ .../internals/adminhtml/admin_scripts.js | 20 +++++++ 5 files changed, 72 insertions(+), 27 deletions(-) diff --git a/app/code/community/Algolia/Algoliasearch/Helper/Config.php b/app/code/community/Algolia/Algoliasearch/Helper/Config.php index 3403ccdc..44eb4b08 100644 --- a/app/code/community/Algolia/Algoliasearch/Helper/Config.php +++ b/app/code/community/Algolia/Algoliasearch/Helper/Config.php @@ -50,6 +50,7 @@ class Algolia_Algoliasearch_Helper_Config extends Mage_Core_Helper_Abstract const XML_PATH_IMAGE_HEIGHT = 'algoliasearch/image/height'; const XML_PATH_IMAGE_TYPE = 'algoliasearch/image/type'; + const ENABLE_SYNONYMS = 'algoliasearch/synonyms/enable_synonyms'; const SYNONYMS = 'algoliasearch/synonyms/synonyms'; const ONEWAY_SYNONYMS = 'algoliasearch/synonyms/oneway_synonyms'; const SYNONYMS_FILE = 'algoliasearch/synonyms/synonyms_file'; @@ -514,6 +515,11 @@ public function getExtensionVersion() return (string) Mage::getConfig()->getNode()->modules->Algolia_Algoliasearch->version; } + public function isEnabledSynonyms($storeId = null) + { + return Mage::getStoreConfigFlag(self::ENABLE_SYNONYMS, $storeId); + } + public function getSynonyms($storeId = null) { $synonyms = unserialize(Mage::getStoreConfig(self::SYNONYMS, $storeId)); diff --git a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php index 98fa0278..a8385b54 100644 --- a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php +++ b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php @@ -331,40 +331,42 @@ public function setSettings($storeId, $saveToTmpIndicesToo = false) } } - if ($synonymsFile = $this->config->getSynonymsFile($storeId)) { - $synonymsToSet = json_decode(file_get_contents($synonymsFile)); - } else { - $synonymsToSet = array(); + if ($this->config->isEnabledSynonyms($storeId) === true) { + if ($synonymsFile = $this->config->getSynonymsFile($storeId)) { + $synonymsToSet = json_decode(file_get_contents($synonymsFile)); + } else { + $synonymsToSet = array(); - $synonyms = $this->config->getSynonyms($storeId); - foreach ($synonyms as $objectID => $synonym) { - if (!trim($synonym['synonyms'])) { - continue; + $synonyms = $this->config->getSynonyms($storeId); + foreach ($synonyms as $objectID => $synonym) { + if (!trim($synonym['synonyms'])) { + continue; + } + + $synonymsToSet[] = array( + 'objectID' => $objectID, + 'type' => 'synonym', + 'synonyms' => $this->explodeSynomyms($synonym['synonyms']), + ); } - $synonymsToSet[] = array( - 'objectID' => $objectID, - 'type' => 'synonym', - 'synonyms' => $this->explodeSynomyms($synonym['synonyms']), - ); - } + $onewaySynonyms = $this->config->getOnewaySynonyms($storeId); + foreach ($onewaySynonyms as $objectID => $onewaySynonym) { + if (!trim($onewaySynonym['input']) || !trim($onewaySynonym['synonyms'])) { + continue; + } - $onewaySynonyms = $this->config->getOnewaySynonyms($storeId); - foreach ($onewaySynonyms as $objectID => $onewaySynonym) { - if (!trim($onewaySynonym['input']) || !trim($onewaySynonym['synonyms'])) { - continue; + $synonymsToSet[] = array( + 'objectID' => $objectID, + 'type' => 'oneWaySynonym', + 'input' => $onewaySynonym['input'], + 'synonyms' => $this->explodeSynomyms($onewaySynonym['synonyms']), + ); } - - $synonymsToSet[] = array( - 'objectID' => $objectID, - 'type' => 'oneWaySynonym', - 'input' => $onewaySynonym['input'], - 'synonyms' => $this->explodeSynomyms($onewaySynonym['synonyms']), - ); } - } - $this->algolia_helper->setSynonyms($this->getIndexName($storeId, $saveToTmpIndicesToo), $synonymsToSet); + $this->algolia_helper->setSynonyms($this->getIndexName($storeId, $saveToTmpIndicesToo), $synonymsToSet); + } } protected function getFields($store) diff --git a/app/code/community/Algolia/Algoliasearch/etc/config.xml b/app/code/community/Algolia/Algoliasearch/etc/config.xml index 2ca45cdc..6330f695 100644 --- a/app/code/community/Algolia/Algoliasearch/etc/config.xml +++ b/app/code/community/Algolia/Algoliasearch/etc/config.xml @@ -204,6 +204,9 @@ 265 image + + 1 + allOptional 0 diff --git a/app/code/community/Algolia/Algoliasearch/etc/system.xml b/app/code/community/Algolia/Algoliasearch/etc/system.xml index 7095e944..d6113a4f 100644 --- a/app/code/community/Algolia/Algoliasearch/etc/system.xml +++ b/app/code/community/Algolia/Algoliasearch/etc/system.xml @@ -648,6 +648,20 @@ ]]> + + + select + adminhtml/system_config_source_yesno + 0 + 1 + 1 + 1 + + + + algoliasearch/system_config_form_field_synonyms diff --git a/js/algoliasearch/internals/adminhtml/admin_scripts.js b/js/algoliasearch/internals/adminhtml/admin_scripts.js index 5ef6de13..bb044741 100644 --- a/js/algoliasearch/internals/adminhtml/admin_scripts.js +++ b/js/algoliasearch/internals/adminhtml/admin_scripts.js @@ -54,4 +54,24 @@ algoliaAdminBundle.$(function($) { return parseInt(n, 10); }); } + + var $enableSynonymsSelect = $('#algoliasearch_synonyms_enable_synonyms'); + + handleSynonymsElements($enableSynonymsSelect.val()); + + $enableSynonymsSelect.change(function() { + var val = $(this).val(); + + handleSynonymsElements(val); + }); + + function handleSynonymsElements(value) { + var $synonymsRows = $('#row_algoliasearch_synonyms_synonyms, #row_algoliasearch_synonyms_oneway_synonyms, #row_algoliasearch_synonyms_synonyms_file'); + + if(value == 1) { + $synonymsRows.show(); + } else { + $synonymsRows.hide(); + } + } }); \ No newline at end of file From 0fbebe906939a15d89259de0e0ac5b07f644aeb6 Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Tue, 13 Sep 2016 14:03:07 +0200 Subject: [PATCH 07/29] Index hierarchical categories without path in new main_categories attribute --- .../Algoliasearch/Helper/Entity/Producthelper.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php index 98fa0278..f6d036e2 100644 --- a/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php +++ b/app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php @@ -36,6 +36,7 @@ public function getAllAttributes($add_empty_row = false) 'path', 'categories', 'categories_without_path', + 'main_categories', 'description', 'ordered_qty', 'total_ordered', @@ -687,6 +688,7 @@ public function getObject(Mage_Catalog_Model_Product $product) array_unique(array_map('serialize', $categories_with_path))); $categories_hierarchical = array(); + $mainCategories = array(); $level_name = 'level'; @@ -697,6 +699,7 @@ public function getObject(Mage_Catalog_Model_Product $product) } $categories_hierarchical[$level_name.$i][] = implode(' /// ', array_slice($category, 0, $i + 1)); + $mainCategories[$level_name.$i][] = $category[$i]; } } @@ -704,14 +707,21 @@ public function getObject(Mage_Catalog_Model_Product $product) $level = array_values(array_unique($level)); } + foreach ($mainCategories as &$level) { + $level = array_values(array_unique($level)); + } + foreach ($categories_with_path as &$category) { $category = implode(' /// ', $category); } $customData['categories'] = $categories_hierarchical; - $customData['categories_without_path'] = $categories; + if ($this->isAttributeEnabled($additionalAttributes, 'main_categories')) { + $customData['main_categories'] = $mainCategories; + } + /** @var Algolia_Algoliasearch_Helper_Image $imageHelper */ $imageHelper = Mage::helper('algoliasearch/image'); From 3dcc3eaac0be95961160efd9ba7209d53f2d865b Mon Sep 17 00:00:00 2001 From: Jan Petr Date: Thu, 15 Sep 2016 14:26:48 +0200 Subject: [PATCH 08/29] New algoliaBundles --- .../adminhtml/algoliaAdminBundle.min.js | 50 +++++++++---------- .../adminhtml/algoliaAdminBundle.min.js.map | 2 +- .../internals/frontend/algoliaBundle.min.js | 50 ++++++++++--------- .../frontend/algoliaBundle.min.js.map | 2 +- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/js/algoliasearch/internals/adminhtml/algoliaAdminBundle.min.js b/js/algoliasearch/internals/adminhtml/algoliaAdminBundle.min.js index b9e9ede6..6e07cfbb 100644 --- a/js/algoliasearch/internals/adminhtml/algoliaAdminBundle.min.js +++ b/js/algoliasearch/internals/adminhtml/algoliaAdminBundle.min.js @@ -1,36 +1,36 @@ /*! algoliaAdminBundle 4.3.4 | © Algolia SAS | algolia.com */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.algoliaAdminBundle=t():e.algoliaAdminBundle=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports={$:n(1),instantsearch:n(2),algoliasearch:n(689),algoliasearchHelper:n(36),Hogan:n(608),autocomplete:n(695),angular:n(712)},n(714)},function(e,t){var n,r;!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(i,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ge.type(e);return"function"===n||ge.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ge.isFunction(t))return ge.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ge.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Pe.test(t))return ge.filter(t,e,n);t=ge.filter(t,e)}return ge.grep(e,function(e){return ge.inArray(e,t)>-1!==n})}function u(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ge.each(e.match(Ae)||[],function(e,n){t[n]=!0}),t}function l(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",f),i.removeEventListener("load",f)):(se.detachEvent("onreadystatechange",f),i.detachEvent("onload",f))}function f(){(se.addEventListener||"load"===i.event.type||"complete"===se.readyState)&&(l(),ge.ready())}function p(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(Fe,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Ie.test(n)?ge.parseJSON(n):n}catch(i){}ge.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ge.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function h(e,t,n,r){if(De(e)){var i,o,a=ge.expando,s=e.nodeType,u=s?ge.cache:e,c=s?e[a]:e[a]&&a;if(c&&u[c]&&(r||u[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ge.guid++:a),u[c]||(u[c]=s?{}:{toJSON:ge.noop}),("object"==typeof t||"function"==typeof t)&&(r?u[c]=ge.extend(u[c],t):u[c].data=ge.extend(u[c].data,t)),o=u[c],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ge.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[ge.camelCase(t)])):i=o,i}}function m(e,t,n){if(De(e)){var r,i,o=e.nodeType,a=o?ge.cache:e,s=o?e[ge.expando]:ge.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){ge.isArray(t)?t=t.concat(ge.map(t,ge.camelCase)):t in r?t=[t]:(t=ge.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!d(r):!ge.isEmptyObject(r))return}(n||(delete a[s].data,d(a[s])))&&(o?ge.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function v(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return ge.css(e,t,"")},u=s(),c=n&&n[3]||(ge.cssNumber[t]?"":"px"),l=(ge.cssNumber[t]||"px"!==c&&+u)&&Ue.exec(ge.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do o=o||".5",l/=o,ge.style(e,t,l+c);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function g(e){var t=Qe.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||ge.nodeName(r,t)?o.push(r):ge.merge(o,y(r,t));return void 0===t||t&&ge.nodeName(e,t)?ge.merge([e],o):o}function b(e,t){for(var n,r=0;null!=(n=e[r]);r++)ge._data(n,"globalEval",!t||ge._data(t[r],"globalEval"))}function x(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,r,i){for(var o,a,s,u,c,l,f,p=e.length,d=g(t),h=[],m=0;p>m;m++)if(a=e[m],a||0===a)if("object"===ge.type(a))ge.merge(h,a.nodeType?[a]:a);else if(Xe.test(a)){for(u=u||d.appendChild(t.createElement("div")),c=(We.exec(a)||["",""])[1].toLowerCase(),f=Ge[c]||Ge._default,u.innerHTML=f[1]+ge.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!me.leadingWhitespace&&Ke.test(a)&&h.push(t.createTextNode(Ke.exec(a)[0])),!me.tbody)for(a="table"!==c||Ye.test(a)?""!==f[1]||Ye.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)ge.nodeName(l=a.childNodes[o],"tbody")&&!l.childNodes.length&&a.removeChild(l);for(ge.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=d.lastChild}else h.push(t.createTextNode(a));for(u&&d.removeChild(u),me.appendChecked||ge.grep(y(h,"input"),x),m=0;a=h[m++];)if(r&&ge.inArray(a,r)>-1)i&&i.push(a);else if(s=ge.contains(a.ownerDocument,a),u=y(d.appendChild(a),"script"),s&&b(u),n)for(o=0;a=u[o++];)ze.test(a.type||"")&&n.push(a);return u=null,d}function _(){return!0}function C(){return!1}function $(){try{return se.activeElement}catch(e){}}function E(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)E(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=C;else if(!i)return e;return 1===o&&(a=i,i=function(e){return ge().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=ge.guid++)),e.each(function(){ge.event.add(this,t,i,r,n)})}function S(e,t){return ge.nodeName(e,"table")&&ge.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function P(e){return e.type=(null!==ge.find.attr(e,"type"))+"/"+e.type,e}function k(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function T(e,t){if(1===t.nodeType&&ge.hasData(e)){var n,r,i,o=ge._data(e),a=ge._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)ge.event.add(t,n,s[n][r])}a.data&&(a.data=ge.extend({},a.data))}}function O(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ge.expando]){i=ge._data(t);for(r in i.events)ge.removeEvent(t,r,i.handle);t.removeAttribute(ge.expando)}"script"===n&&t.text!==e.text?(P(t).text=e.text,k(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ge.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function R(e,t,n,r){t=ce.apply([],t);var i,o,a,s,u,c,l=0,f=e.length,p=f-1,d=t[0],h=ge.isFunction(d);if(h||f>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(i){var o=e.eq(i);h&&(t[0]=d.call(this,i,o.html())),R(o,t,n,r)});if(f&&(c=w(t,e[0].ownerDocument,!1,e,r),i=c.firstChild,1===c.childNodes.length&&(c=i),i||r)){for(s=ge.map(y(c,"script"),P),a=s.length;f>l;l++)o=c,l!==p&&(o=ge.clone(o,!0,!0),a&&ge.merge(s,y(o,"script"))),n.call(e[l],o,l);if(a)for(u=s[s.length-1].ownerDocument,ge.map(s,k),l=0;a>l;l++)o=s[l],ze.test(o.type||"")&&!ge._data(o,"globalEval")&&ge.contains(u,o)&&(o.src?ge._evalUrl&&ge._evalUrl(o.src):ge.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=i=null}return e}function N(e,t,n){for(var r,i=t?ge.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ge.cleanData(y(r)),r.parentNode&&(n&&ge.contains(r.ownerDocument,r)&&b(y(r,"script")),r.parentNode.removeChild(r));return e}function A(e,t){var n=ge(t.createElement(e)).appendTo(t.body),r=ge.css(n[0],"display");return n.detach(),r}function j(e){var t=se,n=dt[e];return n||(n=A(e,t),"none"!==n&&n||(pt=(pt||ge("