algoliasearch - Version 1.5.3

Version Notes

- UPDATED: added a config to disable logging
- UPDATED: better instant search UI
- FIX: various design improvements
- FIX: take into account "Include in Navigation" for categories
- FIX: sorting in instant search page
- FIX: wrong price for configurable products
- FIX: mass action delete

Download this release

Release Info

Developer Algolia Team
Extension algoliasearch
Version 1.5.3
Comparing to
See all releases


Code changes from version 1.5.2 to 1.5.3

Files changed (21) hide show
  1. app/code/community/Algolia/Algoliasearch/Helper/Algoliahelper.php +1 -1
  2. app/code/community/Algolia/Algoliasearch/Helper/Config.php +1 -1
  3. app/code/community/Algolia/Algoliasearch/Helper/Data.php +2 -2
  4. app/code/community/Algolia/Algoliasearch/Helper/Entity/Categoryhelper.php +1 -2
  5. app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php +8 -7
  6. app/code/community/Algolia/Algoliasearch/Helper/Logger.php +9 -7
  7. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algolia.php +13 -5
  8. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliaadditionalsections.php +2 -2
  9. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliacategories.php +4 -5
  10. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliapages.php +2 -2
  11. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliaqueuerunner.php +2 -2
  12. app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliasuggestions.php +2 -2
  13. app/code/community/Algolia/Algoliasearch/Model/Queue.php +3 -3
  14. app/code/community/Algolia/Algoliasearch/Model/Resource/Engine.php +11 -11
  15. app/code/community/Algolia/Algoliasearch/Model/Resource/Fulltext.php +3 -3
  16. app/code/community/Algolia/Algoliasearch/etc/config.xml +3 -2
  17. app/code/community/Algolia/Algoliasearch/etc/system.xml +21 -3
  18. app/design/frontend/base/default/template/algoliasearch/topsearch.phtml +30 -16
  19. app/etc/modules/Algolia_Algoliasearch.xml +1 -1
  20. package.xml +11 -15
  21. skin/frontend/base/default/algoliasearch/algoliasearch.css +33 -12
app/code/community/Algolia/Algoliasearch/Helper/Algoliahelper.php CHANGED
@@ -12,7 +12,7 @@ if (class_exists('AlgoliaSearch\Client', false) == false)
12
  class Algolia_Algoliasearch_Helper_Algoliahelper extends Mage_Core_Helper_Abstract
13
  {
14
  protected $client;
15
- private $config;
16
 
17
  public function __construct()
18
  {
12
  class Algolia_Algoliasearch_Helper_Algoliahelper extends Mage_Core_Helper_Abstract
13
  {
14
  protected $client;
15
+ protected $config;
16
 
17
  public function __construct()
18
  {
app/code/community/Algolia/Algoliasearch/Helper/Config.php CHANGED
@@ -56,7 +56,7 @@ class Algolia_Algoliasearch_Helper_Config extends Mage_Core_Helper_Abstract
56
  const AUTOCOMPLETE_SELECTOR = 'algoliasearch/advanced/autocomplete_selector';
57
 
58
  const SHOW_OUT_OF_STOCK = 'cataloginventory/options/show_out_of_stock';
59
- const LOGGING_ENABLED = 'dev/log/active';
60
 
61
  protected $_productTypeMap = array();
62
 
56
  const AUTOCOMPLETE_SELECTOR = 'algoliasearch/advanced/autocomplete_selector';
57
 
58
  const SHOW_OUT_OF_STOCK = 'cataloginventory/options/show_out_of_stock';
59
+ const LOGGING_ENABLED = 'algoliasearch/credentials/debug';
60
 
61
  protected $_productTypeMap = array();
62
 
app/code/community/Algolia/Algoliasearch/Helper/Data.php CHANGED
@@ -25,7 +25,7 @@ class Algolia_Algoliasearch_Helper_Data extends Mage_Core_Helper_Abstract
25
 
26
  public function __construct()
27
  {
28
- \AlgoliaSearch\Version::$custom_value = " Magento (1.5.2)";
29
 
30
  $this->algolia_helper = Mage::helper('algoliasearch/algoliahelper');
31
 
@@ -427,7 +427,7 @@ class Algolia_Algoliasearch_Helper_Data extends Mage_Core_Helper_Abstract
427
  $this->stopEmulation($emulationInfoPage);
428
  }
429
 
430
- private function getProductsRecords($storeId, $collection)
431
  {
432
  $indexData = array();
433
 
25
 
26
  public function __construct()
27
  {
28
+ \AlgoliaSearch\Version::$custom_value = " Magento (1.5.3)";
29
 
30
  $this->algolia_helper = Mage::helper('algoliasearch/algoliahelper');
31
 
427
  $this->stopEmulation($emulationInfoPage);
428
  }
429
 
430
+ protected function getProductsRecords($storeId, $collection)
431
  {
432
  $indexData = array();
433
 
app/code/community/Algolia/Algoliasearch/Helper/Entity/Categoryhelper.php CHANGED
@@ -57,8 +57,6 @@ class Algolia_Algoliasearch_Helper_Entity_Categoryhelper extends Algolia_Algolia
57
  {
58
  $storeRootCategoryPath = sprintf('%d/%d', $this->getRootCategoryId(), Mage::app()->getStore($storeId)->getRootCategoryId());
59
 
60
- $index_name = $this->getIndexName($storeId);
61
-
62
  $categories = Mage::getResourceModel('catalog/category_collection'); /** @var $categories Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
63
 
64
  $unserializedCategorysAttrs = $this->config->getCategoryAdditionalAttributes($storeId);
@@ -74,6 +72,7 @@ class Algolia_Algoliasearch_Helper_Entity_Categoryhelper extends Algolia_Algolia
74
  ->addUrlRewriteToResult()
75
  ->addIsActiveFilter()
76
  ->setStoreId($storeId)
 
77
  ->addAttributeToSelect(array_merge(array('name'), $additionalAttr))
78
  ->addFieldToFilter('level', array('gt' => 1));
79
 
57
  {
58
  $storeRootCategoryPath = sprintf('%d/%d', $this->getRootCategoryId(), Mage::app()->getStore($storeId)->getRootCategoryId());
59
 
 
 
60
  $categories = Mage::getResourceModel('catalog/category_collection'); /** @var $categories Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
61
 
62
  $unserializedCategorysAttrs = $this->config->getCategoryAdditionalAttributes($storeId);
72
  ->addUrlRewriteToResult()
73
  ->addIsActiveFilter()
74
  ->setStoreId($storeId)
75
+ ->addAttributeToFilter('include_in_menu', '1')
76
  ->addAttributeToSelect(array_merge(array('name'), $additionalAttr))
77
  ->addFieldToFilter('level', array('gt' => 1));
78
 
app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php CHANGED
@@ -234,7 +234,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
234
 
235
  $suffix_index_name = 'group_' . $group_id;
236
 
237
- $sort_attribute = strpos($values['attribute'], 'price') !== false ? $values['attribute'].'.'.$suffix_index_name : $values['attribute'];
238
 
239
  $mergeSettings['ranking'] = array($values['sort'].'('.$sort_attribute.')', 'typo', 'geo', 'words', 'proximity', 'attribute', 'exact', 'custom');
240
 
@@ -244,7 +244,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
244
  }
245
  else
246
  {
247
- $sort_attribute = strpos($values['attribute'], 'price') !== false ? $values['attribute'].'.'.'default' : $values['attribute'];
248
 
249
  $mergeSettings['ranking'] = array($values['sort'].'('.$sort_attribute.')', 'typo', 'geo', 'words', 'proximity', 'attribute', 'exact', 'custom');
250
 
@@ -258,7 +258,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
258
  }
259
  }
260
 
261
- private function getFields($store)
262
  {
263
  $tax_helper = Mage::helper('tax');
264
 
@@ -271,7 +271,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
271
  return array('price' => false, 'price_with_tax' => true);
272
  }
273
 
274
- private function formatPrice($price, $includeContainer, $currency_code)
275
  {
276
  if (!isset(static::$_currencies[$currency_code]))
277
  {
@@ -286,7 +286,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
286
  return $price;
287
  }
288
 
289
- private function handlePrice(&$product, $sub_products, &$customData)
290
  {
291
  $fields = $this->getFields($product->getStore());
292
  $customer_groups_enabled = $this->config->isCustomerGroupsEnabled($product->getStoreId());
@@ -371,7 +371,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
371
  }
372
  }
373
 
374
- if ($type == 'configurable' || $type == 'grouped' || $type == 'bundle')
375
  {
376
  $min = PHP_INT_MAX;
377
  $max = 0;
@@ -383,7 +383,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
383
  list($min, $max) = $_priceModel->getTotalPrices($product, null, $with_tax, true);
384
  }
385
 
386
- if ($type == 'grouped' || $type == 'configurable')
387
  {
388
  if (count($sub_products) > 0)
389
  {
@@ -508,6 +508,7 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
508
  $categoryCollection = Mage::getResourceModel('catalog/category_collection')
509
  ->addAttributeToSelect('name')
510
  ->addAttributeToFilter('entity_id', $_categoryIds)
 
511
  ->addFieldToFilter('level', array('gt' => 1))
512
  ->addIsActiveFilter();
513
 
234
 
235
  $suffix_index_name = 'group_' . $group_id;
236
 
237
+ $sort_attribute = strpos($values['attribute'], 'price') !== false ? $values['attribute'].'.'.$currencies[0].'.'.$suffix_index_name : $values['attribute'];
238
 
239
  $mergeSettings['ranking'] = array($values['sort'].'('.$sort_attribute.')', 'typo', 'geo', 'words', 'proximity', 'attribute', 'exact', 'custom');
240
 
244
  }
245
  else
246
  {
247
+ $sort_attribute = strpos($values['attribute'], 'price') !== false ? $values['attribute'].'.'.$currencies[0].'.'.'default' : $values['attribute'];
248
 
249
  $mergeSettings['ranking'] = array($values['sort'].'('.$sort_attribute.')', 'typo', 'geo', 'words', 'proximity', 'attribute', 'exact', 'custom');
250
 
258
  }
259
  }
260
 
261
+ protected function getFields($store)
262
  {
263
  $tax_helper = Mage::helper('tax');
264
 
271
  return array('price' => false, 'price_with_tax' => true);
272
  }
273
 
274
+ protected function formatPrice($price, $includeContainer, $currency_code)
275
  {
276
  if (!isset(static::$_currencies[$currency_code]))
277
  {
286
  return $price;
287
  }
288
 
289
+ protected function handlePrice(&$product, $sub_products, &$customData)
290
  {
291
  $fields = $this->getFields($product->getStore());
292
  $customer_groups_enabled = $this->config->isCustomerGroupsEnabled($product->getStoreId());
371
  }
372
  }
373
 
374
+ if ($type == 'grouped' || $type == 'bundle')
375
  {
376
  $min = PHP_INT_MAX;
377
  $max = 0;
383
  list($min, $max) = $_priceModel->getTotalPrices($product, null, $with_tax, true);
384
  }
385
 
386
+ if ($type == 'grouped')
387
  {
388
  if (count($sub_products) > 0)
389
  {
508
  $categoryCollection = Mage::getResourceModel('catalog/category_collection')
509
  ->addAttributeToSelect('name')
510
  ->addAttributeToFilter('entity_id', $_categoryIds)
511
+ ->addAttributeToFilter('include_in_menu', '1')
512
  ->addFieldToFilter('level', array('gt' => 1))
513
  ->addIsActiveFilter();
514
 
app/code/community/Algolia/Algoliasearch/Helper/Logger.php CHANGED
@@ -2,10 +2,10 @@
2
 
3
  class Algolia_Algoliasearch_Helper_Logger extends Mage_Core_Helper_Abstract
4
  {
5
- private $enabled;
6
- private $config;
7
- private $timers = array();
8
- private $stores = array();
9
 
10
  public function __construct()
11
  {
@@ -53,11 +53,13 @@ class Algolia_Algoliasearch_Helper_Logger extends Mage_Core_Helper_Abstract
53
 
54
  public function log($message)
55
  {
56
- Mage::log($message, null, 'algolia.log');
 
 
57
  }
58
 
59
- private function formatTime($begin, $end)
60
  {
61
  return ($end - $begin).'sec';
62
  }
63
- }
2
 
3
  class Algolia_Algoliasearch_Helper_Logger extends Mage_Core_Helper_Abstract
4
  {
5
+ protected $enabled;
6
+ protected $config;
7
+ protected $timers = array();
8
+ protected $stores = array();
9
 
10
  public function __construct()
11
  {
53
 
54
  public function log($message)
55
  {
56
+ if ($this->config->isLoggingEnabled()) {
57
+ Mage::log($message, null, 'algolia.log');
58
+ }
59
  }
60
 
61
+ protected function formatTime($begin, $end)
62
  {
63
  return ($end - $begin).'sec';
64
  }
65
+ }
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algolia.php CHANGED
@@ -5,14 +5,14 @@ class Algolia_Algoliasearch_Model_Indexer_Algolia extends Mage_Index_Model_Index
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
- private $engine;
9
- private $config;
10
 
11
  public static $product_categories = array();
12
- private static $credential_error = false;
13
 
14
  /** @var Algolia_Algoliasearch_Helper_Logger */
15
- private $logger;
16
 
17
  public function __construct()
18
  {
@@ -196,7 +196,15 @@ class Algolia_Algoliasearch_Model_Indexer_Algolia extends Mage_Index_Model_Index
196
  }
197
 
198
  $reindexData['catalogsearch_force_reindex'] = TRUE;
199
- $reindexData['catalogsearch_product_ids'] = $actionObject->getProductIds();
 
 
 
 
 
 
 
 
200
 
201
  foreach ($reindexData as $k => $v)
202
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
+ protected $engine;
9
+ protected $config;
10
 
11
  public static $product_categories = array();
12
+ protected static $credential_error = false;
13
 
14
  /** @var Algolia_Algoliasearch_Helper_Logger */
15
+ protected $logger;
16
 
17
  public function __construct()
18
  {
196
  }
197
 
198
  $reindexData['catalogsearch_force_reindex'] = TRUE;
199
+
200
+ if ($actionObject->getIsDeleted())
201
+ {
202
+ $reindexData['catalogsearch_delete_product_id'] = $actionObject->getProductIds();
203
+ }
204
+ else
205
+ {
206
+ $reindexData['catalogsearch_product_ids'] = $actionObject->getProductIds();
207
+ }
208
 
209
  foreach ($reindexData as $k => $v)
210
  {
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliaadditionalsections.php CHANGED
@@ -5,8 +5,8 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliaadditionalsections extends Mage
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
- private $engine;
9
- private $config;
10
 
11
  public function __construct()
12
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
+ protected $engine;
9
+ protected $config;
10
 
11
  public function __construct()
12
  {
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliacategories.php CHANGED
@@ -5,10 +5,10 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliacategories extends Mage_Index_M
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
- private $engine;
9
- private $config;
10
 
11
- private static $credential_error = false;
12
 
13
  public function __construct()
14
  {
@@ -70,7 +70,7 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliacategories extends Mage_Index_M
70
  $category = $event->getDataObject();
71
  $productIds = $category->getAffectedProductIds();
72
 
73
- if (! $category->getData('is_active'))
74
  {
75
  $event->addNewData('catalogsearch_delete_category_id', array_merge(array($category->getId()), $category->getAllChildren(TRUE)));
76
 
@@ -78,7 +78,6 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliacategories extends Mage_Index_M
78
  {
79
  $event->addNewData('catalogsearch_update_product_id', $productIds);
80
  }
81
-
82
  }
83
  elseif ($productIds)
84
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
+ protected $engine;
9
+ protected $config;
10
 
11
+ protected static $credential_error = false;
12
 
13
  public function __construct()
14
  {
70
  $category = $event->getDataObject();
71
  $productIds = $category->getAffectedProductIds();
72
 
73
+ if (! $category->getData('is_active') || ! $category->getData('include_in_menu'))
74
  {
75
  $event->addNewData('catalogsearch_delete_category_id', array_merge(array($category->getId()), $category->getAllChildren(TRUE)));
76
 
78
  {
79
  $event->addNewData('catalogsearch_update_product_id', $productIds);
80
  }
 
81
  }
82
  elseif ($productIds)
83
  {
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliapages.php CHANGED
@@ -5,8 +5,8 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliapages extends Mage_Index_Model_
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
- private $engine;
9
- private $config;
10
 
11
  public function __construct()
12
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
+ protected $engine;
9
+ protected $config;
10
 
11
  public function __construct()
12
  {
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliaqueuerunner.php CHANGED
@@ -3,9 +3,9 @@
3
  class Algolia_Algoliasearch_Model_Indexer_Algoliaqueuerunner extends Mage_Index_Model_Indexer_Abstract
4
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
- private $config;
7
  /** @var Algolia_Algoliasearch_Model_Queue */
8
- private $queue;
9
 
10
  public function __construct()
11
  {
3
  class Algolia_Algoliasearch_Model_Indexer_Algoliaqueuerunner extends Mage_Index_Model_Indexer_Abstract
4
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
+ protected $config;
7
  /** @var Algolia_Algoliasearch_Model_Queue */
8
+ protected $queue;
9
 
10
  public function __construct()
11
  {
app/code/community/Algolia/Algoliasearch/Model/Indexer/Algoliasuggestions.php CHANGED
@@ -5,8 +5,8 @@ class Algolia_Algoliasearch_Model_Indexer_Algoliasuggestions extends Mage_Index_
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
- private $engine;
9
- private $config;
10
 
11
  public function __construct()
12
  {
5
  const EVENT_MATCH_RESULT_KEY = 'algoliasearch_match_result';
6
 
7
  /** @var Algolia_Algoliasearch_Model_Resource_Engine */
8
+ protected $engine;
9
+ protected $config;
10
 
11
  public function __construct()
12
  {
app/code/community/Algolia/Algoliasearch/Model/Queue.php CHANGED
@@ -12,7 +12,7 @@ class Algolia_Algoliasearch_Model_Queue
12
  /** @var Algolia_Algoliasearch_Helper_Logger */
13
  protected $logger;
14
 
15
- private $by_page;
16
 
17
  public function __construct()
18
  {
@@ -51,7 +51,7 @@ class Algolia_Algoliasearch_Model_Queue
51
  $this->run($nbJobs);
52
  }
53
 
54
- private function mergeable($j1, $j2)
55
  {
56
  if ($j1['class'] !== $j2['class'])
57
  return false;
@@ -79,7 +79,7 @@ class Algolia_Algoliasearch_Model_Queue
79
  return true;
80
  }
81
 
82
- private function sortAndMergeJob($old_jobs)
83
  {
84
  usort($old_jobs, function ($a, $b) {
85
  if (strcmp($a['class'], $b['class']) !== 0)
12
  /** @var Algolia_Algoliasearch_Helper_Logger */
13
  protected $logger;
14
 
15
+ protected $by_page;
16
 
17
  public function __construct()
18
  {
51
  $this->run($nbJobs);
52
  }
53
 
54
+ protected function mergeable($j1, $j2)
55
  {
56
  if ($j1['class'] !== $j2['class'])
57
  return false;
79
  return true;
80
  }
81
 
82
+ protected function sortAndMergeJob($old_jobs)
83
  {
84
  usort($old_jobs, function ($a, $b) {
85
  if (strcmp($a['class'], $b['class']) !== 0)
app/code/community/Algolia/Algoliasearch/Model/Resource/Engine.php CHANGED
@@ -6,12 +6,12 @@ class Algolia_Algoliasearch_Model_Resource_Engine extends Mage_CatalogSearch_Mod
6
  {
7
  const ONE_TIME_AMOUNT = 100;
8
  /** @var Algolia_Algoliasearch_Helper_Logger */
9
- private $logger;
10
- private $queue;
11
- private $config;
12
- private $product_helper;
13
- private $category_helper;
14
- private $suggestion_helper;
15
 
16
  public function _construct()
17
  {
@@ -37,11 +37,11 @@ class Algolia_Algoliasearch_Model_Resource_Engine extends Mage_CatalogSearch_Mod
37
  {
38
  $ids = Algolia_Algoliasearch_Helper_Entity_Helper::getStores($storeId);
39
 
 
 
 
40
  foreach ($ids as $id)
41
  {
42
- if (is_array($product_ids) == false)
43
- $product_ids = array($product_ids);
44
-
45
  $by_page = $this->config->getNumberOfElementByPage();
46
 
47
  if (is_array($product_ids) && count($product_ids) > $by_page)
@@ -236,7 +236,7 @@ class Algolia_Algoliasearch_Model_Resource_Engine extends Mage_CatalogSearch_Mod
236
  return $this;
237
  }
238
 
239
- private function _rebuildCategoryIndex($storeId, $categoryIds = null)
240
  {
241
  if ($categoryIds == null || count($categoryIds) == 0)
242
  {
@@ -257,7 +257,7 @@ class Algolia_Algoliasearch_Model_Resource_Engine extends Mage_CatalogSearch_Mod
257
  return $this;
258
  }
259
 
260
- private function _rebuildProductIndex($storeId, $productIds = null)
261
  {
262
  if ($productIds == null || count($productIds) == 0)
263
  {
6
  {
7
  const ONE_TIME_AMOUNT = 100;
8
  /** @var Algolia_Algoliasearch_Helper_Logger */
9
+ protected $logger;
10
+ protected $queue;
11
+ protected $config;
12
+ protected $product_helper;
13
+ protected $category_helper;
14
+ protected $suggestion_helper;
15
 
16
  public function _construct()
17
  {
37
  {
38
  $ids = Algolia_Algoliasearch_Helper_Entity_Helper::getStores($storeId);
39
 
40
+ if (is_array($product_ids) == false)
41
+ $product_ids = array($product_ids);
42
+
43
  foreach ($ids as $id)
44
  {
 
 
 
45
  $by_page = $this->config->getNumberOfElementByPage();
46
 
47
  if (is_array($product_ids) && count($product_ids) > $by_page)
236
  return $this;
237
  }
238
 
239
+ protected function _rebuildCategoryIndex($storeId, $categoryIds = null)
240
  {
241
  if ($categoryIds == null || count($categoryIds) == 0)
242
  {
257
  return $this;
258
  }
259
 
260
+ protected function _rebuildProductIndex($storeId, $productIds = null)
261
  {
262
  if ($productIds == null || count($productIds) == 0)
263
  {
app/code/community/Algolia/Algoliasearch/Model/Resource/Fulltext.php CHANGED
@@ -5,11 +5,11 @@ class Algolia_Algoliasearch_Model_Resource_Fulltext extends Mage_CatalogSearch_M
5
 
6
  /** Empty because we need it to do nothing (no mysql stuff), Indexing is handled by Model/Indexer/Algolia */
7
 
8
- private $engine;
9
- private $config;
10
 
11
  /** @var Algolia_Algoliasearch_Helper_Logger */
12
- private $logger;
13
 
14
  public function __construct()
15
  {
5
 
6
  /** Empty because we need it to do nothing (no mysql stuff), Indexing is handled by Model/Indexer/Algolia */
7
 
8
+ protected $engine;
9
+ protected $config;
10
 
11
  /** @var Algolia_Algoliasearch_Helper_Logger */
12
+ protected $logger;
13
 
14
  public function __construct()
15
  {
app/code/community/Algolia/Algoliasearch/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Algolia_Algoliasearch>
5
- <version>1.5.2</version>
6
  </Algolia_Algoliasearch>
7
  </modules>
8
  <frontend>
@@ -140,9 +140,10 @@
140
  <application_id></application_id>
141
  <search_only_api_key></search_only_api_key>
142
  <api_key></api_key>
 
143
  <index_prefix>magento_</index_prefix>
144
  <is_popup_enabled>1</is_popup_enabled>
145
- <is_instant_enabled>1</is_instant_enabled>
146
  </credentials>
147
  <products>
148
  <number_product_results>9</number_product_results>
2
  <config>
3
  <modules>
4
  <Algolia_Algoliasearch>
5
+ <version>1.5.3</version>
6
  </Algolia_Algoliasearch>
7
  </modules>
8
  <frontend>
140
  <application_id></application_id>
141
  <search_only_api_key></search_only_api_key>
142
  <api_key></api_key>
143
+ <debug>0</debug>
144
  <index_prefix>magento_</index_prefix>
145
  <is_popup_enabled>1</is_popup_enabled>
146
+ <is_instant_enabled>0</is_instant_enabled>
147
  </credentials>
148
  <products>
149
  <number_product_results>9</number_product_results>
app/code/community/Algolia/Algoliasearch/etc/system.xml CHANGED
@@ -4,7 +4,7 @@
4
  <algoliasearch translate="label" module="algoliasearch">
5
  <label>
6
  <![CDATA[
7
- Algolia Search 1.5.2
8
  <style>
9
  .algoliasearch-admin-menu span {
10
  padding-left: 38px !important;
@@ -85,6 +85,21 @@
85
  ]]>
86
  </comment>
87
  </enable_frontend>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  <application_id translate="label">
89
  <label>Application ID</label>
90
  <frontend_type>text</frontend_type>
@@ -146,6 +161,9 @@
146
  <comment>
147
  <![CDATA[
148
  If set to Yes, the products inside the results pages will be searchable the refined results updated as-you-type. It requires your theme to expose a <code>top.search</code> and <code>content</code> block.
 
 
 
149
  ]]>
150
  </comment>
151
  </is_instant_enabled>
@@ -549,7 +567,7 @@
549
  <![CDATA[
550
  Number of jobs to run each time the cron is run. Default value is 10.
551
  <br><br>
552
- <span style="font-size: 20px; color: #D83900">&#9888;</span> Eacb time the cron runs it will process ("Max number of element per indexing job" * "Number of jobs to run each time the cron is run")
553
  products.
554
  ]]>
555
  </comment>
@@ -617,7 +635,7 @@
617
  <show_in_default>1</show_in_default>
618
  <show_in_website>1</show_in_website>
619
  <show_in_store>1</show_in_store>
620
- <comment>Choose if an query to Algolia is done by the backend for seo when instant search is enable</comment>
621
  </make_seo_request>
622
  <remove_branding translate="label comment">
623
  <label>Remove branding logo</label>
4
  <algoliasearch translate="label" module="algoliasearch">
5
  <label>
6
  <![CDATA[
7
+ Algolia Search 1.5.3
8
  <style>
9
  .algoliasearch-admin-menu span {
10
  padding-left: 38px !important;
85
  ]]>
86
  </comment>
87
  </enable_frontend>
88
+ <debug translate="label comment">
89
+ <label>Enable Logging</label>
90
+ <frontend_type>select</frontend_type>
91
+ <source_model>adminhtml/system_config_source_yesno</source_model>
92
+ <sort_order>0</sort_order>
93
+ <show_in_default>1</show_in_default>
94
+ <show_in_website>1</show_in_website>
95
+ <show_in_store>1</show_in_store>
96
+ <depends><enable_backend>1</enable_backend></depends>
97
+ <comment>
98
+ <![CDATA[
99
+ NOTICE: Debug logging generates a significant amount of data and can affect performance of indexing
100
+ ]]>
101
+ </comment>
102
+ </debug>
103
  <application_id translate="label">
104
  <label>Application ID</label>
105
  <frontend_type>text</frontend_type>
161
  <comment>
162
  <![CDATA[
163
  If set to Yes, the products inside the results pages will be searchable the refined results updated as-you-type. It requires your theme to expose a <code>top.search</code> and <code>content</code> block.
164
+ <br><br>
165
+ <span style="font-size: 30px; color: #D83900">&#9888;</span> Enabling instant search can potentially break your design, some work will be required to have a good integration into your theme
166
+ products.
167
  ]]>
168
  </comment>
169
  </is_instant_enabled>
567
  <![CDATA[
568
  Number of jobs to run each time the cron is run. Default value is 10.
569
  <br><br>
570
+ <span style="font-size: 20px; color: #D83900">&#9888;</span> Each time the cron runs it will process ("Max number of element per indexing job" * "Number of jobs to run each time the cron is run")
571
  products.
572
  ]]>
573
  </comment>
635
  <show_in_default>1</show_in_default>
636
  <show_in_website>1</show_in_website>
637
  <show_in_store>1</show_in_store>
638
+ <comment>Choose if a query to Algolia is done by the backend for SEO when instant search is enabled</comment>
639
  </make_seo_request>
640
  <remove_branding translate="label comment">
641
  <label>Remove branding logo</label>
app/design/frontend/base/default/template/algoliasearch/topsearch.phtml CHANGED
@@ -244,20 +244,25 @@ $placeholder = $this->__('Search for products, categories, ...');
244
  {{#second_bar}}
245
  <div id="instant-search-bar-container">
246
  <div id="instant-search-box">
247
- <label for="instant-search-bar">
248
- <?php echo $this->__('Search :'); ?>
249
- </label>
250
-
251
- <input placeholder="<?php echo $this->__('Search for products'); ?>" id="instant-search-bar" type="text" autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off" />
252
-
253
- <img class="clear-query-instant" src="<?php echo Mage::getBaseUrl(); ?>/skin/frontend/base/default/algoliasearch/cross.png" />
254
- <svg xmlns="http://www.w3.org/2000/svg" class="magnifying-glass" width="24" height="24" viewBox="0 0 128 128">
255
- <g transform="scale(4)">
256
- <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
257
- <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
258
- <path d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z"></path>
259
- </g>
260
- </svg>
 
 
 
 
 
261
  </div>
262
  </div>
263
  {{/second_bar}}
@@ -269,7 +274,12 @@ $placeholder = $this->__('Search for products, categories, ...');
269
  <div class="hits">
270
  <div class="infos">
271
  <div class="pull-left" id="algolia-stats"></div>
272
- <div class="pull-right" id="algolia-sorts"></div>
 
 
 
 
 
273
  <div class="clearfix"></div>
274
  </div>
275
  <div id="instant-search-results-container"></div>
@@ -561,7 +571,7 @@ $placeholder = $this->__('Search for products, categories, ...');
561
  content += '<div class="popular-searches">';
562
 
563
  if (algoliaConfig.showSuggestionsOnNoResultsPage && this.suggestions.length > 0) {
564
- content += '<div><?php echo $this->__('You can can try one of he popular seearch queries'); ?></div>' + this.suggestions.join(', ');
565
  }
566
 
567
  content += '</div>';
@@ -778,6 +788,10 @@ $placeholder = $this->__('Search for products, categories, ...');
778
  .on('autocomplete:updated', function (e) {
779
  fixAutocompleteCssHeight(menu);
780
  });
 
 
 
 
781
  });
782
  }
783
  });
244
  {{#second_bar}}
245
  <div id="instant-search-bar-container">
246
  <div id="instant-search-box">
247
+ <div class="instant-search-bar-label">
248
+ <svg xmlns="http://www.w3.org/2000/svg" class="magnifying-glass" width="24" height="24" viewBox="0 0 128 128">
249
+ <g transform="scale(4)">
250
+ <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
251
+ <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
252
+ <path d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z"></path>
253
+ </g>
254
+ </svg>
255
+ <span>Current search</span>
256
+ </div>
257
+ <div class="instant-search-bar-wrapper">
258
+ <label for="instant-search-bar">
259
+ <?php echo $this->__('Search :'); ?>
260
+ </label>
261
+
262
+ <input placeholder="<?php echo $this->__('Search for products'); ?>" id="instant-search-bar" type="text" autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off" />
263
+
264
+ <img class="clear-query-instant" src="<?php echo Mage::getBaseUrl(); ?>/skin/frontend/base/default/algoliasearch/cross.png" />
265
+ </div>
266
  </div>
267
  </div>
268
  {{/second_bar}}
274
  <div class="hits">
275
  <div class="infos">
276
  <div class="pull-left" id="algolia-stats"></div>
277
+ <div class="pull-right">
278
+ <div class="sort-by-label pull-left">
279
+ <?php echo $this->__('SORT BY'); ?>
280
+ </div>
281
+ <div class="pull-left" id="algolia-sorts"></div>
282
+ </div>
283
  <div class="clearfix"></div>
284
  </div>
285
  <div id="instant-search-results-container"></div>
571
  content += '<div class="popular-searches">';
572
 
573
  if (algoliaConfig.showSuggestionsOnNoResultsPage && this.suggestions.length > 0) {
574
+ content += '<div><?php echo $this->__('You can can try one of the popular search queries'); ?></div>' + this.suggestions.join(', ');
575
  }
576
 
577
  content += '</div>';
788
  .on('autocomplete:updated', function (e) {
789
  fixAutocompleteCssHeight(menu);
790
  });
791
+
792
+ $(window).resize(function () {
793
+ fixAutocompleteCssSticky(menu);
794
+ });
795
  });
796
  }
797
  });
app/etc/modules/Algolia_Algoliasearch.xml CHANGED
@@ -4,7 +4,7 @@
4
  <Algolia_Algoliasearch>
5
  <active>true</active>
6
  <codePool>community</codePool>
7
- <version>1.5.2</version>
8
  </Algolia_Algoliasearch>
9
  </modules>
10
  </config>
4
  <Algolia_Algoliasearch>
5
  <active>true</active>
6
  <codePool>community</codePool>
7
+ <version>1.5.3</version>
8
  </Algolia_Algoliasearch>
9
  </modules>
10
  </config>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>algoliasearch</name>
4
- <version>1.5.2</version>
5
  <stability>stable</stability>
6
  <license uri="https://github.com/algolia/algoliasearch-magento/blob/master/LICENSE.txt">MIT</license>
7
  <channel>community</channel>
@@ -11,21 +11,17 @@
11
  &#xD;
12
  This extension replaces Magento's FullText Search module and provide an as-you-type auto-completion menu in your searchbar.&#xD;
13
  </description>
14
- <notes>===== BREAKING CHANGE =====&#xD;
15
- &#xD;
16
- A full reindex of the product indexer is needed&#xD;
17
- &#xD;
18
- ============================&#xD;
19
- &#xD;
20
- - NEW: handle multiple currencies&#xD;
21
- - UPDATED: improve errors/warnings for reindexing &#xD;
22
- - FIX: handle both secure and unsecure base url for images&#xD;
23
- - FIX: ability to have only instant search&#xD;
24
- - FIX: method to get product and categories url</notes>
25
  <authors><author><name>Algolia Team</name><user>algolia</user><email>support@algolia.com</email></author></authors>
26
- <date>2016-01-08</date>
27
- <time>09:44:49</time>
28
- <contents><target name="mageetc"><dir name="modules"><file name="Algolia_Algoliasearch.xml" hash="76f2e6750adcb532438d3a9ac9b6d903"/></dir></target><target name="magecommunity"><dir name="Algolia"><dir name="Algoliasearch"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Custompages.php" hash="f87a9cf7b5559717cd9d6570374dcda7"/><file name="Customrankingcategory.php" hash="6d9575c12dbaecf9054de1cf12736025"/><file name="Customrankingproduct.php" hash="6d1b145e37c4f22d5b56f5783ac47511"/><file name="Customsortorder.php" hash="786c8f8fca2e4b41b8732f5fe270491b"/><file name="Customsortordercategory.php" hash="9908ea7f463138d3047c51b98591db9c"/><file name="Customsortorderproduct.php" hash="ee62901a3911bb7784467e1ca5cd8e84"/><file name="Facets.php" hash="b8c6217811a1c9afd64119d2b021cc5f"/><file name="Sections.php" hash="7aa62da4fb45f693bf81ad4aa0421ac3"/><file name="Select.php" hash="6e3cb4c1798775048bebbdc878e90aa9"/><file name="Sorts.php" hash="fede73c4ecbe39bf0344fbf6de46ed95"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Algoliahelper.php" hash="ff48a4929fffd913da57868457ace02f"/><file name="Config.php" hash="d4d0fa19e163fbb89a7420d5213420f8"/><file name="Data.php" hash="b2be5b2eab045fba6f69b33664c94f6c"/><dir name="Entity"><file name="Additionalsectionshelper.php" hash="d4f67429e539e9ee9a5365ba45808770"/><file name="Categoryhelper.php" hash="8a3caaa6a8e988d1ffd8c11486944535"/><file name="Helper.php" hash="85d9be2a624e882996cb27fc0ff38826"/><file name="Pagehelper.php" hash="b9ccdbdc677eae9442741f96d648d991"/><file name="Producthelper.php" hash="c0300fc18f305ee7391ccf39a4f86751"/><file name="Suggestionhelper.php" hash="6bbc72c1bbc17b13f8d9be1e0bb46fa2"/></dir><file name="Image.php" hash="876292c0612fa87194d1657a7facb916"/><file name="Logger.php" hash="fede0bd23b1beff2520d361293217834"/></dir><dir name="Model"><dir name="Indexer"><file name="Algolia.php" hash="0f8605eefc69a695a6ff7950d5f0c704"/><file name="Algoliaadditionalsections.php" hash="3113413441afccba3b8e79aa9fd8cdb1"/><file name="Algoliacategories.php" hash="2ea6c01f00d2d63d03fd0b62e6be78ae"/><file name="Algoliapages.php" hash="26ea3afee58d07b721c5cd74b3d6c4e3"/><file name="Algoliaqueuerunner.php" hash="24a0a2ed25e12ba5b9167b26c10b0add"/><file name="Algoliasuggestions.php" hash="7020d40bae60469d0acc7138ee72a419"/></dir><file name="Observer.php" hash="73ee1e9eb227085407bd130a4665a3ab"/><file name="Queue.php" hash="a0d83991ac0ea9cc66770cff9c9b9e7d"/><dir name="Resource"><file name="Engine.php" hash="d550dabcdc8ede0c96b6192e832de2a2"/><dir name="Fulltext"><file name="Collection.php" hash="cf6c1b8ecaea31619db8186ccae8a2d4"/></dir><file name="Fulltext.php" hash="01d762ee24691ab5560505d94286f904"/></dir><dir name="System"><file name="Imagetype.php" hash="5fd4dbd98818a15b0253c5988a65a785"/><file name="Removewords.php" hash="25408eb3e3d278da2f2ec1a6b6e6d8e8"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="ea4176ed43885e531f90d1f5369f29ee"/><file name="config.xml" hash="aa05552daa96cbdd83b9c1bd607ec365"/><file name="system.xml" hash="79d8f689d303548c37f1ba39d34e8d24"/></dir><dir name="sql"><dir name="algoliasearch_setup"><file name="mysql4-install-0.1.0.php" hash="fffd964f9c60be7909ec216260c37ba0"/><file name="mysql4-upgrade-0.1.0-1.4.8.php" hash="5224f8f1031a0659c64d393392a7f199"/><file name="mysql4-upgrade-1.4.8-1.5.0.php" hash="fa8be181b2d43e955e75dce1ed4a19ca"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="algoliasearch.xml" hash="28b9676bd76adfdbb9eecb54ce9c5f02"/></dir><dir name="template"><dir name="algoliasearch"><file name="beforecontent.phtml" hash="19f2ee9532f4e46c77ade0157976b780"/><file name="beforetopsearch.phtml" hash="2f9a42fa61b0f2be0bc2452ca924c2fb"/><file name="frontjs.phtml" hash="7d2cdf7bb5c2f47c0f118eac0ba1ead1"/><file name="topsearch.phtml" hash="f6d967f9170670ea8622bee66f0839df"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="algoliasearch"><file name="adminjs.phtml" hash="a5842a5c608c1496060dd4610c5c774f"/></dir></dir><dir name="layout"><file name="algoliasearch.xml" hash="312ecb88cb4ae694d098bda8f580d29e"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="algoliasearch"><file name="algolia-admin-menu.png" hash="9202a559c30a43d4d4bbc2f9ee774fd9"/><file name="algolia-logo.png" hash="190884b3e8652f3517754ae15bca31de"/><file name="algoliasearch.css" hash="1e1a02b6a19bb45ccc00f77235e09f75"/><file name="cross-circle.png" hash="a9ae2fa7ec458ffaf7c32613ca9593da"/><file name="cross.png" hash="a046cd95cba9761c824063fbd30a26b5"/><dir name="images"><file name="ui-bg_diagonals-thick_18_b81900_40x40.png" hash="62568c006bb1066f40fd5f9cfe4489be"/><file name="ui-bg_diagonals-thick_20_666666_40x40.png" hash="406541454ec466d93217826588335194"/><file name="ui-bg_flat_10_000000_40x100.png" hash="85243ed808c91ae60d33bda3a6bdee3c"/><file name="ui-bg_glass_100_f6f6f6_1x400.png" hash="f912ffca9b1919ab26c64cf1332c5322"/><file name="ui-bg_glass_100_fdf5ce_1x400.png" hash="a9b41e3f4db0fb9be1cd2c649deb253f"/><file name="ui-bg_glass_65_ffffff_1x400.png" hash="ff9e9b45e03f11808144324fd5350612"/><file name="ui-bg_gloss-wave_35_f6a828_500x100.png" hash="08ece8908c07b1c0d18b8db076ff50fc"/><file name="ui-bg_highlight-soft_100_eeeeee_1x100.png" hash="72fe4b0e1bbb83dfd6787989d3583fbe"/><file name="ui-bg_highlight-soft_75_ffe45c_1x100.png" hash="81262299ac7f591fd1763c1ccee0691f"/><file name="ui-icons_222222_256x240.png" hash="3a3c5468f484f07ac4a320d9e22acb8c"/><file name="ui-icons_228ef1_256x240.png" hash="92b29683b6a48eae7de7eb4b1cfa039c"/><file name="ui-icons_ef8c08_256x240.png" hash="f492970693640894fb54166c75dd2925"/><file name="ui-icons_ffd27a_256x240.png" hash="dda1b6f694b0d196aefc66a1d6d758f6"/><file name="ui-icons_ffffff_256x240.png" hash="41612b0f4a034424f8321c9f824a94da"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="algoliasearch"><file name="Function.prototype.bind.js" hash="eb15975feb0cc976face88cb194294ae"/><file name="admin_scripts.js" hash="877a9fcbc5d3d627772464a9311ae0b3"/><file name="algoliaAdminBundle.min.js" hash="7cbce3614ccb065595a5c2ff56e32419"/><file name="algoliaBundle.min.js" hash="c81fc78bf11c34d73dddc5600611dc47"/></dir></dir><dir name="lib"><dir name="AlgoliaSearch"><file name="AlgoliaException.php" hash="4acaa7c9142e19d1084295a3b8ba18e2"/><file name="Client.php" hash="11ad687a9868a9f574ae6a069800dd2c"/><file name="ClientContext.php" hash="77d2449636d263162460a7ccaea4e6b6"/><file name="Index.php" hash="5c1eacc54cd503bff296e9bbbd402895"/><file name="Version.php" hash="0c37eb6324361991364e0efd2696e56d"/><dir name="resources"><file name="ca-bundle.crt" hash="47961e7ef15667c93cd99be01b51f00a"/></dir></dir></dir></target></contents>
29
  <compatible/>
30
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
31
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>algoliasearch</name>
4
+ <version>1.5.3</version>
5
  <stability>stable</stability>
6
  <license uri="https://github.com/algolia/algoliasearch-magento/blob/master/LICENSE.txt">MIT</license>
7
  <channel>community</channel>
11
  &#xD;
12
  This extension replaces Magento's FullText Search module and provide an as-you-type auto-completion menu in your searchbar.&#xD;
13
  </description>
14
+ <notes>- UPDATED: added a config to disable logging&#xD;
15
+ - UPDATED: better instant search UI&#xD;
16
+ - FIX: various design improvements&#xD;
17
+ - FIX: take into account "Include in Navigation" for categories&#xD;
18
+ - FIX: sorting in instant search page&#xD;
19
+ - FIX: wrong price for configurable products&#xD;
20
+ - FIX: mass action delete</notes>
 
 
 
 
21
  <authors><author><name>Algolia Team</name><user>algolia</user><email>support@algolia.com</email></author></authors>
22
+ <date>2016-02-10</date>
23
+ <time>10:48:28</time>
24
+ <contents><target name="mageetc"><dir name="modules"><file name="Algolia_Algoliasearch.xml" hash="e24e009d6be20415482cf3f9d39f3ff7"/></dir></target><target name="magecommunity"><dir name="Algolia"><dir name="Algoliasearch"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Custompages.php" hash="f87a9cf7b5559717cd9d6570374dcda7"/><file name="Customrankingcategory.php" hash="6d9575c12dbaecf9054de1cf12736025"/><file name="Customrankingproduct.php" hash="6d1b145e37c4f22d5b56f5783ac47511"/><file name="Customsortorder.php" hash="786c8f8fca2e4b41b8732f5fe270491b"/><file name="Customsortordercategory.php" hash="9908ea7f463138d3047c51b98591db9c"/><file name="Customsortorderproduct.php" hash="ee62901a3911bb7784467e1ca5cd8e84"/><file name="Facets.php" hash="b8c6217811a1c9afd64119d2b021cc5f"/><file name="Sections.php" hash="7aa62da4fb45f693bf81ad4aa0421ac3"/><file name="Select.php" hash="6e3cb4c1798775048bebbdc878e90aa9"/><file name="Sorts.php" hash="fede73c4ecbe39bf0344fbf6de46ed95"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Algoliahelper.php" hash="100ba0799077cb39ad868c08e162014f"/><file name="Config.php" hash="3b69cfe95213652fde2357b789e60960"/><file name="Data.php" hash="b1c3f5976e2fba3cadd3fc25ae9b6988"/><dir name="Entity"><file name="Additionalsectionshelper.php" hash="d4f67429e539e9ee9a5365ba45808770"/><file name="Categoryhelper.php" hash="5f3a80ddd98dd190148d47c3946ec9e7"/><file name="Helper.php" hash="85d9be2a624e882996cb27fc0ff38826"/><file name="Pagehelper.php" hash="b9ccdbdc677eae9442741f96d648d991"/><file name="Producthelper.php" hash="853af95ca4a0fdeb05c4ed468bd85f5c"/><file name="Suggestionhelper.php" hash="6bbc72c1bbc17b13f8d9be1e0bb46fa2"/></dir><file name="Image.php" hash="876292c0612fa87194d1657a7facb916"/><file name="Logger.php" hash="0431f992b1cda07a0c552392fc67d89b"/></dir><dir name="Model"><dir name="Indexer"><file name="Algolia.php" hash="9401b46d5c57b38fe97c5b28c7cf8cc2"/><file name="Algoliaadditionalsections.php" hash="649d4468a899f055d33dc959e758a688"/><file name="Algoliacategories.php" hash="7dda3999434d4fd44f11327240621e25"/><file name="Algoliapages.php" hash="22230967d949c89f92a794bd46fc6fa9"/><file name="Algoliaqueuerunner.php" hash="dbad890d433eee91732f44e36b6ac7e2"/><file name="Algoliasuggestions.php" hash="7a6702e8299f646356749fed8f57ca0a"/></dir><file name="Observer.php" hash="73ee1e9eb227085407bd130a4665a3ab"/><file name="Queue.php" hash="c3ec68c4441305ff9acc033d123a7823"/><dir name="Resource"><file name="Engine.php" hash="6030a8dbb933ce9f1c423ec1ef078f9d"/><dir name="Fulltext"><file name="Collection.php" hash="cf6c1b8ecaea31619db8186ccae8a2d4"/></dir><file name="Fulltext.php" hash="014ac885c31abeaa8e8ec56bbe54ff3d"/></dir><dir name="System"><file name="Imagetype.php" hash="5fd4dbd98818a15b0253c5988a65a785"/><file name="Removewords.php" hash="25408eb3e3d278da2f2ec1a6b6e6d8e8"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="ea4176ed43885e531f90d1f5369f29ee"/><file name="config.xml" hash="5a106ef22affb1ec9cc76d586d6ed31f"/><file name="system.xml" hash="71efc23cd58c9a6ba065f21149cc3e33"/></dir><dir name="sql"><dir name="algoliasearch_setup"><file name="mysql4-install-0.1.0.php" hash="fffd964f9c60be7909ec216260c37ba0"/><file name="mysql4-upgrade-0.1.0-1.4.8.php" hash="5224f8f1031a0659c64d393392a7f199"/><file name="mysql4-upgrade-1.4.8-1.5.0.php" hash="fa8be181b2d43e955e75dce1ed4a19ca"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="algoliasearch.xml" hash="28b9676bd76adfdbb9eecb54ce9c5f02"/></dir><dir name="template"><dir name="algoliasearch"><file name="beforecontent.phtml" hash="19f2ee9532f4e46c77ade0157976b780"/><file name="beforetopsearch.phtml" hash="2f9a42fa61b0f2be0bc2452ca924c2fb"/><file name="frontjs.phtml" hash="7d2cdf7bb5c2f47c0f118eac0ba1ead1"/><file name="topsearch.phtml" hash="724abb8b9b5d4276492557f48492e05f"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="algoliasearch"><file name="adminjs.phtml" hash="a5842a5c608c1496060dd4610c5c774f"/></dir></dir><dir name="layout"><file name="algoliasearch.xml" hash="312ecb88cb4ae694d098bda8f580d29e"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="algoliasearch"><file name="algolia-admin-menu.png" hash="9202a559c30a43d4d4bbc2f9ee774fd9"/><file name="algolia-logo.png" hash="190884b3e8652f3517754ae15bca31de"/><file name="algoliasearch.css" hash="d7c32abcd1151b88c156bd92253ec5f9"/><file name="cross-circle.png" hash="a9ae2fa7ec458ffaf7c32613ca9593da"/><file name="cross.png" hash="a046cd95cba9761c824063fbd30a26b5"/><dir name="images"><file name="ui-bg_diagonals-thick_18_b81900_40x40.png" hash="62568c006bb1066f40fd5f9cfe4489be"/><file name="ui-bg_diagonals-thick_20_666666_40x40.png" hash="406541454ec466d93217826588335194"/><file name="ui-bg_flat_10_000000_40x100.png" hash="85243ed808c91ae60d33bda3a6bdee3c"/><file name="ui-bg_glass_100_f6f6f6_1x400.png" hash="f912ffca9b1919ab26c64cf1332c5322"/><file name="ui-bg_glass_100_fdf5ce_1x400.png" hash="a9b41e3f4db0fb9be1cd2c649deb253f"/><file name="ui-bg_glass_65_ffffff_1x400.png" hash="ff9e9b45e03f11808144324fd5350612"/><file name="ui-bg_gloss-wave_35_f6a828_500x100.png" hash="08ece8908c07b1c0d18b8db076ff50fc"/><file name="ui-bg_highlight-soft_100_eeeeee_1x100.png" hash="72fe4b0e1bbb83dfd6787989d3583fbe"/><file name="ui-bg_highlight-soft_75_ffe45c_1x100.png" hash="81262299ac7f591fd1763c1ccee0691f"/><file name="ui-icons_222222_256x240.png" hash="3a3c5468f484f07ac4a320d9e22acb8c"/><file name="ui-icons_228ef1_256x240.png" hash="92b29683b6a48eae7de7eb4b1cfa039c"/><file name="ui-icons_ef8c08_256x240.png" hash="f492970693640894fb54166c75dd2925"/><file name="ui-icons_ffd27a_256x240.png" hash="dda1b6f694b0d196aefc66a1d6d758f6"/><file name="ui-icons_ffffff_256x240.png" hash="41612b0f4a034424f8321c9f824a94da"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="algoliasearch"><file name="Function.prototype.bind.js" hash="eb15975feb0cc976face88cb194294ae"/><file name="admin_scripts.js" hash="877a9fcbc5d3d627772464a9311ae0b3"/><file name="algoliaAdminBundle.min.js" hash="7cbce3614ccb065595a5c2ff56e32419"/><file name="algoliaBundle.min.js" hash="c81fc78bf11c34d73dddc5600611dc47"/></dir></dir><dir name="lib"><dir name="AlgoliaSearch"><file name="AlgoliaException.php" hash="4acaa7c9142e19d1084295a3b8ba18e2"/><file name="Client.php" hash="11ad687a9868a9f574ae6a069800dd2c"/><file name="ClientContext.php" hash="77d2449636d263162460a7ccaea4e6b6"/><file name="Index.php" hash="5c1eacc54cd503bff296e9bbbd402895"/><file name="Version.php" hash="0c37eb6324361991364e0efd2696e56d"/><dir name="resources"><file name="ca-bundle.crt" hash="47961e7ef15667c93cd99be01b51f00a"/></dir></dir></dir></target></contents>
25
  <compatible/>
26
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
27
  </package>
skin/frontend/base/default/algoliasearch/algoliasearch.css CHANGED
@@ -367,6 +367,7 @@ a.ais-current-refined-values--link:hover
367
  @media (min-width: 992px) {
368
  #algolia-autocomplete-container .aa-dropdown-menu {
369
  width: 71.1%;
 
370
  }
371
  }
372
 
@@ -752,18 +753,15 @@ a.ais-current-refined-values--link:hover
752
  overflow: hidden;
753
  }
754
 
755
- #instant-search-bar-container {
756
- width: 100%;
757
- position: relative;
758
- }
759
-
760
  #algolia_instant_selector #instant-search-bar {
761
- width: 100%;
 
762
  height: 40px;
763
  font-family: "Raleway", "Helvetica Neue", Verdana, Arial, sans-serif;
764
- border: none;
765
- border-bottom: solid 2px #54A5CD;
766
- padding-left: 36px;
 
767
  }
768
 
769
  #algolia_instant_selector.with-facets #algolia-right-container {
@@ -786,6 +784,10 @@ a.ais-current-refined-values--link:hover
786
  color: #555;
787
  }
788
 
 
 
 
 
789
  #algolia_instant_selector .hits .no-results {
790
  margin: 40px 25px;
791
  color: #636363;
@@ -965,6 +967,14 @@ a.ais-current-refined-values--link:hover
965
  #algolia_instant_selector #instant-search-bar-container {
966
  padding-top: 0px;
967
  margin-bottom: 15px;
 
 
 
 
 
 
 
 
968
  }
969
 
970
  #algolia_instant_selector .as-search-box--input {
@@ -982,12 +992,23 @@ a.ais-current-refined-values--link:hover
982
  display: none;
983
  }
984
 
 
 
 
 
 
 
 
 
 
 
 
985
  #algolia_instant_selector #instant-search-box svg.magnifying-glass {
986
  position: absolute;
987
  top: 8px;
988
- left: 0px;
989
- fill: #54A5CD;
990
- stroke: #54A5CD;
991
  }
992
 
993
  #algolia_instant_selector .before_special {
367
  @media (min-width: 992px) {
368
  #algolia-autocomplete-container .aa-dropdown-menu {
369
  width: 71.1%;
370
+ min-width: 800px;
371
  }
372
  }
373
 
753
  overflow: hidden;
754
  }
755
 
 
 
 
 
 
756
  #algolia_instant_selector #instant-search-bar {
757
+ float: left;
758
+ width: calc(100% - 140px);
759
  height: 40px;
760
  font-family: "Raleway", "Helvetica Neue", Verdana, Arial, sans-serif;
761
+ border: solid 2px #54A5CD;
762
+ border-left: none;
763
+ padding-left: 6px;
764
+ padding-top: 2px;
765
  }
766
 
767
  #algolia_instant_selector.with-facets #algolia-right-container {
784
  color: #555;
785
  }
786
 
787
+ #algolia_instant_selector .hits .sort-by-label {
788
+ margin-right: 8px;
789
+ }
790
+
791
  #algolia_instant_selector .hits .no-results {
792
  margin: 40px 25px;
793
  color: #636363;
967
  #algolia_instant_selector #instant-search-bar-container {
968
  padding-top: 0px;
969
  margin-bottom: 15px;
970
+ width: 100%;
971
+ position: relative;
972
+ }
973
+
974
+ #algolia_instant_selector #instant-search-bar-container:after {
975
+ clear: both;
976
+ content: "";
977
+ display: block;
978
  }
979
 
980
  #algolia_instant_selector .as-search-box--input {
992
  display: none;
993
  }
994
 
995
+ #algolia_instant_selector .instant-search-bar-label {
996
+ background-color: #54A5CD;
997
+ height: 40px;
998
+ line-height: 24px;
999
+ padding: 8px 12px;
1000
+ color: white;
1001
+ float: left;
1002
+ width: 140px;
1003
+ text-align: right;
1004
+ }
1005
+
1006
  #algolia_instant_selector #instant-search-box svg.magnifying-glass {
1007
  position: absolute;
1008
  top: 8px;
1009
+ left: 8px;
1010
+ fill: #FFFFFF;
1011
+ stroke: #FFFFFF;
1012
  }
1013
 
1014
  #algolia_instant_selector .before_special {