Version Notes
Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours.
Download this release
Release Info
Developer | Palani |
Extension | Personalized-localized-and-Intelligent-Site-Search |
Version | 1.5.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.5.0
- app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit.php +2 -2
- app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Sync.php +28 -91
- app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Syncsettings.php +9 -37
- app/code/community/Tagalys/Core/Helper/SyncFile.php +6 -26
- app/code/community/Tagalys/Core/Model/Observer.php +22 -2
- app/code/community/Tagalys/Core/controllers/Adminhtml/TagalysController.php +134 -1
- app/code/community/Tagalys/Core/etc/config.xml +1 -1
- app/design/adminhtml/default/default/layout/tagalys_core.xml +3 -2
- app/design/adminhtml/default/default/template/tagalys/configuration.phtml +4 -0
- js/tagalys-configuration-v2.js +194 -0
- js/tagalys-configuration.js +0 -13
- package.xml +4 -4
- skin/adminhtml/default/default/css/tagalys/{tagalys-configuration.css → tagalys-configuration-v1.css} +8 -4
app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit.php
CHANGED
@@ -24,9 +24,9 @@ class Tagalys_Core_Block_Adminhtml_Tagalys_Edit extends Mage_Adminhtml_Block_Wid
|
|
24 |
|
25 |
$setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
|
26 |
if ($setup_status == 'completed') {
|
27 |
-
return $this->__('Configuration');
|
28 |
} else {
|
29 |
-
return $this->__('Setup');
|
30 |
}
|
31 |
}
|
32 |
|
24 |
|
25 |
$setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
|
26 |
if ($setup_status == 'completed') {
|
27 |
+
return $this->__('Configuration - Need help? Visit <a href="http://support.tagalys.com" target="_blank">http://support.tagalys.com</a>');
|
28 |
} else {
|
29 |
+
return $this->__('Setup - Need help? Visit <a href="http://support.tagalys.com" target="_blank">http://support.tagalys.com</a>');
|
30 |
}
|
31 |
}
|
32 |
|
app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Sync.php
CHANGED
@@ -23,104 +23,41 @@ class Tagalys_Core_Block_Adminhtml_Tagalys_Edit_Tab_Sync extends Mage_Adminhtml_
|
|
23 |
'style' => "width:100%",
|
24 |
));
|
25 |
$init_email->addField('email_note', 'note', array(
|
26 |
-
'after_element_html' =>'<b>
|
27 |
));
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
foreach (Mage::helper('tagalys_core')->getStoresForTagalys() as $key => $store_id) {
|
31 |
$store_sync_fieldset = $form->addFieldset("store_{$store_id}_fieldset", array('legend' => $this->__("Store: " . Mage::getModel('core/store')->load($store_id)->getName())));
|
32 |
-
$
|
33 |
-
$store_sync_fieldset->addField("store_{$store_id}_setup_complete", 'note', array(
|
34 |
'label' => 'Setup complete',
|
35 |
-
'text' =>
|
|
|
|
|
|
|
|
|
36 |
));
|
37 |
-
$
|
38 |
-
|
39 |
-
|
40 |
-
switch($store_feed_status['status']) {
|
41 |
-
case 'pending':
|
42 |
-
$status_for_client = 'Waiting for Cron';
|
43 |
-
break;
|
44 |
-
case 'processing':
|
45 |
-
$status_for_client = 'Processing';
|
46 |
-
break;
|
47 |
-
case 'generated_file':
|
48 |
-
$status_for_client = 'Generated file. Sending to Tagalys.';
|
49 |
-
break;
|
50 |
-
case 'sent_to_tagalys':
|
51 |
-
$status_for_client = 'Waiting for Tagalys';
|
52 |
-
break;
|
53 |
-
case 'finished':
|
54 |
-
$status_for_client = 'Finished';
|
55 |
-
break;
|
56 |
-
}
|
57 |
-
$store_resync_required = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:resync_required");
|
58 |
-
if ($store_resync_required == '1' && $status_for_client == 'Finished') {
|
59 |
-
$status_for_client = 'Scheduled';
|
60 |
-
}
|
61 |
-
if ($status_for_client == 'Waiting for Cron' && $store_feed_status['completed_count'] > 0) {
|
62 |
-
$status_for_client = 'In progress. Waiting for Cron.';
|
63 |
-
}
|
64 |
-
$store_sync_fieldset->addField("store_{$store_id}_feed_status", 'note', array(
|
65 |
-
'label' => 'Feed status',
|
66 |
-
'text' => $status_for_client
|
67 |
-
));
|
68 |
-
$updated_at = new DateTime((string)$store_feed_status['updated_at']);
|
69 |
-
$updated_at->setTimeZone(new DateTimeZone(Mage::getStoreConfig('general/locale/timezone')));
|
70 |
-
$store_sync_fieldset->addField("store_{$store_id}_feed_updated_at", 'note', array(
|
71 |
-
'label' => 'Feed status last changed at',
|
72 |
-
'text' => $updated_at->format("F j, Y, g:i a")
|
73 |
-
));
|
74 |
-
}
|
75 |
-
if ($store_setup_complete == '1') {
|
76 |
-
$store_updates_status = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:updates_status", true);
|
77 |
-
$remaining_updates = Mage::getModel('tagalys_core/queue')->getCollection()->count();
|
78 |
-
if ($store_updates_status != null) {
|
79 |
-
$status_for_client = '';
|
80 |
-
switch($store_updates_status['status']) {
|
81 |
-
case 'pending':
|
82 |
-
$status_for_client = 'Waiting for Cron';
|
83 |
-
break;
|
84 |
-
case 'processing':
|
85 |
-
$status_for_client = 'Processing';
|
86 |
-
break;
|
87 |
-
case 'generated_file':
|
88 |
-
$status_for_client = 'Generated file. Sending to Tagalys.';
|
89 |
-
break;
|
90 |
-
case 'sent_to_tagalys':
|
91 |
-
$status_for_client = 'Waiting for Tagalys';
|
92 |
-
break;
|
93 |
-
case 'finished':
|
94 |
-
$status_for_client = 'Finished';
|
95 |
-
break;
|
96 |
-
}
|
97 |
-
if (in_array($status_for_client, array('Finished')) && $remaining_updates > 0) {
|
98 |
-
$status_for_client = 'Waiting for Cron';
|
99 |
-
}
|
100 |
-
$store_sync_fieldset->addField("store_{$store_id}_updates_status", 'note', array(
|
101 |
-
'label' => 'Updates status',
|
102 |
-
'text' => $status_for_client
|
103 |
-
));
|
104 |
-
$updated_at = new DateTime((string)$store_updates_status['updated_at']);
|
105 |
-
$updated_at->setTimeZone(new DateTimeZone(Mage::getStoreConfig('general/locale/timezone')));
|
106 |
-
$store_sync_fieldset->addField("store_{$store_id}_updates_updated_at", 'note', array(
|
107 |
-
'label' => 'Updates status last changed at',
|
108 |
-
'text' => $updated_at->format("F j, Y, g:i a")
|
109 |
-
));
|
110 |
-
} else {
|
111 |
-
if ($remaining_updates == 0) {
|
112 |
-
$status_for_client = 'Finished';
|
113 |
-
} else {
|
114 |
-
$status_for_client = 'Waiting for Cron';
|
115 |
-
}
|
116 |
-
$store_sync_fieldset->addField("store_{$store_id}_updates_status", 'note', array(
|
117 |
-
'label' => 'Updates Status',
|
118 |
-
'text' => $status_for_client
|
119 |
-
));
|
120 |
-
}
|
121 |
-
}
|
122 |
-
$store_sync_fieldset->addField("store_{$store_id}_refresh_status", 'note', array(
|
123 |
-
'text' => '<a href="#" class="tagalys-btn" onclick="location.reload(); return false;">Refresh Status</a>'
|
124 |
));
|
125 |
}
|
126 |
|
23 |
'style' => "width:100%",
|
24 |
));
|
25 |
$init_email->addField('email_note', 'note', array(
|
26 |
+
'after_element_html' =>'<b>If you have Cron enabled, sync is automatic. If not, please use the manual sync option and keep this browser window open.<br><br>Once all stores are synced, Tagalys features will be enabled automatically.<br><br>If you have any issues, please <a href="mailto:cs@tagalys.com">email us</a></b>'
|
27 |
));
|
28 |
}
|
29 |
|
30 |
+
$sync_control_fieldset = $form->addFieldset("sync_control_fieldset", array('legend' => 'Sync'));
|
31 |
+
$sync_control_fieldset->addField("sync_status_note", 'note', array(
|
32 |
+
'label' => 'Status',
|
33 |
+
'text' => '<span id="note_sync_status"></span>'
|
34 |
+
));
|
35 |
+
$sync_control_fieldset->addField("sync_control_manual_note", 'note', array(
|
36 |
+
'label' => 'Sync Manually',
|
37 |
+
'text' => '<strong>You\'ll have to keep this browser window open and stay connected to the Internet for manual sync to work.</strong>'
|
38 |
+
));
|
39 |
+
$sync_control_fieldset->addField("sync_control_manual", 'note', array(
|
40 |
+
'text' => '<a id="tagalys-toggle-manual-sync" href="#" target="_blank" class="tagalys-btn" onclick="tagalysToggleManualSync(); return false;">Sync Now</a>'
|
41 |
+
));
|
42 |
+
$sync_control_fieldset->addField("sync_control_auto_note", 'note', array(
|
43 |
+
'label' => 'Sync via Cron',
|
44 |
+
'text' => 'If you have Cron enabled, sync is automatic.'
|
45 |
+
));
|
46 |
+
|
47 |
+
|
48 |
foreach (Mage::helper('tagalys_core')->getStoresForTagalys() as $key => $store_id) {
|
49 |
$store_sync_fieldset = $form->addFieldset("store_{$store_id}_fieldset", array('legend' => $this->__("Store: " . Mage::getModel('core/store')->load($store_id)->getName())));
|
50 |
+
$store_sync_fieldset->addField("store_{$store_id}_note_setup_complete", 'note', array(
|
|
|
51 |
'label' => 'Setup complete',
|
52 |
+
'text' => '<span id="store_'.$store_id.'_note_setup_complete"></span>'
|
53 |
+
));
|
54 |
+
$store_sync_fieldset->addField("store_{$store_id}_note_feed_status", 'note', array(
|
55 |
+
'label' => 'Feed Status',
|
56 |
+
'text' => '<span id="store_'.$store_id.'_note_feed_status"></span>'
|
57 |
));
|
58 |
+
$store_sync_fieldset->addField("store_{$store_id}_note_updates_status", 'note', array(
|
59 |
+
'label' => 'Updates Status',
|
60 |
+
'text' => '<span id="store_'.$store_id.'_note_updates_status"></span>'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
));
|
62 |
}
|
63 |
|
app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Syncsettings.php
CHANGED
@@ -36,43 +36,15 @@ class Tagalys_Core_Block_Adminhtml_Tagalys_Edit_Tab_Syncsettings extends Mage_Ad
|
|
36 |
'tabindex' => 1
|
37 |
));
|
38 |
|
39 |
-
$
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
'tabindex' => 1
|
49 |
-
));
|
50 |
-
|
51 |
-
$fieldset->addField('agree_start_sync', 'checkbox', array(
|
52 |
-
'name' => 'Checkbox',
|
53 |
-
'checked' => false,
|
54 |
-
'onclick' => 'this.value = this.checked ? 1 : 0;',
|
55 |
-
'disabled' => false,
|
56 |
-
'after_element_html' => '<small>I agree to start syncing the selected stores.<br><em><b>We recommend you to do this at low traffic hours.</b></em></small>',
|
57 |
-
'tabindex' => 1
|
58 |
-
));
|
59 |
-
|
60 |
-
$fieldset->addField('note_checkboxes', 'note', array(
|
61 |
-
'text' => $this->__('<em>Please check both checkboxes to continue.</em>'),
|
62 |
-
));
|
63 |
-
|
64 |
-
$fieldset->addField('submit', 'submit', array(
|
65 |
-
'name' => 'tagalys_submit_action',
|
66 |
-
'value' => 'Save & Start Sync',
|
67 |
-
'class'=> "tagalys-btn",
|
68 |
-
'disabled' => true,
|
69 |
-
'style' => "width:100%",
|
70 |
-
'onclick' => 'if(this.classList.contains(\'clicked\')) { return false; } else { this.className += \' clicked\'; var that = this; setTimeout(function(){ that.value=\'Please wait…\'; that.disabled=true; }, 50); return true; }',
|
71 |
-
'after_element_html' => '<small><em></em></small>',
|
72 |
-
'tabindex' => 1
|
73 |
-
));
|
74 |
-
|
75 |
-
}
|
76 |
|
77 |
$this->setForm($form);
|
78 |
return parent::_prepareForm();
|
36 |
'tabindex' => 1
|
37 |
));
|
38 |
|
39 |
+
$fieldset->addField('submit', 'submit', array(
|
40 |
+
'name' => 'tagalys_submit_action',
|
41 |
+
'value' => 'Save & Continue to Sync',
|
42 |
+
'class'=> "tagalys-btn",
|
43 |
+
'style' => "width:100%",
|
44 |
+
'onclick' => 'if(this.classList.contains(\'clicked\')) { return false; } else { this.className += \' clicked\'; var that = this; setTimeout(function(){ that.value=\'Please wait…\'; that.disabled=true; }, 50); return true; }',
|
45 |
+
'after_element_html' => '<small><em></em></small>',
|
46 |
+
'tabindex' => 1
|
47 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
$this->setForm($form);
|
50 |
return parent::_prepareForm();
|
app/code/community/Tagalys/Core/Helper/SyncFile.php
CHANGED
@@ -41,31 +41,11 @@ class Tagalys_Core_Helper_SyncFile extends Varien_Io_File {
|
|
41 |
}
|
42 |
}
|
43 |
|
44 |
-
public function
|
45 |
-
$
|
46 |
-
$
|
47 |
-
|
48 |
-
$stores = Mage::getModel('tagalys_core/config')->getTagalysConfig("stores", true);
|
49 |
-
if ($stores != NULL) {
|
50 |
-
foreach ($stores as $i => $store_id) {
|
51 |
-
$resync_required = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:resync_required");
|
52 |
-
if ($resync_required == '1') {
|
53 |
-
$this->triggerFeedForStore($store_id);
|
54 |
-
Mage::getModel('tagalys_core/config')->setTagalysConfig("store:$store_id:resync_required", '0');
|
55 |
-
}
|
56 |
-
}
|
57 |
-
}
|
58 |
-
}
|
59 |
-
|
60 |
-
public function cron() {
|
61 |
-
$utc_now = new DateTime("now", new DateTimeZone('UTC'));
|
62 |
-
$time_now = $utc_now->format(DateTime::ATOM);
|
63 |
-
$cron_heartbeat_sent = Mage::getModel('tagalys_core/config')->getTagalysConfig("cron_heartbeat_sent");
|
64 |
-
if ($cron_heartbeat_sent == false) {
|
65 |
-
Mage::getSingleton('tagalys_core/client')->log('info', 'Cron heartbeat');
|
66 |
-
$cron_heartbeat_sent = Mage::getModel('tagalys_core/config')->setTagalysConfig("cron_heartbeat_sent", true);
|
67 |
}
|
68 |
-
Mage::getModel('tagalys_core/config')->setTagalysConfig("heartbeat:cron", $time_now);
|
69 |
$stores = Mage::getModel('tagalys_core/config')->getTagalysConfig("stores", true);
|
70 |
if ($stores != NULL) {
|
71 |
$this->_checkAndSyncConfig();
|
@@ -77,7 +57,7 @@ class Tagalys_Core_Helper_SyncFile extends Varien_Io_File {
|
|
77 |
}
|
78 |
$updates_performed = array();
|
79 |
foreach($stores as $i => $store_id) {
|
80 |
-
$updates_performed[$store_id] = $this->
|
81 |
}
|
82 |
$updates_performed_for_all_stores = true;
|
83 |
foreach ($stores as $i => $store_id) {
|
@@ -199,7 +179,7 @@ class Tagalys_Core_Helper_SyncFile extends Varien_Io_File {
|
|
199 |
return $collection;
|
200 |
}
|
201 |
|
202 |
-
public function
|
203 |
$updates_performed = false;
|
204 |
$feed_response = $this->_generateFilePart($store_id, 'feed');
|
205 |
$sync_file_status = $feed_response['sync_file_status'];
|
41 |
}
|
42 |
}
|
43 |
|
44 |
+
public function sync($max_products = 500) {
|
45 |
+
$this->cron_instance_max_products = $max_products;
|
46 |
+
if ($this->per_page > $max_products) {
|
47 |
+
$this->per_page = $max_products;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
|
|
49 |
$stores = Mage::getModel('tagalys_core/config')->getTagalysConfig("stores", true);
|
50 |
if ($stores != NULL) {
|
51 |
$this->_checkAndSyncConfig();
|
57 |
}
|
58 |
$updates_performed = array();
|
59 |
foreach($stores as $i => $store_id) {
|
60 |
+
$updates_performed[$store_id] = $this->_syncForStore($store_id, $product_ids_from_updates_queue_for_cron_instance);
|
61 |
}
|
62 |
$updates_performed_for_all_stores = true;
|
63 |
foreach ($stores as $i => $store_id) {
|
179 |
return $collection;
|
180 |
}
|
181 |
|
182 |
+
public function _syncForStore($store_id, $product_ids_from_updates_queue_for_cron_instance) {
|
183 |
$updates_performed = false;
|
184 |
$feed_response = $this->_generateFilePart($store_id, 'feed');
|
185 |
$sync_file_status = $feed_response['sync_file_status'];
|
app/code/community/Tagalys/Core/Model/Observer.php
CHANGED
@@ -24,11 +24,31 @@ class Tagalys_Core_Model_Observer extends Varien_Object {
|
|
24 |
}
|
25 |
|
26 |
public function syncCron() {
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
public function resyncCron() {
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
|
34 |
// create / update / delete from admin
|
24 |
}
|
25 |
|
26 |
public function syncCron() {
|
27 |
+
$utc_now = new DateTime("now", new DateTimeZone('UTC'));
|
28 |
+
$time_now = $utc_now->format(DateTime::ATOM);
|
29 |
+
$cron_heartbeat_sent = Mage::getModel('tagalys_core/config')->getTagalysConfig("cron_heartbeat_sent");
|
30 |
+
if ($cron_heartbeat_sent == false) {
|
31 |
+
Mage::getSingleton('tagalys_core/client')->log('info', 'Cron heartbeat');
|
32 |
+
$cron_heartbeat_sent = Mage::getModel('tagalys_core/config')->setTagalysConfig("cron_heartbeat_sent", true);
|
33 |
+
}
|
34 |
+
Mage::getModel('tagalys_core/config')->setTagalysConfig("heartbeat:cron", $time_now);
|
35 |
+
Mage::helper("tagalys_core/SyncFile")->sync();
|
36 |
}
|
37 |
|
38 |
public function resyncCron() {
|
39 |
+
$utc_now = new DateTime("now", new DateTimeZone('UTC'));
|
40 |
+
$time_now = $utc_now->format(DateTime::ATOM);
|
41 |
+
Mage::getModel('tagalys_core/config')->setTagalysConfig("heartbeat:resyncCron", $time_now);
|
42 |
+
$stores = Mage::getModel('tagalys_core/config')->getTagalysConfig("stores", true);
|
43 |
+
if ($stores != NULL) {
|
44 |
+
foreach ($stores as $i => $store_id) {
|
45 |
+
$resync_required = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:resync_required");
|
46 |
+
if ($resync_required == '1') {
|
47 |
+
$this->triggerFeedForStore($store_id);
|
48 |
+
Mage::getModel('tagalys_core/config')->setTagalysConfig("store:$store_id:resync_required", '0');
|
49 |
+
}
|
50 |
+
}
|
51 |
+
}
|
52 |
}
|
53 |
|
54 |
// create / update / delete from admin
|
app/code/community/Tagalys/Core/controllers/Adminhtml/TagalysController.php
CHANGED
@@ -8,6 +8,7 @@ class Tagalys_Core_Adminhtml_TagalysController extends Mage_Adminhtml_Controller
|
|
8 |
|
9 |
public function indexAction() {
|
10 |
$this->_title('Tagalys Configuration');
|
|
|
11 |
$this->loadLayout();
|
12 |
$this->_setActiveMenu('Tagalys/core');
|
13 |
$this->renderLayout();
|
@@ -37,7 +38,7 @@ class Tagalys_Core_Adminhtml_TagalysController extends Mage_Adminhtml_Controller
|
|
37 |
$redirect_to_tab = 'api_credentials';
|
38 |
}
|
39 |
break;
|
40 |
-
case 'Save &
|
41 |
try {
|
42 |
if (count($params['stores_for_tagalys']) > 0) {
|
43 |
Mage::getSingleton('tagalys_core/client')->log('info', 'Starting configuration sync', array('stores_for_tagalys' => $params['stores_for_tagalys']));
|
@@ -112,6 +113,138 @@ class Tagalys_Core_Adminhtml_TagalysController extends Mage_Adminhtml_Controller
|
|
112 |
}
|
113 |
}
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
protected function _saveApiCredentials($params) {
|
116 |
$tagalys_api_client = Mage::getSingleton("tagalys_core/client");
|
117 |
$result = $tagalys_api_client->identificationCheck(json_decode($params['api_credentials'], true));
|
8 |
|
9 |
public function indexAction() {
|
10 |
$this->_title('Tagalys Configuration');
|
11 |
+
// $this->_getSession()->addNotice($this->__('Need help? Visit <a href="http://support.tagalys.com" target="_blank">http://support.tagalys.com</a>'));
|
12 |
$this->loadLayout();
|
13 |
$this->_setActiveMenu('Tagalys/core');
|
14 |
$this->renderLayout();
|
38 |
$redirect_to_tab = 'api_credentials';
|
39 |
}
|
40 |
break;
|
41 |
+
case 'Save & Continue to Sync':
|
42 |
try {
|
43 |
if (count($params['stores_for_tagalys']) > 0) {
|
44 |
Mage::getSingleton('tagalys_core/client')->log('info', 'Starting configuration sync', array('stores_for_tagalys' => $params['stores_for_tagalys']));
|
113 |
}
|
114 |
}
|
115 |
|
116 |
+
public function syncmanuallyAction() {
|
117 |
+
Mage::helper("tagalys_core/SyncFile")->sync(25);
|
118 |
+
$syncStatus = $this->getSyncStatus();
|
119 |
+
$this->getResponse()->setBody(json_encode($syncStatus));
|
120 |
+
}
|
121 |
+
public function syncstatusAction() {
|
122 |
+
$syncStatus = $this->getSyncStatus();
|
123 |
+
$this->getResponse()->setBody(json_encode($syncStatus));
|
124 |
+
}
|
125 |
+
|
126 |
+
protected function getSyncStatus() {
|
127 |
+
$storesSyncRequired = false;
|
128 |
+
$waitingForTagalys = false;
|
129 |
+
$resyncScheduled = false;
|
130 |
+
$syncStatus = array();
|
131 |
+
$setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
|
132 |
+
$setup_complete = ($setup_status == 'completed');
|
133 |
+
$syncStatus['setup_complete'] = $setup_complete;
|
134 |
+
$syncStatus['stores'] = array();
|
135 |
+
foreach (Mage::helper('tagalys_core')->getStoresForTagalys() as $key => $store_id) {
|
136 |
+
$this_store = array();
|
137 |
+
|
138 |
+
$this_store['name'] = Mage::getModel('core/store')->load($store_id)->getName();
|
139 |
+
|
140 |
+
$store_setup_complete = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:setup_complete");
|
141 |
+
$this_store['setup_complete'] = ($store_setup_complete == '1');
|
142 |
+
|
143 |
+
$store_feed_status = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:feed_status", true);
|
144 |
+
if ($store_feed_status != null) {
|
145 |
+
$status_for_client = '';
|
146 |
+
switch($store_feed_status['status']) {
|
147 |
+
case 'pending':
|
148 |
+
$status_for_client = 'Waiting to write to file';
|
149 |
+
$storesSyncRequired = true;
|
150 |
+
break;
|
151 |
+
case 'processing':
|
152 |
+
$status_for_client = 'Writing to file';
|
153 |
+
$storesSyncRequired = true;
|
154 |
+
break;
|
155 |
+
case 'generated_file':
|
156 |
+
$status_for_client = 'Generated file. Sending to Tagalys.';
|
157 |
+
$storesSyncRequired = true;
|
158 |
+
break;
|
159 |
+
case 'sent_to_tagalys':
|
160 |
+
$status_for_client = 'Waiting for Tagalys';
|
161 |
+
$waitingForTagalys = true;
|
162 |
+
break;
|
163 |
+
case 'finished':
|
164 |
+
$status_for_client = 'Finished';
|
165 |
+
break;
|
166 |
+
}
|
167 |
+
$store_resync_required = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:resync_required");
|
168 |
+
if ($store_resync_required == '1') {
|
169 |
+
$resyncScheduled = true;
|
170 |
+
if ($status_for_client == 'Finished') {
|
171 |
+
$status_for_client = 'Scheduled at 1 AM';
|
172 |
+
}
|
173 |
+
}
|
174 |
+
if ($status_for_client == 'Writing to file' || $status_for_client == 'Waiting to write to file') {
|
175 |
+
$completed_percentage = round(((int)$store_feed_status['completed_count'] / (int)$store_feed_status['products_count']) * 100, 2);
|
176 |
+
$status_for_client = $status_for_client . ' (completed '.$completed_percentage.'%)';
|
177 |
+
}
|
178 |
+
$this_store['feed_status'] = $status_for_client;
|
179 |
+
} else {
|
180 |
+
$storesSyncRequired = true;
|
181 |
+
}
|
182 |
+
|
183 |
+
$store_updates_status = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:updates_status", true);
|
184 |
+
$remaining_updates = Mage::getModel('tagalys_core/queue')->getCollection()->count();
|
185 |
+
if ($this_store['setup_complete']) {
|
186 |
+
if ($remaining_updates > 0) {
|
187 |
+
$storesSyncRequired = true;
|
188 |
+
$this_store['updates_status'] = $remaining_updates . ' remaining';
|
189 |
+
} else {
|
190 |
+
if ($store_updates_status == null) {
|
191 |
+
$this_store['updates_status'] = 'Nothing to update';
|
192 |
+
} else {
|
193 |
+
switch($store_updates_status['status']) {
|
194 |
+
case 'generated_file':
|
195 |
+
$this_store['updates_status'] = 'Generated file. Sending to Tagalys.';
|
196 |
+
$storesSyncRequired = true;
|
197 |
+
break;
|
198 |
+
case 'sent_to_tagalys':
|
199 |
+
$this_store['updates_status'] = 'Waiting for Tagalys';
|
200 |
+
$waitingForTagalys = true;
|
201 |
+
break;
|
202 |
+
case 'finished':
|
203 |
+
$this_store['updates_status'] = 'Finished';
|
204 |
+
break;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
}
|
208 |
+
} else {
|
209 |
+
if ($remaining_updates > 0) {
|
210 |
+
$this_store['updates_status'] = 'Waiting for feed sync';
|
211 |
+
} else {
|
212 |
+
$this_store['updates_status'] = 'Nothing to update';
|
213 |
+
}
|
214 |
+
}
|
215 |
+
|
216 |
+
$syncStatus['stores'][$store_id] = $this_store;
|
217 |
+
}
|
218 |
+
$syncStatus['client_side_work_completed'] = false;
|
219 |
+
$config_sync_required = Mage::getModel('tagalys_core/config')->getTagalysConfig('config_sync_required');
|
220 |
+
if ($storesSyncRequired == true || $config_sync_required == '1') {
|
221 |
+
if ($storesSyncRequired == true) {
|
222 |
+
$syncStatus['status'] = 'Stores Sync Pending';
|
223 |
+
} else {
|
224 |
+
if ($config_sync_required == '1') {
|
225 |
+
$syncStatus['status'] = 'Configuration Sync Pending';
|
226 |
+
} else {
|
227 |
+
// should never come here
|
228 |
+
$syncStatus['status'] = 'Pending';
|
229 |
+
}
|
230 |
+
}
|
231 |
+
} else {
|
232 |
+
$syncStatus['client_side_work_completed'] = true;
|
233 |
+
if ($waitingForTagalys) {
|
234 |
+
$syncStatus['waiting_for_tagalys'] = true;
|
235 |
+
$syncStatus['status'] = 'Waiting for Tagalys';
|
236 |
+
} else {
|
237 |
+
$syncStatus['status'] = 'Fully synced';
|
238 |
+
}
|
239 |
+
}
|
240 |
+
|
241 |
+
if ($resyncScheduled) {
|
242 |
+
$syncStatus['status'] = $syncStatus['status'] . '. Resync scheduled at 1 AM. You can resync manually by using the <strong>Trigger full products resync now</strong> option in the <strong>Support & Troubleshooting</strong> tab and then clicking on the <strong>Sync Manually</strong> button that will show below.';
|
243 |
+
}
|
244 |
+
|
245 |
+
return $syncStatus;
|
246 |
+
}
|
247 |
+
|
248 |
protected function _saveApiCredentials($params) {
|
249 |
$tagalys_api_client = Mage::getSingleton("tagalys_core/client");
|
250 |
$result = $tagalys_api_client->identificationCheck(json_decode($params['api_credentials'], true));
|
app/code/community/Tagalys/Core/etc/config.xml
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
<tagalys>
|
7 |
<package>
|
8 |
<name>Search</name>
|
9 |
-
<version>1.
|
10 |
</package>
|
11 |
</tagalys>
|
12 |
</default>
|
6 |
<tagalys>
|
7 |
<package>
|
8 |
<name>Search</name>
|
9 |
+
<version>1.5.0</version>
|
10 |
</package>
|
11 |
</tagalys>
|
12 |
</default>
|
app/design/adminhtml/default/default/layout/tagalys_core.xml
CHANGED
@@ -2,14 +2,15 @@
|
|
2 |
<layout version="0.1.0">
|
3 |
<adminhtml_tagalys_index>
|
4 |
<reference name="head">
|
5 |
-
<action method="addCss"><name>css/tagalys/tagalys-configuration.css</name></action>
|
6 |
-
<action method="addJs"><script>tagalys-configuration.js</script></action>
|
7 |
</reference>
|
8 |
<reference name="left">
|
9 |
<block type="tagalys_core/adminhtml_tagalys_edit_tabs" name="tagalys_settings_tabs"/>
|
10 |
</reference>
|
11 |
<reference name="content">
|
12 |
<block type="tagalys_core/adminhtml_tagalys_edit" name="tagalys_settings"/>
|
|
|
13 |
</reference>
|
14 |
</adminhtml_tagalys_index>
|
15 |
</layout>
|
2 |
<layout version="0.1.0">
|
3 |
<adminhtml_tagalys_index>
|
4 |
<reference name="head">
|
5 |
+
<action method="addCss"><name>css/tagalys/tagalys-configuration-v1.css</name></action>
|
6 |
+
<action method="addJs"><script>tagalys-configuration-v2.js</script></action>
|
7 |
</reference>
|
8 |
<reference name="left">
|
9 |
<block type="tagalys_core/adminhtml_tagalys_edit_tabs" name="tagalys_settings_tabs"/>
|
10 |
</reference>
|
11 |
<reference name="content">
|
12 |
<block type="tagalys_core/adminhtml_tagalys_edit" name="tagalys_settings"/>
|
13 |
+
<block type="core/template" name="tagalys_configuration" output="toHtml" template="tagalys/configuration.phtml"/>
|
14 |
</reference>
|
15 |
</adminhtml_tagalys_index>
|
16 |
</layout>
|
app/design/adminhtml/default/default/template/tagalys/configuration.phtml
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
var syncManuallyUrl = '<?php echo Mage::helper('adminhtml')->getUrl('adminhtml/tagalys/syncmanually/'); ?>';
|
3 |
+
var syncStatusUrl = '<?php echo Mage::helper('adminhtml')->getUrl('adminhtml/tagalys/syncstatus/'); ?>';
|
4 |
+
</script>
|
js/tagalys-configuration-v2.js
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var tagalysManualSyncStarted = false;
|
2 |
+
var tagalysClientSideWorkCompleted = false;
|
3 |
+
var tagalysWaitingForTagalys = false;
|
4 |
+
var tagalysSyncing = false;
|
5 |
+
var tagalysLabelStartManualSync = 'Sync Manually';
|
6 |
+
var tagalysLabelNothingToSync = 'Nothing to sync';
|
7 |
+
var tagalysLabelSyncing = 'Manual sync in progress - do not close browser (click to pause)';
|
8 |
+
var tagalysLabelManualSyncWaitingForTagalys = 'Waiting for Tagalys. You can close the browser.';
|
9 |
+
var tagalysLabelManualSyncFinished = 'Finished syncing. You can close the browser.';
|
10 |
+
|
11 |
+
function tagalysInterval(fn, time) {
|
12 |
+
var timer = false;
|
13 |
+
this.start = function () {
|
14 |
+
if (!this.isRunning())
|
15 |
+
timer = setInterval(fn, time);
|
16 |
+
};
|
17 |
+
this.stop = function () {
|
18 |
+
clearInterval(timer);
|
19 |
+
timer = false;
|
20 |
+
};
|
21 |
+
this.isRunning = function () {
|
22 |
+
return timer !== false;
|
23 |
+
};
|
24 |
+
}
|
25 |
+
var tagalysStatusUpdateInterval = new tagalysInterval(tagalysGetAndUpdateSyncStatus, 5000);
|
26 |
+
var tagalysManualSyncIndicatorInterval = new tagalysInterval(tagalysUpdateManualSyncIndicator, 2000);
|
27 |
+
var tagalysManualSyncTimeout = false;
|
28 |
+
|
29 |
+
document.addEventListener("DOMContentLoaded", function (e) {
|
30 |
+
tagalysGetAndUpdateSyncStatus();
|
31 |
+
});
|
32 |
+
|
33 |
+
// monitoring
|
34 |
+
var tagalysMonitorInterval = new tagalysInterval(tagalysMonitorTimers, 5000);
|
35 |
+
tagalysMonitorInterval.start();
|
36 |
+
function tagalysMonitorTimers() {
|
37 |
+
if (tagalysSyncing) {
|
38 |
+
tagalysManualSyncIndicatorInterval.start();
|
39 |
+
if (tagalysManualSyncTimeout === false) {
|
40 |
+
tagalysManualSyncTimeout = setTimeout(tagalysSyncManually, 100);
|
41 |
+
}
|
42 |
+
} else {
|
43 |
+
tagalysManualSyncIndicatorInterval.stop();
|
44 |
+
tagalysStatusUpdateInterval.start();
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
function tagalysToggleManualSync() {
|
50 |
+
if (tagalysSyncing) {
|
51 |
+
tagalysStopManualSync();
|
52 |
+
} else {
|
53 |
+
tagalysStartManualSync();
|
54 |
+
}
|
55 |
+
}
|
56 |
+
function tagalysStopManualSync() {
|
57 |
+
tagalysSyncing = false;
|
58 |
+
|
59 |
+
// stop timer
|
60 |
+
if (tagalysManualSyncTimeout === false) {
|
61 |
+
// not running. nothing to do.
|
62 |
+
} else {
|
63 |
+
clearTimeout(tagalysManualSyncTimeout);
|
64 |
+
tagalysManualSyncTimeout = false;
|
65 |
+
}
|
66 |
+
tagalysManualSyncIndicatorInterval.stop();
|
67 |
+
|
68 |
+
tagalysUpdateSyncButtonLabel();
|
69 |
+
|
70 |
+
// start updates
|
71 |
+
tagalysStatusUpdateInterval.start();
|
72 |
+
}
|
73 |
+
function tagalysStartManualSync() {
|
74 |
+
// stop timer if running
|
75 |
+
if (tagalysManualSyncTimeout === false) {
|
76 |
+
// not running. nothing to do.
|
77 |
+
} else {
|
78 |
+
clearTimeout(tagalysManualSyncTimeout);
|
79 |
+
tagalysManualSyncTimeout = false;
|
80 |
+
}
|
81 |
+
|
82 |
+
// stop updates
|
83 |
+
tagalysStatusUpdateInterval.stop();
|
84 |
+
|
85 |
+
// start manual sync
|
86 |
+
tagalysSyncing = true;
|
87 |
+
tagalysManualSyncTimeout = setTimeout(tagalysSyncManually, 100);
|
88 |
+
tagalysManualSyncIndicatorInterval.start();
|
89 |
+
tagalysUpdateSyncButtonLabel();
|
90 |
+
}
|
91 |
+
function tagalysUpdateSyncButtonLabel() {
|
92 |
+
var toggleButton = document.getElementById('tagalys-toggle-manual-sync');
|
93 |
+
if (tagalysSyncing) {
|
94 |
+
toggleButton.innerHTML = tagalysLabelSyncing;
|
95 |
+
} else {
|
96 |
+
if (tagalysClientSideWorkCompleted) {
|
97 |
+
if (tagalysWaitingForTagalys) {
|
98 |
+
toggleButton.innerHTML = tagalysLabelManualSyncWaitingForTagalys;
|
99 |
+
} else {
|
100 |
+
if (tagalysManualSyncStarted) {
|
101 |
+
toggleButton.innerHTML = tagalysLabelManualSyncFinished;
|
102 |
+
} else {
|
103 |
+
toggleButton.innerHTML = tagalysLabelNothingToSync;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
} else {
|
107 |
+
toggleButton.innerHTML = tagalysLabelStartManualSync;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
}
|
111 |
+
function tagalysUpdateManualSyncIndicator() {
|
112 |
+
if (tagalysSyncing) {
|
113 |
+
var toggleButton = document.getElementById('tagalys-toggle-manual-sync');
|
114 |
+
var currentIndicator = toggleButton.innerHTML;
|
115 |
+
var currentDotStr = currentIndicator.substr(tagalysLabelSyncing.length, 3);
|
116 |
+
var nextDotStr = '...';
|
117 |
+
switch(currentDotStr) {
|
118 |
+
case '.':
|
119 |
+
nextDotStr = '..';
|
120 |
+
break;
|
121 |
+
case '..':
|
122 |
+
nextDotStr = '...';
|
123 |
+
break;
|
124 |
+
case '...':
|
125 |
+
nextDotStr = '.';
|
126 |
+
break;
|
127 |
+
}
|
128 |
+
toggleButton.innerHTML = tagalysLabelSyncing + nextDotStr;
|
129 |
+
}
|
130 |
+
}
|
131 |
+
function tagalysSyncManually() {
|
132 |
+
tagalysManualSyncStarted = true;
|
133 |
+
if (tagalysSyncing) {
|
134 |
+
new Ajax.Request(
|
135 |
+
syncManuallyUrl,
|
136 |
+
{
|
137 |
+
method: 'GET',
|
138 |
+
loaderArea: false,
|
139 |
+
onSuccess: function(transport) {
|
140 |
+
var syncStatus = JSON.parse(transport.responseText);
|
141 |
+
updateSyncStatus(syncStatus);
|
142 |
+
if (syncStatus.client_side_work_completed == true) {
|
143 |
+
tagalysStopManualSync();
|
144 |
+
} else {
|
145 |
+
tagalysManualSyncTimeout = setTimeout(tagalysSyncManually, 100);
|
146 |
+
}
|
147 |
+
},
|
148 |
+
onFailure : function() {
|
149 |
+
tagalysManualSyncTimeout = false;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
);
|
153 |
+
} else {
|
154 |
+
// don't do anything
|
155 |
+
tagalysManualSyncTimeout = false;
|
156 |
+
}
|
157 |
+
}
|
158 |
+
function tagalysGetAndUpdateSyncStatus() {
|
159 |
+
if (tagalysSyncing == false) {
|
160 |
+
new Ajax.Request(
|
161 |
+
syncStatusUrl,
|
162 |
+
{
|
163 |
+
method: 'GET',
|
164 |
+
loaderArea: false,
|
165 |
+
onSuccess: function(transport) {
|
166 |
+
var syncStatus = JSON.parse(transport.responseText);
|
167 |
+
updateSyncStatus(syncStatus);
|
168 |
+
}
|
169 |
+
// onFailure : failure
|
170 |
+
}
|
171 |
+
);
|
172 |
+
}
|
173 |
+
}
|
174 |
+
function updateSyncStatus(syncStatus) {
|
175 |
+
tagalysClientSideWorkCompleted = syncStatus.client_side_work_completed;
|
176 |
+
if (syncStatus.waiting_for_tagalys == true) {
|
177 |
+
tagalysWaitingForTagalys = true;
|
178 |
+
} else {
|
179 |
+
tagalysWaitingForTagalys = false;
|
180 |
+
}
|
181 |
+
tagalysUpdateSyncButtonLabel();
|
182 |
+
document.getElementById('note_sync_status').innerHTML = syncStatus.status;
|
183 |
+
for (store_id in syncStatus.stores) {
|
184 |
+
document.getElementById('admin_tagalys_core_store_' + store_id + '_note_setup_complete').innerHTML = (syncStatus.stores[store_id].setup_complete ? 'Yes' : 'No');
|
185 |
+
var toggleButton = document.getElementById('tagalys-toggle-manual-sync');
|
186 |
+
if (toggleButton.innerHTML == 'Sync Now') {
|
187 |
+
var feed_status = syncStatus.stores[store_id].feed_status;
|
188 |
+
} else {
|
189 |
+
var feed_status = syncStatus.stores[store_id].feed_status.replace('Waiting to write', 'Writing');
|
190 |
+
}
|
191 |
+
document.getElementById('admin_tagalys_core_store_' + store_id + '_note_feed_status').innerHTML = feed_status;
|
192 |
+
document.getElementById('admin_tagalys_core_store_' + store_id + '_note_updates_status').innerHTML = syncStatus.stores[store_id].updates_status;
|
193 |
+
}
|
194 |
+
}
|
js/tagalys-configuration.js
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
document.addEventListener("DOMContentLoaded", function (e) {
|
2 |
-
if(typeof($$("#tagalys_admin_core_agree_cron_enabled")[0]) != "undefined" && typeof($$("#tagalys_admin_core_agree_start_sync")[0]) != "undefined") {
|
3 |
-
document.getElementById('tagalys_admin_core_agree_cron_enabled').onclick = tagalysCheckAndEnableSyncButton;
|
4 |
-
document.getElementById('tagalys_admin_core_agree_start_sync').onclick = tagalysCheckAndEnableSyncButton;
|
5 |
-
// $$("#tagalys_admin_core_agree_start_sync")[0].on("change", function () {
|
6 |
-
// // alert($$("#tagalys_admin_core_agree_start_sync")[0].value);
|
7 |
-
// document.getElementById('tagalys_admin_core_submit').disabled = !document.getElementById('tagalys_admin_core_submit').disabled;
|
8 |
-
// });
|
9 |
-
}
|
10 |
-
});
|
11 |
-
function tagalysCheckAndEnableSyncButton() {
|
12 |
-
document.getElementById('tagalys_admin_core_submit').disabled = !(document.getElementById('tagalys_admin_core_agree_cron_enabled').checked && document.getElementById('tagalys_admin_core_agree_start_sync').checked);
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Personalized-localized-and-Intelligent-Site-Search</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license>Tagalys</license>
|
7 |
<channel>community</channel>
|
@@ -10,9 +10,9 @@
|
|
10 |
<description>The extension powers search suggestions and resulting search results. Upon clicking the search bar, show visitors the most popular or trending searches in your ecommerce store. When a visitor starts typing, we auto complete the query into suggestions from the active product-tag-attribute database. </description>
|
11 |
<notes>Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours. </notes>
|
12 |
<authors><author><name>Palani</name><user>Palani</user><email>pc@tagalys.com</email></author></authors>
|
13 |
-
<date>2017-05-
|
14 |
-
<time>
|
15 |
-
<contents><target name="mageetc"><dir><dir name="modules"><file name="Tagalys_Core.xml" hash="7576ed5aa125c580f0b791018f24a0e9"/><file name="Tagalys_SearchSuggestions.xml" hash="dbf6f4ff1859ef2df72560c9282af435"/><file name="Tagalys_Search.xml" hash="820b96f53d2f0e86cb49906a4dda7f41"/><file name="Tagalys_Mpages.xml" hash="6ccb4f45669c98fd746c6abd92ab32ca"/><file name="Tagalys_Analytics.xml" hash="59ce2628610a4624235a5c820beac2d2"/></dir></dir></target><target name="magecommunity"><dir><dir name="Tagalys"><dir name="Core"><dir name="Block"><dir name="Adminhtml"><dir name="Tagalys"><dir name="Edit"><file name="Form.php" hash="31cae34d1e9bd5cb0c881ae5a6fc03c0"/><dir name="Tab"><file name="Apicredentials.php" hash="9005c30790a51ad077cb4be46a07b766"/><file name="Mpages.php" hash="ba526eb77efd4000ae96404bd04aa638"/><file name="Search.php" hash="fef14680d0feb63bb4e928296c3b9032"/><file name="Searchsuggestions.php" hash="1fa634f35204a06d06fa4c7f762c3259"/><file name="Similarproducts.php" hash="390c3a93c5851a6d784e82650be20ae5"/><file name="Support.php" hash="c68547cfe57cbccdcbcf7c3eb35ed6b3"/><file name="Sync.php" hash="
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>7.0.10</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Personalized-localized-and-Intelligent-Site-Search</name>
|
4 |
+
<version>1.5.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>Tagalys</license>
|
7 |
<channel>community</channel>
|
10 |
<description>The extension powers search suggestions and resulting search results. Upon clicking the search bar, show visitors the most popular or trending searches in your ecommerce store. When a visitor starts typing, we auto complete the query into suggestions from the active product-tag-attribute database. </description>
|
11 |
<notes>Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours. </notes>
|
12 |
<authors><author><name>Palani</name><user>Palani</user><email>pc@tagalys.com</email></author></authors>
|
13 |
+
<date>2017-05-22</date>
|
14 |
+
<time>15:42:14</time>
|
15 |
+
<contents><target name="mageetc"><dir><dir name="modules"><file name="Tagalys_Core.xml" hash="7576ed5aa125c580f0b791018f24a0e9"/><file name="Tagalys_SearchSuggestions.xml" hash="dbf6f4ff1859ef2df72560c9282af435"/><file name="Tagalys_Search.xml" hash="820b96f53d2f0e86cb49906a4dda7f41"/><file name="Tagalys_Mpages.xml" hash="6ccb4f45669c98fd746c6abd92ab32ca"/><file name="Tagalys_Analytics.xml" hash="59ce2628610a4624235a5c820beac2d2"/></dir></dir></target><target name="magecommunity"><dir><dir name="Tagalys"><dir name="Core"><dir name="Block"><dir name="Adminhtml"><dir name="Tagalys"><dir name="Edit"><file name="Form.php" hash="31cae34d1e9bd5cb0c881ae5a6fc03c0"/><dir name="Tab"><file name="Apicredentials.php" hash="9005c30790a51ad077cb4be46a07b766"/><file name="Mpages.php" hash="ba526eb77efd4000ae96404bd04aa638"/><file name="Search.php" hash="fef14680d0feb63bb4e928296c3b9032"/><file name="Searchsuggestions.php" hash="1fa634f35204a06d06fa4c7f762c3259"/><file name="Similarproducts.php" hash="390c3a93c5851a6d784e82650be20ae5"/><file name="Support.php" hash="c68547cfe57cbccdcbcf7c3eb35ed6b3"/><file name="Sync.php" hash="3216b0e207a11e8d16cf789eb3c7307d"/><file name="Syncsettings.php" hash="6f32c0fff8996c126889e05b8f8c7adb"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><file name="Tabs.php" hash="6868651b592381ff8081c8247ebf5214"/><file name=".DS_Store" hash="711f187349473a2c6e6d564d4a2faeb9"/></dir><file name="Edit.php" hash="226c9294905b6583588734b7aaace3e3"/><file name=".DS_Store" hash="2f95379345a665b8fd261ff7c2f5a7af"/></dir><file name=".DS_Store" hash="96cf5cac0d87be80da73c36e96971923"/></dir><file name=".DS_Store" hash="8c5a4cb1f6f8e10ade87d78ff4d0bfe4"/></dir><dir name="Helper"><file name="Data.php" hash="d50fec78e8a30b7f4d019fd6d0e5c7ed"/><file name="Service.php" hash="c633adf3d5bd356a04b24a791854130c"/><file name="SyncFile.php" hash="f1346cb21bb4ea73ba2fcf96a7d43fb8"/></dir><dir name="Model"><file name="Client.php" hash="962269bc508298338b86b48601a7854c"/><file name="Config.php" hash="135012904392f8d26f5c5eaedd3d9c71"/><dir name="Mysql4"><dir name="Config"><file name="Collection.php" hash="0967ac6ac1a049d9e09288641d2b4a58"/></dir><file name="Config.php" hash="3562b9ffdf260e34945f9e7830facc1b"/><dir name="Queue"><file name="Collection.php" hash="db01d5b412ca3f8cbc1cbbe8b1ed3d0d"/></dir><file name="Queue.php" hash="50fd814880c6adf02dcb9babe5874811"/><file name=".DS_Store" hash="d3dec31675796dca442be9f6076210df"/></dir><file name="Observer.php" hash="11df34f6c933d433a5d5352f80869c08"/><file name="ProductDetails.php" hash="885c41230182aafb4157ea28262a3230"/><file name="Queue.php" hash="459a74e66f2a7ccd146f480701574464"/><file name=".DS_Store" hash="3db11e65f616ba2524ebf71cf1300fa5"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="TagalysController.php" hash="a76d08c29208912d8c090aa5205a71c2"/></dir><file name="SyncfilesController.php" hash="1b8476cbb4d02ec87b7742e4dc9fff4b"/><file name=".DS_Store" hash="db462bf5da1a15c73197a0fefd3f5b51"/></dir><dir name="etc"><file name="config.xml" hash="2926419f645e41774638ad5c16617c1c"/></dir><dir name="sql"><dir name="tagalys_core_setup"><file name="mysql4-install-0.3.0.php" hash="fca9f934db6850d950dfdcd71dba7dcd"/><file name="mysql4-upgrade-0.1.0-0.3.0.php" hash="1eb2da3bdf0753b6f4904f1fd62af32f"/><file name="mysql4-upgrade-0.2.0-0.3.0.php" hash="1eb2da3bdf0753b6f4904f1fd62af32f"/></dir><file name=".DS_Store" hash="d87f0e93ae82377a5ceeda9bd58740e8"/></dir><file name=".DS_Store" hash="d1024e81b6252a3d102a906452f53021"/></dir><dir name="SearchSuggestions"><dir name="Helper"><file name="Data.php" hash="a88adfc9f92bb01b4fdb851ea4f265d3"/></dir><dir name="Model"><file name="Observer.php" hash="73e90449054eac498e3b4dfd55db33f1"/></dir><dir name="etc"><file name="config.xml" hash="1e1ee26e326c03473e5854f5dae06c59"/></dir></dir><dir name="Search"><dir name="controllers"><file name="IndexController.php" hash="baaeb347db3b8d32d09a83d3369388a8"/></dir><dir name="etc"><file name="config.xml" hash="5e5a0a2d2de927241c1e97f435a382f7"/></dir><file name=".DS_Store" hash="822777d708619165d544d3256174adc2"/></dir><dir name="Mpages"><dir name="controllers"><file name="IndexController.php" hash="1d80e73a3e3d2a51cff12ebbe1b1364e"/></dir><dir name="etc"><file name="config.xml" hash="80d1b3c82d4da93c271376881f663db5"/></dir><file name=".DS_Store" hash="822777d708619165d544d3256174adc2"/></dir><dir name="Analytics"><dir name="Block"><file name="Productview.php" hash="117109f50c13a14efc4d5740d9e1eace"/></dir><dir name="Model"><file name="Observer.php" hash="650e1c3bacab113e25958af98195de51"/></dir><dir name="controllers"><file name="IndexController.php" hash="3eee2034348dc00d06d91f0f849b7796"/></dir><dir name="etc"><file name="config.xml" hash="ad31a8918cafb214865a7e55fad09383"/></dir></dir></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="tagalys_core.xml" hash="a7e019882e6b031018b7955df50330c8"/></dir><dir name="template"><dir name="tagalys"><file name="configuration.phtml" hash="97c1d46ae5793f974ece62371258a324"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="tagalys_search_suggestions.xml" hash="3d3e59b076a4e39c924e122810555b72"/><file name="tagalys_analytics.xml" hash="3d669cedf80245f91745b9e4de5d6012"/></dir><dir name="template"><dir name="tagalys_search_suggestions"><file name="search_suggestions.phtml" hash="d453c441c48c930bea5e2861e4179b3b"/></dir><dir name="tagalys_search"><file name="index.phtml" hash="0b22a6ca318a194c77e945e937dc11cd"/></dir><dir name="tagalys_mpages"><file name="index.phtml" hash="95a99380caaf01e9190517371d5dc225"/></dir><dir name="tagalys_analytics"><file name="product_view.phtml" hash="08d97d2aaafb09b868bde334b9a5942d"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="tagalys"><file name="tagalys-configuration-v1.css" hash="d387a2c115f65a0702d6e00e62c0d6f1"/></dir></dir><dir name="images"><dir name="tagalys"><file name="tagalys-logo.png" hash="b26278b173e29b21edc16ddd06ca0192"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><file name="tagalys-configuration-v2.js" hash="5bdf8c88a7e2ae844db7773f7e037057"/></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>7.0.10</max></php></required></dependencies>
|
18 |
</package>
|
skin/adminhtml/default/default/css/tagalys/{tagalys-configuration.css → tagalys-configuration-v1.css}
RENAMED
@@ -1,7 +1,10 @@
|
|
1 |
-
.tagalys-
|
2 |
-
|
|
|
|
|
3 |
}
|
4 |
-
.tagalys-
|
|
|
5 |
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px
|
6 |
}
|
7 |
#admin_tagalys_sync_feed_fieldset , th, td {
|
@@ -25,8 +28,9 @@
|
|
25 |
text-decoration: none;
|
26 |
}
|
27 |
|
28 |
-
.tagalys-btn:disabled {
|
29 |
background: #dddddd;
|
|
|
30 |
}
|
31 |
|
32 |
.tagalys-progress-inline {
|
1 |
+
.tagalys-progressbar {
|
2 |
+
width: 100%;
|
3 |
+
height: 20px;
|
4 |
+
background: #ccc;
|
5 |
}
|
6 |
+
.tagalys-progressbar-completed{
|
7 |
+
float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease;
|
8 |
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px
|
9 |
}
|
10 |
#admin_tagalys_sync_feed_fieldset , th, td {
|
28 |
text-decoration: none;
|
29 |
}
|
30 |
|
31 |
+
.tagalys-btn:disabled, .tagalys-btn.disabled {
|
32 |
background: #dddddd;
|
33 |
+
color: #ed6502;
|
34 |
}
|
35 |
|
36 |
.tagalys-progress-inline {
|