Catalin_Seo - Version 3.3.0

Version Notes

- Use jQuery where possible instead of Prototype
- Improve custom theme compatibility
- EE FPC fix
- Fixed missing content issue on iOS

Download this release

Release Info

Developer Catalin Ciobanu
Extension Catalin_Seo
Version 3.3.0
Comparing to
See all releases


Code changes from version 3.2.1 to 3.3.0

app/code/community/Catalin/SEO/Helper/Data.php CHANGED
@@ -547,4 +547,20 @@ class Catalin_SEO_Helper_Data extends Mage_Core_Helper_Data
547
  }
548
  }
549
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
550
  }
547
  }
548
  }
549
 
550
+ /**
551
+ * @return bool
552
+ */
553
+ public function isAjaxRequest()
554
+ {
555
+ $request = Mage::app()->getRequest();
556
+
557
+ if (Mage::getEdition() == Mage::EDITION_ENTERPRISE) {
558
+ // On Enterprise, FPC caches headers based on request-path (sans query string.)
559
+ // This means, request-headers or query string values cannot affect the Content-Type.
560
+ // Otherwise, an attacker can cause cached category pages to be served as application/json.
561
+ return strpos($request->getRequestString(), '/isLayerAjax/1') !== false;
562
+ }
563
+
564
+ return $request->isAjax();
565
+ }
566
  }
app/code/community/Catalin/SEO/controllers/CategoryController.php CHANGED
@@ -43,7 +43,7 @@ class Catalin_Seo_CategoryController extends Mage_Catalog_CategoryController
43
  $update->addHandle($category->getLayoutUpdateHandle());
44
  $update->addHandle('CATEGORY_' . $category->getId());
45
  // apply custom ajax layout
46
- if (Mage::helper('catalin_seo')->isAjaxEnabled() && $this->getRequest()->isAjax()) {
47
  $update->addHandle('catalog_category_layered_ajax_layer');
48
  }
49
  $this->loadLayoutUpdates();
@@ -72,7 +72,7 @@ class Catalin_Seo_CategoryController extends Mage_Catalog_CategoryController
72
  $this->_initLayoutMessages('checkout/session');
73
 
74
  // return json formatted response for ajax
75
- if (Mage::helper('catalin_seo')->isAjaxEnabled() && $this->getRequest()->isAjax()) {
76
 
77
  if(Mage::getEdition() == Mage::EDITION_ENTERPRISE){
78
  $block = $this->getLayout()->getBlock('enterprisecatalog.leftnav');
43
  $update->addHandle($category->getLayoutUpdateHandle());
44
  $update->addHandle('CATEGORY_' . $category->getId());
45
  // apply custom ajax layout
46
+ if (Mage::helper('catalin_seo')->isAjaxEnabled() && Mage::helper('catalin_seo')->isAjaxRequest()) {
47
  $update->addHandle('catalog_category_layered_ajax_layer');
48
  }
49
  $this->loadLayoutUpdates();
72
  $this->_initLayoutMessages('checkout/session');
73
 
74
  // return json formatted response for ajax
75
+ if (Mage::helper('catalin_seo')->isAjaxEnabled() && Mage::helper('catalin_seo')->isAjaxRequest()) {
76
 
77
  if(Mage::getEdition() == Mage::EDITION_ENTERPRISE){
78
  $block = $this->getLayout()->getBlock('enterprisecatalog.leftnav');
app/code/community/Catalin/SEO/controllers/ResultController.php CHANGED
@@ -54,7 +54,7 @@ class Catalin_Seo_ResultController extends Mage_CatalogSearch_ResultController
54
 
55
  $this->loadLayout();
56
  // apply custom ajax layout
57
- if (Mage::helper('catalin_seo')->isAjaxEnabled() && $this->getRequest()->isAjax()) {
58
  $update = $this->getLayout()->getUpdate();
59
  $update->addHandle('catalog_category_layered_ajax_layer');
60
  }
@@ -62,7 +62,7 @@ class Catalin_Seo_ResultController extends Mage_CatalogSearch_ResultController
62
  $this->_initLayoutMessages('checkout/session');
63
 
64
  // return json formatted response for ajax
65
- if (Mage::helper('catalin_seo')->isAjaxEnabled() && $this->getRequest()->isAjax()) {
66
  $listing = $this->getLayout()->getBlock('search_result_list')->toHtml();
67
 
68
 
54
 
55
  $this->loadLayout();
56
  // apply custom ajax layout
57
+ if (Mage::helper('catalin_seo')->isAjaxEnabled() && Mage::helper('catalin_seo')->isAjaxRequest()) {
58
  $update = $this->getLayout()->getUpdate();
59
  $update->addHandle('catalog_category_layered_ajax_layer');
60
  }
62
  $this->_initLayoutMessages('checkout/session');
63
 
64
  // return json formatted response for ajax
65
+ if (Mage::helper('catalin_seo')->isAjaxEnabled() && Mage::helper('catalin_seo')->isAjaxRequest()) {
66
  $listing = $this->getLayout()->getBlock('search_result_list')->toHtml();
67
 
68
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Catalin_Seo</name>
4
- <version>3.2.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/mit-license.php">MIT</license>
7
  <channel>community</channel>
@@ -20,11 +20,14 @@
20
  &lt;li&gt;go to category instead of filtering&lt;/li&gt;&#xD;
21
  &lt;/ul&gt;&#xD;
22
  &lt;p&gt;All the above features can be enabled/disabled from backend from "System -&gt; Configuration -&gt; Catalin SEO -&gt; Catalog Layered Navigation"&lt;/p&gt;</description>
23
- <notes>- Fixed price slider</notes>
 
 
 
24
  <authors><author><name>Catalin Ciobanu</name><user>catalin_ciobanu</user><email>caciobanu@gmail.com</email></author></authors>
25
- <date>2016-10-27</date>
26
- <time>17:24:07</time>
27
- <contents><target name="magecommunity"><dir name="Catalin"><dir name="SEO"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="4c2ce764b158d9da57bee09ce884ef28"/><file name="Category.php" hash="f65c53d439f7a387ed21069a60800e07"/><file name="Price.php" hash="17d3b442d428ab1cc06451fae7349085"/></dir><file name="State.php" hash="85509c1200f936042bccd9784fddb610"/></dir><dir name="Product"><dir name="List"><file name="Pager.php" hash="39c10d3a573b1d905fc3e63feb0d5176"/><file name="Toolbar.php" hash="0a1ed1e69818834cf3211a46ed668505"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="f8f1de9a6a90a31f86657499fb1c5b0f"/></dir></dir></dir><dir name="ConfigurableSwatches"><dir name="Catalog"><dir name="Layer"><dir name="State"><file name="Swatch.php" hash="ca03c9a37eef2a41e28f4c93935cf3c4"/></dir></dir></dir></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2626608bb00b3c1de769cff2c68a912"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3b3874577300d5b88689eedb01346712"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Router.php" hash="c8e2a69962c3220dfe5f46916922668b"/></dir><dir name="Helper"><dir name="ConfigurableSwatches"><file name="Productlist.php" hash="1b4c40c87d701192d2571a42ef4ad98c"/></dir><file name="Data.php" hash="cd2c5ae7097907d2f2fed4ecea9c214a"/><dir name="data"><file name="x00.php" hash="450182e4917ae346e6e64c17ffb63e97"/><file name="x01.php" hash="8e4880febe04e8bbc68c6ee6bc14f112"/><file name="x02.php" hash="919566cf560d5865a4f347cb0cf5ce30"/><file name="x03.php" hash="14dcbdbcde12f478d8657da808fe643d"/><file name="x04.php" hash="b4ca085c2a79244199f079d01c7e2c6b"/><file name="x05.php" hash="3797d79ee103c227f650d39da9bf0fb6"/><file name="x06.php" hash="e4faf649ef87968f2b58f9644687de2c"/><file name="x07.php" hash="5dc7d9d484aa28d77edd934c47cbb38c"/><file name="x09.php" hash="63337e20c61da6c5b5842c39bbfcd033"/><file name="x0a.php" hash="df2383cac3d3164a054d123e428a6ef0"/><file name="x0b.php" hash="55bf005378faa332a988145edfe65bfe"/><file name="x0c.php" hash="d3b45c5fd9d6794907523233e7b5ef73"/><file name="x0d.php" hash="0efd5f8911480341c1c5d9dd2cd96eab"/><file name="x0e.php" hash="00bafa974dd7e72e3cdfa84460146743"/><file name="x0f.php" hash="c5ab298134b47c79f2317ce291f29091"/><file name="x10.php" hash="db5df20e88ef152852d51108a28faf68"/><file name="x11.php" hash="6dbce9e90d9d1c2bffd476fffd9c81ad"/><file name="x12.php" hash="1911521e2aa3cc389e74b33282c80b5a"/><file name="x13.php" hash="ac373e87af343f2f39586f6e01f3bc7a"/><file name="x14.php" hash="618d7ca14ced92c68225108c1fdf3d1f"/><file name="x15.php" hash="6019f2cf672cfcf4486742d640ca0a49"/><file name="x16.php" hash="363b81373dd510f53444d2fca01500d0"/><file name="x17.php" hash="0075d26788b3147ee1b93f1fbe4abcb5"/><file name="x18.php" hash="382dcd23cdbb6a2c1585f91d528aae5c"/><file name="x1e.php" hash="e0d2195ccdb96cf4ea345715de4a2fe0"/><file name="x1f.php" hash="13fffadc97ef3445cbd4969d347b8d32"/><file name="x20.php" hash="ad43141b04fb6d7bab183e13354acb13"/><file name="x21.php" hash="eb84515b6f6be292bf81c576e6ed0b0f"/><file name="x22.php" hash="51ade912682064603ca54b20ecaa9334"/><file name="x23.php" hash="2b153cbc0e81d3151c1ec44e6accd682"/><file name="x24.php" hash="98d4b201e8c670219cc7569e28653d1c"/><file name="x25.php" hash="ee79b56b8b4c5a79af30c30e74b2de22"/><file name="x26.php" hash="88c02bafbf73d21d21c59768419b0c2a"/><file name="x27.php" hash="72bb13e4b32fbf9a174b5d35e6264159"/><file name="x28.php" hash="dcbe588e9d301c627f1dc5ebea623f35"/><file name="x2e.php" hash="a506c372cb82f9e84a514075b788914b"/><file name="x2f.php" hash="577fb5f9d9968471a95906c840c4ec97"/><file name="x30.php" hash="be9214f6b21c651fdd8a7f0ff624826e"/><file name="x31.php" hash="09cb141e4e5b15715b4eb092ff62f6ce"/><file name="x32.php" hash="5781ef2460e4fc93260899c37f3ca6af"/><file name="x33.php" hash="582fcde78a8bb85f11a4c6098b523234"/><file name="x4d.php" hash="8842aa5496002094ae68b2ddc10b3dcc"/><file name="x4e.php" hash="b0d1ed31e7268c2fe7fda95e1eba8bed"/><file name="x4f.php" hash="841625fff58304e2171fef729e6ed695"/><file name="x50.php" hash="dbcc2470e51be09e4d36b8c3ab07767d"/><file name="x51.php" hash="fd96d946cd328ac8e2041b99d64cf37d"/><file name="x52.php" hash="5e3a9fa55c4c8de7d3438b11d930c3ca"/><file name="x53.php" hash="29603023fa46a48c75a5cd5149823894"/><file name="x54.php" hash="3b8da5215b64deecc23f6b51f1c0510d"/><file name="x55.php" hash="06814d53163929c319af8c2a49edcd9b"/><file name="x56.php" hash="2b2ebbadb098a2353ddd659fb8ccb7cd"/><file name="x57.php" hash="725cd6c2ce9ecc6ceaf9aee144741984"/><file name="x58.php" hash="ac31204c457ab7a814ff53939d68447c"/><file name="x59.php" hash="48c0049cb0eb14d13f98cf6c12103db0"/><file name="x5a.php" hash="2ae0dbe06a3d97ae9bcd25fb94fd31c3"/><file name="x5b.php" hash="14f157d36788f292258ed9a83de5da73"/><file name="x5c.php" hash="50bcac83e76c63281f8985320e6e830a"/><file name="x5d.php" hash="862216f95a3590d28cebf287a25c5746"/><file name="x5e.php" hash="fbffe7592bfbe00e9999dde4c83d601d"/><file name="x5f.php" hash="9a87b39043670fdd7cfe07fd49279e22"/><file name="x60.php" hash="e160340e86644fd83c1800026dea241f"/><file name="x61.php" hash="eb3b4d5a8108ba0d1b4f9bd67fadd817"/><file name="x62.php" hash="3e558391bc4ed3768e13e0cace21bcc5"/><file name="x63.php" hash="ade79f321bb4449620e86a77b556a4c4"/><file name="x64.php" hash="664368342658a4aed7853d9a2d65d750"/><file name="x65.php" hash="a1bbc07e58b13d99ed4302ec4e67f4b2"/><file name="x66.php" hash="2f17f60177981e12be650c13f04a49e0"/><file name="x67.php" hash="3a4b21418a78042243721c98f28968d8"/><file name="x68.php" hash="1b8b4ce217986cc3f7550f16e8db1780"/><file name="x69.php" hash="6def6c5b5e469c806a6b38827d0c34f5"/><file name="x6a.php" hash="9fae911d681a0c625fc6e5151ae44d28"/><file name="x6b.php" hash="245472ec4357e0b25da3d16140bcf6d1"/><file name="x6c.php" hash="28fc6a8e4660a0b50566e850e2afc6a3"/><file name="x6d.php" hash="18f83b6b5a6f55520f975057fef4fa3a"/><file name="x6e.php" hash="df5ab12708cd053e6ec8b2228380adbb"/><file name="x6f.php" hash="866c65a813461f43324a24cb463cf4bb"/><file name="x70.php" hash="daf8e99c570287fa4bdac6c353884937"/><file name="x71.php" hash="6b136f7c2a07422d1c0120ff39677b8f"/><file name="x72.php" hash="3312f70e586836e16b3802d24f828888"/><file name="x73.php" hash="010e32351d3ee643e8b4464d391eb51f"/><file name="x74.php" hash="d9c0fb5bb46813b9fd7078d2054ca0b1"/><file name="x75.php" hash="34ee63177ea043bea198fe191327d6e0"/><file name="x76.php" hash="8e1cd7e7db6f45f2e1288ebb90eb31e6"/><file name="x77.php" hash="9e295e80d931332ace899152972f34a0"/><file name="x78.php" hash="ef15567cc00457ca734d18a021b5e52d"/><file name="x79.php" hash="41467fa793d377d10980ab2256993a29"/><file name="x7a.php" hash="bc618f669de10280de11c8678f4d651f"/><file name="x7b.php" hash="d065d37d486d53273b18b0b9f9dd86b2"/><file name="x7c.php" hash="5921121839baed16b78cc36145b52a62"/><file name="x7d.php" hash="f0077edfa1f9859d0f14d3bab15bef0c"/><file name="x7e.php" hash="63d1daf0b583b4c4a66c011894a8cc98"/><file name="x7f.php" hash="c688c38a38e171755e43e905a69e339a"/><file name="x80.php" hash="9070a439e5c0b2ea086f11863746cafb"/><file name="x81.php" hash="06f4d64caf41f3d985caea14ab3a31b0"/><file name="x82.php" hash="6cb491f40badaeaa3f9f292f5bfca217"/><file name="x83.php" hash="d9d39c5e7130705f69b46647f5af8250"/><file name="x84.php" hash="38c71fc265e5b1d431cf2b58e163eaa2"/><file name="x85.php" hash="b112d31fa357b3d3b67842a77cb5310a"/><file name="x86.php" hash="d7fa4167950da670cadd2d451f1a2edb"/><file name="x87.php" hash="80a3ab6690073fe3775ec81f2ee35013"/><file name="x88.php" hash="e05489231b1d4915c42997dec89b15cb"/><file name="x89.php" hash="19d3087264c2dbed0ffa4cd47c6f2853"/><file name="x8a.php" hash="093885354302b9898b8851e09444fd96"/><file name="x8b.php" hash="05588068116c641f70c7e459632f5394"/><file name="x8c.php" hash="b098af3f0e138b56ab8411b2cde600b9"/><file name="x8d.php" hash="a9cb4c30252f615dc452041ccf651467"/><file name="x8e.php" hash="53a2cd6937d88c19f8e1ae228a65c830"/><file name="x8f.php" hash="4e0c37fe92418505c7c4612eb8251e3a"/><file name="x90.php" hash="1112c376c17c3aba6f958dbff6d15362"/><file name="x91.php" hash="f9eeb625c3c66af15a8d82f1db0cdc15"/><file name="x92.php" hash="3be097a2d595bf46323de0661161846c"/><file name="x93.php" hash="beac90d08e9c9753c90afd26db2ad1d0"/><file name="x94.php" hash="45555c59ed7e9e9a0abc470d272835ad"/><file name="x95.php" hash="8ee187be6fbeb7fe3297baa9c89ea6dd"/><file name="x96.php" hash="57b310726908124b27f6ac0d7a5aa95b"/><file name="x97.php" hash="fcfa660695fc43f0ef974416d6417ec2"/><file name="x98.php" hash="88b0e6407503716e4e8d221f77e63f00"/><file name="x99.php" hash="a0924c478967313bd96ca5bc62b955a0"/><file name="x9a.php" hash="d8e1f4684908ffea274e7d62f9b7f210"/><file name="x9b.php" hash="ff855336ea0962b81d9410eea22a8eca"/><file name="x9c.php" hash="9866a2f684ac602cac02ba02f66bdacf"/><file name="x9d.php" hash="64b8d5235c86678f88b3adc1fff2b944"/><file name="x9e.php" hash="c9fad776841bc34fc5fd7700797b65f4"/><file name="x9f.php" hash="f1c6d6cbb8ac5fb5c76e7489bef8774d"/><file name="xa0.php" hash="f27b2025d8a2dc84d5821ee0de443243"/><file name="xa1.php" hash="9079b3e07655b0536153c70d09f2dd41"/><file name="xa2.php" hash="43abb79aa36b6575be2072aca536e770"/><file name="xa3.php" hash="ac0f7f693a8b9b15c14c7e93d16e44d4"/><file name="xa4.php" hash="673c5ca4d9faa59ae7c1fbde0618714d"/><file name="xac.php" hash="113f809d9d7c474d80588d240639dc2f"/><file name="xad.php" hash="16010ec214c0bd856ff4880aba557b18"/><file name="xae.php" hash="c01cb4a18ef68ae1e793e947857e6a72"/><file name="xaf.php" hash="98f242cb0bc7429a5a450e9c82d462db"/><file name="xb0.php" hash="7f37bfe7e9782a8702a8bac106a45627"/><file name="xb1.php" hash="f7105123854bb619b232c2fd9502715a"/><file name="xb2.php" hash="824a10352cf082b71df114bc9362eb3c"/><file name="xb3.php" hash="fabb7f1a18d2632127f405ed5b419f61"/><file name="xb4.php" hash="eff9e802c59769e6f6255ebe3e4c5cb6"/><file name="xb5.php" hash="cbf6d291c99528a3564c1d3ff3a777b3"/><file name="xb6.php" hash="b0d1ab9d95e1e6e82c69a399311df856"/><file name="xb7.php" hash="a685d5656e8f31212e01f64afc6298fc"/><file name="xb8.php" hash="fd7a9295e32870eec0889695a6be3f6c"/><file name="xb9.php" hash="abb9c74fe83846f07826bf6044640e23"/><file name="xba.php" hash="36d7426647eedf90b52cf38f54c1cb0e"/><file name="xbb.php" hash="d547091bb8a6390ef90957c7687b0ab4"/><file name="xbc.php" hash="078a5499d2429ae0460d0277bbdb525d"/><file name="xbd.php" hash="bd9b10559360179d75cd84a389c75f15"/><file name="xbe.php" hash="624c0d43f2f9cf75a1e7da423ef46b07"/><file name="xbf.php" hash="51213b7f0991eb46aee2a1ce730b76e7"/><file name="xc0.php" hash="1a8012c0f8d16de7a93deb57d9907fc0"/><file name="xc1.php" hash="17faeb0f134d296e73b87d31820c7b45"/><file name="xc2.php" hash="95182ef9085fceca36ca1fcd60b6532f"/><file name="xc3.php" hash="a472ff382a6d1b5b43535f0ea339a06d"/><file name="xc4.php" hash="9afbcb6b0f0664ff70f896472dd699cf"/><file name="xc5.php" hash="141d244dc5372cd0abb688106041166e"/><file name="xc6.php" hash="a938470c97c22df1333b1f4de59d10fc"/><file name="xc7.php" hash="6e9e2dbc3b5f8d102ea63fc5599900d2"/><file name="xc8.php" hash="e6a8179a9e4b497e8d04e8ca6240a5d8"/><file name="xc9.php" hash="bf4e9f9324133fa15dd925b4558f258e"/><file name="xca.php" hash="897dd8dd4c588ca9cd34f5b61b1323a9"/><file name="xcb.php" hash="0df0f5b354a5c251e985dad8b7eafdd3"/><file name="xcc.php" hash="910fed76843cbed1b83bdc42b0217768"/><file name="xcd.php" hash="517dd294b9680ef27979cf492274d91b"/><file name="xce.php" hash="e5039314ab0cc94966820e1a7f986e40"/><file name="xcf.php" hash="b346e1ec9989d5c9995330982bbf1247"/><file name="xd0.php" hash="03586ec3fe0a918af9a5b2e0deec7177"/><file name="xd1.php" hash="a817a0340fbc8600e578218ffedd8f6d"/><file name="xd2.php" hash="41024477c699d431f68d8f56c3f6e85b"/><file name="xd3.php" hash="58fb27e572fa053f32920df9e7cd5a34"/><file name="xd4.php" hash="cd0e76107f22781373ed430500c38fc8"/><file name="xd5.php" hash="5d2258b3806920efde76e95838d5f4c3"/><file name="xd6.php" hash="673fe086f96039b1eb010fcb22ef5028"/><file name="xd7.php" hash="e23e0c525b319c846f92fc43bbb482ba"/><file name="xf9.php" hash="5ce24abde1c4f80a24f9af851fd5ae52"/><file name="xfa.php" hash="0beca78d4119f03af6f6af953239ed40"/><file name="xfb.php" hash="add34b1f16d2a6d2beb6eb9d42a89e32"/><file name="xfc.php" hash="04c1d8d478177fa22b4ccfd75a6f7083"/><file name="xfd.php" hash="6e99507389f70dc22fc5b88086edcaa5"/><file name="xfe.php" hash="6172c6780c7a848d8529e65fb08ccfa6"/><file name="xff.php" hash="6731af770a26cad1dcb3c370aa50aea8"/></dir></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="44a44ede29dd12f68210c9aa39172a60"/><file name="Category.php" hash="9633748abc5f9153a5697622fc59a3ee"/><file name="Item.php" hash="fa1a01ea22b04b07994552f77165ed71"/><file name="Price.php" hash="9ee809fd86b19e6b833a40176a888aa7"/></dir></dir><file name="Layer.php" hash="fe8cceb7cddd3614232a33741244f0dd"/><dir name="Resource"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="ec5b16e7ac8f3114e5597a840a82557e"/><file name="Price.php" hash="db13a76dbe216fb2df2e12ef09b836df"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="b9c50e30741608e5ea40595e13f38f50"/></dir></dir><file name="Layer.php" hash="3b694b045f339ac1646935902dab41ca"/></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e641c473a15cf651e304612afd3a40d2"/><file name="Category.php" hash="01823903fc22406610bd7a7c176bbf89"/></dir></dir></dir></dir><dir name="Indexer"><file name="Attribute.php" hash="2f83425173480b1c6ec3b7a11bb0776c"/></dir><dir name="Resource"><dir name="Attribute"><file name="Urlkey.php" hash="6d71d3b665104255cca241c231f37dc9"/></dir><dir name="Indexer"><file name="Attribute.php" hash="d16d6548876c91398c2b860e8e87a35c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Seo"><file name="Catalog.php" hash="0440edbcf687f5655f5014c0324ef947"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="CategoryController.php" hash="7d3d5b463d7123d3c0c368c4e08bab19"/><file name="ResultController.php" hash="f6b8f3403117641da37dbe1dd5771fb0"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1719b869d3153268f6d020da7fd25544"/><file name="config.xml" hash="516890f684247e9ab607b4bded691033"/><file name="system.xml" hash="6fcd245de0baac7dc3b6a8669252d4e4"/></dir><dir name="sql"><dir name="catalin_seo_setup"><file name="install-2.0.0.php" hash="999b376f81cf088a6004d1d0ff6c69fb"/><file name="upgrade-2.0.0-3.0.0.php" hash="c40909daa09e186e6bd4893b59d28ef1"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="catalin_seo.xml" hash="60c6a543b4c4c1e256154cf8f51b027a"/></dir><dir name="template"><dir name="catalin_seo"><dir><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="c13939781e34c1b1dfa8bf1ea6858e11"/><dir name="filter"><file name="swatches.phtml" hash="0636741f47a3e0b09943f05b1dd02014"/></dir><file name="filter.phtml" hash="84db44ce1fbc1085dd04e83fec2e6574"/><file name="price.phtml" hash="9c14c521b8cfef1c9b3e0ecc88ac0d95"/><file name="view.phtml" hash="ed534667bfed08b0dd5d62f4409bdadc"/></dir><dir name="product"><file name="list.phtml" hash="82a01442249b0a06f460fcb8cbecfbcb"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="catalin_seo"><file name="style.css" hash="31d3747d0e69fc67a54758e0cc4fcf12"/></dir></dir><dir name="images"><dir name="catalin_seo"><file name="bkg_slider.png" hash="898eb55265200836a479588ed54e1309"/><file name="slider.png" hash="b95e0855075c3a854a220dc886445ea0"/></dir></dir><dir name="js"><dir name="catalin_seo"><file name="handler-ee-rwd.js" hash="9937350dbba8b5623859e8f7aeb8bf89"/><file name="handler.js" hash="14148557542ba268d61704fda157d36d"/><file name="native.history.js" hash="5d8d6becc18cc0c370aa1a562e532ade"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Catalin_SEO.xml" hash="d8056befe6d816e8a3f9db445f22670a"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Catalin_SEO.csv" hash="169f6d8822b0c79f5cbc08bccb97d96f"/></dir><dir name="nl_NL"><file name="Catalin_SEO.csv" hash="6701ce3f9a7e5ffaa2fff7634376af29"/></dir></target><target name="mage"><dir name="."><file name="LICENSE.txt" hash="dc87fafdb09d4c9000774eb7afcee2bd"/><file name="README.md" hash="958948f251595ef20c2241dca4457fce"/></dir></target></contents>
28
  <compatible/>
29
  <dependencies><required><php><min>5.3.0</min><max>7.0.0</max></php></required></dependencies>
30
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Catalin_Seo</name>
4
+ <version>3.3.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/mit-license.php">MIT</license>
7
  <channel>community</channel>
20
  &lt;li&gt;go to category instead of filtering&lt;/li&gt;&#xD;
21
  &lt;/ul&gt;&#xD;
22
  &lt;p&gt;All the above features can be enabled/disabled from backend from "System -&gt; Configuration -&gt; Catalin SEO -&gt; Catalog Layered Navigation"&lt;/p&gt;</description>
23
+ <notes>- Use jQuery where possible instead of Prototype&#xD;
24
+ - Improve custom theme compatibility&#xD;
25
+ - EE FPC fix&#xD;
26
+ - Fixed missing content issue on iOS</notes>
27
  <authors><author><name>Catalin Ciobanu</name><user>catalin_ciobanu</user><email>caciobanu@gmail.com</email></author></authors>
28
+ <date>2017-03-03</date>
29
+ <time>19:06:17</time>
30
+ <contents><target name="magecommunity"><dir name="Catalin"><dir name="SEO"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="4c2ce764b158d9da57bee09ce884ef28"/><file name="Category.php" hash="f65c53d439f7a387ed21069a60800e07"/><file name="Price.php" hash="17d3b442d428ab1cc06451fae7349085"/></dir><file name="State.php" hash="85509c1200f936042bccd9784fddb610"/></dir><dir name="Product"><dir name="List"><file name="Pager.php" hash="39c10d3a573b1d905fc3e63feb0d5176"/><file name="Toolbar.php" hash="0a1ed1e69818834cf3211a46ed668505"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="f8f1de9a6a90a31f86657499fb1c5b0f"/></dir></dir></dir><dir name="ConfigurableSwatches"><dir name="Catalog"><dir name="Layer"><dir name="State"><file name="Swatch.php" hash="ca03c9a37eef2a41e28f4c93935cf3c4"/></dir></dir></dir></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2626608bb00b3c1de769cff2c68a912"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3b3874577300d5b88689eedb01346712"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Router.php" hash="c8e2a69962c3220dfe5f46916922668b"/></dir><dir name="Helper"><dir name="ConfigurableSwatches"><file name="Productlist.php" hash="1b4c40c87d701192d2571a42ef4ad98c"/></dir><file name="Data.php" hash="9873cb25b3675f3531f9bd95e1f84e04"/><dir name="data"><file name="x00.php" hash="450182e4917ae346e6e64c17ffb63e97"/><file name="x01.php" hash="8e4880febe04e8bbc68c6ee6bc14f112"/><file name="x02.php" hash="919566cf560d5865a4f347cb0cf5ce30"/><file name="x03.php" hash="14dcbdbcde12f478d8657da808fe643d"/><file name="x04.php" hash="b4ca085c2a79244199f079d01c7e2c6b"/><file name="x05.php" hash="3797d79ee103c227f650d39da9bf0fb6"/><file name="x06.php" hash="e4faf649ef87968f2b58f9644687de2c"/><file name="x07.php" hash="5dc7d9d484aa28d77edd934c47cbb38c"/><file name="x09.php" hash="63337e20c61da6c5b5842c39bbfcd033"/><file name="x0a.php" hash="df2383cac3d3164a054d123e428a6ef0"/><file name="x0b.php" hash="55bf005378faa332a988145edfe65bfe"/><file name="x0c.php" hash="d3b45c5fd9d6794907523233e7b5ef73"/><file name="x0d.php" hash="0efd5f8911480341c1c5d9dd2cd96eab"/><file name="x0e.php" hash="00bafa974dd7e72e3cdfa84460146743"/><file name="x0f.php" hash="c5ab298134b47c79f2317ce291f29091"/><file name="x10.php" hash="db5df20e88ef152852d51108a28faf68"/><file name="x11.php" hash="6dbce9e90d9d1c2bffd476fffd9c81ad"/><file name="x12.php" hash="1911521e2aa3cc389e74b33282c80b5a"/><file name="x13.php" hash="ac373e87af343f2f39586f6e01f3bc7a"/><file name="x14.php" hash="618d7ca14ced92c68225108c1fdf3d1f"/><file name="x15.php" hash="6019f2cf672cfcf4486742d640ca0a49"/><file name="x16.php" hash="363b81373dd510f53444d2fca01500d0"/><file name="x17.php" hash="0075d26788b3147ee1b93f1fbe4abcb5"/><file name="x18.php" hash="382dcd23cdbb6a2c1585f91d528aae5c"/><file name="x1e.php" hash="e0d2195ccdb96cf4ea345715de4a2fe0"/><file name="x1f.php" hash="13fffadc97ef3445cbd4969d347b8d32"/><file name="x20.php" hash="ad43141b04fb6d7bab183e13354acb13"/><file name="x21.php" hash="eb84515b6f6be292bf81c576e6ed0b0f"/><file name="x22.php" hash="51ade912682064603ca54b20ecaa9334"/><file name="x23.php" hash="2b153cbc0e81d3151c1ec44e6accd682"/><file name="x24.php" hash="98d4b201e8c670219cc7569e28653d1c"/><file name="x25.php" hash="ee79b56b8b4c5a79af30c30e74b2de22"/><file name="x26.php" hash="88c02bafbf73d21d21c59768419b0c2a"/><file name="x27.php" hash="72bb13e4b32fbf9a174b5d35e6264159"/><file name="x28.php" hash="dcbe588e9d301c627f1dc5ebea623f35"/><file name="x2e.php" hash="a506c372cb82f9e84a514075b788914b"/><file name="x2f.php" hash="577fb5f9d9968471a95906c840c4ec97"/><file name="x30.php" hash="be9214f6b21c651fdd8a7f0ff624826e"/><file name="x31.php" hash="09cb141e4e5b15715b4eb092ff62f6ce"/><file name="x32.php" hash="5781ef2460e4fc93260899c37f3ca6af"/><file name="x33.php" hash="582fcde78a8bb85f11a4c6098b523234"/><file name="x4d.php" hash="8842aa5496002094ae68b2ddc10b3dcc"/><file name="x4e.php" hash="b0d1ed31e7268c2fe7fda95e1eba8bed"/><file name="x4f.php" hash="841625fff58304e2171fef729e6ed695"/><file name="x50.php" hash="dbcc2470e51be09e4d36b8c3ab07767d"/><file name="x51.php" hash="fd96d946cd328ac8e2041b99d64cf37d"/><file name="x52.php" hash="5e3a9fa55c4c8de7d3438b11d930c3ca"/><file name="x53.php" hash="29603023fa46a48c75a5cd5149823894"/><file name="x54.php" hash="3b8da5215b64deecc23f6b51f1c0510d"/><file name="x55.php" hash="06814d53163929c319af8c2a49edcd9b"/><file name="x56.php" hash="2b2ebbadb098a2353ddd659fb8ccb7cd"/><file name="x57.php" hash="725cd6c2ce9ecc6ceaf9aee144741984"/><file name="x58.php" hash="ac31204c457ab7a814ff53939d68447c"/><file name="x59.php" hash="48c0049cb0eb14d13f98cf6c12103db0"/><file name="x5a.php" hash="2ae0dbe06a3d97ae9bcd25fb94fd31c3"/><file name="x5b.php" hash="14f157d36788f292258ed9a83de5da73"/><file name="x5c.php" hash="50bcac83e76c63281f8985320e6e830a"/><file name="x5d.php" hash="862216f95a3590d28cebf287a25c5746"/><file name="x5e.php" hash="fbffe7592bfbe00e9999dde4c83d601d"/><file name="x5f.php" hash="9a87b39043670fdd7cfe07fd49279e22"/><file name="x60.php" hash="e160340e86644fd83c1800026dea241f"/><file name="x61.php" hash="eb3b4d5a8108ba0d1b4f9bd67fadd817"/><file name="x62.php" hash="3e558391bc4ed3768e13e0cace21bcc5"/><file name="x63.php" hash="ade79f321bb4449620e86a77b556a4c4"/><file name="x64.php" hash="664368342658a4aed7853d9a2d65d750"/><file name="x65.php" hash="a1bbc07e58b13d99ed4302ec4e67f4b2"/><file name="x66.php" hash="2f17f60177981e12be650c13f04a49e0"/><file name="x67.php" hash="3a4b21418a78042243721c98f28968d8"/><file name="x68.php" hash="1b8b4ce217986cc3f7550f16e8db1780"/><file name="x69.php" hash="6def6c5b5e469c806a6b38827d0c34f5"/><file name="x6a.php" hash="9fae911d681a0c625fc6e5151ae44d28"/><file name="x6b.php" hash="245472ec4357e0b25da3d16140bcf6d1"/><file name="x6c.php" hash="28fc6a8e4660a0b50566e850e2afc6a3"/><file name="x6d.php" hash="18f83b6b5a6f55520f975057fef4fa3a"/><file name="x6e.php" hash="df5ab12708cd053e6ec8b2228380adbb"/><file name="x6f.php" hash="866c65a813461f43324a24cb463cf4bb"/><file name="x70.php" hash="daf8e99c570287fa4bdac6c353884937"/><file name="x71.php" hash="6b136f7c2a07422d1c0120ff39677b8f"/><file name="x72.php" hash="3312f70e586836e16b3802d24f828888"/><file name="x73.php" hash="010e32351d3ee643e8b4464d391eb51f"/><file name="x74.php" hash="d9c0fb5bb46813b9fd7078d2054ca0b1"/><file name="x75.php" hash="34ee63177ea043bea198fe191327d6e0"/><file name="x76.php" hash="8e1cd7e7db6f45f2e1288ebb90eb31e6"/><file name="x77.php" hash="9e295e80d931332ace899152972f34a0"/><file name="x78.php" hash="ef15567cc00457ca734d18a021b5e52d"/><file name="x79.php" hash="41467fa793d377d10980ab2256993a29"/><file name="x7a.php" hash="bc618f669de10280de11c8678f4d651f"/><file name="x7b.php" hash="d065d37d486d53273b18b0b9f9dd86b2"/><file name="x7c.php" hash="5921121839baed16b78cc36145b52a62"/><file name="x7d.php" hash="f0077edfa1f9859d0f14d3bab15bef0c"/><file name="x7e.php" hash="63d1daf0b583b4c4a66c011894a8cc98"/><file name="x7f.php" hash="c688c38a38e171755e43e905a69e339a"/><file name="x80.php" hash="9070a439e5c0b2ea086f11863746cafb"/><file name="x81.php" hash="06f4d64caf41f3d985caea14ab3a31b0"/><file name="x82.php" hash="6cb491f40badaeaa3f9f292f5bfca217"/><file name="x83.php" hash="d9d39c5e7130705f69b46647f5af8250"/><file name="x84.php" hash="38c71fc265e5b1d431cf2b58e163eaa2"/><file name="x85.php" hash="b112d31fa357b3d3b67842a77cb5310a"/><file name="x86.php" hash="d7fa4167950da670cadd2d451f1a2edb"/><file name="x87.php" hash="80a3ab6690073fe3775ec81f2ee35013"/><file name="x88.php" hash="e05489231b1d4915c42997dec89b15cb"/><file name="x89.php" hash="19d3087264c2dbed0ffa4cd47c6f2853"/><file name="x8a.php" hash="093885354302b9898b8851e09444fd96"/><file name="x8b.php" hash="05588068116c641f70c7e459632f5394"/><file name="x8c.php" hash="b098af3f0e138b56ab8411b2cde600b9"/><file name="x8d.php" hash="a9cb4c30252f615dc452041ccf651467"/><file name="x8e.php" hash="53a2cd6937d88c19f8e1ae228a65c830"/><file name="x8f.php" hash="4e0c37fe92418505c7c4612eb8251e3a"/><file name="x90.php" hash="1112c376c17c3aba6f958dbff6d15362"/><file name="x91.php" hash="f9eeb625c3c66af15a8d82f1db0cdc15"/><file name="x92.php" hash="3be097a2d595bf46323de0661161846c"/><file name="x93.php" hash="beac90d08e9c9753c90afd26db2ad1d0"/><file name="x94.php" hash="45555c59ed7e9e9a0abc470d272835ad"/><file name="x95.php" hash="8ee187be6fbeb7fe3297baa9c89ea6dd"/><file name="x96.php" hash="57b310726908124b27f6ac0d7a5aa95b"/><file name="x97.php" hash="fcfa660695fc43f0ef974416d6417ec2"/><file name="x98.php" hash="88b0e6407503716e4e8d221f77e63f00"/><file name="x99.php" hash="a0924c478967313bd96ca5bc62b955a0"/><file name="x9a.php" hash="d8e1f4684908ffea274e7d62f9b7f210"/><file name="x9b.php" hash="ff855336ea0962b81d9410eea22a8eca"/><file name="x9c.php" hash="9866a2f684ac602cac02ba02f66bdacf"/><file name="x9d.php" hash="64b8d5235c86678f88b3adc1fff2b944"/><file name="x9e.php" hash="c9fad776841bc34fc5fd7700797b65f4"/><file name="x9f.php" hash="f1c6d6cbb8ac5fb5c76e7489bef8774d"/><file name="xa0.php" hash="f27b2025d8a2dc84d5821ee0de443243"/><file name="xa1.php" hash="9079b3e07655b0536153c70d09f2dd41"/><file name="xa2.php" hash="43abb79aa36b6575be2072aca536e770"/><file name="xa3.php" hash="ac0f7f693a8b9b15c14c7e93d16e44d4"/><file name="xa4.php" hash="673c5ca4d9faa59ae7c1fbde0618714d"/><file name="xac.php" hash="113f809d9d7c474d80588d240639dc2f"/><file name="xad.php" hash="16010ec214c0bd856ff4880aba557b18"/><file name="xae.php" hash="c01cb4a18ef68ae1e793e947857e6a72"/><file name="xaf.php" hash="98f242cb0bc7429a5a450e9c82d462db"/><file name="xb0.php" hash="7f37bfe7e9782a8702a8bac106a45627"/><file name="xb1.php" hash="f7105123854bb619b232c2fd9502715a"/><file name="xb2.php" hash="824a10352cf082b71df114bc9362eb3c"/><file name="xb3.php" hash="fabb7f1a18d2632127f405ed5b419f61"/><file name="xb4.php" hash="eff9e802c59769e6f6255ebe3e4c5cb6"/><file name="xb5.php" hash="cbf6d291c99528a3564c1d3ff3a777b3"/><file name="xb6.php" hash="b0d1ab9d95e1e6e82c69a399311df856"/><file name="xb7.php" hash="a685d5656e8f31212e01f64afc6298fc"/><file name="xb8.php" hash="fd7a9295e32870eec0889695a6be3f6c"/><file name="xb9.php" hash="abb9c74fe83846f07826bf6044640e23"/><file name="xba.php" hash="36d7426647eedf90b52cf38f54c1cb0e"/><file name="xbb.php" hash="d547091bb8a6390ef90957c7687b0ab4"/><file name="xbc.php" hash="078a5499d2429ae0460d0277bbdb525d"/><file name="xbd.php" hash="bd9b10559360179d75cd84a389c75f15"/><file name="xbe.php" hash="624c0d43f2f9cf75a1e7da423ef46b07"/><file name="xbf.php" hash="51213b7f0991eb46aee2a1ce730b76e7"/><file name="xc0.php" hash="1a8012c0f8d16de7a93deb57d9907fc0"/><file name="xc1.php" hash="17faeb0f134d296e73b87d31820c7b45"/><file name="xc2.php" hash="95182ef9085fceca36ca1fcd60b6532f"/><file name="xc3.php" hash="a472ff382a6d1b5b43535f0ea339a06d"/><file name="xc4.php" hash="9afbcb6b0f0664ff70f896472dd699cf"/><file name="xc5.php" hash="141d244dc5372cd0abb688106041166e"/><file name="xc6.php" hash="a938470c97c22df1333b1f4de59d10fc"/><file name="xc7.php" hash="6e9e2dbc3b5f8d102ea63fc5599900d2"/><file name="xc8.php" hash="e6a8179a9e4b497e8d04e8ca6240a5d8"/><file name="xc9.php" hash="bf4e9f9324133fa15dd925b4558f258e"/><file name="xca.php" hash="897dd8dd4c588ca9cd34f5b61b1323a9"/><file name="xcb.php" hash="0df0f5b354a5c251e985dad8b7eafdd3"/><file name="xcc.php" hash="910fed76843cbed1b83bdc42b0217768"/><file name="xcd.php" hash="517dd294b9680ef27979cf492274d91b"/><file name="xce.php" hash="e5039314ab0cc94966820e1a7f986e40"/><file name="xcf.php" hash="b346e1ec9989d5c9995330982bbf1247"/><file name="xd0.php" hash="03586ec3fe0a918af9a5b2e0deec7177"/><file name="xd1.php" hash="a817a0340fbc8600e578218ffedd8f6d"/><file name="xd2.php" hash="41024477c699d431f68d8f56c3f6e85b"/><file name="xd3.php" hash="58fb27e572fa053f32920df9e7cd5a34"/><file name="xd4.php" hash="cd0e76107f22781373ed430500c38fc8"/><file name="xd5.php" hash="5d2258b3806920efde76e95838d5f4c3"/><file name="xd6.php" hash="673fe086f96039b1eb010fcb22ef5028"/><file name="xd7.php" hash="e23e0c525b319c846f92fc43bbb482ba"/><file name="xf9.php" hash="5ce24abde1c4f80a24f9af851fd5ae52"/><file name="xfa.php" hash="0beca78d4119f03af6f6af953239ed40"/><file name="xfb.php" hash="add34b1f16d2a6d2beb6eb9d42a89e32"/><file name="xfc.php" hash="04c1d8d478177fa22b4ccfd75a6f7083"/><file name="xfd.php" hash="6e99507389f70dc22fc5b88086edcaa5"/><file name="xfe.php" hash="6172c6780c7a848d8529e65fb08ccfa6"/><file name="xff.php" hash="6731af770a26cad1dcb3c370aa50aea8"/></dir></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="44a44ede29dd12f68210c9aa39172a60"/><file name="Category.php" hash="9633748abc5f9153a5697622fc59a3ee"/><file name="Item.php" hash="fa1a01ea22b04b07994552f77165ed71"/><file name="Price.php" hash="9ee809fd86b19e6b833a40176a888aa7"/></dir></dir><file name="Layer.php" hash="fe8cceb7cddd3614232a33741244f0dd"/><dir name="Resource"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="ec5b16e7ac8f3114e5597a840a82557e"/><file name="Price.php" hash="db13a76dbe216fb2df2e12ef09b836df"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="b9c50e30741608e5ea40595e13f38f50"/></dir></dir><file name="Layer.php" hash="3b694b045f339ac1646935902dab41ca"/></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e641c473a15cf651e304612afd3a40d2"/><file name="Category.php" hash="01823903fc22406610bd7a7c176bbf89"/></dir></dir></dir></dir><dir name="Indexer"><file name="Attribute.php" hash="2f83425173480b1c6ec3b7a11bb0776c"/></dir><dir name="Resource"><dir name="Attribute"><file name="Urlkey.php" hash="6d71d3b665104255cca241c231f37dc9"/></dir><dir name="Indexer"><file name="Attribute.php" hash="d16d6548876c91398c2b860e8e87a35c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Seo"><file name="Catalog.php" hash="0440edbcf687f5655f5014c0324ef947"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="CategoryController.php" hash="0e5be1d2a3df90fe26f1a70a2a481fc0"/><file name="ResultController.php" hash="62140dc7effa946fdb6324d848f6aa29"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1719b869d3153268f6d020da7fd25544"/><file name="config.xml" hash="516890f684247e9ab607b4bded691033"/><file name="system.xml" hash="6fcd245de0baac7dc3b6a8669252d4e4"/></dir><dir name="sql"><dir name="catalin_seo_setup"><file name="install-2.0.0.php" hash="999b376f81cf088a6004d1d0ff6c69fb"/><file name="upgrade-2.0.0-3.0.0.php" hash="c40909daa09e186e6bd4893b59d28ef1"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="catalin_seo.xml" hash="60c6a543b4c4c1e256154cf8f51b027a"/></dir><dir name="template"><dir name="catalin_seo"><dir><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="c13939781e34c1b1dfa8bf1ea6858e11"/><dir name="filter"><file name="swatches.phtml" hash="0636741f47a3e0b09943f05b1dd02014"/></dir><file name="filter.phtml" hash="84db44ce1fbc1085dd04e83fec2e6574"/><file name="price.phtml" hash="9c14c521b8cfef1c9b3e0ecc88ac0d95"/><file name="view.phtml" hash="ed534667bfed08b0dd5d62f4409bdadc"/></dir><dir name="product"><file name="list.phtml" hash="82a01442249b0a06f460fcb8cbecfbcb"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="catalin_seo"><file name="style.css" hash="31d3747d0e69fc67a54758e0cc4fcf12"/></dir></dir><dir name="images"><dir name="catalin_seo"><file name="bkg_slider.png" hash="898eb55265200836a479588ed54e1309"/><file name="slider.png" hash="b95e0855075c3a854a220dc886445ea0"/></dir></dir><dir name="js"><dir name="catalin_seo"><file name="handler-ee-rwd.js" hash="9baba6deba06c12648661b6998e6fe72"/><file name="handler.js" hash="f6b5b7b435766ac2415d761a23dbbf00"/><file name="native.history.js" hash="5d8d6becc18cc0c370aa1a562e532ade"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Catalin_SEO.xml" hash="d8056befe6d816e8a3f9db445f22670a"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Catalin_SEO.csv" hash="169f6d8822b0c79f5cbc08bccb97d96f"/></dir><dir name="nl_NL"><file name="Catalin_SEO.csv" hash="6701ce3f9a7e5ffaa2fff7634376af29"/></dir></target><target name="mage"><dir name="."><file name="LICENSE.txt" hash="dc87fafdb09d4c9000774eb7afcee2bd"/><file name="README.md" hash="958948f251595ef20c2241dca4457fce"/></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.3.0</min><max>7.0.0</max></php></required></dependencies>
33
  </package>
skin/frontend/base/default/js/catalin_seo/handler-ee-rwd.js CHANGED
@@ -24,14 +24,14 @@ var CatalinSeoHandler = {
24
  var url, fullUrl;
25
  var self = this;
26
  if (el.tagName.toLowerCase() === 'input') {
27
- url = $(el).getAttribute('value');
28
  } else if (el.tagName.toLowerCase() === 'a') {
29
- url = $(el).readAttribute('href');
30
  } else if (el.tagName.toLowerCase() === 'select') {
31
- url = $(el).getValue();
32
  }
33
 
34
- if ($j(el).hasClass('no-ajax')) {
35
  window.location.href = url;
36
  return;
37
  }
@@ -69,9 +69,9 @@ var CatalinSeoHandler = {
69
  self.showMoreListener();
70
  self.searchBoxListener();
71
 
72
- if (ConfigurableSwatchesList) {
73
  setTimeout(function(){
74
- $j(document).trigger('product-media-loaded');
75
  }, 0);
76
  }
77
  } else {
@@ -83,7 +83,7 @@ var CatalinSeoHandler = {
83
  });
84
  },
85
  sendUpdateEvent: function() {
86
- $j(document).trigger('catalin:updatePage');
87
  },
88
  prepareAjaxUrl: function (url) {
89
  // In EE, the FPC caches response headers by request path, without query arguments.
@@ -206,8 +206,11 @@ var CatalinSeoHandler = {
206
  History.Adapter.bind(window, 'popstate', function (event) {
207
  if (event.type == 'popstate') {
208
  var State = History.getState();
209
- $('catalog-listing').update(State.data.listing);
210
- $$('.block-layered-nav')[0].replace(State.data.layer);
 
 
 
211
  self.ajaxListener();
212
  self.toggleContent();
213
  self.alignProductGridActions();
@@ -215,9 +218,9 @@ var CatalinSeoHandler = {
215
  self.showMoreListener();
216
  self.searchBoxListener();
217
 
218
- if (ConfigurableSwatchesList) {
219
  setTimeout(function(){
220
- $j(document).trigger('product-media-loaded');
221
  }, 0);
222
  }
223
  }
@@ -234,7 +237,7 @@ var CatalinSeoHandler = {
234
  // UI Pattern - Toggle Content (tabs and accordions in one setup)
235
  // ==============================================
236
 
237
- $j('.toggle-content').each(function () {
238
  var wrapper = jQuery(this);
239
 
240
  var hasTabs = wrapper.hasClass('tabs');
@@ -311,19 +314,19 @@ var CatalinSeoHandler = {
311
  // Since the number of columns per grid will vary based on the viewport size, the only way to align the action
312
  // buttons/links is via JS
313
 
314
- if ($j('.products-grid').length) {
315
 
316
  var alignProductGridActions = function () {
317
  // Loop through each product grid on the page
318
- $j('.products-grid').each(function(){
319
  var gridRows = []; // This will store an array per row
320
  var tempRow = [];
321
- productGridElements = $j(this).children('li');
322
  productGridElements.each(function (index) {
323
  // The JS ought to be agnostic of the specific CSS breakpoints, so we are dynamically checking to find
324
  // each row by grouping all cells (eg, li elements) up until we find an element that is cleared.
325
  // We are ignoring the first cell since it will always be cleared.
326
- if ($j(this).css('clear') != 'none' && index != 0) {
327
  gridRows.push(tempRow); // Add the previous set of rows to the main array
328
  tempRow = []; // Reset the array since we're on a new row
329
  }
@@ -336,23 +339,23 @@ var CatalinSeoHandler = {
336
  }
337
  });
338
 
339
- $j.each(gridRows, function () {
340
  var tallestProductInfo = 0;
341
- $j.each(this, function () {
342
  // Since this function is called every time the page is resized, we need to remove the min-height
343
  // and bottom-padding so each cell can return to its natural size before being measured.
344
- $j(this).find('.product-info').css({
345
  'min-height': '',
346
  'padding-bottom': ''
347
  });
348
 
349
  // We are checking the height of .product-info (rather than the entire li), because the images
350
  // will not be loaded when this JS is run.
351
- var productInfoHeight = $j(this).find('.product-info').height();
352
  // Space above .actions element
353
  var actionSpacing = 10;
354
  // The height of the absolutely positioned .actions element
355
- var actionHeight = $j(this).find('.product-info .actions').height();
356
 
357
  // Add height of two elements. This is necessary since .actions is absolutely positioned and won't
358
  // be included in the height of .product-info
@@ -363,11 +366,11 @@ var CatalinSeoHandler = {
363
 
364
  // Set the bottom-padding to accommodate the height of the .actions element. Note: if .actions
365
  // elements are of varying heights, they will not be aligned.
366
- $j(this).find('.product-info').css('padding-bottom', actionHeight + 'px');
367
  });
368
  // Set the height of all .product-info elements in a row to the tallest height
369
- $j.each(this, function () {
370
- $j(this).find('.product-info').css('min-height', tallestProductInfo);
371
  });
372
  });
373
  });
@@ -380,50 +383,52 @@ var CatalinSeoHandler = {
380
  // Block collapsing (on smaller viewports)
381
  // ==============================================
382
 
383
- enquire.register('(max-width: ' + bp.medium + 'px)', {
384
- setup: function () {
385
- this.toggleElements = $j(
386
- // This selects the menu on the My Account and CMS pages
387
- '.col-left-first .block:not(.block-layered-nav) .block-title, ' +
388
- '.col-left-first .block-layered-nav .block-subtitle--filter, ' +
389
- '.sidebar:not(.col-left-first) .block .block-title'
390
- );
391
- },
392
- match: function () {
393
- this.toggleElements.toggleSingle();
394
- },
395
- unmatch: function () {
396
- this.toggleElements.toggleSingle({destruct: true});
397
- }
398
- });
 
 
399
  },
400
  showMoreListener: function() {
401
- $j('div.show_more_filters').on('click', function (e) {
402
- $j(e.target).parent().parent().parent().find('.filter_hide').toggle();
403
- $j(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
404
- if($j(e.target).text() == $j(e.target).data('text-more')) {
405
- $j(e.target).text($j(e.target).data('text-less'));
406
  } else {
407
- $j(e.target).text($j(e.target).data('text-more'));
408
  }
409
  });
410
  },
411
  searchBoxListener: function() {
412
  /* Make CSS contains psuedo selector case insensitive */
413
- $j.expr[":"].contains = $j.expr.createPseudo(function(arg) {
414
  return function( elem ) {
415
- return $j(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
416
  };
417
  });
418
 
419
- $j('.attribute_value_search_box input').on('keyup', function (e) {
420
- if($j(e.target).val()) {
421
- $j(e.target).parent().next('dd').find('li').hide();
422
- $j(e.target).parent().next('dd').find('li:contains("' + $j(e.target).val() + '")').each(function (i, li) {
423
- $j(li).show();
424
  });
425
  } else {
426
- $j(e.target).parent().next('dd').find('li').show();
427
  }
428
  });
429
  }
24
  var url, fullUrl;
25
  var self = this;
26
  if (el.tagName.toLowerCase() === 'input') {
27
+ url = jQuery(el).val();
28
  } else if (el.tagName.toLowerCase() === 'a') {
29
+ url = jQuery(el).attr('href');
30
  } else if (el.tagName.toLowerCase() === 'select') {
31
+ url = jQuery(el).val();
32
  }
33
 
34
+ if (jQuery(el).hasClass('no-ajax')) {
35
  window.location.href = url;
36
  return;
37
  }
69
  self.showMoreListener();
70
  self.searchBoxListener();
71
 
72
+ if (typeof(ConfigurableSwatchesList) !== 'undefined') {
73
  setTimeout(function(){
74
+ jQuery(document).trigger('product-media-loaded');
75
  }, 0);
76
  }
77
  } else {
83
  });
84
  },
85
  sendUpdateEvent: function() {
86
+ jQuery(document).trigger('catalin:updatePage');
87
  },
88
  prepareAjaxUrl: function (url) {
89
  // In EE, the FPC caches response headers by request path, without query arguments.
206
  History.Adapter.bind(window, 'popstate', function (event) {
207
  if (event.type == 'popstate') {
208
  var State = History.getState();
209
+ // don't update blocks if data is undefined
210
+ if (typeof State.data.listing != 'undefined' && typeof State.data.layer != 'undefined') {
211
+ $('catalog-listing').update(State.data.listing);
212
+ $$('.block-layered-nav')[0].replace(State.data.layer);
213
+ }
214
  self.ajaxListener();
215
  self.toggleContent();
216
  self.alignProductGridActions();
218
  self.showMoreListener();
219
  self.searchBoxListener();
220
 
221
+ if (typeof(ConfigurableSwatchesList) !== 'undefined') {
222
  setTimeout(function(){
223
+ jQuery(document).trigger('product-media-loaded');
224
  }, 0);
225
  }
226
  }
237
  // UI Pattern - Toggle Content (tabs and accordions in one setup)
238
  // ==============================================
239
 
240
+ jQuery('.toggle-content').each(function () {
241
  var wrapper = jQuery(this);
242
 
243
  var hasTabs = wrapper.hasClass('tabs');
314
  // Since the number of columns per grid will vary based on the viewport size, the only way to align the action
315
  // buttons/links is via JS
316
 
317
+ if (jQuery('.products-grid').length) {
318
 
319
  var alignProductGridActions = function () {
320
  // Loop through each product grid on the page
321
+ jQuery('.products-grid').each(function(){
322
  var gridRows = []; // This will store an array per row
323
  var tempRow = [];
324
+ productGridElements = jQuery(this).children('li');
325
  productGridElements.each(function (index) {
326
  // The JS ought to be agnostic of the specific CSS breakpoints, so we are dynamically checking to find
327
  // each row by grouping all cells (eg, li elements) up until we find an element that is cleared.
328
  // We are ignoring the first cell since it will always be cleared.
329
+ if (jQuery(this).css('clear') != 'none' && index != 0) {
330
  gridRows.push(tempRow); // Add the previous set of rows to the main array
331
  tempRow = []; // Reset the array since we're on a new row
332
  }
339
  }
340
  });
341
 
342
+ jQuery.each(gridRows, function () {
343
  var tallestProductInfo = 0;
344
+ jQuery.each(this, function () {
345
  // Since this function is called every time the page is resized, we need to remove the min-height
346
  // and bottom-padding so each cell can return to its natural size before being measured.
347
+ jQuery(this).find('.product-info').css({
348
  'min-height': '',
349
  'padding-bottom': ''
350
  });
351
 
352
  // We are checking the height of .product-info (rather than the entire li), because the images
353
  // will not be loaded when this JS is run.
354
+ var productInfoHeight = jQuery(this).find('.product-info').height();
355
  // Space above .actions element
356
  var actionSpacing = 10;
357
  // The height of the absolutely positioned .actions element
358
+ var actionHeight = jQuery(this).find('.product-info .actions').height();
359
 
360
  // Add height of two elements. This is necessary since .actions is absolutely positioned and won't
361
  // be included in the height of .product-info
366
 
367
  // Set the bottom-padding to accommodate the height of the .actions element. Note: if .actions
368
  // elements are of varying heights, they will not be aligned.
369
+ jQuery(this).find('.product-info').css('padding-bottom', actionHeight + 'px');
370
  });
371
  // Set the height of all .product-info elements in a row to the tallest height
372
+ jQuery.each(this, function () {
373
+ jQuery(this).find('.product-info').css('min-height', tallestProductInfo);
374
  });
375
  });
376
  });
383
  // Block collapsing (on smaller viewports)
384
  // ==============================================
385
 
386
+ if (typeof(enquire) !== 'undefined') {
387
+ enquire.register('(max-width: ' + bp.medium + 'px)', {
388
+ setup: function () {
389
+ this.toggleElements = jQuery(
390
+ // This selects the menu on the My Account and CMS pages
391
+ '.col-left-first .block:not(.block-layered-nav) .block-title, ' +
392
+ '.col-left-first .block-layered-nav .block-subtitle--filter, ' +
393
+ '.sidebar:not(.col-left-first) .block .block-title'
394
+ );
395
+ },
396
+ match: function () {
397
+ this.toggleElements.toggleSingle();
398
+ },
399
+ unmatch: function () {
400
+ this.toggleElements.toggleSingle({destruct: true});
401
+ }
402
+ });
403
+ }
404
  },
405
  showMoreListener: function() {
406
+ jQuery('div.show_more_filters a').on('click', function (e) {
407
+ jQuery(e.target).parent().parent().parent().find('.filter_hide').toggle();
408
+ jQuery(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
409
+ if(jQuery(e.target).text() == jQuery(e.target).data('text-more')) {
410
+ jQuery(e.target).text(jQuery(e.target).data('text-less'));
411
  } else {
412
+ jQuery(e.target).text(jQuery(e.target).data('text-more'));
413
  }
414
  });
415
  },
416
  searchBoxListener: function() {
417
  /* Make CSS contains psuedo selector case insensitive */
418
+ jQuery.expr[":"].contains = jQuery.expr.createPseudo(function(arg) {
419
  return function( elem ) {
420
+ return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
421
  };
422
  });
423
 
424
+ jQuery('.attribute_value_search_box input').on('keyup', function (e) {
425
+ if(jQuery(e.target).val()) {
426
+ jQuery(e.target).parent().next('dd').find('li').hide();
427
+ jQuery(e.target).parent().next('dd').find('li:contains("' + jQuery(e.target).val() + '")').each(function (i, li) {
428
+ jQuery(li).show();
429
  });
430
  } else {
431
+ jQuery(e.target).parent().next('dd').find('li').show();
432
  }
433
  });
434
  }
skin/frontend/base/default/js/catalin_seo/handler.js CHANGED
@@ -23,14 +23,14 @@ var CatalinSeoHandler = {
23
  var url;
24
  var self = this;
25
  if (el.tagName.toLowerCase() === 'input') {
26
- url = $(el).getAttribute('value');
27
  } else if (el.tagName.toLowerCase() === 'a') {
28
- url = $(el).readAttribute('href');
29
  } else if (el.tagName.toLowerCase() === 'select') {
30
- url = $(el).getValue();
31
  }
32
 
33
- if ($j(el).hasClass('no-ajax')) {
34
  window.location.href = url;
35
  return;
36
  }
@@ -73,9 +73,9 @@ var CatalinSeoHandler = {
73
  self.showMoreListener();
74
  self.searchBoxListener();
75
 
76
- if (ConfigurableSwatchesList) {
77
  setTimeout(function(){
78
- $j(document).trigger('product-media-loaded');
79
  }, 0);
80
  }
81
  } else {
@@ -87,7 +87,7 @@ var CatalinSeoHandler = {
87
  });
88
  },
89
  sendUpdateEvent: function() {
90
- $j(document).trigger('catalin:updatePage');
91
  },
92
  pushState: function (data, link, replace) {
93
  var History = window.History;
@@ -178,9 +178,9 @@ var CatalinSeoHandler = {
178
  self.showMoreListener();
179
  self.searchBoxListener();
180
 
181
- if (ConfigurableSwatchesList) {
182
  setTimeout(function(){
183
- $j(document).trigger('product-media-loaded');
184
  }, 0);
185
  }
186
  }
@@ -197,7 +197,7 @@ var CatalinSeoHandler = {
197
  // UI Pattern - Toggle Content (tabs and accordions in one setup)
198
  // ==============================================
199
 
200
- $j('.toggle-content').each(function () {
201
  var wrapper = jQuery(this);
202
 
203
  var hasTabs = wrapper.hasClass('tabs');
@@ -274,19 +274,19 @@ var CatalinSeoHandler = {
274
  // Since the number of columns per grid will vary based on the viewport size, the only way to align the action
275
  // buttons/links is via JS
276
 
277
- if ($j('.products-grid').length) {
278
 
279
  var alignProductGridActions = function () {
280
  // Loop through each product grid on the page
281
- $j('.products-grid').each(function(){
282
  var gridRows = []; // This will store an array per row
283
  var tempRow = [];
284
- productGridElements = $j(this).children('li');
285
  productGridElements.each(function (index) {
286
  // The JS ought to be agnostic of the specific CSS breakpoints, so we are dynamically checking to find
287
  // each row by grouping all cells (eg, li elements) up until we find an element that is cleared.
288
  // We are ignoring the first cell since it will always be cleared.
289
- if ($j(this).css('clear') != 'none' && index != 0) {
290
  gridRows.push(tempRow); // Add the previous set of rows to the main array
291
  tempRow = []; // Reset the array since we're on a new row
292
  }
@@ -299,23 +299,23 @@ var CatalinSeoHandler = {
299
  }
300
  });
301
 
302
- $j.each(gridRows, function () {
303
  var tallestProductInfo = 0;
304
- $j.each(this, function () {
305
  // Since this function is called every time the page is resized, we need to remove the min-height
306
  // and bottom-padding so each cell can return to its natural size before being measured.
307
- $j(this).find('.product-info').css({
308
  'min-height': '',
309
  'padding-bottom': ''
310
  });
311
 
312
  // We are checking the height of .product-info (rather than the entire li), because the images
313
  // will not be loaded when this JS is run.
314
- var productInfoHeight = $j(this).find('.product-info').height();
315
  // Space above .actions element
316
  var actionSpacing = 10;
317
  // The height of the absolutely positioned .actions element
318
- var actionHeight = $j(this).find('.product-info .actions').height();
319
 
320
  // Add height of two elements. This is necessary since .actions is absolutely positioned and won't
321
  // be included in the height of .product-info
@@ -326,11 +326,11 @@ var CatalinSeoHandler = {
326
 
327
  // Set the bottom-padding to accommodate the height of the .actions element. Note: if .actions
328
  // elements are of varying heights, they will not be aligned.
329
- $j(this).find('.product-info').css('padding-bottom', actionHeight + 'px');
330
  });
331
  // Set the height of all .product-info elements in a row to the tallest height
332
- $j.each(this, function () {
333
- $j(this).find('.product-info').css('min-height', tallestProductInfo);
334
  });
335
  });
336
  });
@@ -343,50 +343,52 @@ var CatalinSeoHandler = {
343
  // Block collapsing (on smaller viewports)
344
  // ==============================================
345
 
346
- enquire.register('(max-width: ' + bp.medium + 'px)', {
347
- setup: function () {
348
- this.toggleElements = $j(
349
- // This selects the menu on the My Account and CMS pages
350
- '.col-left-first .block:not(.block-layered-nav) .block-title, ' +
351
- '.col-left-first .block-layered-nav .block-subtitle--filter, ' +
352
- '.sidebar:not(.col-left-first) .block .block-title'
353
- );
354
- },
355
- match: function () {
356
- this.toggleElements.toggleSingle();
357
- },
358
- unmatch: function () {
359
- this.toggleElements.toggleSingle({destruct: true});
360
- }
361
- });
 
 
362
  },
363
  showMoreListener: function() {
364
- $j('div.show_more_filters a').on('click', function (e) {
365
- $j(e.target).parent().parent().parent().find('.filter_hide').toggle();
366
- $j(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
367
- if($j(e.target).text() == $j(e.target).data('text-more')) {
368
- $j(e.target).text($j(e.target).data('text-less'));
369
  } else {
370
- $j(e.target).text($j(e.target).data('text-more'));
371
  }
372
  });
373
  },
374
  searchBoxListener: function() {
375
  /* Make CSS contains psuedo selector case insensitive */
376
- $j.expr[":"].contains = $j.expr.createPseudo(function(arg) {
377
  return function( elem ) {
378
- return $j(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
379
  };
380
  });
381
 
382
- $j('.attribute_value_search_box input').on('keyup', function (e) {
383
- if($j(e.target).val()) {
384
- $j(e.target).parent().next('dd').find('li').hide();
385
- $j(e.target).parent().next('dd').find('li:contains("' + $j(e.target).val() + '")').each(function (i, li) {
386
- $j(li).show();
387
  });
388
  } else {
389
- $j(e.target).parent().next('dd').find('li').show();
390
  }
391
  });
392
  }
23
  var url;
24
  var self = this;
25
  if (el.tagName.toLowerCase() === 'input') {
26
+ url = jQuery(el).val();
27
  } else if (el.tagName.toLowerCase() === 'a') {
28
+ url = jQuery(el).attr('href');
29
  } else if (el.tagName.toLowerCase() === 'select') {
30
+ url = jQuery(el).val();
31
  }
32
 
33
+ if (jQuery(el).hasClass('no-ajax')) {
34
  window.location.href = url;
35
  return;
36
  }
73
  self.showMoreListener();
74
  self.searchBoxListener();
75
 
76
+ if (typeof(ConfigurableSwatchesList) !== 'undefined') {
77
  setTimeout(function(){
78
+ jQuery(document).trigger('product-media-loaded');
79
  }, 0);
80
  }
81
  } else {
87
  });
88
  },
89
  sendUpdateEvent: function() {
90
+ jQuery(document).trigger('catalin:updatePage');
91
  },
92
  pushState: function (data, link, replace) {
93
  var History = window.History;
178
  self.showMoreListener();
179
  self.searchBoxListener();
180
 
181
+ if (typeof(ConfigurableSwatchesList) !== 'undefined') {
182
  setTimeout(function(){
183
+ jQuery(document).trigger('product-media-loaded');
184
  }, 0);
185
  }
186
  }
197
  // UI Pattern - Toggle Content (tabs and accordions in one setup)
198
  // ==============================================
199
 
200
+ jQuery('.toggle-content').each(function () {
201
  var wrapper = jQuery(this);
202
 
203
  var hasTabs = wrapper.hasClass('tabs');
274
  // Since the number of columns per grid will vary based on the viewport size, the only way to align the action
275
  // buttons/links is via JS
276
 
277
+ if (jQuery('.products-grid').length) {
278
 
279
  var alignProductGridActions = function () {
280
  // Loop through each product grid on the page
281
+ jQuery('.products-grid').each(function(){
282
  var gridRows = []; // This will store an array per row
283
  var tempRow = [];
284
+ productGridElements = jQuery(this).children('li');
285
  productGridElements.each(function (index) {
286
  // The JS ought to be agnostic of the specific CSS breakpoints, so we are dynamically checking to find
287
  // each row by grouping all cells (eg, li elements) up until we find an element that is cleared.
288
  // We are ignoring the first cell since it will always be cleared.
289
+ if (jQuery(this).css('clear') != 'none' && index != 0) {
290
  gridRows.push(tempRow); // Add the previous set of rows to the main array
291
  tempRow = []; // Reset the array since we're on a new row
292
  }
299
  }
300
  });
301
 
302
+ jQuery.each(gridRows, function () {
303
  var tallestProductInfo = 0;
304
+ jQuery.each(this, function () {
305
  // Since this function is called every time the page is resized, we need to remove the min-height
306
  // and bottom-padding so each cell can return to its natural size before being measured.
307
+ jQuery(this).find('.product-info').css({
308
  'min-height': '',
309
  'padding-bottom': ''
310
  });
311
 
312
  // We are checking the height of .product-info (rather than the entire li), because the images
313
  // will not be loaded when this JS is run.
314
+ var productInfoHeight = jQuery(this).find('.product-info').height();
315
  // Space above .actions element
316
  var actionSpacing = 10;
317
  // The height of the absolutely positioned .actions element
318
+ var actionHeight = jQuery(this).find('.product-info .actions').height();
319
 
320
  // Add height of two elements. This is necessary since .actions is absolutely positioned and won't
321
  // be included in the height of .product-info
326
 
327
  // Set the bottom-padding to accommodate the height of the .actions element. Note: if .actions
328
  // elements are of varying heights, they will not be aligned.
329
+ jQuery(this).find('.product-info').css('padding-bottom', actionHeight + 'px');
330
  });
331
  // Set the height of all .product-info elements in a row to the tallest height
332
+ jQuery.each(this, function () {
333
+ jQuery(this).find('.product-info').css('min-height', tallestProductInfo);
334
  });
335
  });
336
  });
343
  // Block collapsing (on smaller viewports)
344
  // ==============================================
345
 
346
+ if (typeof(enquire) !== 'undefined') {
347
+ enquire.register('(max-width: ' + bp.medium + 'px)', {
348
+ setup: function () {
349
+ this.toggleElements = jQuery(
350
+ // This selects the menu on the My Account and CMS pages
351
+ '.col-left-first .block:not(.block-layered-nav) .block-title, ' +
352
+ '.col-left-first .block-layered-nav .block-subtitle--filter, ' +
353
+ '.sidebar:not(.col-left-first) .block .block-title'
354
+ );
355
+ },
356
+ match: function () {
357
+ this.toggleElements.toggleSingle();
358
+ },
359
+ unmatch: function () {
360
+ this.toggleElements.toggleSingle({destruct: true});
361
+ }
362
+ });
363
+ }
364
  },
365
  showMoreListener: function() {
366
+ jQuery('div.show_more_filters a').on('click', function (e) {
367
+ jQuery(e.target).parent().parent().parent().find('.filter_hide').toggle();
368
+ jQuery(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
369
+ if(jQuery(e.target).text() == jQuery(e.target).data('text-more')) {
370
+ jQuery(e.target).text(jQuery(e.target).data('text-less'));
371
  } else {
372
+ jQuery(e.target).text(jQuery(e.target).data('text-more'));
373
  }
374
  });
375
  },
376
  searchBoxListener: function() {
377
  /* Make CSS contains psuedo selector case insensitive */
378
+ jQuery.expr[":"].contains = jQuery.expr.createPseudo(function(arg) {
379
  return function( elem ) {
380
+ return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
381
  };
382
  });
383
 
384
+ jQuery('.attribute_value_search_box input').on('keyup', function (e) {
385
+ if(jQuery(e.target).val()) {
386
+ jQuery(e.target).parent().next('dd').find('li').hide();
387
+ jQuery(e.target).parent().next('dd').find('li:contains("' + jQuery(e.target).val() + '")').each(function (i, li) {
388
+ jQuery(li).show();
389
  });
390
  } else {
391
+ jQuery(e.target).parent().next('dd').find('li').show();
392
  }
393
  });
394
  }