Personalized-localized-and-Intelligent-Site-Search - Version 1.5.0

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 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>You can close this screen now. Once setup is complete for all selected stores, you will be notified by email and 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
  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
- $store_setup_complete = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:setup_complete");
33
- $store_sync_fieldset->addField("store_{$store_id}_setup_complete", 'note', array(
34
  'label' => 'Setup complete',
35
- 'text' => (($store_setup_complete == '1') ? 'Yes' : 'No')
 
 
 
 
36
  ));
37
- $store_feed_status = Mage::getModel('tagalys_core/config')->getTagalysConfig("store:$store_id:feed_status", true);
38
- if ($store_feed_status != null) {
39
- $status_for_client = '';
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
- $setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
40
- if ($setup_status == 'complete') {
41
- } else {
42
- $fieldset->addField('agree_cron_enabled', 'checkbox', array(
43
- 'name' => 'Checkbox',
44
- 'checked' => false,
45
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
46
- 'disabled' => false,
47
- 'after_element_html' => '<small>Cron is enabled on this Magento installation.<br><em><b><a target=_blank href="http://devdocs.magento.com/guides/m1x/install/installing_install.html#install-cron">Cron Documentation</a></b></em></small>',
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 resyncCron() {
45
- $utc_now = new DateTime("now", new DateTimeZone('UTC'));
46
- $time_now = $utc_now->format(DateTime::ATOM);
47
- Mage::getModel('tagalys_core/config')->setTagalysConfig("heartbeat:resyncCron", $time_now);
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->_cronForStore($store_id, $product_ids_from_updates_queue_for_cron_instance);
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 _cronForStore($store_id, $product_ids_from_updates_queue_for_cron_instance) {
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
- Mage::helper("tagalys_core/SyncFile")->cron();
 
 
 
 
 
 
 
 
28
  }
29
 
30
  public function resyncCron() {
31
- Mage::helper("tagalys_core/SyncFile")->resyncCron();
 
 
 
 
 
 
 
 
 
 
 
 
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 & Start Sync':
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.4.2</version>
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.4.2</version>
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-16</date>
14
- <time>05:51:44</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="849f7bb77ff568e7f29cf63d54e7faa8"/><file name="Syncsettings.php" hash="77ecb1594c7b409e2055ff8394b85aa8"/><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="9da04e9a4aec76ce5f5bd88c453390cd"/><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="5373a774fe2452d068be0ae2806dd01a"/></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="9197f6fb573484db244c141607872b95"/><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="67e746a969ad1b43dcc2268c15ce8f26"/></dir><file name="SyncfilesController.php" hash="1b8476cbb4d02ec87b7742e4dc9fff4b"/><file name=".DS_Store" hash="db462bf5da1a15c73197a0fefd3f5b51"/></dir><dir name="etc"><file name="config.xml" hash="088d5e7e26861cdb2784ffdefbdf8e92"/></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="a0875951441399a46dfb5cb3d346b7d8"/></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.css" hash="fa3b8f3a4d1bebbbcef261f10e4652b7"/></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.js" hash="e32466267eb8e54a32119ac8e49c6589"/></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>
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-progress-bar{
2
- 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
 
 
3
  }
4
- .tagalys-progress-bar{
 
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 {