Version Notes
- solved https issue for landing page
- message change
- Immediate sync for updated data
- product rating
- Help center
- Group price support
- Added klevu_Products
- Added type field in klevu_product_sync table
- Product tracking with preserve layout
Download this release
Release Info
Developer | Klevu |
Extension | Klevu_SmartSearch |
Version | 1.1.22 |
Comparing to | |
See all releases |
Code changes from version 1.1.21 to 1.1.22
- app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Store/Level/Label.php +1 -1
- app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Sync/Button.php +1 -1
- app/code/community/Klevu/Search/Block/Adminhtml/Form/Klevuinfo.php +28 -0
- app/code/community/Klevu/Search/Block/Adminhtml/Form/Syncoptionsinfo.php +30 -0
- app/code/community/Klevu/Search/Block/Catalog/Product/Tracking.php +2 -1
- app/code/community/Klevu/Search/Helper/Api.php +5 -2
- app/code/community/Klevu/Search/Helper/Config.php +40 -2
- app/code/community/Klevu/Search/Helper/Data.php +12 -0
- app/code/community/Klevu/Search/Model/Api/Action/Addrecords.php +30 -1
- app/code/community/Klevu/Search/Model/Api/Action/Searchtermtracking.php +68 -0
- app/code/community/Klevu/Search/Model/CatalogSearch/Layer/Filter/Category.php +1 -1
- app/code/community/Klevu/Search/Model/CatalogSearch/Resource/Fulltext/Collection.php +24 -2
- app/code/community/Klevu/Search/Model/Observer.php +27 -0
- app/code/community/Klevu/Search/Model/Product/Sync.php +170 -26
- app/code/community/Klevu/Search/Model/System/Config/Source/Boosting/Attribute.php +8 -3
- app/code/community/Klevu/Search/Model/System/Config/Source/Syncoptions.php +21 -0
- app/code/community/Klevu/Search/Test/Model/Product/Sync.php +2 -2
- app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/Search/WizardController.php +17 -8
- app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/SearchController.php +48 -18
- app/code/community/Klevu/Search/controllers/IndexController.php +8 -2
- app/code/community/Klevu/Search/etc/adminhtml.xml +4 -5
- app/code/community/Klevu/Search/etc/config.xml +11 -3
- app/code/community/Klevu/Search/etc/system.xml +137 -57
- app/code/community/Klevu/Search/sql/klevu_search_setup/mysql4-data-upgrade-1.1.21-1.1.22.php +59 -0
- app/design/adminhtml/default/default/template/klevu/search/form/field/sync/button.phtml +12 -1
- app/design/adminhtml/default/default/template/klevu/search/form/information.phtml +1 -3
- app/design/adminhtml/default/default/template/klevu/search/form/klevuinfo.phtml +2 -0
- app/design/adminhtml/default/default/template/klevu/search/wizard/configure/store.phtml +4 -4
- app/design/frontend/base/default/layout/klevu/search.xml +0 -1
- app/design/frontend/base/default/template/klevu/search/form_js.phtml +18 -8
- app/design/frontend/base/default/template/klevu/search/index.phtml +5 -6
- app/design/frontend/base/default/template/klevu/search/product_tracking.phtml +3 -1
- js/klevu/search/lib/Wizard.js +1 -0
- package.xml +13 -5
- skin/frontend/base/default/css/klevu/klevu-landing-left.css +16 -0
- skin/frontend/base/default/css/klevu/klevu-landing-page-style.css +119 -25
app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Store/Level/Label.php
CHANGED
@@ -6,7 +6,7 @@ class Klevu_Search_Block_Adminhtml_Form_Field_Store_Level_Label extends Mage_Adm
|
|
6 |
if ($element->getScope() == "stores") {
|
7 |
return $element->getEscapedValue();
|
8 |
} else {
|
9 |
-
return Mage::helper("klevu_search")->__("Switch to store scope to
|
10 |
}
|
11 |
}
|
12 |
|
6 |
if ($element->getScope() == "stores") {
|
7 |
return $element->getEscapedValue();
|
8 |
} else {
|
9 |
+
return Mage::helper("klevu_search")->__("Switch to store scope to set");
|
10 |
}
|
11 |
}
|
12 |
|
app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Sync/Button.php
CHANGED
@@ -39,7 +39,7 @@ class Klevu_Search_Block_Adminhtml_Form_Field_Sync_Button extends Mage_Adminhtml
|
|
39 |
|
40 |
$this->addData(array(
|
41 |
"html_id" => $element->getHtmlId(),
|
42 |
-
"button_label" => sprintf("Sync
|
43 |
"destination_url" => $this->getUrl("adminhtml/klevu_search/sync_all", $url_params)
|
44 |
));
|
45 |
|
39 |
|
40 |
$this->addData(array(
|
41 |
"html_id" => $element->getHtmlId(),
|
42 |
+
"button_label" => sprintf("Sync Data %s", $label_suffix),
|
43 |
"destination_url" => $this->getUrl("adminhtml/klevu_search/sync_all", $url_params)
|
44 |
));
|
45 |
|
app/code/community/Klevu/Search/Block/Adminhtml/Form/Klevuinfo.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Klevu_Search_Block_Adminhtml_Form_Klevuinfo extends Mage_Adminhtml_Block_System_Config_Form_Fieldset {
|
4 |
+
|
5 |
+
protected function _construct() {
|
6 |
+
parent::_construct();
|
7 |
+
|
8 |
+
if (!$this->getTemplate()) {
|
9 |
+
// Set the default template
|
10 |
+
$this->setTemplate("klevu/search/form/klevuinfo.phtml");
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
public function render(Varien_Data_Form_Element_Abstract $element) {
|
15 |
+
$html = $this->_getHeaderHtml($element);
|
16 |
+
|
17 |
+
$html .= $this->_toHtml();
|
18 |
+
|
19 |
+
$html .= $this->_getFooterHtml($element);
|
20 |
+
|
21 |
+
return $html;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function getVersion() {
|
25 |
+
return Mage::getConfig()->getModuleConfig('Klevu_Search')->version;
|
26 |
+
}
|
27 |
+
|
28 |
+
}
|
app/code/community/Klevu/Search/Block/Adminhtml/Form/Syncoptionsinfo.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Klevu_Search_Block_Adminhtml_Form_Syncoptionsinfo extends Mage_Adminhtml_Block_System_Config_Form_Field {
|
4 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
5 |
+
if($this->getSyncOptionsSelected() ==1) {
|
6 |
+
$mode = Mage::helper("klevu_search")->__("Updates only (syncs data immediately)");
|
7 |
+
} else {
|
8 |
+
$mode = Mage::helper("klevu_search")->__("All data (syncs data on CRON execution");
|
9 |
+
}
|
10 |
+
return $mode;
|
11 |
+
}
|
12 |
+
|
13 |
+
public function render(Varien_Data_Form_Element_Abstract $element) {
|
14 |
+
$this->setData('scope', $element->getScope());
|
15 |
+
|
16 |
+
// Remove the inheritance checkbox
|
17 |
+
$element
|
18 |
+
->unsCanUseWebsiteValue()
|
19 |
+
->unsCanUseDefaultValue();
|
20 |
+
|
21 |
+
return parent::render($element);
|
22 |
+
}
|
23 |
+
|
24 |
+
|
25 |
+
|
26 |
+
public function getSyncOptionsSelected() {
|
27 |
+
return Mage::helper('klevu_search/config')->getSyncOptionsFlag();
|
28 |
+
}
|
29 |
+
|
30 |
+
}
|
app/code/community/Klevu/Search/Block/Catalog/Product/Tracking.php
CHANGED
@@ -18,7 +18,8 @@ class Klevu_Search_Block_Catalog_Product_Tracking extends Mage_Core_Block_Templa
|
|
18 |
'klevu_type' => 'clicked',
|
19 |
'klevu_productId' => $product->getId(),
|
20 |
'klevu_productName' => $product->getName(),
|
21 |
-
'klevu_productUrl' => $product->getProductUrl()
|
|
|
22 |
);
|
23 |
|
24 |
return json_encode($product);
|
18 |
'klevu_type' => 'clicked',
|
19 |
'klevu_productId' => $product->getId(),
|
20 |
'klevu_productName' => $product->getName(),
|
21 |
+
'klevu_productUrl' => $product->getProductUrl(),
|
22 |
+
'Klevu_typeOfRecord' => 'KLEVU_PRODUCT'
|
23 |
);
|
24 |
|
25 |
return json_encode($product);
|
app/code/community/Klevu/Search/Helper/Api.php
CHANGED
@@ -17,6 +17,9 @@ class Klevu_Search_Helper_Api extends Mage_Core_Helper_Abstract {
|
|
17 |
* message: a message to be shown to the user.
|
18 |
*/
|
19 |
public function createUser($email, $password, $userPlan, $partnerAccount, $url, $merchantEmail,$contactNo) {
|
|
|
|
|
|
|
20 |
$response = Mage::getModel("klevu_search/api_action_adduser")->execute(array(
|
21 |
"email" => $email,
|
22 |
"password" => $password,
|
@@ -24,8 +27,8 @@ class Klevu_Search_Helper_Api extends Mage_Core_Helper_Abstract {
|
|
24 |
"partnerAccount" => $partnerAccount,
|
25 |
"url" => $url,
|
26 |
"merchantEmail" => $merchantEmail,
|
27 |
-
"contactNo" => $contactNo
|
28 |
-
|
29 |
));
|
30 |
|
31 |
if ($response->isSuccessful()) {
|
17 |
* message: a message to be shown to the user.
|
18 |
*/
|
19 |
public function createUser($email, $password, $userPlan, $partnerAccount, $url, $merchantEmail,$contactNo) {
|
20 |
+
$user = Mage::getSingleton('admin/session');
|
21 |
+
$userEmail = $user->getUser()->getEmail();
|
22 |
+
$storePhone = Mage::getStoreConfig('general/store_information/phone');
|
23 |
$response = Mage::getModel("klevu_search/api_action_adduser")->execute(array(
|
24 |
"email" => $email,
|
25 |
"password" => $password,
|
27 |
"partnerAccount" => $partnerAccount,
|
28 |
"url" => $url,
|
29 |
"merchantEmail" => $merchantEmail,
|
30 |
+
"contactNo" => $contactNo,
|
31 |
+
"shopInfo" => $userEmail.";".$storePhone,
|
32 |
));
|
33 |
|
34 |
if ($response->isSuccessful()) {
|
app/code/community/Klevu/Search/Helper/Config.php
CHANGED
@@ -34,6 +34,8 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
34 |
const XML_PATH_JS_URL = "klevu_search/general/js_url";
|
35 |
const XML_PATH_TEST_JS_URL = "klevu_search/general/test_js_url";
|
36 |
const KLEVU_PRODUCT_FORCE_OLDERVERSION = 2;
|
|
|
|
|
37 |
|
38 |
const DATETIME_FORMAT = "Y-m-d H:i:s T";
|
39 |
|
@@ -589,7 +591,8 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
589 |
"short_description",
|
590 |
"price",
|
591 |
"tax_class_id",
|
592 |
-
"weight"
|
|
|
593 |
"klevu_attribute" => array(
|
594 |
"name",
|
595 |
"sku",
|
@@ -598,7 +601,8 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
598 |
"shortDesc",
|
599 |
"salePrice",
|
600 |
"salePrice",
|
601 |
-
"weight"
|
|
|
602 |
)
|
603 |
);
|
604 |
}
|
@@ -667,4 +671,38 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
667 |
|
668 |
return $this;
|
669 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
670 |
}
|
34 |
const XML_PATH_JS_URL = "klevu_search/general/js_url";
|
35 |
const XML_PATH_TEST_JS_URL = "klevu_search/general/test_js_url";
|
36 |
const KLEVU_PRODUCT_FORCE_OLDERVERSION = 2;
|
37 |
+
const XML_PATH_SYNC_OPTIONS = "klevu_search/product_sync/sync_options";
|
38 |
+
const XML_PATH_UPGRADE_PREMIUM = "klevu_search/general/premium";
|
39 |
|
40 |
const DATETIME_FORMAT = "Y-m-d H:i:s T";
|
41 |
|
591 |
"short_description",
|
592 |
"price",
|
593 |
"tax_class_id",
|
594 |
+
"weight",
|
595 |
+
"rating"),
|
596 |
"klevu_attribute" => array(
|
597 |
"name",
|
598 |
"sku",
|
601 |
"shortDesc",
|
602 |
"salePrice",
|
603 |
"salePrice",
|
604 |
+
"weight",
|
605 |
+
"rating"
|
606 |
)
|
607 |
);
|
608 |
}
|
671 |
|
672 |
return $this;
|
673 |
}
|
674 |
+
|
675 |
+
/**
|
676 |
+
* Return the configuration flag for sync options.
|
677 |
+
*
|
678 |
+
*
|
679 |
+
* @return int
|
680 |
+
*/
|
681 |
+
public function getSyncOptionsFlag() {
|
682 |
+
return Mage::getStoreConfig(static::XML_PATH_SYNC_OPTIONS);
|
683 |
+
}
|
684 |
+
|
685 |
+
/**
|
686 |
+
* save sync option value
|
687 |
+
*
|
688 |
+
* @param string $value
|
689 |
+
*
|
690 |
+
* @return
|
691 |
+
*/
|
692 |
+
public function saveSyncOptions($value) {
|
693 |
+
$this->setGlobalConfig(static::XML_PATH_SYNC_OPTIONS, $value);
|
694 |
+
return $this;
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* save upgrade button value
|
699 |
+
*
|
700 |
+
* @param string $value
|
701 |
+
*
|
702 |
+
* @return
|
703 |
+
*/
|
704 |
+
public function saveUpgradePremium($value) {
|
705 |
+
$this->setGlobalConfig(static::XML_PATH_UPGRADE_PREMIUM, $value);
|
706 |
+
return $this;
|
707 |
+
}
|
708 |
}
|
app/code/community/Klevu/Search/Helper/Data.php
CHANGED
@@ -194,4 +194,16 @@ class Klevu_Search_Helper_Data extends Mage_Core_Helper_Abstract {
|
|
194 |
}
|
195 |
return sprintf("%s%s", $parent_sku, $product_sku);
|
196 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
}
|
194 |
}
|
195 |
return sprintf("%s%s", $parent_sku, $product_sku);
|
196 |
}
|
197 |
+
|
198 |
+
public function getIp() {
|
199 |
+
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
200 |
+
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
201 |
+
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
202 |
+
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
203 |
+
} else {
|
204 |
+
$ip = $_SERVER['REMOTE_ADDR'];
|
205 |
+
}
|
206 |
+
|
207 |
+
return $ip;
|
208 |
+
}
|
209 |
}
|
app/code/community/Klevu/Search/Model/Api/Action/Addrecords.php
CHANGED
@@ -149,10 +149,13 @@ class Klevu_Search_Model_Api_Action_Addrecords extends Klevu_Search_Model_Api_Ac
|
|
149 |
if (isset($record['otherAttributeToIndex']) && is_array($record['otherAttributeToIndex'])) {
|
150 |
$this->prepareOtherAttributeToIndexParameters($record);
|
151 |
}
|
|
|
|
|
|
|
|
|
152 |
|
153 |
$pairs = array();
|
154 |
|
155 |
-
|
156 |
foreach ($record as $key => $value) {
|
157 |
$pairs[] = array(
|
158 |
'pair' => array(
|
@@ -218,6 +221,32 @@ class Klevu_Search_Model_Api_Action_Addrecords extends Klevu_Search_Model_Api_Ac
|
|
218 |
}
|
219 |
$record['otherAttributeToIndex'] = implode(";", $record['otherAttributeToIndex']);
|
220 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
|
222 |
/**
|
223 |
* Remove the characters used to organise the other attribute values from the
|
149 |
if (isset($record['otherAttributeToIndex']) && is_array($record['otherAttributeToIndex'])) {
|
150 |
$this->prepareOtherAttributeToIndexParameters($record);
|
151 |
}
|
152 |
+
|
153 |
+
if (isset($record['groupPrices']) && is_array($record['groupPrices'])) {
|
154 |
+
$this->prepareGroupPricesParameters($record);
|
155 |
+
}
|
156 |
|
157 |
$pairs = array();
|
158 |
|
|
|
159 |
foreach ($record as $key => $value) {
|
160 |
$pairs[] = array(
|
161 |
'pair' => array(
|
221 |
}
|
222 |
$record['otherAttributeToIndex'] = implode(";", $record['otherAttributeToIndex']);
|
223 |
}
|
224 |
+
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Flattens GroupPrices parameters array to a string formatted: key:value[,value]
|
228 |
+
* @param string
|
229 |
+
*/
|
230 |
+
protected function prepareGroupPricesParameters(&$record) {
|
231 |
+
foreach ($record['groupPrices'] as $key => &$value) {
|
232 |
+
$key = $this->sanitiseOtherAttribute($key);
|
233 |
+
|
234 |
+
if(is_array($value)){
|
235 |
+
$label = $this->sanitiseOtherAttribute($value['label']);
|
236 |
+
$value = $this->sanitiseOtherAttribute($value['values']);
|
237 |
+
}else {
|
238 |
+
$label = $this->sanitiseOtherAttribute($key);
|
239 |
+
$value = $this->sanitiseOtherAttribute($value);
|
240 |
+
}
|
241 |
+
|
242 |
+
if (is_array($value)) {
|
243 |
+
$value = implode(",", $value);
|
244 |
+
}
|
245 |
+
|
246 |
+
$value = sprintf("%s:%s:%s", $key, $label, $value);
|
247 |
+
}
|
248 |
+
$record['groupPrices'] = implode(";", $record['groupPrices']);
|
249 |
+
}
|
250 |
|
251 |
/**
|
252 |
* Remove the characters used to organise the other attribute values from the
|
app/code/community/Klevu/Search/Model/Api/Action/Searchtermtracking.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Klevu_Search_Model_Api_Action_Searchtermtracking extends Klevu_Search_Model_Api_Action {
|
4 |
+
|
5 |
+
const ENDPOINT = "/analytics/n-search/search";
|
6 |
+
const METHOD = "POST";
|
7 |
+
|
8 |
+
const DEFAULT_REQUEST_MODEL = "klevu_search/api_request_post";
|
9 |
+
const DEFAULT_RESPONSE_MODEL = "klevu_search/api_response_data";
|
10 |
+
|
11 |
+
protected function validate($parameters) {
|
12 |
+
$errors = array();
|
13 |
+
|
14 |
+
if (!isset($parameters["klevu_apiKey"]) || empty($parameters["klevu_apiKey"])) {
|
15 |
+
$errors["klevu_apiKey"] = "Missing JS API key.";
|
16 |
+
}
|
17 |
+
if (!isset($parameters["klevu_term"]) || empty($parameters["klevu_term"])) {
|
18 |
+
$errors["klevu_term"] = "Missing klevu term.";
|
19 |
+
}
|
20 |
+
if (!isset($parameters["klevu_totalResults"]) || empty($parameters["klevu_totalResults"])) {
|
21 |
+
$errors["klevu_type"] = "Missing Total Results.";
|
22 |
+
}
|
23 |
+
|
24 |
+
if (!isset($parameters["klevu_shopperIP"]) || empty($parameters["klevu_shopperIP"])) {
|
25 |
+
$errors["klevu_shopperIP"] = "Missing klevu shopperIP.";
|
26 |
+
}
|
27 |
+
|
28 |
+
if (!isset($parameters["klevu_typeOfQuery"]) || empty($parameters["klevu_typeOfQuery"])) {
|
29 |
+
$errors["klevu_unit"] = "Missing Type of Query.";
|
30 |
+
}
|
31 |
+
|
32 |
+
if (count($errors) == 0) {
|
33 |
+
return true;
|
34 |
+
}
|
35 |
+
return $errors;
|
36 |
+
}
|
37 |
+
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Execute the API action with the given parameters.
|
41 |
+
*
|
42 |
+
* @param array $parameters
|
43 |
+
*
|
44 |
+
* @return Klevu_Search_Model_Api_Response
|
45 |
+
*/
|
46 |
+
public function execute($parameters = array()) {
|
47 |
+
$validation_result = $this->validate($parameters);
|
48 |
+
if ($validation_result !== true) {
|
49 |
+
return Mage::getModel('klevu_search/api_response_invalid')->setErrors($validation_result);
|
50 |
+
}
|
51 |
+
|
52 |
+
$request = $this->getRequest();
|
53 |
+
|
54 |
+
$endpoint = Mage::helper('klevu_search/api')->buildEndpoint(
|
55 |
+
static::ENDPOINT,
|
56 |
+
$this->getStore(),
|
57 |
+
Mage::helper('klevu_search/config')->getAnalyticsUrl()
|
58 |
+
);
|
59 |
+
|
60 |
+
$request
|
61 |
+
->setResponseModel($this->getResponse())
|
62 |
+
->setEndpoint($endpoint)
|
63 |
+
->setMethod(static::METHOD)
|
64 |
+
->setData($parameters);
|
65 |
+
|
66 |
+
return $request->send();
|
67 |
+
}
|
68 |
+
}
|
app/code/community/Klevu/Search/Model/CatalogSearch/Layer/Filter/Category.php
CHANGED
@@ -20,7 +20,7 @@ class Klevu_Search_Model_CatalogSearch_Layer_Filter_Category extends Mage_Catalo
|
|
20 |
if ($data === null) {
|
21 |
// Fetch filters from Klevu
|
22 |
$filters = $this->_getKlevuCategoryFilters();
|
23 |
-
|
24 |
if ($this->getLayer()->getProductCollection()->count() == 0) {
|
25 |
return array(); // No visible results found in search
|
26 |
}
|
20 |
if ($data === null) {
|
21 |
// Fetch filters from Klevu
|
22 |
$filters = $this->_getKlevuCategoryFilters();
|
23 |
+
|
24 |
if ($this->getLayer()->getProductCollection()->count() == 0) {
|
25 |
return array(); // No visible results found in search
|
26 |
}
|
app/code/community/Klevu/Search/Model/CatalogSearch/Resource/Fulltext/Collection.php
CHANGED
@@ -7,6 +7,8 @@ class Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection extends Mage
|
|
7 |
* @var array
|
8 |
*/
|
9 |
protected $_klevu_parameters;
|
|
|
|
|
10 |
|
11 |
/**
|
12 |
* Klevu Search API Product IDs
|
@@ -95,12 +97,31 @@ class Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection extends Mage
|
|
95 |
'klevuSort' => $this->_getSortOrder(),
|
96 |
'enableFilters' => 'true',
|
97 |
'filterResults' => $this->_getPreparedFilters(),
|
|
|
98 |
);
|
99 |
$this->log(Zend_Log::DEBUG, sprintf("Starting search for term: %s", $this->_getQuery()->getQueryText()));
|
100 |
}
|
101 |
|
102 |
return $this->_klevu_parameters;
|
103 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
/**
|
106 |
* Send the API Request and return the API Response.
|
@@ -263,7 +284,7 @@ class Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection extends Mage
|
|
263 |
if (!$this->getKlevuResponse()->hasData('result')) {
|
264 |
return array();
|
265 |
}
|
266 |
-
|
267 |
foreach ($this->getKlevuResponse()->getData('result') as $result) {
|
268 |
$item_id = Mage::helper('klevu_search')->getMagentoProductId((string) $result['id']);
|
269 |
$this->_klevu_parent_child_ids[] = $item_id;
|
@@ -275,6 +296,8 @@ class Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection extends Mage
|
|
275 |
}
|
276 |
$this->_klevu_product_ids = array_unique($this->_klevu_product_ids);
|
277 |
$this->log(Zend_Log::DEBUG, sprintf("Products count returned: %s", count($this->_klevu_product_ids)));
|
|
|
|
|
278 |
}
|
279 |
|
280 |
return $this->_klevu_product_ids;
|
@@ -322,7 +345,6 @@ class Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection extends Mage
|
|
322 |
if (!$this->isExtensionConfigured()) {
|
323 |
return parent::getSize();
|
324 |
}
|
325 |
-
|
326 |
$response = $this->getKlevuResponse()->getData('meta');
|
327 |
return (int) $response['totalResultsFound'];
|
328 |
}
|
7 |
* @var array
|
8 |
*/
|
9 |
protected $_klevu_parameters;
|
10 |
+
protected $_klevu_tracking_parameters;
|
11 |
+
protected $_klevu_type_of_records = null;
|
12 |
|
13 |
/**
|
14 |
* Klevu Search API Product IDs
|
97 |
'klevuSort' => $this->_getSortOrder(),
|
98 |
'enableFilters' => 'true',
|
99 |
'filterResults' => $this->_getPreparedFilters(),
|
100 |
+
'category' => $this->_klevu_type_of_records
|
101 |
);
|
102 |
$this->log(Zend_Log::DEBUG, sprintf("Starting search for term: %s", $this->_getQuery()->getQueryText()));
|
103 |
}
|
104 |
|
105 |
return $this->_klevu_parameters;
|
106 |
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Return the Klevu api search filters
|
110 |
+
* @return array
|
111 |
+
*/
|
112 |
+
public function getSearchTracking($noOfTrackingResults,$queryType) {
|
113 |
+
|
114 |
+
$this->_klevu_tracking_parameters = array(
|
115 |
+
'klevu_apiKey' => Mage::helper('klevu_search/config')->getJsApiKey(),
|
116 |
+
'klevu_term' => $this->_query,
|
117 |
+
'klevu_totalResults' => $noOfTrackingResults,
|
118 |
+
'klevu_shopperIP' => Mage::helper('klevu_search')->getIp(),
|
119 |
+
'klevu_typeOfQuery' => $queryType,
|
120 |
+
'Klevu_typeOfRecord' => 'KLEVU_PRODUCT'
|
121 |
+
);
|
122 |
+
$this->log(Zend_Log::DEBUG, sprintf("Search tracking for term: %s", $this->_query));
|
123 |
+
return $this->_klevu_tracking_parameters;
|
124 |
+
}
|
125 |
|
126 |
/**
|
127 |
* Send the API Request and return the API Response.
|
284 |
if (!$this->getKlevuResponse()->hasData('result')) {
|
285 |
return array();
|
286 |
}
|
287 |
+
|
288 |
foreach ($this->getKlevuResponse()->getData('result') as $result) {
|
289 |
$item_id = Mage::helper('klevu_search')->getMagentoProductId((string) $result['id']);
|
290 |
$this->_klevu_parent_child_ids[] = $item_id;
|
296 |
}
|
297 |
$this->_klevu_product_ids = array_unique($this->_klevu_product_ids);
|
298 |
$this->log(Zend_Log::DEBUG, sprintf("Products count returned: %s", count($this->_klevu_product_ids)));
|
299 |
+
$response_meta = $this->getKlevuResponse()->getData('meta');
|
300 |
+
Mage::getModel('klevu_search/api_action_searchtermtracking')->execute($this->getSearchTracking(count($this->_klevu_product_ids),$response_meta['typeOfQuery']));
|
301 |
}
|
302 |
|
303 |
return $this->_klevu_product_ids;
|
345 |
if (!$this->isExtensionConfigured()) {
|
346 |
return parent::getSize();
|
347 |
}
|
|
|
348 |
$response = $this->getKlevuResponse()->getData('meta');
|
349 |
return (int) $response['totalResultsFound'];
|
350 |
}
|
app/code/community/Klevu/Search/Model/Observer.php
CHANGED
@@ -127,6 +127,7 @@ class Klevu_Search_Model_Observer extends Varien_Object {
|
|
127 |
*/
|
128 |
public function applyLandingPageModelRewrites(Varien_Event_Observer $observer) {
|
129 |
if (Mage::helper("klevu_search/config")->isLandingEnabled()) {
|
|
|
130 |
$rewrites = array(
|
131 |
"global/models/catalogsearch_resource/rewrite/fulltext_collection" => "Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection",
|
132 |
"global/models/catalogsearch_mysql4/rewrite/fulltext_collection" => "Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection",
|
@@ -171,5 +172,31 @@ class Klevu_Search_Model_Observer extends Varien_Object {
|
|
171 |
|
172 |
}
|
173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
|
175 |
}
|
127 |
*/
|
128 |
public function applyLandingPageModelRewrites(Varien_Event_Observer $observer) {
|
129 |
if (Mage::helper("klevu_search/config")->isLandingEnabled()) {
|
130 |
+
|
131 |
$rewrites = array(
|
132 |
"global/models/catalogsearch_resource/rewrite/fulltext_collection" => "Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection",
|
133 |
"global/models/catalogsearch_mysql4/rewrite/fulltext_collection" => "Klevu_Search_Model_CatalogSearch_Resource_Fulltext_Collection",
|
172 |
|
173 |
}
|
174 |
|
175 |
+
/**
|
176 |
+
* Update the product ratings value in product attribute
|
177 |
+
*/
|
178 |
+
public function ratingsUpdate(Varien_Event_Observer $observer)
|
179 |
+
{
|
180 |
+
try {
|
181 |
+
$object = $observer->getEvent()->getObject();
|
182 |
+
$statusId = $object->getStatusId();
|
183 |
+
$allStores = Mage::app()->getStores();
|
184 |
+
if($statusId == 1) {
|
185 |
+
$productId = $object->getEntityPkValue();
|
186 |
+
$ratingObj = Mage::getModel('rating/rating')->getEntitySummary($productId);
|
187 |
+
$ratings = $ratingObj->getSum()/$ratingObj->getCount();
|
188 |
+
/* update attribute */
|
189 |
+
Mage::getModel('catalog/product_action')->updateAttributes(array($productId), array('rating'=>$ratings), $object->getStoreId());
|
190 |
+
if(count($allStores) > 1) {
|
191 |
+
Mage::getModel('catalog/product_action')->updateAttributes(array($productId), array('rating'=>0),0);
|
192 |
+
}
|
193 |
+
/* mark product for update to sync data with klevu */
|
194 |
+
Mage::getModel('klevu_search/product_sync')->updateSpecificProductIds(array($productId));
|
195 |
+
}
|
196 |
+
} catch (Exception $e) {
|
197 |
+
Mage::helper('klevu_search')->log(Zend_Log::CRIT, sprintf("Exception thrown in %s::%s - %s", __CLASS__, __METHOD__, $e->getMessage()));
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
|
202 |
}
|
app/code/community/Klevu/Search/Model/Product/Sync.php
CHANGED
@@ -39,7 +39,10 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
39 |
try {
|
40 |
|
41 |
/* mark for update special price product */
|
42 |
-
$this->
|
|
|
|
|
|
|
43 |
|
44 |
if ($this->isRunning(2)) {
|
45 |
// Stop if another copy is already running
|
@@ -61,6 +64,13 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
61 |
if (!$this->setupSession($store)) {
|
62 |
continue;
|
63 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
65 |
$this->log(Zend_Log::INFO, sprintf("Starting sync for %s (%s).", $store->getWebsite()->getName(), $store->getName()));
|
66 |
|
@@ -97,7 +107,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
97 |
"sd.attribute_id = :status_attribute_id AND sd.entity_id = k.product_id AND sd.store_id = :default_store_id",
|
98 |
""
|
99 |
)
|
100 |
-
->where("(k.store_id = :store_id) AND (k.test_mode = :test_mode) AND ((p.entity_id IS NULL) OR (CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END != :status_enabled) OR (CASE WHEN k.parent_id = 0 THEN k.product_id ELSE k.parent_id END NOT IN (?)))",
|
101 |
$this->getConnection()
|
102 |
->select()
|
103 |
->from(
|
@@ -108,6 +118,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
108 |
)
|
109 |
->group(array('k.product_id', 'k.parent_id'))
|
110 |
->bind(array(
|
|
|
111 |
'store_id' => $store->getId(),
|
112 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
113 |
'test_mode' => $this->isTestModeEnabled(),
|
@@ -142,7 +153,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
142 |
"i.product_id = k.product_id AND k.store_id = i.store_id AND i.visibility IN (:visible_both, :visible_search)",
|
143 |
""
|
144 |
)
|
145 |
-
->where("(k.store_id = :store_id) AND (k.test_mode = :test_mode) AND (p.type_id != :configurable) AND (p.updated_at > k.last_synced_at)"),
|
146 |
// Select products with parents (configurable) that need to be updated
|
147 |
$this->getConnection()
|
148 |
->select()
|
@@ -186,10 +197,11 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
186 |
"sd.attribute_id = :status_attribute_id AND sd.entity_id = k.product_id AND sd.store_id = :default_store_id",
|
187 |
""
|
188 |
)
|
189 |
-
->where("(k.store_id = :store_id) AND (k.test_mode = :test_mode) AND (CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END = :status_enabled) AND ((p1.updated_at > k.last_synced_at) OR (p2.updated_at > k.last_synced_at))")
|
190 |
))
|
191 |
->group(array('k.product_id', 'k.parent_id'))
|
192 |
->bind(array(
|
|
|
193 |
'store_id' => $store->getId(),
|
194 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
195 |
'test_mode' => $this->isTestModeEnabled(),
|
@@ -222,7 +234,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
222 |
)
|
223 |
->joinLeft(
|
224 |
array('k' => $this->getTableName("klevu_search/product_sync")),
|
225 |
-
"p.entity_id = k.product_id AND k.parent_id = 0 AND i.store_id = k.store_id AND k.test_mode = :test_mode",
|
226 |
""
|
227 |
)
|
228 |
->where("(p.type_id != :configurable) AND (k.product_id IS NULL)"),
|
@@ -256,13 +268,14 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
256 |
)
|
257 |
->joinLeft(
|
258 |
array('k' => $this->getTableName("klevu_search/product_sync")),
|
259 |
-
"s.parent_id = k.parent_id AND s.product_id = k.product_id AND k.store_id = :store_id AND k.test_mode = :test_mode",
|
260 |
""
|
261 |
)
|
262 |
->where("(CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END = :status_enabled) AND (k.product_id IS NULL)")
|
263 |
))
|
264 |
->group(array('k.product_id', 'k.parent_id'))
|
265 |
->bind(array(
|
|
|
266 |
'store_id' => $store->getId(),
|
267 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
268 |
'test_mode' => $this->isTestModeEnabled(),
|
@@ -325,6 +338,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
325 |
$store->getWebsite()->getName(),
|
326 |
$store->getName()
|
327 |
));
|
|
|
328 |
}
|
329 |
$config->setLastProductSyncRun("now", $store);
|
330 |
|
@@ -552,6 +566,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
552 |
->select()
|
553 |
->from(array('k' => $this->getTableName("klevu_search/product_sync")))
|
554 |
->where("k.store_id = ?", $this->getStore()->getId())
|
|
|
555 |
->where("k.test_mode = ?", $this->isTestModeEnabled());
|
556 |
|
557 |
$skipped_record_ids = array();
|
@@ -566,7 +581,8 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
566 |
}
|
567 |
$or_where[] = sprintf("(%s AND %s)",
|
568 |
$connection->quoteInto("k.product_id = ?", $data[$i]['product_id']),
|
569 |
-
$connection->quoteInto("k.parent_id = ?", $data[$i]['parent_id'])
|
|
|
570 |
);
|
571 |
}
|
572 |
$select->where(implode(" OR ", $or_where));
|
@@ -604,9 +620,10 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
604 |
*/
|
605 |
protected function updateProducts(array $data) {
|
606 |
$total = count($data);
|
607 |
-
|
608 |
$this->addProductSyncData($data);
|
609 |
-
|
|
|
610 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')
|
611 |
->setStore($this->getStore())
|
612 |
->execute(array(
|
@@ -631,9 +648,10 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
631 |
|
632 |
$ids = $helper->getMagentoProductId($data[$i]['id']);
|
633 |
|
634 |
-
$where[] = sprintf("(%s AND %s)",
|
635 |
$connection->quoteInto("product_id = ?", $ids['product_id']),
|
636 |
-
$connection->quoteInto("parent_id = ?", $ids['parent_id'])
|
|
|
637 |
);
|
638 |
}
|
639 |
|
@@ -682,7 +700,6 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
682 |
$total = count($data);
|
683 |
|
684 |
$this->addProductSyncData($data);
|
685 |
-
|
686 |
$response = Mage::getModel('klevu_search/api_action_addrecords')
|
687 |
->setStore($this->getStore())
|
688 |
->execute(array(
|
@@ -712,13 +729,14 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
712 |
$ids["parent_id"],
|
713 |
$this->getStore()->getId(),
|
714 |
$this->isTestModeEnabled(),
|
715 |
-
$sync_time
|
|
|
716 |
);
|
717 |
}
|
718 |
|
719 |
$this->getConnection()->insertArray(
|
720 |
$this->getTableName('klevu_search/product_sync'),
|
721 |
-
array("product_id", "parent_id", "store_id", "test_mode", "last_synced_at"),
|
722 |
$data
|
723 |
);
|
724 |
|
@@ -804,7 +822,14 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
804 |
unset($products[$index]);
|
805 |
continue;
|
806 |
}
|
807 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
808 |
// Add data from mapped attributes
|
809 |
foreach ($attribute_map as $key => $attributes) {
|
810 |
$product[$key] = null;
|
@@ -820,7 +845,18 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
820 |
break;
|
821 |
}
|
822 |
}
|
823 |
-
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
824 |
case "otherAttributeToIndex":
|
825 |
case "other":
|
826 |
$product[$key] = array();
|
@@ -898,7 +934,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
898 |
$price = (isset($price_data[$product['parent_id']])) ? $price_data[$product['parent_id']]['min_price'] : $parent->getData("price");
|
899 |
$markup = 0;
|
900 |
|
901 |
-
if (isset($configurable_price_data[$product['parent_id']])) {
|
902 |
foreach ($configurable_price_data[$product['parent_id']] as $attribute => $pricing_data) {
|
903 |
$value = $item->getData($attribute);
|
904 |
if ($value && isset($pricing_data[$value])) {
|
@@ -909,7 +945,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
909 |
}
|
910 |
}
|
911 |
}
|
912 |
-
}
|
913 |
// show low price for config products
|
914 |
$product['startPrice'] = $this->processPrice($price , $tax_class_id, $parent);
|
915 |
|
@@ -933,7 +969,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
933 |
if ($item->getData("price") !== null) {
|
934 |
$product["salePrice"] = $this->processPrice($item->getData("price"), $tax_class_id, $item);
|
935 |
} else if ($parent) {
|
936 |
-
$product["salePrice"] = $this->processPrice($parent->getData("price"), $tax_class_id, $
|
937 |
}
|
938 |
}
|
939 |
}
|
@@ -964,7 +1000,18 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
964 |
$product['category'] = "";
|
965 |
$product['listCategory'] = "";
|
966 |
}
|
967 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
|
969 |
// Use the parent URL if the product is invisible (and has a parent) and
|
970 |
// use a URL rewrite if one exists, falling back to catalog/product/view
|
@@ -1230,11 +1277,14 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1230 |
if(!empty($otherAttributeToIndex)) {
|
1231 |
$attribute_map['otherAttributeToIndex'] = $otherAttributeToIndex;
|
1232 |
}
|
|
|
1233 |
// Add boostingAttribute to $attribute_map.
|
1234 |
-
|
1235 |
-
|
|
|
|
|
|
|
1236 |
}
|
1237 |
-
|
1238 |
$this->setData('attribute_map', $attribute_map);
|
1239 |
}
|
1240 |
|
@@ -1405,7 +1455,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1405 |
protected function getCategoryNames(array $categories) {
|
1406 |
$category_paths = $this->getCategoryPaths();
|
1407 |
|
1408 |
-
$result = array();
|
1409 |
foreach ($categories as $category) {
|
1410 |
if (isset($category_paths[$category])) {
|
1411 |
$result = array_merge($result, $category_paths[$category]);
|
@@ -1439,6 +1489,37 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1439 |
|
1440 |
return $name;
|
1441 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1442 |
|
1443 |
/**
|
1444 |
* Returns either array containing the label and value(s) of an attribute, or just the given value
|
@@ -1915,7 +1996,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1915 |
* if special to price date expire then make that product for update
|
1916 |
* @return $this
|
1917 |
*/
|
1918 |
-
public function
|
1919 |
try {
|
1920 |
$special_pro_ids = $this->getExpirySaleProductsIds();
|
1921 |
if(!empty($special_pro_ids)) {
|
@@ -1928,7 +2009,10 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1928 |
}
|
1929 |
|
1930 |
/**
|
1931 |
-
* Mark
|
|
|
|
|
|
|
1932 |
* @return
|
1933 |
*/
|
1934 |
public function updateSpecificProductIds($ids)
|
@@ -1942,4 +2026,64 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1942 |
$where
|
1943 |
);
|
1944 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1945 |
}
|
39 |
try {
|
40 |
|
41 |
/* mark for update special price product */
|
42 |
+
$this->markProductForUpdate();
|
43 |
+
|
44 |
+
/* update boosting rule event */
|
45 |
+
Mage::dispatchEvent('update_rule_of_products', array());
|
46 |
|
47 |
if ($this->isRunning(2)) {
|
48 |
// Stop if another copy is already running
|
64 |
if (!$this->setupSession($store)) {
|
65 |
continue;
|
66 |
}
|
67 |
+
|
68 |
+
$session = Mage::getSingleton('klevu_search/session');
|
69 |
+
$firstSync = $session->getFirstSync();
|
70 |
+
if(!empty($firstSync)) {
|
71 |
+
$this->updateProductsRating($store);
|
72 |
+
$session->unsFirstSync();
|
73 |
+
}
|
74 |
|
75 |
$this->log(Zend_Log::INFO, sprintf("Starting sync for %s (%s).", $store->getWebsite()->getName(), $store->getName()));
|
76 |
|
107 |
"sd.attribute_id = :status_attribute_id AND sd.entity_id = k.product_id AND sd.store_id = :default_store_id",
|
108 |
""
|
109 |
)
|
110 |
+
->where("(k.store_id = :store_id) AND (k.type = :type) AND (k.test_mode = :test_mode) AND ((p.entity_id IS NULL) OR (CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END != :status_enabled) OR (CASE WHEN k.parent_id = 0 THEN k.product_id ELSE k.parent_id END NOT IN (?)))",
|
111 |
$this->getConnection()
|
112 |
->select()
|
113 |
->from(
|
118 |
)
|
119 |
->group(array('k.product_id', 'k.parent_id'))
|
120 |
->bind(array(
|
121 |
+
'type' => "products",
|
122 |
'store_id' => $store->getId(),
|
123 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
124 |
'test_mode' => $this->isTestModeEnabled(),
|
153 |
"i.product_id = k.product_id AND k.store_id = i.store_id AND i.visibility IN (:visible_both, :visible_search)",
|
154 |
""
|
155 |
)
|
156 |
+
->where("(k.store_id = :store_id) AND (k.type = :type) AND (k.test_mode = :test_mode) AND (p.type_id != :configurable) AND (p.updated_at > k.last_synced_at)"),
|
157 |
// Select products with parents (configurable) that need to be updated
|
158 |
$this->getConnection()
|
159 |
->select()
|
197 |
"sd.attribute_id = :status_attribute_id AND sd.entity_id = k.product_id AND sd.store_id = :default_store_id",
|
198 |
""
|
199 |
)
|
200 |
+
->where("(k.store_id = :store_id) AND (k.type = :type) AND (k.test_mode = :test_mode) AND (CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END = :status_enabled) AND ((p1.updated_at > k.last_synced_at) OR (p2.updated_at > k.last_synced_at))")
|
201 |
))
|
202 |
->group(array('k.product_id', 'k.parent_id'))
|
203 |
->bind(array(
|
204 |
+
'type' => "products",
|
205 |
'store_id' => $store->getId(),
|
206 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
207 |
'test_mode' => $this->isTestModeEnabled(),
|
234 |
)
|
235 |
->joinLeft(
|
236 |
array('k' => $this->getTableName("klevu_search/product_sync")),
|
237 |
+
"p.entity_id = k.product_id AND k.parent_id = 0 AND i.store_id = k.store_id AND k.test_mode = :test_mode AND k.type = :type",
|
238 |
""
|
239 |
)
|
240 |
->where("(p.type_id != :configurable) AND (k.product_id IS NULL)"),
|
268 |
)
|
269 |
->joinLeft(
|
270 |
array('k' => $this->getTableName("klevu_search/product_sync")),
|
271 |
+
"s.parent_id = k.parent_id AND s.product_id = k.product_id AND k.store_id = :store_id AND k.test_mode = :test_mode AND k.type = :type",
|
272 |
""
|
273 |
)
|
274 |
->where("(CASE WHEN ss.value_id > 0 THEN ss.value ELSE sd.value END = :status_enabled) AND (k.product_id IS NULL)")
|
275 |
))
|
276 |
->group(array('k.product_id', 'k.parent_id'))
|
277 |
->bind(array(
|
278 |
+
'type' => "products",
|
279 |
'store_id' => $store->getId(),
|
280 |
'default_store_id' => Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID,
|
281 |
'test_mode' => $this->isTestModeEnabled(),
|
338 |
$store->getWebsite()->getName(),
|
339 |
$store->getName()
|
340 |
));
|
341 |
+
|
342 |
}
|
343 |
$config->setLastProductSyncRun("now", $store);
|
344 |
|
566 |
->select()
|
567 |
->from(array('k' => $this->getTableName("klevu_search/product_sync")))
|
568 |
->where("k.store_id = ?", $this->getStore()->getId())
|
569 |
+
->where("k.type = ?","products")
|
570 |
->where("k.test_mode = ?", $this->isTestModeEnabled());
|
571 |
|
572 |
$skipped_record_ids = array();
|
581 |
}
|
582 |
$or_where[] = sprintf("(%s AND %s)",
|
583 |
$connection->quoteInto("k.product_id = ?", $data[$i]['product_id']),
|
584 |
+
$connection->quoteInto("k.parent_id = ?", $data[$i]['parent_id']),
|
585 |
+
$connection->quoteInto("k.type = ?", "products")
|
586 |
);
|
587 |
}
|
588 |
$select->where(implode(" OR ", $or_where));
|
620 |
*/
|
621 |
protected function updateProducts(array $data) {
|
622 |
$total = count($data);
|
623 |
+
|
624 |
$this->addProductSyncData($data);
|
625 |
+
//print_r($data);
|
626 |
+
//exit;
|
627 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')
|
628 |
->setStore($this->getStore())
|
629 |
->execute(array(
|
648 |
|
649 |
$ids = $helper->getMagentoProductId($data[$i]['id']);
|
650 |
|
651 |
+
$where[] = sprintf("(%s AND %s AND %s)",
|
652 |
$connection->quoteInto("product_id = ?", $ids['product_id']),
|
653 |
+
$connection->quoteInto("parent_id = ?", $ids['parent_id']),
|
654 |
+
$connection->quoteInto("type = ?", "products")
|
655 |
);
|
656 |
}
|
657 |
|
700 |
$total = count($data);
|
701 |
|
702 |
$this->addProductSyncData($data);
|
|
|
703 |
$response = Mage::getModel('klevu_search/api_action_addrecords')
|
704 |
->setStore($this->getStore())
|
705 |
->execute(array(
|
729 |
$ids["parent_id"],
|
730 |
$this->getStore()->getId(),
|
731 |
$this->isTestModeEnabled(),
|
732 |
+
$sync_time,
|
733 |
+
"products"
|
734 |
);
|
735 |
}
|
736 |
|
737 |
$this->getConnection()->insertArray(
|
738 |
$this->getTableName('klevu_search/product_sync'),
|
739 |
+
array("product_id", "parent_id", "store_id", "test_mode", "last_synced_at","type"),
|
740 |
$data
|
741 |
);
|
742 |
|
822 |
unset($products[$index]);
|
823 |
continue;
|
824 |
}
|
825 |
+
|
826 |
+
/* Use event to add any external module data to product */
|
827 |
+
Mage::dispatchEvent('add_external_data_to_sync', array(
|
828 |
+
'parent' => $parent,
|
829 |
+
'product'=> &$product,
|
830 |
+
'store' => $this->getStore()
|
831 |
+
));
|
832 |
+
|
833 |
// Add data from mapped attributes
|
834 |
foreach ($attribute_map as $key => $attributes) {
|
835 |
$product[$key] = null;
|
845 |
break;
|
846 |
}
|
847 |
}
|
848 |
+
break;
|
849 |
+
case "rating":
|
850 |
+
foreach ($attributes as $attribute) {
|
851 |
+
if ($parent && $parent->getData($attribute)) {
|
852 |
+
$product[$key] = $this->convertToRatingStar($parent->getData($attribute));
|
853 |
+
break;
|
854 |
+
} else {
|
855 |
+
$product[$key] = $this->convertToRatingStar($item->getData($attribute));
|
856 |
+
break;
|
857 |
+
}
|
858 |
+
}
|
859 |
+
break;
|
860 |
case "otherAttributeToIndex":
|
861 |
case "other":
|
862 |
$product[$key] = array();
|
934 |
$price = (isset($price_data[$product['parent_id']])) ? $price_data[$product['parent_id']]['min_price'] : $parent->getData("price");
|
935 |
$markup = 0;
|
936 |
|
937 |
+
/*if (isset($configurable_price_data[$product['parent_id']])) {
|
938 |
foreach ($configurable_price_data[$product['parent_id']] as $attribute => $pricing_data) {
|
939 |
$value = $item->getData($attribute);
|
940 |
if ($value && isset($pricing_data[$value])) {
|
945 |
}
|
946 |
}
|
947 |
}
|
948 |
+
}*/
|
949 |
// show low price for config products
|
950 |
$product['startPrice'] = $this->processPrice($price , $tax_class_id, $parent);
|
951 |
|
969 |
if ($item->getData("price") !== null) {
|
970 |
$product["salePrice"] = $this->processPrice($item->getData("price"), $tax_class_id, $item);
|
971 |
} else if ($parent) {
|
972 |
+
$product["salePrice"] = $this->processPrice($parent->getData("price"), $tax_class_id, $parent);
|
973 |
}
|
974 |
}
|
975 |
}
|
1000 |
$product['category'] = "";
|
1001 |
$product['listCategory'] = "";
|
1002 |
}
|
1003 |
+
|
1004 |
+
|
1005 |
+
if ($parent) {
|
1006 |
+
//Get the price based on customer group
|
1007 |
+
$product['groupPrices'] = $this->getGroupPrices($parent);
|
1008 |
+
} else if($item) {
|
1009 |
+
$product['groupPrices'] = $this->getGroupPrices($item);
|
1010 |
+
} else {
|
1011 |
+
$product['groupPrices'] = "";
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
|
1015 |
|
1016 |
// Use the parent URL if the product is invisible (and has a parent) and
|
1017 |
// use a URL rewrite if one exists, falling back to catalog/product/view
|
1277 |
if(!empty($otherAttributeToIndex)) {
|
1278 |
$attribute_map['otherAttributeToIndex'] = $otherAttributeToIndex;
|
1279 |
}
|
1280 |
+
|
1281 |
// Add boostingAttribute to $attribute_map.
|
1282 |
+
$boosting_value = Mage::helper('klevu_search/config')->getBoostingAttribute($this->getStore());
|
1283 |
+
if($boosting_value != "use_boosting_rule") {
|
1284 |
+
if(($boosting_attribute = Mage::helper('klevu_search/config')->getBoostingAttribute($this->getStore())) && !is_null($boosting_attribute)) {
|
1285 |
+
$attribute_map['boostingAttribute'][] = $boosting_attribute;
|
1286 |
+
}
|
1287 |
}
|
|
|
1288 |
$this->setData('attribute_map', $attribute_map);
|
1289 |
}
|
1290 |
|
1455 |
protected function getCategoryNames(array $categories) {
|
1456 |
$category_paths = $this->getCategoryPaths();
|
1457 |
|
1458 |
+
$result = array("KLEVU_PRODUCT");
|
1459 |
foreach ($categories as $category) {
|
1460 |
if (isset($category_paths[$category])) {
|
1461 |
$result = array_merge($result, $category_paths[$category]);
|
1489 |
|
1490 |
return $name;
|
1491 |
}
|
1492 |
+
|
1493 |
+
/**
|
1494 |
+
* Get the list of prices based on customer group
|
1495 |
+
*
|
1496 |
+
* @param object $item OR $parent
|
1497 |
+
*
|
1498 |
+
* @return array
|
1499 |
+
*/
|
1500 |
+
protected function getGroupPrices($proData) {
|
1501 |
+
$groupPrices = $proData->getData('group_price');
|
1502 |
+
if (is_null($groupPrices)) {
|
1503 |
+
$attribute = $proData->getResource()->getAttribute('group_price');
|
1504 |
+
if ($attribute){
|
1505 |
+
$attribute->getBackend()->afterLoad($proData);
|
1506 |
+
$groupPrices = $proData->getData('group_price');
|
1507 |
+
}
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
if (!empty($groupPrices) && is_array($groupPrices)) {
|
1511 |
+
foreach ($groupPrices as $groupPrice) {
|
1512 |
+
if($this->getStore()->getWebsiteId()== $groupPrice['website_id'] || $groupPrice['website_id']==0) {
|
1513 |
+
$groupPriceKey = $groupPrice['cust_group'];
|
1514 |
+
$groupname = Mage::getModel('customer/group')->load($groupPrice['cust_group'])->getCustomerGroupCode();
|
1515 |
+
$result['label'] = $groupname;
|
1516 |
+
$result['values'] = $groupPrice['website_price'];
|
1517 |
+
$priceGroupData[$groupPriceKey]= $result;
|
1518 |
+
}
|
1519 |
+
}
|
1520 |
+
return $priceGroupData;
|
1521 |
+
}
|
1522 |
+
}
|
1523 |
|
1524 |
/**
|
1525 |
* Returns either array containing the label and value(s) of an attribute, or just the given value
|
1996 |
* if special to price date expire then make that product for update
|
1997 |
* @return $this
|
1998 |
*/
|
1999 |
+
public function markProductForUpdate(){
|
2000 |
try {
|
2001 |
$special_pro_ids = $this->getExpirySaleProductsIds();
|
2002 |
if(!empty($special_pro_ids)) {
|
2009 |
}
|
2010 |
|
2011 |
/**
|
2012 |
+
* Mark product ids for update
|
2013 |
+
*
|
2014 |
+
* @param array ids
|
2015 |
+
*
|
2016 |
* @return
|
2017 |
*/
|
2018 |
public function updateSpecificProductIds($ids)
|
2026 |
$where
|
2027 |
);
|
2028 |
}
|
2029 |
+
|
2030 |
+
/**
|
2031 |
+
* Update all product ids rating attribute
|
2032 |
+
*
|
2033 |
+
* @param string store
|
2034 |
+
*
|
2035 |
+
* @return $this
|
2036 |
+
*/
|
2037 |
+
public function updateProductsRating($store)
|
2038 |
+
{
|
2039 |
+
$sumColumn = new Zend_Db_Expr("AVG(rating_vote.{$this->getConnection()->quoteIdentifier('percent')})");
|
2040 |
+
$select = $this->getConnection()->select()
|
2041 |
+
->from(array('rating_vote' => $this->getTableName('rating/rating_option_vote')),
|
2042 |
+
array(
|
2043 |
+
'entity_pk_value' => 'rating_vote.entity_pk_value',
|
2044 |
+
'sum' => $sumColumn,
|
2045 |
+
))
|
2046 |
+
->join(array('review' => $this->getTableName('review/review')),
|
2047 |
+
'rating_vote.review_id=review.review_id',
|
2048 |
+
array())
|
2049 |
+
->joinLeft(array('review_store' => $this->getTableName('review/review_store')),
|
2050 |
+
'rating_vote.review_id=review_store.review_id',
|
2051 |
+
array('review_store.store_id'))
|
2052 |
+
->join(array('rating_store' => $this->getTableName('rating/rating_store')),
|
2053 |
+
'rating_store.rating_id = rating_vote.rating_id AND rating_store.store_id = review_store.store_id',
|
2054 |
+
array())
|
2055 |
+
->join(array('review_status' => $this->getTableName('review/review_status')),
|
2056 |
+
'review.status_id = review_status.status_id',
|
2057 |
+
array())
|
2058 |
+
->where('review_status.status_code = :status_code AND rating_store.store_id = :storeId')
|
2059 |
+
->group('rating_vote.entity_pk_value')
|
2060 |
+
->group('review_store.store_id');
|
2061 |
+
$bind = array('status_code' => "Approved",'storeId' => $store->getId());
|
2062 |
+
$data_ratings = $this->getConnection()->fetchAll($select,$bind);
|
2063 |
+
$allStores = Mage::app()->getStores();
|
2064 |
+
foreach($data_ratings as $key => $value)
|
2065 |
+
{
|
2066 |
+
Mage::getModel('catalog/product_action')->updateAttributes(array($value['entity_pk_value']), array('rating'=>$value['sum']), $store->getId());
|
2067 |
+
if(count($allStores) > 1) {
|
2068 |
+
Mage::getModel('catalog/product_action')->updateAttributes(array($value['entity_pk_value']), array('rating'=>0),0);
|
2069 |
+
}
|
2070 |
+
}
|
2071 |
+
}
|
2072 |
+
|
2073 |
+
/**
|
2074 |
+
* Convert percent to rating star
|
2075 |
+
*
|
2076 |
+
* @param int percentage
|
2077 |
+
*
|
2078 |
+
* @return float
|
2079 |
+
*/
|
2080 |
+
public function convertToRatingStar($percentage) {
|
2081 |
+
if(!empty($percentage) && $percentage!=0) {
|
2082 |
+
$start = $percentage * 5;
|
2083 |
+
return round($start/100, 2);
|
2084 |
+
} else {
|
2085 |
+
return;
|
2086 |
+
}
|
2087 |
+
}
|
2088 |
+
|
2089 |
}
|
app/code/community/Klevu/Search/Model/System/Config/Source/Boosting/Attribute.php
CHANGED
@@ -9,11 +9,16 @@ class Klevu_Search_Model_System_Config_Source_Boosting_Attribute {
|
|
9 |
*/
|
10 |
public function toOptionArray() {
|
11 |
$attributes = $this->getAttributeCollection();
|
|
|
|
|
|
|
|
|
12 |
$options = array(
|
13 |
array(
|
14 |
'value' => null,
|
15 |
'label' => '--- No Attribute Selected ---'
|
16 |
-
)
|
|
|
17 |
);
|
18 |
foreach($attributes as $attribute) {
|
19 |
/** @var Mage_Catalog_Model_Resource_Eav_Attribute $attribute */
|
@@ -27,7 +32,7 @@ class Klevu_Search_Model_System_Config_Source_Boosting_Attribute {
|
|
27 |
}
|
28 |
|
29 |
/**
|
30 |
-
* Get only integer and decimal attributes that are not used by Klevu yet.
|
31 |
*
|
32 |
* @return Mage_Catalog_Model_Resource_Product_Attribute_Collection
|
33 |
*/
|
@@ -35,7 +40,7 @@ class Klevu_Search_Model_System_Config_Source_Boosting_Attribute {
|
|
35 |
/** @var Mage_Catalog_Model_Resource_Product_Attribute_Collection $collection */
|
36 |
$collection = Mage::getResourceModel('catalog/product_attribute_collection');
|
37 |
|
38 |
-
// We
|
39 |
$collection->addFieldToFilter(
|
40 |
'backend_type',
|
41 |
array(
|
9 |
*/
|
10 |
public function toOptionArray() {
|
11 |
$attributes = $this->getAttributeCollection();
|
12 |
+
$boost_option = array(
|
13 |
+
'value' => null,
|
14 |
+
'label' => ''
|
15 |
+
);
|
16 |
$options = array(
|
17 |
array(
|
18 |
'value' => null,
|
19 |
'label' => '--- No Attribute Selected ---'
|
20 |
+
),
|
21 |
+
$boost_option
|
22 |
);
|
23 |
foreach($attributes as $attribute) {
|
24 |
/** @var Mage_Catalog_Model_Resource_Eav_Attribute $attribute */
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
+
* Get only integer,varchar and decimal attributes that are not used by Klevu yet.
|
36 |
*
|
37 |
* @return Mage_Catalog_Model_Resource_Product_Attribute_Collection
|
38 |
*/
|
40 |
/** @var Mage_Catalog_Model_Resource_Product_Attribute_Collection $collection */
|
41 |
$collection = Mage::getResourceModel('catalog/product_attribute_collection');
|
42 |
|
43 |
+
// We want integers,varchar and decimal attributes.
|
44 |
$collection->addFieldToFilter(
|
45 |
'backend_type',
|
46 |
array(
|
app/code/community/Klevu/Search/Model/System/Config/Source/Syncoptions.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Klevu_Search_Model_System_Config_Source_Syncoptions {
|
4 |
+
|
5 |
+
const SYNC_PARTIALLY = 1;
|
6 |
+
const SYNC_ALL = 2;
|
7 |
+
|
8 |
+
public function toOptionArray() {
|
9 |
+
$helper = Mage::helper("klevu_search");
|
10 |
+
return array(
|
11 |
+
array(
|
12 |
+
'label' => $helper->__("Updates only (syncs data immediately)"),
|
13 |
+
'value' => static::SYNC_PARTIALLY
|
14 |
+
),
|
15 |
+
array(
|
16 |
+
'label' => $helper->__("All data (syncs data on CRON execution)"),
|
17 |
+
'value' => static::SYNC_ALL
|
18 |
+
)
|
19 |
+
);
|
20 |
+
}
|
21 |
+
}
|
app/code/community/Klevu/Search/Test/Model/Product/Sync.php
CHANGED
@@ -287,7 +287,7 @@ class Klevu_Search_Test_Model_Product_Sync extends Klevu_Search_Test_Model_Api_T
|
|
287 |
{
|
288 |
$model = Mage::getModel("klevu_search/product_sync");
|
289 |
$expirySaleProductsIds = $model->getExpirySaleProductsIds();
|
290 |
-
$model->
|
291 |
$this->assertEquals($this->getExpectedSpecialpriceProducts(), $expirySaleProductsIds);
|
292 |
}
|
293 |
|
@@ -301,7 +301,7 @@ class Klevu_Search_Test_Model_Product_Sync extends Klevu_Search_Test_Model_Api_T
|
|
301 |
|
302 |
$model = Mage::getModel("klevu_search/product_sync");
|
303 |
$catalogruleProductsIds = $model->getCatalogRuleProductsIds();
|
304 |
-
$model->
|
305 |
$this->assertEquals($this->getExpectedSpecialpriceProducts(), $catalogruleProductsIds);
|
306 |
|
307 |
}
|
287 |
{
|
288 |
$model = Mage::getModel("klevu_search/product_sync");
|
289 |
$expirySaleProductsIds = $model->getExpirySaleProductsIds();
|
290 |
+
$model->markProductForUpdate();
|
291 |
$this->assertEquals($this->getExpectedSpecialpriceProducts(), $expirySaleProductsIds);
|
292 |
}
|
293 |
|
301 |
|
302 |
$model = Mage::getModel("klevu_search/product_sync");
|
303 |
$catalogruleProductsIds = $model->getCatalogRuleProductsIds();
|
304 |
+
$model->markProductForUpdate();
|
305 |
$this->assertEquals($this->getExpectedSpecialpriceProducts(), $catalogruleProductsIds);
|
306 |
|
307 |
}
|
app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/Search/WizardController.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtml_Controller_Action {
|
4 |
-
|
|
|
5 |
public function configure_userAction() {
|
6 |
$this->loadLayout();
|
7 |
$this->initLayoutMessages('klevu_search/session');
|
@@ -9,6 +10,7 @@ class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtm
|
|
9 |
}
|
10 |
|
11 |
public function configure_user_postAction() {
|
|
|
12 |
$request = $this->getRequest();
|
13 |
|
14 |
if (!$request->isPost() || !$request->isAjax()) {
|
@@ -31,9 +33,18 @@ class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtm
|
|
31 |
$klevu_new_url = $request->getPost("klevu_new_url");
|
32 |
$merchantEmail = $request->getPost("merchantEmail");
|
33 |
$contactNo = $request->getPost("countyCode")."-".$request->getPost("contactNo");
|
34 |
-
|
35 |
-
&&
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
/* if partner account selected as UserPlan then change plan to trial*/
|
38 |
if($userPlan=="partnerAccount"){
|
39 |
$userPlan = "trial";
|
@@ -47,10 +58,7 @@ class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtm
|
|
47 |
$request->getPost("klevu_new_url"),
|
48 |
$request->getPost("merchantEmail"),
|
49 |
$contactNo
|
50 |
-
);
|
51 |
-
} else {
|
52 |
-
$session->addError(Mage::helper("klevu_search")->__("Missing details in the form. Please check."));
|
53 |
-
return $this->_forward("configure_user");
|
54 |
}
|
55 |
}
|
56 |
|
@@ -128,6 +136,7 @@ class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtm
|
|
128 |
$config->setRestHostname($result['webstore']->getRestHostname(), $store, $test_mode);
|
129 |
if (isset($result["message"])) {
|
130 |
$session->addSuccess(Mage::helper("klevu_search")->__($result["message"]));
|
|
|
131 |
}
|
132 |
} else {
|
133 |
$session->addError(Mage::helper("klevu_search")->__($result["message"]));
|
1 |
<?php
|
2 |
|
3 |
class Klevu_Search_Adminhtml_Klevu_Search_WizardController extends Mage_Adminhtml_Controller_Action {
|
4 |
+
|
5 |
+
|
6 |
public function configure_userAction() {
|
7 |
$this->loadLayout();
|
8 |
$this->initLayoutMessages('klevu_search/session');
|
10 |
}
|
11 |
|
12 |
public function configure_user_postAction() {
|
13 |
+
|
14 |
$request = $this->getRequest();
|
15 |
|
16 |
if (!$request->isPost() || !$request->isAjax()) {
|
33 |
$klevu_new_url = $request->getPost("klevu_new_url");
|
34 |
$merchantEmail = $request->getPost("merchantEmail");
|
35 |
$contactNo = $request->getPost("countyCode")."-".$request->getPost("contactNo");
|
36 |
+
$error = true;
|
37 |
+
if(empty($klevu_new_email) && empty($klevu_new_password) && empty($userPlan) && empty($klevu_new_url)
|
38 |
+
&& empty($merchantEmail) ) {
|
39 |
+
$session->addError(Mage::helper("klevu_search")->__("Missing details in the form. Please check."));
|
40 |
+
return $this->_forward("configure_user");
|
41 |
+
} else if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i",$klevu_new_email)) {
|
42 |
+
$session->addError(Mage::helper("klevu_search")->__("Please enter valid Primary Email."));
|
43 |
+
return $this->_forward("configure_user");
|
44 |
+
} else if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i",$merchantEmail)) {
|
45 |
+
$session->addError(Mage::helper("klevu_search")->__("Please enter valid Retailer Email."));
|
46 |
+
return $this->_forward("configure_user");
|
47 |
+
}else {
|
48 |
/* if partner account selected as UserPlan then change plan to trial*/
|
49 |
if($userPlan=="partnerAccount"){
|
50 |
$userPlan = "trial";
|
58 |
$request->getPost("klevu_new_url"),
|
59 |
$request->getPost("merchantEmail"),
|
60 |
$contactNo
|
61 |
+
);
|
|
|
|
|
|
|
62 |
}
|
63 |
}
|
64 |
|
136 |
$config->setRestHostname($result['webstore']->getRestHostname(), $store, $test_mode);
|
137 |
if (isset($result["message"])) {
|
138 |
$session->addSuccess(Mage::helper("klevu_search")->__($result["message"]));
|
139 |
+
$session->setFirstSync($store_code);
|
140 |
}
|
141 |
} else {
|
142 |
$session->addError(Mage::helper("klevu_search")->__($result["message"]));
|
app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/SearchController.php
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
|
3 |
class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Controller_Action {
|
4 |
|
|
|
5 |
public function sync_allAction() {
|
6 |
$store = $this->getRequest()->getParam("store");
|
7 |
-
|
8 |
if ($store !== null) {
|
9 |
try {
|
10 |
$store = Mage::app()->getStore($store);
|
@@ -15,36 +15,66 @@ class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Contr
|
|
15 |
}
|
16 |
|
17 |
if (Mage::helper('klevu_search/config')->isProductSyncEnabled()) {
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
|
35 |
-
|
|
|
|
|
|
|
36 |
}
|
37 |
} else {
|
38 |
Mage::getSingleton('adminhtml/session')->addError($this->__("Klevu Search Product Sync is disabled."));
|
39 |
}
|
|
|
|
|
|
|
|
|
40 |
|
41 |
return $this->_redirectReferer("adminhtml/dashboard");
|
42 |
}
|
43 |
-
|
|
|
44 |
public function manual_syncAction() {
|
45 |
Mage::getModel("klevu_search/product_sync")->runManually();
|
46 |
-
|
|
|
47 |
return $this->_redirectReferer("adminhtml/dashboard");
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
2 |
|
3 |
class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Controller_Action {
|
4 |
|
5 |
+
/* Sync data based on sync options selected */
|
6 |
public function sync_allAction() {
|
7 |
$store = $this->getRequest()->getParam("store");
|
|
|
8 |
if ($store !== null) {
|
9 |
try {
|
10 |
$store = Mage::app()->getStore($store);
|
15 |
}
|
16 |
|
17 |
if (Mage::helper('klevu_search/config')->isProductSyncEnabled()) {
|
18 |
+
|
19 |
+
if(Mage::helper('klevu_search/config')->getSyncOptionsFlag() == "2") {
|
20 |
+
Mage::getModel('klevu_search/product_sync')
|
21 |
+
->markAllProductsForUpdate($store)
|
22 |
+
->schedule();
|
23 |
|
24 |
+
if ($store) {
|
25 |
+
Mage::helper("klevu_search")->log(Zend_Log::INFO, sprintf("Product Sync scheduled to re-sync ALL products in %s (%s).",
|
26 |
+
$store->getWebsite()->getName(),
|
27 |
+
$store->getName()
|
28 |
+
));
|
29 |
|
30 |
+
Mage::getSingleton("adminhtml/session")->addSuccess($this->__("Klevu Search Product Sync scheduled to be run on the next cron run for ALL products in %s (%s).",
|
31 |
+
$store->getWebsite()->getName(),
|
32 |
+
$store->getName()
|
33 |
+
));
|
34 |
+
} else {
|
35 |
+
Mage::helper("klevu_search")->log(Zend_Log::INFO, "Product Sync scheduled to re-sync ALL products.");
|
36 |
|
37 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Klevu Search Sync scheduled to be run on the next cron run for ALL products."));
|
38 |
+
}
|
39 |
+
} else {
|
40 |
+
$this->syncWithoutCron();
|
41 |
}
|
42 |
} else {
|
43 |
Mage::getSingleton('adminhtml/session')->addError($this->__("Klevu Search Product Sync is disabled."));
|
44 |
}
|
45 |
+
|
46 |
+
Mage::dispatchEvent('sync_all_external_data', array(
|
47 |
+
'store' => $store
|
48 |
+
));
|
49 |
|
50 |
return $this->_redirectReferer("adminhtml/dashboard");
|
51 |
}
|
52 |
+
|
53 |
+
/* Run the product sync externally */
|
54 |
public function manual_syncAction() {
|
55 |
Mage::getModel("klevu_search/product_sync")->runManually();
|
56 |
+
/* Use event For other content sync */
|
57 |
+
Mage::dispatchEvent('content_data_to_sync', array());
|
58 |
return $this->_redirectReferer("adminhtml/dashboard");
|
59 |
}
|
60 |
|
61 |
+
/* Run the product sync */
|
62 |
+
public function syncWithoutCron() {
|
63 |
+
try {
|
64 |
+
Mage::getModel("klevu_search/product_sync")->run();
|
65 |
+
/* Use event For other content sync */
|
66 |
+
Mage::dispatchEvent('content_data_to_sync', array());
|
67 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Data updates have been sent to Klevu"));
|
68 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
69 |
+
Mage::logException($e);
|
70 |
+
}
|
71 |
+
return $this->_redirectReferer("adminhtml/dashboard");
|
72 |
+
}
|
73 |
+
|
74 |
+
/* save sync options using Ajax */
|
75 |
+
public function save_sync_options_configAction() {
|
76 |
+
$sync_options = $this->getRequest()->getParam("sync_options");
|
77 |
+
Mage::helper('klevu_search/config')->saveSyncOptions($sync_options);
|
78 |
+
}
|
79 |
+
|
80 |
}
|
app/code/community/Klevu/Search/controllers/IndexController.php
CHANGED
@@ -6,8 +6,14 @@ class Klevu_Search_IndexController extends Mage_Core_Controller_Front_Action {
|
|
6 |
|
7 |
public function IndexAction() {
|
8 |
|
9 |
-
$this->loadLayout();
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
if($breadcrumbs = $this->getLayout()->getBlock("breadcrumbs")) {
|
12 |
$breadcrumbs->addCrumb("home", array(
|
13 |
"label" => $this->__("Home"),
|
6 |
|
7 |
public function IndexAction() {
|
8 |
|
9 |
+
$this->loadLayout();
|
10 |
+
$query = $this->getRequest()->getParam('q');
|
11 |
+
if(!empty($query)) {
|
12 |
+
$head = $this->getLayout()->getBlock('head');
|
13 |
+
$head->setTitle($this->__(sprintf("Search results for: '%s'",$query)));
|
14 |
+
} else {
|
15 |
+
$this->getLayout()->getBlock("head")->setTitle($this->__("Search"));
|
16 |
+
}
|
17 |
if($breadcrumbs = $this->getLayout()->getBlock("breadcrumbs")) {
|
18 |
$breadcrumbs->addCrumb("home", array(
|
19 |
"label" => $this->__("Home"),
|
app/code/community/Klevu/Search/etc/adminhtml.xml
CHANGED
@@ -4,17 +4,16 @@
|
|
4 |
<resources>
|
5 |
<admin>
|
6 |
<children>
|
7 |
-
<klevu_search translate="title" module="klevu_search">
|
8 |
-
<title>Klevu Search</title>
|
9 |
-
<sort_order>100</sort_order>
|
10 |
-
</klevu_search>
|
11 |
<system>
|
12 |
<children>
|
13 |
<config>
|
14 |
<children>
|
15 |
<klevu_search translate="title" module="klevu_search">
|
16 |
-
<title>Klevu Search
|
17 |
</klevu_search>
|
|
|
|
|
|
|
18 |
</children>
|
19 |
</config>
|
20 |
</children>
|
4 |
<resources>
|
5 |
<admin>
|
6 |
<children>
|
|
|
|
|
|
|
|
|
7 |
<system>
|
8 |
<children>
|
9 |
<config>
|
10 |
<children>
|
11 |
<klevu_search translate="title" module="klevu_search">
|
12 |
+
<title>Klevu Search configuration</title>
|
13 |
</klevu_search>
|
14 |
+
<klevu_search_info translate="title" module="klevu_search">
|
15 |
+
<title>Help Center</title>
|
16 |
+
</klevu_search_info>
|
17 |
</children>
|
18 |
</config>
|
19 |
</children>
|
app/code/community/Klevu/Search/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Klevu_Search>
|
5 |
-
<version>1.1.
|
6 |
</Klevu_Search>
|
7 |
</modules>
|
8 |
<global>
|
@@ -35,7 +35,6 @@
|
|
35 |
</order_sync>
|
36 |
</entities>
|
37 |
</klevu_search_resource>
|
38 |
-
|
39 |
</models>
|
40 |
<resources>
|
41 |
<klevu_search_setup>
|
@@ -172,6 +171,15 @@
|
|
172 |
</klevu_search_categroy_product_sync>
|
173 |
</observers>
|
174 |
</catalog_category_change_products>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
</events>
|
176 |
</global>
|
177 |
<admin>
|
@@ -235,7 +243,6 @@
|
|
235 |
<model>klevu_search/order_sync::run</model>
|
236 |
</run>
|
237 |
</klevu_search_order_sync>
|
238 |
-
|
239 |
</jobs>
|
240 |
</crontab>
|
241 |
<default>
|
@@ -257,6 +264,7 @@
|
|
257 |
<enabled>1</enabled>
|
258 |
<frequency>0 * * * *</frequency>
|
259 |
<last_run>Never</last_run>
|
|
|
260 |
</product_sync>
|
261 |
<searchlanding>
|
262 |
<landenabled>2</landenabled>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Klevu_Search>
|
5 |
+
<version>1.1.22</version>
|
6 |
</Klevu_Search>
|
7 |
</modules>
|
8 |
<global>
|
35 |
</order_sync>
|
36 |
</entities>
|
37 |
</klevu_search_resource>
|
|
|
38 |
</models>
|
39 |
<resources>
|
40 |
<klevu_search_setup>
|
171 |
</klevu_search_categroy_product_sync>
|
172 |
</observers>
|
173 |
</catalog_category_change_products>
|
174 |
+
<review_save_after>
|
175 |
+
<observers>
|
176 |
+
<ratingsUpdate>
|
177 |
+
<type>singleton</type>
|
178 |
+
<class>klevu_search/observer</class>
|
179 |
+
<method>ratingsUpdate</method>
|
180 |
+
</ratingsUpdate>
|
181 |
+
</observers>
|
182 |
+
</review_save_after>
|
183 |
</events>
|
184 |
</global>
|
185 |
<admin>
|
243 |
<model>klevu_search/order_sync::run</model>
|
244 |
</run>
|
245 |
</klevu_search_order_sync>
|
|
|
246 |
</jobs>
|
247 |
</crontab>
|
248 |
<default>
|
264 |
<enabled>1</enabled>
|
265 |
<frequency>0 * * * *</frequency>
|
266 |
<last_run>Never</last_run>
|
267 |
+
<sync_options>1</sync_options>
|
268 |
</product_sync>
|
269 |
<searchlanding>
|
270 |
<landenabled>2</landenabled>
|
app/code/community/Klevu/Search/etc/system.xml
CHANGED
@@ -1,10 +1,16 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<config>
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
<sections>
|
4 |
<klevu_search translate="label" module="klevu_search">
|
5 |
-
<label>
|
6 |
-
<tab>
|
7 |
-
<sort_order>
|
8 |
<show_in_default>1</show_in_default>
|
9 |
<show_in_website>1</show_in_website>
|
10 |
<show_in_store>1</show_in_store>
|
@@ -62,7 +68,7 @@
|
|
62 |
</wizard>
|
63 |
<hostname translate="label comment">
|
64 |
<label>Hostname</label>
|
65 |
-
<comment><![CDATA[
|
66 |
<sort_order>132</sort_order>
|
67 |
<show_in_default>0</show_in_default>
|
68 |
<show_in_website>0</show_in_website>
|
@@ -86,7 +92,7 @@
|
|
86 |
</cloud_search_url>
|
87 |
<analytics_url translate="label comment">
|
88 |
<label>Analytics URL</label>
|
89 |
-
<comment><![CDATA[The Analytics URL is used
|
90 |
<sort_order>132</sort_order>
|
91 |
<show_in_default>0</show_in_default>
|
92 |
<show_in_website>0</show_in_website>
|
@@ -106,15 +112,13 @@
|
|
106 |
<searchlanding translate="label">
|
107 |
<label>Search Result Page Settings</label>
|
108 |
<sort_order>101</sort_order>
|
109 |
-
<expanded>1</expanded>
|
110 |
<show_in_default>1</show_in_default>
|
111 |
<show_in_website>1</show_in_website>
|
112 |
<show_in_store>1</show_in_store>
|
113 |
<fields>
|
114 |
<landenabled translate="label">
|
115 |
<label>Search Result Page</label>
|
116 |
-
<comment><![CDATA[** "Preserves Your Theme Layout" option preserves layout of your theme.
|
117 |
-
]]></comment>
|
118 |
<frontend_type>select</frontend_type>
|
119 |
<source_model>klevu_search/system_config_source_landingoptions</source_model>
|
120 |
<sort_order>100</sort_order>
|
@@ -126,7 +130,7 @@
|
|
126 |
</searchlanding>
|
127 |
<product_sync translate="label">
|
128 |
<label>Product Sync Settings</label>
|
129 |
-
<sort_order>
|
130 |
<show_in_default>1</show_in_default>
|
131 |
<show_in_website>1</show_in_website>
|
132 |
<show_in_store>1</show_in_store>
|
@@ -158,6 +162,24 @@
|
|
158 |
<show_in_website>1</show_in_website>
|
159 |
<show_in_store>1</show_in_store>
|
160 |
</last_run>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
<sync_button>
|
162 |
<label></label>
|
163 |
<frontend_model>klevu_search/adminhtml_form_field_sync_button</frontend_model>
|
@@ -168,13 +190,60 @@
|
|
168 |
</sync_button>
|
169 |
</fields>
|
170 |
</product_sync>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
<attributes translate="label">
|
172 |
-
<label>Product Attribute
|
173 |
-
<sort_order>
|
174 |
<show_in_default>1</show_in_default>
|
175 |
<show_in_website>1</show_in_website>
|
176 |
<show_in_store>1</show_in_store>
|
177 |
<fields>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
<additional translate="label comment">
|
179 |
<label>Additional Attributes</label>
|
180 |
<comment><![CDATA[Here you can set optional product attributes sent to Klevu by mapping them to your Magento attributes. If you specify multiple mappings for the same Klevu attribute, only the first mapping found on the product sent will be used.]]></comment>
|
@@ -197,17 +266,17 @@
|
|
197 |
</automatic>
|
198 |
<boosting translate="label comment">
|
199 |
<label>Boosting Attribute</label>
|
200 |
-
<comment><![CDATA[Select the attribute you wish to use as the Boosting attribute in Klevu. The Boosting attribute is a decimal or integer product attribute
|
201 |
<frontend_type>select</frontend_type>
|
202 |
<source_model>klevu_search/system_config_source_boosting_attribute</source_model>
|
203 |
-
<sort_order>
|
204 |
<show_in_default>0</show_in_default>
|
205 |
<show_in_website>0</show_in_website>
|
206 |
<show_in_store>1</show_in_store>
|
207 |
</boosting>
|
208 |
<other translate="label comment">
|
209 |
-
<label>Other Attributes To
|
210 |
-
<comment><![CDATA[
|
211 |
<frontend_type>multiselect</frontend_type>
|
212 |
<source_model>klevu_search/system_config_source_product_attributes</source_model>
|
213 |
<can_be_empty>1</can_be_empty>
|
@@ -216,54 +285,37 @@
|
|
216 |
<show_in_website>0</show_in_website>
|
217 |
<show_in_store>1</show_in_store>
|
218 |
</other>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
</fields>
|
220 |
</attributes>
|
221 |
-
<
|
222 |
-
<label>
|
223 |
-
<sort_order>
|
224 |
-
<show_in_default>1</show_in_default>
|
225 |
<show_in_default>1</show_in_default>
|
|
|
226 |
<show_in_store>1</show_in_store>
|
227 |
<fields>
|
228 |
-
<
|
229 |
-
<label>
|
230 |
-
<comment><![CDATA[
|
231 |
-
<frontend_type>select</frontend_type>
|
232 |
-
<source_model>klevu_search/system_config_source_yesnoforced</source_model>
|
233 |
-
<sort_order>100</sort_order>
|
234 |
-
<show_in_default>1</show_in_default>
|
235 |
-
<show_in_website>1</show_in_website>
|
236 |
-
<show_in_store>1</show_in_store>
|
237 |
-
</enabled>
|
238 |
-
<frequency translate="label">
|
239 |
-
<label>Frequency</label>
|
240 |
-
<frontend_type>select</frontend_type>
|
241 |
-
<source_model>klevu_search/system_config_source_frequency</source_model>
|
242 |
-
<sort_order>200</sort_order>
|
243 |
-
<show_in_default>1</show_in_default>
|
244 |
-
<show_in_website>0</show_in_website>
|
245 |
-
<show_in_store>0</show_in_store>
|
246 |
-
</frequency>
|
247 |
-
<last_run translate="label">
|
248 |
-
<label>Last Run</label>
|
249 |
<frontend_type>label</frontend_type>
|
250 |
-
<sort_order>
|
251 |
<show_in_default>1</show_in_default>
|
252 |
<show_in_website>0</show_in_website>
|
253 |
<show_in_store>0</show_in_store>
|
254 |
-
</
|
255 |
-
</fields>
|
256 |
-
</order_sync>
|
257 |
-
<tax_setting translate="label">
|
258 |
-
<label>Tax Settings</label>
|
259 |
-
<sort_order>400</sort_order>
|
260 |
-
<show_in_default>0</show_in_default>
|
261 |
-
<show_in_website>0</show_in_website>
|
262 |
-
<show_in_store>1</show_in_store>
|
263 |
-
<fields>
|
264 |
<enabled translate="label comment">
|
265 |
<label>Include Tax in Price</label>
|
266 |
-
<comment><![CDATA[Please make sure to resynchronize products by clicking on the "Sync
|
267 |
<frontend_type>select</frontend_type>
|
268 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
269 |
<sort_order>100</sort_order>
|
@@ -271,19 +323,28 @@
|
|
271 |
<show_in_website>0</show_in_website>
|
272 |
<show_in_store>1</show_in_store>
|
273 |
</enabled>
|
274 |
-
|
275 |
</fields>
|
276 |
</tax_setting>
|
277 |
<secureurl_setting translate="label">
|
278 |
<label>Secure Url Settings</label>
|
279 |
-
<sort_order>
|
280 |
-
<show_in_default>
|
281 |
<show_in_website>0</show_in_website>
|
282 |
<show_in_store>1</show_in_store>
|
|
|
283 |
<fields>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
<enabled translate="label comment">
|
285 |
<label>Use Secure Base Url for Products and Images</label>
|
286 |
-
<comment><![CDATA[Choose Yes to use secure base url from System > Cofiguration > Store view > Secure > Base URL.</br>Please make sure to resynchronize products by clicking on the "Sync
|
287 |
<frontend_type>select</frontend_type>
|
288 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
289 |
<sort_order>100</sort_order>
|
@@ -295,7 +356,7 @@
|
|
295 |
</secureurl_setting>
|
296 |
<developer translate="label">
|
297 |
<label>Developer Settings</label>
|
298 |
-
<sort_order>
|
299 |
<show_in_default>1</show_in_default>
|
300 |
<show_in_website>0</show_in_website>
|
301 |
<show_in_store>0</show_in_store>
|
@@ -334,5 +395,24 @@
|
|
334 |
</developer>
|
335 |
</groups>
|
336 |
</klevu_search>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
</sections>
|
338 |
</config>
|
1 |
<?xml version="1.0"?>
|
2 |
<config>
|
3 |
+
<tabs>
|
4 |
+
<klevu translate="label" module="klevu_search">
|
5 |
+
<label>Klevu</label>
|
6 |
+
<sort_order>0</sort_order>
|
7 |
+
</klevu>
|
8 |
+
</tabs>
|
9 |
<sections>
|
10 |
<klevu_search translate="label" module="klevu_search">
|
11 |
+
<label>Search Configuration</label>
|
12 |
+
<tab>klevu</tab>
|
13 |
+
<sort_order>0</sort_order>
|
14 |
<show_in_default>1</show_in_default>
|
15 |
<show_in_website>1</show_in_website>
|
16 |
<show_in_store>1</show_in_store>
|
68 |
</wizard>
|
69 |
<hostname translate="label comment">
|
70 |
<label>Hostname</label>
|
71 |
+
<comment><![CDATA[The Hostname is used for sending store configuration parameters to Klevu]]></comment>
|
72 |
<sort_order>132</sort_order>
|
73 |
<show_in_default>0</show_in_default>
|
74 |
<show_in_website>0</show_in_website>
|
92 |
</cloud_search_url>
|
93 |
<analytics_url translate="label comment">
|
94 |
<label>Analytics URL</label>
|
95 |
+
<comment><![CDATA[The Analytics URL is used for reporting search terms and clicks to Klevu.]]></comment>
|
96 |
<sort_order>132</sort_order>
|
97 |
<show_in_default>0</show_in_default>
|
98 |
<show_in_website>0</show_in_website>
|
112 |
<searchlanding translate="label">
|
113 |
<label>Search Result Page Settings</label>
|
114 |
<sort_order>101</sort_order>
|
|
|
115 |
<show_in_default>1</show_in_default>
|
116 |
<show_in_website>1</show_in_website>
|
117 |
<show_in_store>1</show_in_store>
|
118 |
<fields>
|
119 |
<landenabled translate="label">
|
120 |
<label>Search Result Page</label>
|
121 |
+
<comment><![CDATA[** "Preserves Your Theme Layout" option preserves layout of your theme.]]></comment>
|
|
|
122 |
<frontend_type>select</frontend_type>
|
123 |
<source_model>klevu_search/system_config_source_landingoptions</source_model>
|
124 |
<sort_order>100</sort_order>
|
130 |
</searchlanding>
|
131 |
<product_sync translate="label">
|
132 |
<label>Product Sync Settings</label>
|
133 |
+
<sort_order>250</sort_order>
|
134 |
<show_in_default>1</show_in_default>
|
135 |
<show_in_website>1</show_in_website>
|
136 |
<show_in_store>1</show_in_store>
|
162 |
<show_in_website>1</show_in_website>
|
163 |
<show_in_store>1</show_in_store>
|
164 |
</last_run>
|
165 |
+
<sync_options translate="label comment">
|
166 |
+
<label>Sync</label>
|
167 |
+
<frontend_type>select</frontend_type>
|
168 |
+
<source_model>klevu_search/system_config_source_syncoptions</source_model>
|
169 |
+
<sort_order>398</sort_order>
|
170 |
+
<show_in_default>1</show_in_default>
|
171 |
+
<show_in_website>0</show_in_website>
|
172 |
+
<show_in_store>0</show_in_store>
|
173 |
+
</sync_options>
|
174 |
+
<sync_options_info translate="label comment">
|
175 |
+
<label>Sync</label>
|
176 |
+
<comment><![CDATA[To change the mode of sync (i.e. All data vs updates only), Please change the mode from the "Default config"]]></comment>
|
177 |
+
<sort_order>399</sort_order>
|
178 |
+
<frontend_model>klevu_search/adminhtml_form_syncoptionsinfo</frontend_model>
|
179 |
+
<show_in_default>0</show_in_default>
|
180 |
+
<show_in_website>0</show_in_website>
|
181 |
+
<show_in_store>1</show_in_store>
|
182 |
+
</sync_options_info>
|
183 |
<sync_button>
|
184 |
<label></label>
|
185 |
<frontend_model>klevu_search/adminhtml_form_field_sync_button</frontend_model>
|
190 |
</sync_button>
|
191 |
</fields>
|
192 |
</product_sync>
|
193 |
+
<order_sync translate="label">
|
194 |
+
<label>Order Sync Settings</label>
|
195 |
+
<sort_order>201</sort_order>
|
196 |
+
<show_in_default>1</show_in_default>
|
197 |
+
<show_in_default>1</show_in_default>
|
198 |
+
<show_in_store>1</show_in_store>
|
199 |
+
<fields>
|
200 |
+
<enabled translate="label comment">
|
201 |
+
<label>Enable Order Sync</label>
|
202 |
+
<comment><![CDATA[If enabled, Klevu synchronizes the checkouts recorded on your
|
203 |
+
website. These checkouts are used for adjusting ranking of products
|
204 |
+
in the search results]]></comment>
|
205 |
+
<frontend_type>select</frontend_type>
|
206 |
+
<source_model>klevu_search/system_config_source_yesnoforced</source_model>
|
207 |
+
<sort_order>100</sort_order>
|
208 |
+
<show_in_default>1</show_in_default>
|
209 |
+
<show_in_website>1</show_in_website>
|
210 |
+
<show_in_store>1</show_in_store>
|
211 |
+
</enabled>
|
212 |
+
<frequency translate="label">
|
213 |
+
<label>Frequency</label>
|
214 |
+
<frontend_type>select</frontend_type>
|
215 |
+
<source_model>klevu_search/system_config_source_frequency</source_model>
|
216 |
+
<sort_order>200</sort_order>
|
217 |
+
<show_in_default>1</show_in_default>
|
218 |
+
<show_in_website>0</show_in_website>
|
219 |
+
<show_in_store>0</show_in_store>
|
220 |
+
</frequency>
|
221 |
+
<last_run translate="label">
|
222 |
+
<label>Last Run</label>
|
223 |
+
<frontend_type>label</frontend_type>
|
224 |
+
<sort_order>300</sort_order>
|
225 |
+
<show_in_default>1</show_in_default>
|
226 |
+
<show_in_website>0</show_in_website>
|
227 |
+
<show_in_store>0</show_in_store>
|
228 |
+
</last_run>
|
229 |
+
</fields>
|
230 |
+
</order_sync>
|
231 |
<attributes translate="label">
|
232 |
+
<label>Product Attribute Settings</label>
|
233 |
+
<sort_order>101</sort_order>
|
234 |
<show_in_default>1</show_in_default>
|
235 |
<show_in_website>1</show_in_website>
|
236 |
<show_in_store>1</show_in_store>
|
237 |
<fields>
|
238 |
+
<info_attribute translate="label comment">
|
239 |
+
<label>Attribute Settings</label>
|
240 |
+
<comment><![CDATA[Switch to store view scope to set]]></comment>
|
241 |
+
<frontend_type>label</frontend_type>
|
242 |
+
<sort_order>100</sort_order>
|
243 |
+
<show_in_default>1</show_in_default>
|
244 |
+
<show_in_website>0</show_in_website>
|
245 |
+
<show_in_store>0</show_in_store>
|
246 |
+
</info_attribute>
|
247 |
<additional translate="label comment">
|
248 |
<label>Additional Attributes</label>
|
249 |
<comment><![CDATA[Here you can set optional product attributes sent to Klevu by mapping them to your Magento attributes. If you specify multiple mappings for the same Klevu attribute, only the first mapping found on the product sent will be used.]]></comment>
|
266 |
</automatic>
|
267 |
<boosting translate="label comment">
|
268 |
<label>Boosting Attribute</label>
|
269 |
+
<comment><![CDATA[Select the attribute you wish to use as the Boosting attribute in Klevu. The Boosting attribute is a decimal or integer product attribute. To promote a product simply give the product a score higher than 1 and to demote give a score lower than 1 (i.e. 0.1).]]></comment>
|
270 |
<frontend_type>select</frontend_type>
|
271 |
<source_model>klevu_search/system_config_source_boosting_attribute</source_model>
|
272 |
+
<sort_order>800</sort_order>
|
273 |
<show_in_default>0</show_in_default>
|
274 |
<show_in_website>0</show_in_website>
|
275 |
<show_in_store>1</show_in_store>
|
276 |
</boosting>
|
277 |
<other translate="label comment">
|
278 |
+
<label>Other Attributes To Use In Search</label>
|
279 |
+
<comment><![CDATA[By default, Klevu uses the following attributes in search: name, sku, description, short_description, price and rating. To add more attributes to search, please select one or more attributes from the list above. Once you have selected the respective attributes, please make sure to resynchronize all the products.]]></comment>
|
280 |
<frontend_type>multiselect</frontend_type>
|
281 |
<source_model>klevu_search/system_config_source_product_attributes</source_model>
|
282 |
<can_be_empty>1</can_be_empty>
|
285 |
<show_in_website>0</show_in_website>
|
286 |
<show_in_store>1</show_in_store>
|
287 |
</other>
|
288 |
+
<info_attribute_filters translate="label comment">
|
289 |
+
<label>Facets</label>
|
290 |
+
<comment><![CDATA[If a product attribute has been configured to be used in the search results layered navigation, Klevu search will automatically use that attribute as a facet. To configure an additional attribute as facet, please go to Catalog > Attributes > Manage Attributes > Edit Attribute > Frontend Properties > Use In Search Results Layered Navigation and select YES for the option. Once you have configured all the attributes, please make sure to resynchronize all the products.]]></comment>
|
291 |
+
<frontend_type>label</frontend_type>
|
292 |
+
<sort_order>700</sort_order>
|
293 |
+
<show_in_default>0</show_in_default>
|
294 |
+
<show_in_website>0</show_in_website>
|
295 |
+
<show_in_store>1</show_in_store>
|
296 |
+
</info_attribute_filters>
|
297 |
+
|
298 |
</fields>
|
299 |
</attributes>
|
300 |
+
<tax_setting translate="label">
|
301 |
+
<label>Tax Settings</label>
|
302 |
+
<sort_order>898</sort_order>
|
|
|
303 |
<show_in_default>1</show_in_default>
|
304 |
+
<show_in_website>0</show_in_website>
|
305 |
<show_in_store>1</show_in_store>
|
306 |
<fields>
|
307 |
+
<info_enabled translate="label comment">
|
308 |
+
<label>Include Tax in Price</label>
|
309 |
+
<comment><![CDATA[Switch to store view scope to set]]></comment>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
<frontend_type>label</frontend_type>
|
311 |
+
<sort_order>100</sort_order>
|
312 |
<show_in_default>1</show_in_default>
|
313 |
<show_in_website>0</show_in_website>
|
314 |
<show_in_store>0</show_in_store>
|
315 |
+
</info_enabled>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
<enabled translate="label comment">
|
317 |
<label>Include Tax in Price</label>
|
318 |
+
<comment><![CDATA[Please make sure to resynchronize products by choosing the "All data" option and clicking on the "Sync Data for This Store" button under the "Data Sync Settings".]]></comment>
|
319 |
<frontend_type>select</frontend_type>
|
320 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
321 |
<sort_order>100</sort_order>
|
323 |
<show_in_website>0</show_in_website>
|
324 |
<show_in_store>1</show_in_store>
|
325 |
</enabled>
|
|
|
326 |
</fields>
|
327 |
</tax_setting>
|
328 |
<secureurl_setting translate="label">
|
329 |
<label>Secure Url Settings</label>
|
330 |
+
<sort_order>899</sort_order>
|
331 |
+
<show_in_default>1</show_in_default>
|
332 |
<show_in_website>0</show_in_website>
|
333 |
<show_in_store>1</show_in_store>
|
334 |
+
<expanded>0</expanded>
|
335 |
<fields>
|
336 |
+
<info_enabled translate="label comment">
|
337 |
+
<label>Use Secure Base Url for Products and Images</label>
|
338 |
+
<comment><![CDATA[Switch to store view scope to set]]></comment>
|
339 |
+
<frontend_type>label</frontend_type>
|
340 |
+
<sort_order>100</sort_order>
|
341 |
+
<show_in_default>1</show_in_default>
|
342 |
+
<show_in_website>0</show_in_website>
|
343 |
+
<show_in_store>0</show_in_store>
|
344 |
+
</info_enabled>
|
345 |
<enabled translate="label comment">
|
346 |
<label>Use Secure Base Url for Products and Images</label>
|
347 |
+
<comment><![CDATA[Choose Yes to use secure base url from System > Cofiguration > Store view > Secure > Base URL.</br>Please make sure to resynchronize products by clicking on the "Sync Data for This Store" under the "Data Sync Settings".]]></comment>
|
348 |
<frontend_type>select</frontend_type>
|
349 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
350 |
<sort_order>100</sort_order>
|
356 |
</secureurl_setting>
|
357 |
<developer translate="label">
|
358 |
<label>Developer Settings</label>
|
359 |
+
<sort_order>1000</sort_order>
|
360 |
<show_in_default>1</show_in_default>
|
361 |
<show_in_website>0</show_in_website>
|
362 |
<show_in_store>0</show_in_store>
|
395 |
</developer>
|
396 |
</groups>
|
397 |
</klevu_search>
|
398 |
+
<klevu_search_info translate="label" module="klevu_search">
|
399 |
+
<label>Help Center</label>
|
400 |
+
<tab>klevu</tab>
|
401 |
+
<sort_order>305</sort_order>
|
402 |
+
<show_in_default>1</show_in_default>
|
403 |
+
<show_in_website>1</show_in_website>
|
404 |
+
<show_in_store>1</show_in_store>
|
405 |
+
<groups>
|
406 |
+
<searchinformation translate="label">
|
407 |
+
<label>Klevu</label>
|
408 |
+
<sort_order>1</sort_order>
|
409 |
+
<expanded>1</expanded>
|
410 |
+
<frontend_model>klevu_search/adminhtml_form_klevuinfo</frontend_model>
|
411 |
+
<show_in_default>1</show_in_default>
|
412 |
+
<show_in_website>1</show_in_website>
|
413 |
+
<show_in_store>1</show_in_store>
|
414 |
+
</searchinformation>
|
415 |
+
</groups>
|
416 |
+
</klevu_search_info>
|
417 |
</sections>
|
418 |
</config>
|
app/code/community/Klevu/Search/sql/klevu_search_setup/mysql4-data-upgrade-1.1.21-1.1.22.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$installer = $this;
|
3 |
+
$installer->startSetup();
|
4 |
+
$installer->run("ALTER TABLE `klevu_product_sync` ADD `type` VARCHAR(255) NOT NULL DEFAULT 'products' AFTER `last_synced_at`");
|
5 |
+
$installer->run("ALTER TABLE `klevu_product_sync` DROP PRIMARY KEY, ADD PRIMARY KEY(`product_id`,`parent_id`,`store_id`,`test_mode`,`type`)");
|
6 |
+
try {
|
7 |
+
$entity_type = Mage::getSingleton("eav/entity_type")->loadByCode("catalog_product");
|
8 |
+
$entity_typeid = $entity_type->getId();
|
9 |
+
$attributecollection = Mage::getModel("eav/entity_attribute")->getCollection()->addFieldToFilter("entity_type_id", $entity_typeid)->addFieldToFilter("attribute_code", "rating");
|
10 |
+
if (!count($attributecollection)) {
|
11 |
+
$attribute = $attributecollection->getFirstItem();
|
12 |
+
$data = array();
|
13 |
+
$data['id'] = null;
|
14 |
+
$data['entity_type_id'] = $entity_typeid;
|
15 |
+
$data['attribute_code'] = "rating";
|
16 |
+
$data['backend_type'] = "varchar";
|
17 |
+
$data['frontend_input'] = "text";
|
18 |
+
$data['frontend_label'] = 'Rating';
|
19 |
+
$data['default_value_text'] = '0';
|
20 |
+
$data['is_global'] = '0';
|
21 |
+
$data['is_user_defined'] = '1';
|
22 |
+
$attribute->setData($data);
|
23 |
+
$attribute->save();
|
24 |
+
$resource = Mage::getSingleton('core/resource');
|
25 |
+
$read = $resource->getConnection('core_read');
|
26 |
+
$write = $resource->getConnection('core_write');
|
27 |
+
$entity_type = Mage::getSingleton("eav/entity_type")->loadByCode("catalog_product");
|
28 |
+
$entity_typeid = $entity_type->getId();
|
29 |
+
$select = $read->select()->from($this->getTable("eav_attribute_set") , array(
|
30 |
+
'attribute_set_id'
|
31 |
+
))->where("entity_type_id=?", $entity_typeid);
|
32 |
+
$attribute_sets = $read->fetchAll($select);
|
33 |
+
foreach($attribute_sets as $attribute_set) {
|
34 |
+
$attribute_set_id = $attribute_set['attribute_set_id'];
|
35 |
+
$select = $read->select()->from($this->getTable("eav_attribute") , array(
|
36 |
+
'attribute_id'
|
37 |
+
))->where("entity_type_id=?", $entity_typeid)->where("attribute_code=?", "rating");
|
38 |
+
$attribute = $read->fetchRow($select);
|
39 |
+
$attribute_id = $attribute['attribute_id'];
|
40 |
+
$select = $read->select()->from($this->getTable("eav_attribute_group") , array(
|
41 |
+
'attribute_group_id'
|
42 |
+
))->where("attribute_set_id=?", $attribute_set_id)->where("attribute_group_name=?", "General");
|
43 |
+
$attribute_group = $read->fetchRow($select);
|
44 |
+
$attribute_group_id = $attribute_group['attribute_group_id'];
|
45 |
+
$write->beginTransaction();
|
46 |
+
$write->insert($this->getTable("eav_entity_attribute") , array(
|
47 |
+
"entity_type_id" => $entity_typeid,
|
48 |
+
"attribute_set_id" => $attribute_set_id,
|
49 |
+
"attribute_group_id" => $attribute_group_id,
|
50 |
+
"attribute_id" => $attribute_id,
|
51 |
+
"sort_order" => 5
|
52 |
+
));
|
53 |
+
$write->commit();
|
54 |
+
}
|
55 |
+
}
|
56 |
+
} catch(Exception $e) {
|
57 |
+
echo '<p>Error occurred while trying to add the attribute. Error: ' . $e->getMessage() . '</p>';
|
58 |
+
}
|
59 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/template/klevu/search/form/field/sync/button.phtml
CHANGED
@@ -4,6 +4,17 @@
|
|
4 |
</button>
|
5 |
<script type="text/javascript">
|
6 |
$("<?php echo $this->getHtmlId() ?>").observe("click", function () {
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
});
|
9 |
</script>
|
4 |
</button>
|
5 |
<script type="text/javascript">
|
6 |
$("<?php echo $this->getHtmlId() ?>").observe("click", function () {
|
7 |
+
if(document.getElementById('klevu_search_product_sync_sync_options')) {
|
8 |
+
var syncoptions = document.getElementById('klevu_search_product_sync_sync_options').value;
|
9 |
+
new Ajax.Request("<?php echo $this->getUrl('adminhtml/klevu_search/save_sync_options_config'); ?>" + '?sync_options=' + syncoptions, {
|
10 |
+
method: 'POST',
|
11 |
+
onComplete: function(data) {
|
12 |
+
setLocation("<?php echo $this->getDestinationUrl() ?>");
|
13 |
+
}
|
14 |
+
});
|
15 |
+
} else {
|
16 |
+
setLocation("<?php echo $this->getDestinationUrl() ?>");
|
17 |
+
}
|
18 |
+
|
19 |
});
|
20 |
</script>
|
app/design/adminhtml/default/default/template/klevu/search/form/information.phtml
CHANGED
@@ -5,8 +5,6 @@
|
|
5 |
<?php echo $this->__("2. Indices are uptodate (System > Index Management)") ?></br>
|
6 |
<?php echo $this->__("3. Products should be enabled and have the visibility set to catalog and search.") ?></p>
|
7 |
<p><b><?php echo $this->__(" Klevu Merchant Centre: <a href='https://box.klevu.com' target='_blank'>https://box.klevu.com</a>");?></b></p>
|
8 |
-
<p><?php echo $this->__("
|
9 |
-
change look and feel of your search results, setup product promotions, monitor
|
10 |
-
search activity, upgrade your account and many more.");?></p>
|
11 |
<p><b><?php echo $this->__("FAQs and Troubleshooting: <a href='http://www.klevu.com/support/support-home.html' target='_blank'>click here</a>");?></b></p>
|
12 |
<p><b><?php echo $this->__("Migrating from staging to live: <a href='http://www.klevu.com/support/staging-to-live.html' target='_blank'>click here</a>");?></b></p>
|
5 |
<?php echo $this->__("2. Indices are uptodate (System > Index Management)") ?></br>
|
6 |
<?php echo $this->__("3. Products should be enabled and have the visibility set to catalog and search.") ?></p>
|
7 |
<p><b><?php echo $this->__(" Klevu Merchant Centre: <a href='https://box.klevu.com' target='_blank'>https://box.klevu.com</a>");?></b></p>
|
8 |
+
<p><?php echo $this->__("Once the Klevu Search is working on your website, login into Klevu Merchant Centre account to change look and feel of your search results, setup product promotions, see search activity, upgrade your account and lot more.");?></p>
|
|
|
|
|
9 |
<p><b><?php echo $this->__("FAQs and Troubleshooting: <a href='http://www.klevu.com/support/support-home.html' target='_blank'>click here</a>");?></b></p>
|
10 |
<p><b><?php echo $this->__("Migrating from staging to live: <a href='http://www.klevu.com/support/staging-to-live.html' target='_blank'>click here</a>");?></b></p>
|
app/design/adminhtml/default/default/template/klevu/search/form/klevuinfo.phtml
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php /** @var Klevu_Search_Block_Adminhtml_Form_KlevuInfo $this */ ?>
|
2 |
+
<iframe src="https://js.klevu.com/klevu-js-v1/help/" frameBorder="0" width="100%" height="1362"></iframe>
|
app/design/adminhtml/default/default/template/klevu/search/wizard/configure/store.phtml
CHANGED
@@ -32,7 +32,7 @@
|
|
32 |
</tr>
|
33 |
|
34 |
<tr>
|
35 |
-
<td class="label"><label for="tax_enable"><?php echo $this->__("
|
36 |
<td class="value">
|
37 |
<select name="tax_enable" id="tax_enable">
|
38 |
<option value="0" selected="selected"><?php echo $this->__("No") ?></option>
|
@@ -41,11 +41,11 @@
|
|
41 |
</td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
-
<td class="label"><label for="secure_baseurl_enable"><?php echo $this->__("
|
45 |
<td class="value">
|
46 |
<select name="secure_baseurl_enable" id="secure_base_enable">
|
47 |
-
<option value="0" selected="selected"><?php echo $this->__("
|
48 |
-
<option value="1"><?php echo $this->__("
|
49 |
</select>
|
50 |
</td>
|
51 |
</tr>
|
32 |
</tr>
|
33 |
|
34 |
<tr>
|
35 |
+
<td class="label"><label for="tax_enable"><?php echo $this->__("Would you like to show price including taxes for search results?") ?></label></td>
|
36 |
<td class="value">
|
37 |
<select name="tax_enable" id="tax_enable">
|
38 |
<option value="0" selected="selected"><?php echo $this->__("No") ?></option>
|
41 |
</td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
+
<td class="label"><label for="secure_baseurl_enable"><?php echo $this->__("Which 'base URL' would you like to use for products in search results?<br/>(from System > Configuration > Web > Secure OR Unsecure > Base URL)") ?></label></td>
|
45 |
<td class="value">
|
46 |
<select name="secure_baseurl_enable" id="secure_base_enable">
|
47 |
+
<option value="0" selected="selected"><?php echo $this->__("Unsecure") ?></option>
|
48 |
+
<option value="1"><?php echo $this->__("Secure") ?></option>
|
49 |
</select>
|
50 |
</td>
|
51 |
</tr>
|
app/design/frontend/base/default/layout/klevu/search.xml
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<layout version="0.1.0">
|
3 |
<default>
|
4 |
-
|
5 |
<reference name="before_body_end">
|
6 |
<block type="core/template" name="klevu.search.form_js" template="klevu/search/form_js.phtml"/>
|
7 |
</reference>
|
1 |
<?xml version="1.0"?>
|
2 |
<layout version="0.1.0">
|
3 |
<default>
|
|
|
4 |
<reference name="before_body_end">
|
5 |
<block type="core/template" name="klevu.search.form_js" template="klevu/search/form_js.phtml"/>
|
6 |
</reference>
|
app/design/frontend/base/default/template/klevu/search/form_js.phtml
CHANGED
@@ -2,11 +2,10 @@
|
|
2 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
3 |
<?php $helper = Mage::helper('klevu_search'); ?>
|
4 |
<?php if ($config->isExtensionConfigured()):
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
} ?>
|
10 |
<script type="text/javascript">
|
11 |
var allInputs = document.getElementsByTagName( 'input' );
|
12 |
var klevu_current_version = '<?php echo Mage::getConfig()->getModuleConfig('Klevu_Search')->version; ?>';
|
@@ -43,7 +42,7 @@ if($config->isSecureUrlEnabled(Mage::app()->getStore()->getStoreId())) {
|
|
43 |
var search_input = allInputs[i];
|
44 |
search_input.stopObserving('click');
|
45 |
search_input.stopObserving('keydown');
|
46 |
-
search_input.form.action='<?php echo $url; ?>'
|
47 |
search_input.form.observe('submit', function (e) {
|
48 |
//if(search_input.value.length!= 0){
|
49 |
//Event.stop(e);
|
@@ -55,7 +54,7 @@ if($config->isSecureUrlEnabled(Mage::app()->getStore()->getStoreId())) {
|
|
55 |
}
|
56 |
|
57 |
})();
|
58 |
-
var klevu_storeLandingPageUrl = '<?php echo $url; ?>'
|
59 |
var klevu_showQuickSearchOnEnter=false;
|
60 |
<?php } else if($config->isLandingEnabled()==1) { ?>
|
61 |
(function () {
|
@@ -82,6 +81,17 @@ if($config->isSecureUrlEnabled(Mage::app()->getStore()->getStoreId())) {
|
|
82 |
klevu_result_left_margin = '';
|
83 |
(function () { var ws = document.createElement('script'),kl_protocol =("https:"===document.location.protocol?"https://":"http://"); ws.type = 'text/javascript'; ws.async = true; ws.src = kl_protocol+'<?php echo $config->getJsUrl() ?>/klevu-js-v1/js/klevu-webstore.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ws, s); })();
|
84 |
</script>
|
85 |
-
|
86 |
<?php endif; ?>
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
3 |
<?php $helper = Mage::helper('klevu_search'); ?>
|
4 |
<?php if ($config->isExtensionConfigured()):
|
5 |
+
$url = Mage::getUrl('search', array(
|
6 |
+
'_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()
|
7 |
+
));
|
8 |
+
?>
|
|
|
9 |
<script type="text/javascript">
|
10 |
var allInputs = document.getElementsByTagName( 'input' );
|
11 |
var klevu_current_version = '<?php echo Mage::getConfig()->getModuleConfig('Klevu_Search')->version; ?>';
|
42 |
var search_input = allInputs[i];
|
43 |
search_input.stopObserving('click');
|
44 |
search_input.stopObserving('keydown');
|
45 |
+
search_input.form.action='<?php echo $url; ?>' ;//?q="+search_input.value;
|
46 |
search_input.form.observe('submit', function (e) {
|
47 |
//if(search_input.value.length!= 0){
|
48 |
//Event.stop(e);
|
54 |
}
|
55 |
|
56 |
})();
|
57 |
+
var klevu_storeLandingPageUrl = '<?php echo $url; ?>';
|
58 |
var klevu_showQuickSearchOnEnter=false;
|
59 |
<?php } else if($config->isLandingEnabled()==1) { ?>
|
60 |
(function () {
|
81 |
klevu_result_left_margin = '';
|
82 |
(function () { var ws = document.createElement('script'),kl_protocol =("https:"===document.location.protocol?"https://":"http://"); ws.type = 'text/javascript'; ws.async = true; ws.src = kl_protocol+'<?php echo $config->getJsUrl() ?>/klevu-js-v1/js/klevu-webstore.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ws, s); })();
|
83 |
</script>
|
|
|
84 |
<?php endif; ?>
|
85 |
|
86 |
+
<?php // show group price based on logged in customer group ?>
|
87 |
+
<script type="text/javascript">
|
88 |
+
<?php
|
89 |
+
$login = Mage::getSingleton( 'customer/session' )->isLoggedIn(); //Check if User is Logged In
|
90 |
+
if($login) { ?>
|
91 |
+
var klevu_loginCustomerGroup = "<?php echo Mage::getSingleton('customer/session')->getCustomerGroupId(); ?>";
|
92 |
+
<?php }?>
|
93 |
+
</script>
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
+
|
app/design/frontend/base/default/template/klevu/search/index.phtml
CHANGED
@@ -56,18 +56,17 @@
|
|
56 |
</div>
|
57 |
<!-- End of kuProListing --></div>
|
58 |
<!-- End of klevu-container -->
|
59 |
-
|
|
|
60 |
<input id="startPos" type="hidden" name="startPos" value="0" />
|
61 |
<input id="totalResultsFound" type="hidden" name="totalResultsFound" value="0" />
|
62 |
<input id="searchedKeyword" type="hidden" name="searchedKeyword" value="" />
|
63 |
<input id="totalPages" type="hidden" name="totalPages" value="0" />
|
64 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
65 |
<?php
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
$src = "http://".$config->getJsUrl();
|
70 |
-
} ?>
|
71 |
<script type="text/javascript" src="<?php echo $src; ?>/klevu-js-v1/js-1-1/klevu-landing.js">// <![CDATA[
|
72 |
// ]]></script>
|
73 |
<script type="text/javascript">// <![CDATA[
|
56 |
</div>
|
57 |
<!-- End of kuProListing --></div>
|
58 |
<!-- End of klevu-container -->
|
59 |
+
<?php $grid_per_page = Mage::getStoreConfig("catalog/frontend/grid_per_page"); ?>
|
60 |
+
<input id="noOfRecords" type="hidden" name="noOfRecords" value="<?php if(!empty($grid_per_page)){ echo $grid_per_page; } else { echo "12";}?>" />
|
61 |
<input id="startPos" type="hidden" name="startPos" value="0" />
|
62 |
<input id="totalResultsFound" type="hidden" name="totalResultsFound" value="0" />
|
63 |
<input id="searchedKeyword" type="hidden" name="searchedKeyword" value="" />
|
64 |
<input id="totalPages" type="hidden" name="totalPages" value="0" />
|
65 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
66 |
<?php
|
67 |
+
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
|
68 |
+
$src = $protocol.$config->getJsUrl();
|
69 |
+
?>
|
|
|
|
|
70 |
<script type="text/javascript" src="<?php echo $src; ?>/klevu-js-v1/js-1-1/klevu-landing.js">// <![CDATA[
|
71 |
// ]]></script>
|
72 |
<script type="text/javascript">// <![CDATA[
|
app/design/frontend/base/default/template/klevu/search/product_tracking.phtml
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php /** @var Klevu_Search_Block_Catalog_Product_Tracking $this */ ?>
|
2 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
3 |
-
<?php if ($config->isExtensionConfigured()):
|
|
|
|
|
4 |
<script type="text/javascript">
|
5 |
(function() {
|
6 |
var referrer, search_term, klevu_search_product_tracking;
|
1 |
<?php /** @var Klevu_Search_Block_Catalog_Product_Tracking $this */ ?>
|
2 |
<?php $config = Mage::helper('klevu_search/config'); ?>
|
3 |
+
<?php if ($config->isExtensionConfigured()):
|
4 |
+
//echo Mage::getSingleton('core/session')->getCategoryValue();
|
5 |
+
?>
|
6 |
<script type="text/javascript">
|
7 |
(function() {
|
8 |
var referrer, search_term, klevu_search_product_tracking;
|
js/klevu/search/lib/Wizard.js
CHANGED
@@ -177,3 +177,4 @@ function checkplan()
|
|
177 |
{
|
178 |
showPopup("http://www.klevu.com/magento-free-vs-pro.html");
|
179 |
}
|
|
177 |
{
|
178 |
showPopup("http://www.klevu.com/magento-free-vs-pro.html");
|
179 |
}
|
180 |
+
var klevu_search_wizard_configure_user_form = new varienForm('klevu_search_wizard_configure_user_form');
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Klevu_SmartSearch</name>
|
4 |
-
<version>1.1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://klevu.com">Commercial</license>
|
7 |
<channel>community</channel>
|
@@ -14,11 +14,19 @@ Intelligent boosting - Just select products you want to promote, no need to manu
|
|
14 |
Dynamic filters - Shoppers get excellent shopping experience.
|
15 |
Search as you type - Shoppers see results even with long keywords.
|
16 |
Actionable insights - Drive traffic by learning from shoppers' search patterns.</description>
|
17 |
-
<notes>-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
<authors><author><name>Klevu</name><user>Klevu</user><email>niraj.aswani@klevu.com</email></author></authors>
|
19 |
-
<date>2015-
|
20 |
-
<time>
|
21 |
-
<contents><target name="mageetc"><dir name="modules"><file name="Klevu_Search.xml" hash="49674c121481f67bcfc2f31bb21e5aaf"/></dir></target><target name="magecommunity"><dir name="Klevu"><dir name="Search"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><dir name="Field"><dir name="Attribute"><file name="Mappings.php" hash="293c4d19663fa3aad76c17287fec2114"/></dir><dir name="Automatic"><dir name="Attribute"><file name="Mappings.php" hash="b0d192bd03319957d09f34d510914a2f"/></dir></dir><dir name="Html"><file name="Select.php" hash="adc22272b93deb46b524f46f7000972f"/></dir><dir name="Image"><file name="Log.php" hash="5be8e22db76874a10914b297425532c6"/></dir><dir name="Store"><dir name="Level"><file name="Label.php" hash="c2a77e64a2decb8abd101f15b4ea3e3f"/></dir></dir><dir name="Sync"><file name="Button.php" hash="a6f8f69290f84f0ecd731585b3cca0e7"/></dir></dir><file name="Information.php" hash="b422d8aa8524b4277f2b4013e90379a0"/></dir><file name="Notifications.php" hash="9fc2511a89e04cb2c9ce86fc7c3684cd"/><dir name="Wizard"><dir name="Config"><file name="Button.php" hash="d17ba7640d5777612ab9fb27f85aa5c9"/></dir><dir name="Configure"><file name="Attributes.php" hash="3801cd4ebb45b3d29cfbacf830af2874"/><file name="Store.php" hash="a5e900bf91db47115ce54497669fd384"/><file name="User.php" hash="f353da92a383854f419333e842380273"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="Tracking.php" hash="a472d4caf068d12f9151d0ed282293e4"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="833c2d97e8ed8b996c8d4425a88f2a6c"/><file name="Compat.php" hash="3726862a4576a53c5a44dda59a1e9a86"/><file name="Config.php" hash="e7e19cef41300c4b49a26ce7df60b9d4"/><file name="Data.php" hash="22e73727ba0b0f2575da81b04eb2e4c4"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><file name="Addrecords.php" hash="088f40418b35a682a3f815dbfbd42fa7"/><file name="Adduser.php" hash="d8b6e6d37fe6ce522747fd6951c8e9df"/><file name="Addwebstore.php" hash="ea33f2c7032682a6ec2bdb8324cdaf0e"/><file name="Debuginfo.php" hash="dd92df091719aa73eca07a08d9681d42"/><file name="Deleterecords.php" hash="0e404db0aab2c58ff90a4e7e4fe73818"/><file name="Gettimezone.php" hash="4bb572b68f42236d765f8194e413b1ca"/><file name="Getuserdetail.php" hash="849a0f04bfdbf39ae75a2627d26717ca"/><file name="Idsearch.php" hash="9244fbdf1e67beea19c99ad0a014d0fc"/><file name="Producttracking.php" hash="50dacac910b7a68b035078771e9f8ff6"/><file name="Removetestmode.php" hash="bd2e7ecf6c233b1430e2989b2b62000f"/><file name="Startsession.php" hash="14edcef879dce92c76a9c78d4106fc6c"/><file name="Updaterecords.php" hash="9e99ce8da72a030b10e9af8353233427"/></dir><file name="Action.php" hash="792f3fe4348f7d13bdf09562ec0d8b59"/><dir name="Request"><file name="Get.php" hash="2d6f510d4dcc171b8e44322b76a49f93"/><file name="Post.php" hash="a46b484a50ced15e2c02deb16bbeb6bb"/><file name="Xml.php" hash="73b3f04d29c2bd79c470d7b81cfc0390"/></dir><file name="Request.php" hash="7f15814e8a01982499563e0e056d2d52"/><dir name="Response"><file name="Data.php" hash="9dbe8e28a501feacb07a6ce2bcc4deb8"/><file name="Empty.php" hash="5988ec43c1756cf4acfedb212787b2b9"/><file name="Invalid.php" hash="8287280c3b99f64e08cf54a0bf65e4a1"/><file name="Message.php" hash="5b6d717c75014e798e619e3df2008d29"/><file name="Search.php" hash="96b9bdef60811c4d994cb457f0d355a9"/><file name="Timezone.php" hash="ffa4d48e42fa52d2c928e202c2af61fd"/></dir><file name="Response.php" hash="b2c244001dedd653e1f0953d6bf25e0e"/></dir><dir name="Catalog"><dir name="Model"><file name="Config.php" hash="57ae55e3cea3dd1b4c60dafcb06d5efd"/></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="104ac92f6ef59879b593a9f1baffd562"/><file name="Category.php" hash="d30670c5ca616dcb0c3f0dd2ffbb97ba"/><file name="Price.php" hash="4ca1e56183364670fb39a88ea5666c13"/></dir></dir><dir name="Resource"><dir name="Fulltext"><file name="Collection.php" hash="a531e4738344c322656482e786f97457"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="d675e50ad7c5277b9ca4100770ac16d3"/></dir></dir></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="ef07b22f48c4ca72066bf90a1cf9ac27"/></dir></dir><file name="Cron.php" hash="0936cc2667e056182668c9f61fc171bc"/><file name="Notification.php" hash="771d45868668c5b925e3bf2202482b43"/><file name="Observer.php" hash="8cb55c00d50edacf403c739fc3301bfc"/><dir name="Order"><file name="Sync.php" hash="1f5c2290ba46ab597f6e85747093bb16"/></dir><dir name="Product"><file name="Sync.php" hash="fa8613f62256433eb9c3052ed62d175f"/></dir><dir name="Resource"><dir name="Notification"><file name="Collection.php" hash="936a242678b1c89853149e9dc77b6aff"/></dir><file name="Notification.php" hash="f3206c5286bf6ccb4df268c54fcff0f5"/></dir><file name="Session.php" hash="a4ab94b093ba8a414fbfa031f0d2cabe"/><file name="Sync.php" hash="f9f6f4d1251d493944ab13f1467d5257"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Additional"><file name="Attributes.php" hash="d91e1af65488d647b035fbb100a4eb1d"/></dir><dir name="Boosting"><file name="Attribute.php" hash="52a633242ff145d8f3b74c6a573c303e"/></dir><file name="Frequency.php" hash="5866e9d92476cdaa8a5f27c5fa0dc48b"/><file name="Landingoptions.php" hash="058c81eb9faec57f6c77db697ff3279e"/><dir name="Log"><file name="Level.php" hash="ba2bee63eb18b966db6beade72293036"/></dir><dir name="Product"><file name="Attributes.php" hash="f99ced41d6504f1570a703e66743dd0b"/></dir><file name="Yesnoforced.php" hash="0cf0e7842afae56af0caf92c9490295b"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="Base.php" hash="a1a8faa15e50cd1d394bc79ca94f712b"/></dir><dir name="Controller"><dir name="CatalogSearch"><dir name="fixtures"><file name="search_results.yaml" hash="bfa6ebad238b75d771b89fb369201540"/></dir></dir><file name="CatalogSearch.php" hash="f6c2615ef27061d0cce7e7eae717c040"/></dir><dir name="Helper"><file name="Api.php" hash="c8484c149e920b3f74b8f6f2dce82936"/><file name="Compat.php" hash="8bae993e0da8f368eb50689f271446a5"/><dir name="Config"><dir name="fixtures"><file name="testGetOrderSyncEnabledFlag.yaml" hash="d1427ea15734ca336c47aad51ad7026e"/><file name="testGetOrderSyncFrequency.yaml" hash="52dffcad75b15761a695eb451b99c751"/><file name="testGetProductSyncEnabledFlag.yaml" hash="43e7263c8b781ef7fb6efbb6598f0226"/><file name="testGetProductSyncFrequency.yaml" hash="004e62dfa22c9abfd8dcf56c92270e19"/><file name="testIsExtensionEnabledDisabled.yaml" hash="5d706b347b4f32f87dc8eb4dd6102148"/><file name="testIsExtensionEnabledEnabled.yaml" hash="52c9eb8a4fad4d8f3ba25c68d35977f3"/></dir><dir name="providers"><file name="testIsOrderSyncEnabled.yaml" hash="938cc58e15b310ba2760be6c64e3d3cb"/><file name="testIsProductSyncEnabled.yaml" hash="5be1dcfb21264a012de32cbd252a09c9"/><file name="testIsTestModeEnabled.yaml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><file name="Config.php" hash="9ef7b00d63104e11426f3085afa36744"/><dir name="Data"><dir name="providers"><file name="testBytesToHumanReadable.yaml" hash="7cdb8705e108715abc63fa2cfd81626b"/><file name="testGetLanguageFromLocale.yaml" hash="c301f8dc090142627f6af4e4222b7708"/><file name="testHumanReadableToBytes.yaml" hash="dd89ae5b6705cfcfbf42ba64432c0f0a"/><file name="testIsProductionDomain.yaml" hash="f88ef0f80073fdb9cbdbd020348527a7"/></dir></dir><file name="Data.php" hash="93bb38ec55380a6ec7d79008496cac34"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><dir name="Addrecords"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="26eea8bfc58c60e4a2f07dcbddc2e6fd"/><file name="testValidateRequiredFieldsRecords.yaml" hash="590b7ec9b7c33debb740b8c6c6db717f"/><file name="testValidateRequiredFieldsRecordsAllowedEmpty.yaml" hash="f82933b3d219491015cef39a214543bd"/><file name="testValidateRequiredFieldsRecordsEmpty.yaml" hash="d5dcd5aad682db42b1352c35b8905d47"/><file name="testValidateRequiredFieldsRecordsOptional.yaml" hash="25092bb84ba311815ca33971a388256e"/></dir></dir><file name="Addrecords.php" hash="14f5c217fac3f82957f54916fa29b387"/><dir name="Adduser"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="841f068ff3ffd8081ccc91e8675f998c"/></dir></dir><file name="Adduser.php" hash="5189f29f08c4ed30d9b6ac83429de3d0"/><dir name="Addwebstore"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e52324b58b76d2d63cfa83ee228e1b31"/></dir></dir><file name="Addwebstore.php" hash="fbeac1b8adc5df45ef08a0a3331e5fbc"/><dir name="Getuserdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="297df49838c47536bc9ee928b27470b2"/></dir></dir><file name="Getuserdetail.php" hash="4733d1ec7fd5b3b765aa88f182adf390"/><dir name="Idsearch"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="f36c1a1a1e6d1f5a2d3a59d8d349036e"/></dir></dir><file name="Idsearch.php" hash="4c8849b460a0df494911e3a4df65719c"/><dir name="Producttracking"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="4bc690980c701649d17ff6caba3ef646"/></dir></dir><file name="Producttracking.php" hash="04d8ef59f24f848d36493aabfa413828"/><file name="Startsession.php" hash="c1ae49d22b5e75672b8d84499d51f3d4"/></dir><file name="Action.php" hash="14ce7e11eb3acfda2dfea539c8f5254b"/><dir name="Request"><dir name="Xml"><dir name="providers"><file name="testGetDataAsXml.yaml" hash="4aa16e3557481444ba39775ee0b99d29"/></dir></dir><file name="Xml.php" hash="279a5defe0c933540e9635455590d8b1"/></dir><file name="Request.php" hash="b0cbdfe6a023d0479dc1b1c7fc6869c0"/><dir name="Response"><dir name="Data"><dir name="providers"><file name="testIsSuccessful.yaml" hash="f085922f4329b3d6b19c1e0010d3ca22"/></dir></dir><file name="Data.php" hash="1ab05c7225658f54bd31f0c205d05a2b"/><file name="Empty.php" hash="9933c42aa9ff06977ca3e53d2de15857"/><file name="Invalid.php" hash="bb68f25a053b7e5fc024bce0f5286fcb"/><dir name="Message"><dir name="providers"><file name="testIsSuccessful.yaml" hash="d53562002270a0c4b58ca94733309a21"/></dir></dir><file name="Message.php" hash="135c0d136fa9d0e86158407fc59294c3"/><dir name="Timezone"><dir name="providers"><file name="testIsSuccessful.yaml" hash="67f35e7ee5081689a1eddb867ae6256d"/></dir></dir><file name="Timezone.php" hash="f9cb063ef1f506f656a25c6206899eb3"/><dir name="providers"><file name="response_testIsSuccessful.yaml" hash="ac214d5ebf1eccb89e8fa85e8e3cbb75"/></dir></dir><file name="Response.php" hash="dbcce43ccb2cdf47bce5c05fcf27e759"/><dir name="Test"><file name="Case.php" hash="ec6d3169b9e2bd26655687124be779dd"/></dir><dir name="data"><file name="data_response_data.xml" hash="cd2e5d3dcac402828b9e5f0b0b637c76"/><file name="data_response_failure.xml" hash="ba677628e68149e0283729c1c8e5e86a"/><file name="data_response_no_response.xml" hash="98944f0eda050221de59100f4b22f030"/><file name="data_response_success.xml" hash="e92d1cfcd4461dc8d3fcabe1f902b40b"/><file name="data_response_success_only.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="message_response_failure.xml" hash="ab63c55523b26bd53ea6abf426dd11f5"/><file name="message_response_missing_message.xml" hash="4a43490eda6f33804ca400da2f9cdac1"/><file name="message_response_missing_status.xml" hash="39103fec18a0be88e4ff00a8149c8ad4"/><file name="message_response_session_id.xml" hash="415f25f79a3795ae70b983504cbb784f"/><file name="message_response_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="response_malformed.xml" hash="bfeb4e75829a42082a7935a8e7be491e"/><file name="response_noxml.xml" hash="2debfdcf79f03e4a65a667d21ef9de14"/><file name="response_valid.xml" hash="c915992330f0e4bd37bb629637139f98"/><file name="search_response_empty.xml" hash="601298402d21f3626052634cbbb0ae72"/><file name="search_response_paged.xml" hash="04203807a1d6df787c54afd84690a50e"/><file name="search_response_sorted.xml" hash="c3ee65658a56f65334417328c7fbdcac"/><file name="search_response_success.xml" hash="fea4e59e7ae6e68b387729e320d5f49c"/><file name="startsession_response_success.xml" hash="1865ee2da80359e5a84914c56cae2c8d"/><file name="timezone_response_no_data.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="timezone_response_no_status.xml" hash="bd695479b03e3607196f01f627af4a45"/><file name="timezone_response_with_failure.xml" hash="69a6b1fa7b2cf087d85be162064525b0"/><file name="timezone_response_with_success.xml" hash="e6888eca066741675d228ba1397b5554"/></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="2032f568dc75c8a5ff63c7daaf8bd049"/></dir></dir><dir name="Notification"><dir name="fixtures"><file name="testLoad.yaml" hash="305afce09851bb40e8c990c138aff162"/></dir></dir><file name="Notification.php" hash="889ec647dbdb938741cfc75e1baa2bc2"/><dir name="Observer"><dir name="fixtures"><file name="testLandingPageRewritesDisabled.yaml" hash="88f0c274444dbaab4fded639b4f40048"/><file name="testLandingPageRewritesEnabled.yaml" hash="bfe60a7ccc0ac73c664f24a4b7394343"/><file name="testScheduleOrderSync.yaml" hash="170806194b4a1bd7f00bc346a51709e1"/></dir></dir><file name="Observer.php" hash="73349e9c475129197c2cf55a1e1d4cdc"/><dir name="Order"><dir name="Sync"><dir name="fixtures"><file name="testAddOrderToQueue.yaml" hash="c93c3c28273757a13b878f97dd0b9e97"/><file name="testClearQueue.yaml" hash="d7ad7abd553e333e84cbab149cdcfb31"/><file name="testRun.yaml" hash="44f091d24de97d230f61fcaf3689ba81"/></dir></dir><file name="Sync.php" hash="d2166272904e003b6bea3862f66e0235"/></dir><dir name="Product"><dir name="Sync"><dir name="fixtures"><file name="testAddProducts.yaml" hash="0ac9a9e6666f285eff796d30c8e0a4e3"/><file name="testCatalogruleProducts.yaml" hash="c37fe4fe86fda18d9fd90794ea1520e4"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testDeleteProducts.yaml" hash="22f94366cc64b6980b8d648067920533"/><file name="testRun.yaml" hash="eaac2bf57835625a6cd80294e6c5a99c"/><file name="testSpecialpriceProducts.yaml" hash="7d44672dcf91473c0bf1d9cb523a394a"/><file name="testUpdateProducts.yaml" hash="61266411faa659dc175f75ffbccce97e"/></dir></dir><file name="Sync.php" hash="464c549e54103898fea0bef21649dcd1"/></dir><dir name="Sync"><dir name="providers"><file name="testSchedule.yaml" hash="97f1043c42eb74162ae97941dc920d8f"/></dir></dir><file name="Sync.php" hash="8c091e168e251761be7fb1d1d2149305"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Test"><dir name="providers"><file name="testIsValidSourceModel.yaml" hash="cfedc94014707ee5586dd212b4d1ee16"/></dir></dir><file name="Test.php" hash="3e915599d4f76a2fbbb20aed9ffdf968"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Klevu"><file name="NotificationsController.php" hash="e6a8f7ee4ca5463bb9b3df5fa901b6b1"/><dir name="Search"><file name="WizardController.php" hash="0218bb70b1b4b478cdb007181328afb3"/></dir><file name="SearchController.php" hash="eb4e183d45fe049e2a0b7df7739b3f8d"/></dir></dir><file name="IndexController.php" hash="41d329df7bb53b6c4d4ac53a3d57d177"/></dir><dir name="etc"><file name="adminhtml.xml" hash="938a66de5c0de1d096d7c0cb97e980cd"/><file name="config.xml" hash="03fdea5d5f72ede3f66a6525adc9834a"/><file name="system.xml" hash="0044f01992a3b13ccf8bb371c7b9c8aa"/></dir><dir name="sql"><dir name="klevu_search_setup"><file name="mysql4-data-upgrade-1.1.1-1.1.2.php" hash="a65f702cf64af452f2fb6f6cdac130a7"/><file name="mysql4-install-1.0.0.php" hash="860c1991c2ebf804f939598e9932edf5"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="klevu"><dir name="search"><dir name="form"><dir name="field"><file name="array_readonly.phtml" hash="d3a3be4cf22f89d84bd73121a1adfa86"/><dir name="sync"><file name="button.phtml" hash="0459f187b2b98a9ff5a9433875b465e1"/><file name="logbutton.phtml" hash="d31dd881015319d78d9fb2b83874f296"/></dir></dir><file name="information.phtml" hash="4126e9e29067e19dfd675f653e3f7eb4"/></dir><file name="notifications.phtml" hash="090714ca57b11d24769c1baa1bcd4615"/><dir name="wizard"><file name="complete.phtml" hash="aeca8d1a3335b461f5e6bcbba08c22b6"/><dir name="config"><file name="button.phtml" hash="b1644ee569882b05c2d8cb2f1eecddbc"/></dir><dir name="configure"><file name="attributes.phtml" hash="d54f0a86e78390fbe66825d0771aad25"/><file name="store.phtml" hash="d9610924f3c7fa6f4eaa610fa80d2b5e"/><file name="user.phtml" hash="8f5d6da7920bfbcc8eb600634fa7a14b"/></dir><dir name="form"><dir name="field"><file name="array.phtml" hash="ccdccab02fbd9cfc2145f094d5e12a2e"/></dir></dir></dir></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="search.xml" hash="f385a7290bad22fb212b440afa82d2a7"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="klevu"><file name="search.xml" hash="2cba521b2f52d070a496a78fbed83136"/></dir></dir><dir name="template"><dir name="klevu"><dir name="search"><file name="form_js.phtml" hash="19b33d27b6476c567994045a1d1bce0e"/><file name="index.phtml" hash="32bb80d4a2e78aac2182ae941dd8bdf6"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="4d7e50935d5106ca47e3f4e372be3254"/></dir></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="klevu"><dir name="search"><dir name="lib"><file name="Wizard.js" hash="c9c825874206d4c99b60645be1f1a6f9"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="klevu"><dir name="search"><file name="notifications.css" hash="80954cfc49bb2bc45d2eafb7c28cedad"/><file name="wizard.css" hash="824f735715f3ed97ce98414b9895e46b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="klevu"><file name="klevu-landing-page-style.css" hash="9e7cb60e3e06c689648055d344185581"/><file name="klevu-landing-responsive.css" hash="811e1bfece09ba7d5529fec850963ac6"/></dir></dir><dir name="images"><dir name="klevu"><file name="btn-gridview.png" hash="c3dd97f4f53e1dfe34b6c5b6b4237b8a"/><file name="btn-listview.png" hash="00aaaa62d67e252248d6075f53b04f7f"/><file name="ku-loader.gif" hash="6050f5bcf455cc8f0332dd65e72f8e52"/></dir></dir></dir></dir></dir></target></contents>
|
22 |
<compatible/>
|
23 |
<dependencies><required><php><min>5.3.0</min><max>5.6.0</max></php></required></dependencies>
|
24 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Klevu_SmartSearch</name>
|
4 |
+
<version>1.1.22</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://klevu.com">Commercial</license>
|
7 |
<channel>community</channel>
|
14 |
Dynamic filters - Shoppers get excellent shopping experience.
|
15 |
Search as you type - Shoppers see results even with long keywords.
|
16 |
Actionable insights - Drive traffic by learning from shoppers' search patterns.</description>
|
17 |
+
<notes>- solved https issue for landing page
|
18 |
+
- message change
|
19 |
+
- Immediate sync for updated data
|
20 |
+
- product rating 
|
21 |
+
- Help center
|
22 |
+
- Group price support
|
23 |
+
- Added klevu_Products
|
24 |
+
- Added type field in klevu_product_sync table
|
25 |
+
- Product tracking with preserve layout</notes>
|
26 |
<authors><author><name>Klevu</name><user>Klevu</user><email>niraj.aswani@klevu.com</email></author></authors>
|
27 |
+
<date>2015-10-01</date>
|
28 |
+
<time>06:52:47</time>
|
29 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Klevu_Search.xml" hash="49674c121481f67bcfc2f31bb21e5aaf"/></dir></target><target name="magecommunity"><dir name="Klevu"><dir name="Search"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><dir name="Field"><dir name="Attribute"><file name="Mappings.php" hash="293c4d19663fa3aad76c17287fec2114"/></dir><dir name="Automatic"><dir name="Attribute"><file name="Mappings.php" hash="b0d192bd03319957d09f34d510914a2f"/></dir></dir><dir name="Html"><file name="Select.php" hash="adc22272b93deb46b524f46f7000972f"/></dir><dir name="Image"><file name="Log.php" hash="5be8e22db76874a10914b297425532c6"/></dir><dir name="Store"><dir name="Level"><file name="Label.php" hash="df3680c83924ece232eb14bd0b7ac9b3"/></dir></dir><dir name="Sync"><file name="Button.php" hash="aeec22e3e952e40d1e1bed33a9e8185b"/></dir></dir><file name="Information.php" hash="b422d8aa8524b4277f2b4013e90379a0"/><file name="Klevuinfo.php" hash="d2532a3a273acd33515165b3d98ac4d1"/><file name="Syncoptionsinfo.php" hash="28621e3bd17eb8216639fa3a2da47840"/></dir><file name="Notifications.php" hash="9fc2511a89e04cb2c9ce86fc7c3684cd"/><dir name="Wizard"><dir name="Config"><file name="Button.php" hash="d17ba7640d5777612ab9fb27f85aa5c9"/></dir><dir name="Configure"><file name="Attributes.php" hash="3801cd4ebb45b3d29cfbacf830af2874"/><file name="Store.php" hash="a5e900bf91db47115ce54497669fd384"/><file name="User.php" hash="f353da92a383854f419333e842380273"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="Tracking.php" hash="e314132d47d15ba686c62a0d5ce1668e"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="489164a62c7d54f5365c09ec537e3e44"/><file name="Compat.php" hash="3726862a4576a53c5a44dda59a1e9a86"/><file name="Config.php" hash="5465c53e3ed6ffd3c2746eeecd247c30"/><file name="Data.php" hash="c4db51e3dabdcbbcb24004c552ee3696"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><file name="Addrecords.php" hash="eeba80aa6abf651cf3ef2b0584cd4354"/><file name="Adduser.php" hash="d8b6e6d37fe6ce522747fd6951c8e9df"/><file name="Addwebstore.php" hash="ea33f2c7032682a6ec2bdb8324cdaf0e"/><file name="Debuginfo.php" hash="dd92df091719aa73eca07a08d9681d42"/><file name="Deleterecords.php" hash="0e404db0aab2c58ff90a4e7e4fe73818"/><file name="Gettimezone.php" hash="4bb572b68f42236d765f8194e413b1ca"/><file name="Getuserdetail.php" hash="849a0f04bfdbf39ae75a2627d26717ca"/><file name="Idsearch.php" hash="9244fbdf1e67beea19c99ad0a014d0fc"/><file name="Producttracking.php" hash="50dacac910b7a68b035078771e9f8ff6"/><file name="Removetestmode.php" hash="bd2e7ecf6c233b1430e2989b2b62000f"/><file name="Searchtermtracking.php" hash="e58d1c361cdc8c57886ecaaa7218b394"/><file name="Startsession.php" hash="14edcef879dce92c76a9c78d4106fc6c"/><file name="Updaterecords.php" hash="9e99ce8da72a030b10e9af8353233427"/></dir><file name="Action.php" hash="792f3fe4348f7d13bdf09562ec0d8b59"/><dir name="Request"><file name="Get.php" hash="2d6f510d4dcc171b8e44322b76a49f93"/><file name="Post.php" hash="a46b484a50ced15e2c02deb16bbeb6bb"/><file name="Xml.php" hash="73b3f04d29c2bd79c470d7b81cfc0390"/></dir><file name="Request.php" hash="7f15814e8a01982499563e0e056d2d52"/><dir name="Response"><file name="Data.php" hash="9dbe8e28a501feacb07a6ce2bcc4deb8"/><file name="Empty.php" hash="5988ec43c1756cf4acfedb212787b2b9"/><file name="Invalid.php" hash="8287280c3b99f64e08cf54a0bf65e4a1"/><file name="Message.php" hash="5b6d717c75014e798e619e3df2008d29"/><file name="Search.php" hash="96b9bdef60811c4d994cb457f0d355a9"/><file name="Timezone.php" hash="ffa4d48e42fa52d2c928e202c2af61fd"/></dir><file name="Response.php" hash="b2c244001dedd653e1f0953d6bf25e0e"/></dir><dir name="Catalog"><dir name="Model"><file name="Config.php" hash="57ae55e3cea3dd1b4c60dafcb06d5efd"/></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="104ac92f6ef59879b593a9f1baffd562"/><file name="Category.php" hash="39e56a1a1a1070f09fce2bec6d48c4ce"/><file name="Price.php" hash="4ca1e56183364670fb39a88ea5666c13"/></dir></dir><dir name="Resource"><dir name="Fulltext"><file name="Collection.php" hash="f784533c34276e7f104ab3496233d1a0"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="d675e50ad7c5277b9ca4100770ac16d3"/></dir></dir></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="ef07b22f48c4ca72066bf90a1cf9ac27"/></dir></dir><file name="Cron.php" hash="0936cc2667e056182668c9f61fc171bc"/><file name="Notification.php" hash="771d45868668c5b925e3bf2202482b43"/><file name="Observer.php" hash="0a50bc7873c3abe50fd66e69311c89de"/><dir name="Order"><file name="Sync.php" hash="1f5c2290ba46ab597f6e85747093bb16"/></dir><dir name="Product"><file name="Sync.php" hash="6b4e71726c9abf9f3b3127711a2d459c"/></dir><dir name="Resource"><dir name="Notification"><file name="Collection.php" hash="936a242678b1c89853149e9dc77b6aff"/></dir><file name="Notification.php" hash="f3206c5286bf6ccb4df268c54fcff0f5"/></dir><file name="Session.php" hash="a4ab94b093ba8a414fbfa031f0d2cabe"/><file name="Sync.php" hash="f9f6f4d1251d493944ab13f1467d5257"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Additional"><file name="Attributes.php" hash="d91e1af65488d647b035fbb100a4eb1d"/></dir><dir name="Boosting"><file name="Attribute.php" hash="f6db7762064a7e97ca73b5e15757148f"/></dir><file name="Frequency.php" hash="5866e9d92476cdaa8a5f27c5fa0dc48b"/><file name="Landingoptions.php" hash="058c81eb9faec57f6c77db697ff3279e"/><dir name="Log"><file name="Level.php" hash="ba2bee63eb18b966db6beade72293036"/></dir><dir name="Product"><file name="Attributes.php" hash="f99ced41d6504f1570a703e66743dd0b"/></dir><file name="Syncoptions.php" hash="6114fd30c79d1d268b039c09f93e9f74"/><file name="Yesnoforced.php" hash="0cf0e7842afae56af0caf92c9490295b"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="Base.php" hash="a1a8faa15e50cd1d394bc79ca94f712b"/></dir><dir name="Controller"><dir name="CatalogSearch"><dir name="fixtures"><file name="search_results.yaml" hash="bfa6ebad238b75d771b89fb369201540"/></dir></dir><file name="CatalogSearch.php" hash="f6c2615ef27061d0cce7e7eae717c040"/></dir><dir name="Helper"><file name="Api.php" hash="c8484c149e920b3f74b8f6f2dce82936"/><file name="Compat.php" hash="8bae993e0da8f368eb50689f271446a5"/><dir name="Config"><dir name="fixtures"><file name="testGetOrderSyncEnabledFlag.yaml" hash="d1427ea15734ca336c47aad51ad7026e"/><file name="testGetOrderSyncFrequency.yaml" hash="52dffcad75b15761a695eb451b99c751"/><file name="testGetProductSyncEnabledFlag.yaml" hash="43e7263c8b781ef7fb6efbb6598f0226"/><file name="testGetProductSyncFrequency.yaml" hash="004e62dfa22c9abfd8dcf56c92270e19"/><file name="testIsExtensionEnabledDisabled.yaml" hash="5d706b347b4f32f87dc8eb4dd6102148"/><file name="testIsExtensionEnabledEnabled.yaml" hash="52c9eb8a4fad4d8f3ba25c68d35977f3"/></dir><dir name="providers"><file name="testIsOrderSyncEnabled.yaml" hash="938cc58e15b310ba2760be6c64e3d3cb"/><file name="testIsProductSyncEnabled.yaml" hash="5be1dcfb21264a012de32cbd252a09c9"/><file name="testIsTestModeEnabled.yaml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><file name="Config.php" hash="9ef7b00d63104e11426f3085afa36744"/><dir name="Data"><dir name="providers"><file name="testBytesToHumanReadable.yaml" hash="7cdb8705e108715abc63fa2cfd81626b"/><file name="testGetLanguageFromLocale.yaml" hash="c301f8dc090142627f6af4e4222b7708"/><file name="testHumanReadableToBytes.yaml" hash="dd89ae5b6705cfcfbf42ba64432c0f0a"/><file name="testIsProductionDomain.yaml" hash="f88ef0f80073fdb9cbdbd020348527a7"/></dir></dir><file name="Data.php" hash="93bb38ec55380a6ec7d79008496cac34"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><dir name="Addrecords"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="26eea8bfc58c60e4a2f07dcbddc2e6fd"/><file name="testValidateRequiredFieldsRecords.yaml" hash="590b7ec9b7c33debb740b8c6c6db717f"/><file name="testValidateRequiredFieldsRecordsAllowedEmpty.yaml" hash="f82933b3d219491015cef39a214543bd"/><file name="testValidateRequiredFieldsRecordsEmpty.yaml" hash="d5dcd5aad682db42b1352c35b8905d47"/><file name="testValidateRequiredFieldsRecordsOptional.yaml" hash="25092bb84ba311815ca33971a388256e"/></dir></dir><file name="Addrecords.php" hash="14f5c217fac3f82957f54916fa29b387"/><dir name="Adduser"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="841f068ff3ffd8081ccc91e8675f998c"/></dir></dir><file name="Adduser.php" hash="5189f29f08c4ed30d9b6ac83429de3d0"/><dir name="Addwebstore"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e52324b58b76d2d63cfa83ee228e1b31"/></dir></dir><file name="Addwebstore.php" hash="fbeac1b8adc5df45ef08a0a3331e5fbc"/><dir name="Getuserdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="297df49838c47536bc9ee928b27470b2"/></dir></dir><file name="Getuserdetail.php" hash="4733d1ec7fd5b3b765aa88f182adf390"/><dir name="Idsearch"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="f36c1a1a1e6d1f5a2d3a59d8d349036e"/></dir></dir><file name="Idsearch.php" hash="4c8849b460a0df494911e3a4df65719c"/><dir name="Producttracking"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="4bc690980c701649d17ff6caba3ef646"/></dir></dir><file name="Producttracking.php" hash="04d8ef59f24f848d36493aabfa413828"/><file name="Startsession.php" hash="c1ae49d22b5e75672b8d84499d51f3d4"/></dir><file name="Action.php" hash="14ce7e11eb3acfda2dfea539c8f5254b"/><dir name="Request"><dir name="Xml"><dir name="providers"><file name="testGetDataAsXml.yaml" hash="4aa16e3557481444ba39775ee0b99d29"/></dir></dir><file name="Xml.php" hash="279a5defe0c933540e9635455590d8b1"/></dir><file name="Request.php" hash="b0cbdfe6a023d0479dc1b1c7fc6869c0"/><dir name="Response"><dir name="Data"><dir name="providers"><file name="testIsSuccessful.yaml" hash="f085922f4329b3d6b19c1e0010d3ca22"/></dir></dir><file name="Data.php" hash="1ab05c7225658f54bd31f0c205d05a2b"/><file name="Empty.php" hash="9933c42aa9ff06977ca3e53d2de15857"/><file name="Invalid.php" hash="bb68f25a053b7e5fc024bce0f5286fcb"/><dir name="Message"><dir name="providers"><file name="testIsSuccessful.yaml" hash="d53562002270a0c4b58ca94733309a21"/></dir></dir><file name="Message.php" hash="135c0d136fa9d0e86158407fc59294c3"/><dir name="Timezone"><dir name="providers"><file name="testIsSuccessful.yaml" hash="67f35e7ee5081689a1eddb867ae6256d"/></dir></dir><file name="Timezone.php" hash="f9cb063ef1f506f656a25c6206899eb3"/><dir name="providers"><file name="response_testIsSuccessful.yaml" hash="ac214d5ebf1eccb89e8fa85e8e3cbb75"/></dir></dir><file name="Response.php" hash="dbcce43ccb2cdf47bce5c05fcf27e759"/><dir name="Test"><file name="Case.php" hash="ec6d3169b9e2bd26655687124be779dd"/></dir><dir name="data"><file name="data_response_data.xml" hash="cd2e5d3dcac402828b9e5f0b0b637c76"/><file name="data_response_failure.xml" hash="ba677628e68149e0283729c1c8e5e86a"/><file name="data_response_no_response.xml" hash="98944f0eda050221de59100f4b22f030"/><file name="data_response_success.xml" hash="e92d1cfcd4461dc8d3fcabe1f902b40b"/><file name="data_response_success_only.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="message_response_failure.xml" hash="ab63c55523b26bd53ea6abf426dd11f5"/><file name="message_response_missing_message.xml" hash="4a43490eda6f33804ca400da2f9cdac1"/><file name="message_response_missing_status.xml" hash="39103fec18a0be88e4ff00a8149c8ad4"/><file name="message_response_session_id.xml" hash="415f25f79a3795ae70b983504cbb784f"/><file name="message_response_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="response_malformed.xml" hash="bfeb4e75829a42082a7935a8e7be491e"/><file name="response_noxml.xml" hash="2debfdcf79f03e4a65a667d21ef9de14"/><file name="response_valid.xml" hash="c915992330f0e4bd37bb629637139f98"/><file name="search_response_empty.xml" hash="601298402d21f3626052634cbbb0ae72"/><file name="search_response_paged.xml" hash="04203807a1d6df787c54afd84690a50e"/><file name="search_response_sorted.xml" hash="c3ee65658a56f65334417328c7fbdcac"/><file name="search_response_success.xml" hash="fea4e59e7ae6e68b387729e320d5f49c"/><file name="startsession_response_success.xml" hash="1865ee2da80359e5a84914c56cae2c8d"/><file name="timezone_response_no_data.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="timezone_response_no_status.xml" hash="bd695479b03e3607196f01f627af4a45"/><file name="timezone_response_with_failure.xml" hash="69a6b1fa7b2cf087d85be162064525b0"/><file name="timezone_response_with_success.xml" hash="e6888eca066741675d228ba1397b5554"/></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="2032f568dc75c8a5ff63c7daaf8bd049"/></dir></dir><dir name="Notification"><dir name="fixtures"><file name="testLoad.yaml" hash="305afce09851bb40e8c990c138aff162"/></dir></dir><file name="Notification.php" hash="889ec647dbdb938741cfc75e1baa2bc2"/><dir name="Observer"><dir name="fixtures"><file name="testLandingPageRewritesDisabled.yaml" hash="88f0c274444dbaab4fded639b4f40048"/><file name="testLandingPageRewritesEnabled.yaml" hash="bfe60a7ccc0ac73c664f24a4b7394343"/><file name="testScheduleOrderSync.yaml" hash="170806194b4a1bd7f00bc346a51709e1"/></dir></dir><file name="Observer.php" hash="73349e9c475129197c2cf55a1e1d4cdc"/><dir name="Order"><dir name="Sync"><dir name="fixtures"><file name="testAddOrderToQueue.yaml" hash="c93c3c28273757a13b878f97dd0b9e97"/><file name="testClearQueue.yaml" hash="d7ad7abd553e333e84cbab149cdcfb31"/><file name="testRun.yaml" hash="44f091d24de97d230f61fcaf3689ba81"/></dir></dir><file name="Sync.php" hash="d2166272904e003b6bea3862f66e0235"/></dir><dir name="Product"><dir name="Sync"><dir name="fixtures"><file name="testAddProducts.yaml" hash="0ac9a9e6666f285eff796d30c8e0a4e3"/><file name="testCatalogruleProducts.yaml" hash="c37fe4fe86fda18d9fd90794ea1520e4"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testDeleteProducts.yaml" hash="22f94366cc64b6980b8d648067920533"/><file name="testRun.yaml" hash="eaac2bf57835625a6cd80294e6c5a99c"/><file name="testSpecialpriceProducts.yaml" hash="7d44672dcf91473c0bf1d9cb523a394a"/><file name="testUpdateProducts.yaml" hash="61266411faa659dc175f75ffbccce97e"/></dir></dir><file name="Sync.php" hash="62c07a8123480172bba781b78103fcf6"/></dir><dir name="Sync"><dir name="providers"><file name="testSchedule.yaml" hash="97f1043c42eb74162ae97941dc920d8f"/></dir></dir><file name="Sync.php" hash="8c091e168e251761be7fb1d1d2149305"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Test"><dir name="providers"><file name="testIsValidSourceModel.yaml" hash="cfedc94014707ee5586dd212b4d1ee16"/></dir></dir><file name="Test.php" hash="3e915599d4f76a2fbbb20aed9ffdf968"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Klevu"><file name="NotificationsController.php" hash="e6a8f7ee4ca5463bb9b3df5fa901b6b1"/><dir name="Search"><file name="WizardController.php" hash="f8b68edbffcd6dae88c7d0e5b1751da6"/></dir><file name="SearchController.php" hash="85f8b8ee09a575534c1c6c4bb136f8eb"/></dir></dir><file name="IndexController.php" hash="2ed1a9392ce871e0b733bbaead48f6f3"/></dir><dir name="etc"><file name="adminhtml.xml" hash="6ce395b9dec2d88a7709d0917c13d50f"/><file name="config.xml" hash="27dc4a8339996e924ad5823c9c039a98"/><file name="system.xml" hash="edc1b7a250c5bc6f13489f921d21b9f8"/></dir><dir name="sql"><dir name="klevu_search_setup"><file name="mysql4-data-upgrade-1.1.1-1.1.2.php" hash="a65f702cf64af452f2fb6f6cdac130a7"/><file name="mysql4-data-upgrade-1.1.21-1.1.22.php" hash="bc7e9447bc34ac08435de4e6870f6699"/><file name="mysql4-install-1.0.0.php" hash="860c1991c2ebf804f939598e9932edf5"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="klevu"><dir name="search"><dir name="form"><dir name="field"><file name="array_readonly.phtml" hash="d3a3be4cf22f89d84bd73121a1adfa86"/><dir name="sync"><file name="button.phtml" hash="dae55579390ed8b72e1fadcbb538442b"/><file name="logbutton.phtml" hash="d31dd881015319d78d9fb2b83874f296"/></dir></dir><file name="information.phtml" hash="26f0370ba789126b6aa5895b48600166"/><file name="klevuinfo.phtml" hash="87ae995129b69b329da65ac0b4058683"/></dir><file name="notifications.phtml" hash="090714ca57b11d24769c1baa1bcd4615"/><dir name="wizard"><file name="complete.phtml" hash="aeca8d1a3335b461f5e6bcbba08c22b6"/><dir name="config"><file name="button.phtml" hash="b1644ee569882b05c2d8cb2f1eecddbc"/></dir><dir name="configure"><file name="attributes.phtml" hash="d54f0a86e78390fbe66825d0771aad25"/><file name="store.phtml" hash="037b9de18293b3dba4511409e4f3f30a"/><file name="user.phtml" hash="8f5d6da7920bfbcc8eb600634fa7a14b"/></dir><dir name="form"><dir name="field"><file name="array.phtml" hash="ccdccab02fbd9cfc2145f094d5e12a2e"/></dir></dir></dir></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="search.xml" hash="f385a7290bad22fb212b440afa82d2a7"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="klevu"><file name="search.xml" hash="7c581fe86dd6379ccdfdfce5120e43ca"/></dir></dir><dir name="template"><dir name="klevu"><dir name="search"><file name="form_js.phtml" hash="a5141d394a3b34b57ceea83031400081"/><file name="index.phtml" hash="c9f898eb8ed58cad9b14e632cea55790"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="e773b0cfcc8c3649bf26cc83d71345ec"/></dir></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="klevu"><dir name="search"><dir name="lib"><file name="Wizard.js" hash="a90f1eae9f2603421a38fd822260344f"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="klevu"><dir name="search"><file name="notifications.css" hash="80954cfc49bb2bc45d2eafb7c28cedad"/><file name="wizard.css" hash="824f735715f3ed97ce98414b9895e46b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="klevu"><file name="klevu-landing-left.css" hash="38c63d7796e4e33b212a1d8b044d0a91"/><file name="klevu-landing-page-style.css" hash="a8ab836614a888a4eef92d1b2e64b326"/><file name="klevu-landing-responsive.css" hash="811e1bfece09ba7d5529fec850963ac6"/></dir></dir><dir name="images"><dir name="klevu"><file name="btn-gridview.png" hash="c3dd97f4f53e1dfe34b6c5b6b4237b8a"/><file name="btn-listview.png" hash="00aaaa62d67e252248d6075f53b04f7f"/><file name="ku-loader.gif" hash="6050f5bcf455cc8f0332dd65e72f8e52"/></dir></dir></dir></dir></dir></target></contents>
|
30 |
<compatible/>
|
31 |
<dependencies><required><php><min>5.3.0</min><max>5.6.0</max></php></required></dependencies>
|
32 |
</package>
|
skin/frontend/base/default/css/klevu/klevu-landing-left.css
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.kuClrFilterBoth{
|
2 |
+
clear:both;
|
3 |
+
}
|
4 |
+
|
5 |
+
.kuFilterLbl{
|
6 |
+
display:inline-block !important;
|
7 |
+
float:left;
|
8 |
+
}
|
9 |
+
|
10 |
+
.kuFilterClose{
|
11 |
+
display:inline-block !important;
|
12 |
+
float:right;
|
13 |
+
}
|
14 |
+
.contentSelect{
|
15 |
+
font-weight:bold;
|
16 |
+
}
|
skin/frontend/base/default/css/klevu/klevu-landing-page-style.css
CHANGED
@@ -19,7 +19,7 @@
|
|
19 |
.kuFilters{
|
20 |
float:left;
|
21 |
width:23%;
|
22 |
-
border:1px solid #
|
23 |
}
|
24 |
|
25 |
/* set the height of each filter*/
|
@@ -139,7 +139,6 @@
|
|
139 |
|
140 |
/* div for Sorting, pagination, change result view icons*/
|
141 |
.kuSortHeader{
|
142 |
-
padding:10px;
|
143 |
margin:5px;
|
144 |
padding-top: 0px;
|
145 |
margin-top: 0px;
|
@@ -154,9 +153,33 @@
|
|
154 |
font-size:14px;
|
155 |
}
|
156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
.kuSortingOpt{
|
158 |
background-color:#eee;
|
159 |
-
border:1px solid #
|
160 |
padding:5px;
|
161 |
}
|
162 |
|
@@ -174,7 +197,8 @@
|
|
174 |
/* sorting dropdown */
|
175 |
.kuSortby select{
|
176 |
display:inline;
|
177 |
-
height:
|
|
|
178 |
width:100px;
|
179 |
}
|
180 |
|
@@ -232,7 +256,8 @@
|
|
232 |
|
233 |
.kuPerPage select{
|
234 |
width:54px !important;
|
235 |
-
height:
|
|
|
236 |
}
|
237 |
|
238 |
/* div for pagination */
|
@@ -273,6 +298,15 @@
|
|
273 |
font-weight:bold;
|
274 |
}
|
275 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
.kuClearLeft{
|
277 |
clear:left;
|
278 |
line-height:0px;
|
@@ -296,8 +330,9 @@
|
|
296 |
|
297 |
/* In LISTVIEW: list style for each result */
|
298 |
.kuListView ul li{
|
|
|
299 |
display:block;
|
300 |
-
width:
|
301 |
height: auto;
|
302 |
padding: 10px;
|
303 |
border-bottom: 1px solid #eee;
|
@@ -323,11 +358,39 @@
|
|
323 |
outline:none;
|
324 |
}
|
325 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
/* In LISTVIEW: display product name and description */
|
327 |
.kuListView ul li .kuNameDesc{
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
}
|
332 |
|
333 |
.kuListView ul li .kuName{
|
@@ -405,6 +468,7 @@
|
|
405 |
padding-top:15px;
|
406 |
margin-left:0px !important;
|
407 |
font-style:normal;
|
|
|
408 |
}
|
409 |
|
410 |
.kuGridView ul li:nth-child(1),.kuGridView ul li:nth-child(2),.kuGridView ul li:nth-child(3),.kuGridView ul li:nth-child(4){
|
@@ -433,6 +497,20 @@
|
|
433 |
display:inline-block !important;
|
434 |
}
|
435 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
436 |
/* In GRIDVIEW: remove float value for name and description div */
|
437 |
.kuGridView .kuNameDesc{
|
438 |
float:none;
|
@@ -448,6 +526,19 @@
|
|
448 |
min-height:45px;
|
449 |
}
|
450 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
|
452 |
/* CSS for add to cart button */
|
453 |
.kuGridView ul li .kuAddtocart{
|
@@ -460,7 +551,6 @@
|
|
460 |
display:inline-block;
|
461 |
width:25%;
|
462 |
float:left;
|
463 |
-
height:22px;
|
464 |
border:1px solid #ddd;
|
465 |
outline:none;
|
466 |
text-align:right;
|
@@ -468,9 +558,9 @@
|
|
468 |
|
469 |
.kuGridView ul li a.kuAddtocartBtn{
|
470 |
display:inline-block;
|
471 |
-
background: #
|
472 |
float:right;
|
473 |
-
color: #
|
474 |
width:72%;
|
475 |
padding-top:6px;
|
476 |
padding-bottom:6px;
|
@@ -484,32 +574,24 @@
|
|
484 |
-ms-user-select: none;
|
485 |
-o-user-select: none;
|
486 |
text-decoration:none;
|
487 |
-
|
488 |
}
|
489 |
|
490 |
-
.
|
491 |
-
|
492 |
-
display:block;
|
493 |
-
width:15%;
|
494 |
-
height:20px;
|
495 |
-
margin-top:20px;
|
496 |
-
text-align:center;
|
497 |
}
|
498 |
|
499 |
-
|
500 |
.kuListView ul li input[type="text"]{
|
501 |
width:5%;
|
502 |
float:none;
|
503 |
-
height:22px;
|
504 |
border:1px solid #ddd;
|
505 |
outline:none;
|
506 |
text-align:right;
|
507 |
}
|
508 |
|
509 |
.kuListView ul li a.kuAddtocartBtn{
|
510 |
-
background: #
|
511 |
float:none;
|
512 |
-
color: #
|
513 |
width:15%;
|
514 |
padding-top:6px;
|
515 |
padding-bottom:6px;
|
@@ -524,7 +606,10 @@
|
|
524 |
-ms-user-select: none;
|
525 |
-o-user-select: none;
|
526 |
text-decoration:none;
|
|
|
527 |
|
|
|
|
|
528 |
}
|
529 |
|
530 |
|
@@ -571,7 +656,7 @@
|
|
571 |
.kuBottomPagi{
|
572 |
padding:5px;
|
573 |
background-color:#eee;
|
574 |
-
border:1px solid #
|
575 |
}
|
576 |
|
577 |
.kuBottomPagi .kuPerPage{
|
@@ -616,4 +701,13 @@
|
|
616 |
margin-top:10%;
|
617 |
display: inline-block;
|
618 |
width:auto !important;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
619 |
}
|
19 |
.kuFilters{
|
20 |
float:left;
|
21 |
width:23%;
|
22 |
+
border:1px solid #ccc;
|
23 |
}
|
24 |
|
25 |
/* set the height of each filter*/
|
139 |
|
140 |
/* div for Sorting, pagination, change result view icons*/
|
141 |
.kuSortHeader{
|
|
|
142 |
margin:5px;
|
143 |
padding-top: 0px;
|
144 |
margin-top: 0px;
|
153 |
font-size:14px;
|
154 |
}
|
155 |
|
156 |
+
.kuTotalResultsTab .kuTabs{
|
157 |
+
line-height:30px;
|
158 |
+
}
|
159 |
+
|
160 |
+
.kuTotalResultsTab{
|
161 |
+
margin-bottom:10px;
|
162 |
+
padding-left:5px;
|
163 |
+
}
|
164 |
+
|
165 |
+
.kuTotalResultsTab a{
|
166 |
+
padding:8px;
|
167 |
+
cursor:pointer;
|
168 |
+
border-radius:3px;
|
169 |
+
}
|
170 |
+
|
171 |
+
.kuTotalResultsTab a:hover{
|
172 |
+
background-color:#eee;
|
173 |
+
}
|
174 |
+
|
175 |
+
.kuTotalResultsTab a.kuTabSelected{
|
176 |
+
background-color:#616161;
|
177 |
+
color:#fff;
|
178 |
+
}
|
179 |
+
|
180 |
.kuSortingOpt{
|
181 |
background-color:#eee;
|
182 |
+
border:1px solid #ccc;
|
183 |
padding:5px;
|
184 |
}
|
185 |
|
197 |
/* sorting dropdown */
|
198 |
.kuSortby select{
|
199 |
display:inline;
|
200 |
+
height:auto;
|
201 |
+
min-height:25px;
|
202 |
width:100px;
|
203 |
}
|
204 |
|
256 |
|
257 |
.kuPerPage select{
|
258 |
width:54px !important;
|
259 |
+
height:auto;
|
260 |
+
min-height:25px;
|
261 |
}
|
262 |
|
263 |
/* div for pagination */
|
298 |
font-weight:bold;
|
299 |
}
|
300 |
|
301 |
+
.kuOtherContent .kuPagination{
|
302 |
+
float:right;
|
303 |
+
}
|
304 |
+
|
305 |
+
.kuOtherContent .kuPerPage{
|
306 |
+
margin-left:0px;
|
307 |
+
text-align:left;
|
308 |
+
}
|
309 |
+
|
310 |
.kuClearLeft{
|
311 |
clear:left;
|
312 |
line-height:0px;
|
330 |
|
331 |
/* In LISTVIEW: list style for each result */
|
332 |
.kuListView ul li{
|
333 |
+
position:relative;
|
334 |
display:block;
|
335 |
+
width: 98.5%;
|
336 |
height: auto;
|
337 |
padding: 10px;
|
338 |
border-bottom: 1px solid #eee;
|
358 |
outline:none;
|
359 |
}
|
360 |
|
361 |
+
.kuListView ul li .kuDiscountBadge{
|
362 |
+
background: #ffcc01;
|
363 |
+
padding:5px 10px;
|
364 |
+
color: #000000;
|
365 |
+
font-weight: bold;
|
366 |
+
position: absolute;
|
367 |
+
top: 6px;
|
368 |
+
left: 4px;
|
369 |
+
}
|
370 |
+
|
371 |
+
.kuListView ul li .kuDiscountBadge strong{
|
372 |
+
color:#000;
|
373 |
+
}
|
374 |
+
|
375 |
+
.kuListView .kuStarsSmall {
|
376 |
+
height: 13px;
|
377 |
+
display: inline-block;
|
378 |
+
vertical-align: bottom;
|
379 |
+
background: transparent url(https://js.klevu.com/klevu-js-v1/img-1-1/star-gray.png) top left repeat-x;
|
380 |
+
width: 66px;
|
381 |
+
margin-left:5px;
|
382 |
+
}
|
383 |
+
|
384 |
+
.kuListView .kuStarsSmall .kuRating {
|
385 |
+
background: transparent url(https://js.klevu.com/klevu-js-v1/img-1-1/star-yellow.png) top left repeat-x;
|
386 |
+
height: 13px;
|
387 |
+
}
|
388 |
+
|
389 |
/* In LISTVIEW: display product name and description */
|
390 |
.kuListView ul li .kuNameDesc{
|
391 |
+
float:left;
|
392 |
+
width:65%;
|
393 |
+
margin-left:5px;
|
394 |
}
|
395 |
|
396 |
.kuListView ul li .kuName{
|
468 |
padding-top:15px;
|
469 |
margin-left:0px !important;
|
470 |
font-style:normal;
|
471 |
+
position:relative;
|
472 |
}
|
473 |
|
474 |
.kuGridView ul li:nth-child(1),.kuGridView ul li:nth-child(2),.kuGridView ul li:nth-child(3),.kuGridView ul li:nth-child(4){
|
497 |
display:inline-block !important;
|
498 |
}
|
499 |
|
500 |
+
.kuGridView ul li .kuDiscountBadge{
|
501 |
+
background: #ffcc01;
|
502 |
+
padding:5px 10px;
|
503 |
+
color: #000000;
|
504 |
+
font-weight: bold;
|
505 |
+
position: absolute;
|
506 |
+
top: 6px;
|
507 |
+
left: 4px;
|
508 |
+
}
|
509 |
+
|
510 |
+
.kuGridView ul li .kuDiscountBadge strong{
|
511 |
+
color:#000;
|
512 |
+
}
|
513 |
+
|
514 |
/* In GRIDVIEW: remove float value for name and description div */
|
515 |
.kuGridView .kuNameDesc{
|
516 |
float:none;
|
526 |
min-height:45px;
|
527 |
}
|
528 |
|
529 |
+
.kuGridView .kuStarsSmall {
|
530 |
+
height: 13px;
|
531 |
+
display: inline-block;
|
532 |
+
vertical-align: bottom;
|
533 |
+
background: transparent url(https://js.klevu.com/klevu-js-v1/img-1-1/star-gray.png) top left repeat-x;
|
534 |
+
width: 66px;
|
535 |
+
}
|
536 |
+
|
537 |
+
.kuGridView .kuStarsSmall .kuRating {
|
538 |
+
background: transparent url(https://js.klevu.com/klevu-js-v1/img-1-1/star-yellow.png) top left repeat-x;
|
539 |
+
height: 13px;
|
540 |
+
}
|
541 |
+
|
542 |
|
543 |
/* CSS for add to cart button */
|
544 |
.kuGridView ul li .kuAddtocart{
|
551 |
display:inline-block;
|
552 |
width:25%;
|
553 |
float:left;
|
|
|
554 |
border:1px solid #ddd;
|
555 |
outline:none;
|
556 |
text-align:right;
|
558 |
|
559 |
.kuGridView ul li a.kuAddtocartBtn{
|
560 |
display:inline-block;
|
561 |
+
background: #3399cc;
|
562 |
float:right;
|
563 |
+
color: #ffffff;
|
564 |
width:72%;
|
565 |
padding-top:6px;
|
566 |
padding-bottom:6px;
|
574 |
-ms-user-select: none;
|
575 |
-o-user-select: none;
|
576 |
text-decoration:none;
|
|
|
577 |
}
|
578 |
|
579 |
+
.kuGridView ul li a.kuAddtocartBtn:hover{
|
580 |
+
background: #2e8ab8;
|
|
|
|
|
|
|
|
|
|
|
581 |
}
|
582 |
|
|
|
583 |
.kuListView ul li input[type="text"]{
|
584 |
width:5%;
|
585 |
float:none;
|
|
|
586 |
border:1px solid #ddd;
|
587 |
outline:none;
|
588 |
text-align:right;
|
589 |
}
|
590 |
|
591 |
.kuListView ul li a.kuAddtocartBtn{
|
592 |
+
background: #3399cc;
|
593 |
float:none;
|
594 |
+
color: #ffffff;
|
595 |
width:15%;
|
596 |
padding-top:6px;
|
597 |
padding-bottom:6px;
|
606 |
-ms-user-select: none;
|
607 |
-o-user-select: none;
|
608 |
text-decoration:none;
|
609 |
+
}
|
610 |
|
611 |
+
.kuListView ul li a.kuAddtocartBtn:hover{
|
612 |
+
background: #2e8ab8;
|
613 |
}
|
614 |
|
615 |
|
656 |
.kuBottomPagi{
|
657 |
padding:5px;
|
658 |
background-color:#eee;
|
659 |
+
border:1px solid #ccc;
|
660 |
}
|
661 |
|
662 |
.kuBottomPagi .kuPerPage{
|
701 |
margin-top:10%;
|
702 |
display: inline-block;
|
703 |
width:auto !important;
|
704 |
+
}
|
705 |
+
|
706 |
+
.kuOtherContent{
|
707 |
+
display:none;
|
708 |
+
}
|
709 |
+
|
710 |
+
.disableKuFilter{
|
711 |
+
opacity:0.3;
|
712 |
+
pointer-events: none;
|
713 |
}
|