· 5 years ago · Jul 01, 2020, 09:44 AM
1$.getScript("https://widget.packeta.com/www/js/library.js");
2var widget_type = $('#widget_type').val();
3let widget_lang_pac = '';
4var country = 'cz,sk'; /* Default countries */
5$(document).ready(function ()
6{
7 if ($(".zas-box").length)
8 initializePacketaWidget();
9
10 tools.fixextracontent();
11
12 $(document).on('change', '#packetery-widget .js-name', function ()
13 {
14 var extra = $(this).parentsUntil('.carrier-extra-content').parent();
15 var id_branch = $("#packeta-branch-id").val();
16 var name_branch = $("#packeta-branch-name").val();
17 var currency_branch = $("#packeta-branch-currency").val();
18 if (id_branch > 0 && id_branch !== "")
19 {
20 tools.continueSetEnabled();
21
22 let id_carrier = $('.delivery-option input:checked').val();
23 if (typeof id_carrier == 'undefined')
24 {
25 id_carrier = $('.delivery_option.selected input').val();
26 }
27 id_carrier = id_carrier.replace(',', '');
28
29 var is_ad = $(this).find('option:selected').data('ad');
30 packetery.widgetSaveOrderBranch(id_branch, id_carrier, name_branch);
31 if (is_ad == 1)
32 {
33 packetery.widgetDetailsClear(extra);
34 } else
35 {
36 packetery.widgetGetDetails(extra);
37 }
38 }
39
40 return false;
41 });
42});
43
44window.initializePacketaWidget = function ()
45{
46 // set YOUR Packeta API key
47 var packetaApiKey = jQuery("#packeta-api-key").val();
48
49 var countries = JSON.parse($('#allowed_countries').val());
50
51 // parameters
52 var language = 'en';
53
54 if ($('#shop-language').val() != '')
55 {
56 language = $('#shop-language').val();
57 }
58
59 /* Overwrite default countries with forced country or customer country */
60 if ($('#widget_force_country').val() != "" && countries.indexOf($('#widget_force_country').val()) != -1)
61 {
62 country = $('#widget_force_country').val();
63 }
64 else if ($('#customer_country').val() != '' && countries.indexOf($('#customer_country').val()) != -1)
65 {
66 country = $('#customer_country').val();
67 }
68
69 /* Override language with forced language if it's set */
70 if ($('#widget_force_language').val() != "")
71 {
72 language = $('#widget_force_language').val();
73 }
74
75 $('.open-packeta-widget').click(function (e)
76 {
77 e.preventDefault();
78 var module_version = $('#module_version').val(); // Get module version for widget
79 Packeta.Widget.pick(packetaApiKey, function (pickupPoint)
80 {
81 if (pickupPoint != null)
82 {
83 /* Get carrier row */
84 var parent = $('.delivery-option input:checked').parents('.delivery-option').next();
85
86 /* Add ID and name to inputs */
87 $(parent).find('.packeta-branch-id').val(pickupPoint.id);
88 $(parent).find('.packeta-branch-name').val(pickupPoint.name);
89
90 // We let customer know, which branch he picked by filling html inputs
91 $(parent).find('.picked-delivery-place').html(pickupPoint.name);
92
93 tools.continueSetEnabled();
94
95 /* Get ID of selected carrier */
96 let id_carrier = $('.delivery-option input:checked').val();
97 if (typeof id_carrier == 'undefined')
98 {
99 id_carrier = $('.delivery_option.selected input').val();
100 }
101 id_carrier = id_carrier.replace(',', '');
102
103 /* Save packetery order without order ID - just cart id so we can access carrier data later */
104 packetery.widgetSaveOrderBranch(pickupPoint.id, id_carrier, pickupPoint.name);
105 }
106 else
107 {
108 /* Get carrier row */
109 var parent = $('.delivery-option input:checked').parents('.delivery-option').next();
110
111 /* If point isn't selected - disable */
112 if($(parent).find('.packeta-branch-id').val() == "")
113 {
114 tools.continueSetDisabled();
115 }
116 }
117 }, {appIdentity: 'prestashop-1.7-packeta-' + module_version, country: country, language: language});
118 });
119};
120
121tools = {
122 readAjaxFields: function ()
123 {
124 let raw = $('#ajaxfields').val();
125 if (typeof raw != 'undefined')
126 {
127 let json = decodeURIComponent(raw);
128 widget_lang_pac = JSON.parse(json);
129 }
130 },
131
132 continueSetDisabled: function ()
133 {
134 if ($('.continue').hasClass('disabled') == false)
135 {
136 $('.continue').addClass('disabled');
137 $('.continue').css("pointer-events", "none");
138 }
139 if ($('#onepagecheckoutps_step_review .btn_place_order').hasClass('disabled') == false)
140 {
141 $('#onepagecheckoutps_step_review .btn_place_order').addClass('disabled');
142 }
143 },
144
145 continueSetEnabled: function ()
146 {
147 if ($('.continue').hasClass('disabled') == true)
148 {
149 $('.continue').removeClass('disabled');
150 $('.continue').css("pointer-events", "auto");
151 }
152 $('#onepagecheckoutps_step_review .btn_place_order').removeClass('disabled');
153 },
154 preCheckOneCountryWidget: function ()
155 {
156 if ((widget_type == 0) || (typeof widget_type == 'undefined'))
157 {
158 if ($('select.js-country:visible option').length == 1)
159 {
160 $el = $('select.js-country:visible option');
161 var extra = $el.parentsUntil('.carrier-extra-content').parent();
162 packetery.widgetGetCities(extra);
163 }
164 } else
165 {
166 $('select.js-country option').each(function ()
167 {
168 $el = $(this);
169 let extra = $el.parentsUntil('.carrier-extra-content').parent();
170 packetery.widgetGetCities(extra);
171 });
172 }
173 },
174 fixextracontent: function ()
175 {
176 if ($('.js_packetery_carriers').length == 0)
177 {
178 $('.carrier-extra-content').each(function ()
179 {
180
181 var widget_carrier = $(this).find('#widget_carrier');
182 var valid_countries = $(this).find('#carrier_countries').val();
183
184 if (typeof valid_countries != 'undefined' && widget_carrier.length)
185 {
186 widget_carrier = $(widget_carrier).val();
187 valid_countries = JSON.parse(valid_countries);
188 if (typeof valid_countries[widget_carrier] != 'undefined')
189 {
190 if (valid_countries[widget_carrier].indexOf(country) == -1)
191 {
192 $(this).find('#open-packeta-widget').hide();
193 $(this).find('#selected-branch').hide();
194 $(this).find('#invalid-country-carrier').show();
195 }
196 }
197 }
198
199 /* Only displayed extra content */
200 if ($(this).css('display') == 'block')
201 {
202 /* If there's packetery-widget div */
203 if ($(this).find('#packetery-widget').length)
204 {
205 /* And branch is not set, disable */
206 var id_branch = $(this).find(".packeta-branch-id").val();
207 if (id_branch == 0 || id_branch == "")
208 {
209 $('button[name="confirmDeliveryOption"]').addClass('disabled');
210 $('button[name="confirmDeliveryOption"]').css("pointer-events", "none");
211 }
212 }
213 }
214 });
215
216 /* Enable / Disable continue buttons after carrier change */
217 $('.delivery-option input').change(function ()
218 {
219 var id_carrier = $(this).val();
220 id_carrier = id_carrier.replace(',', '');
221
222 var extra = $(this).parents('.delivery-option').next();
223
224 if ($(extra).hasClass('carrier-extra-content') == true)
225 {
226 if ($(extra).find('#widget_carrier').length > 0)
227 {
228 if (id_carrier != $(extra).find('#widget_carrier').val())
229 {
230 tools.continueSetEnabled();
231 }
232 }
233 }
234
235 if ($(extra).hasClass('carrier-extra-content') == true)
236 {
237 if ($(extra).find('#packetery-widget').length)
238 {
239 var id_branch = $(extra).find(".packeta-branch-id").val();
240 var name_branch = $(extra).find(".packeta-branch-name").val();
241 if (id_branch > 0 && id_branch !== "")
242 {
243 $('button[name="confirmDeliveryOption"]').removeClass('disabled');
244 $('button[name="confirmDeliveryOption"]').css("pointer-events", "auto");
245 packetery.widgetSaveOrderBranch(id_branch, id_carrier, name_branch);
246 } else
247 {
248 $('button[name="confirmDeliveryOption"]').addClass('disabled');
249 $('button[name="confirmDeliveryOption"]').css("pointer-events", "none");
250 }
251 } else
252 {
253 if (widget_type == 1)
254 {
255 $('button[name="confirmDeliveryOption"]').removeClass('disabled');
256 $('button[name="confirmDeliveryOption"]').css("pointer-events", "auto");
257 } else
258 {
259 $('.confirmPacketeryDeliveryOption').removeClass('disabled');
260 $('.confirmPacketeryDeliveryOption').css("pointer-events", "auto");
261 }
262 }
263 }
264 var id_carrier = $(this).val();
265 });
266 }
267 tools.preCheckOneCountryWidget();
268 }
269}
270
271packetery = {
272 widgetClearField: function (field, extra)
273 {
274 var find_field = '#packetery-widget .js-' + field;
275 $(extra).find(find_field).html('');
276 $(extra).find(find_field).html('<option value="0" disabled="" selected>--' + widget_lang_pac.please_choose + '--</option>');
277 },
278 widgetFillField: function (field, data, extra)
279 {
280 if (field == 'country')
281 {
282 packetery.widgetClearField('city', extra);
283 packetery.widgetClearField('name', extra);
284 $(extra).find('.pack-details-container').html('');
285 } else if (field == 'city')
286 {
287 packetery.widgetClearField('city', extra);
288 packetery.widgetClearField('name', extra);
289 $(extra).find('.pack-details-container').html('');
290 } else if (field == 'name')
291 {
292 packetery.widgetClearField('name', extra);
293 var id_branch = 1;
294 }
295
296 var find_field = '#packetery-widget .js-' + field;
297 var cnt = data.length;
298 for (var i = 0; i < cnt; i++)
299 {
300 if (cnt == 1)
301 {
302 var selected = 'selected';
303 $(extra).find(find_field + ' option:selected').prop('selected', false);
304 } else
305 {
306 var selected = '';
307 }
308 if (id_branch > 0)
309 {
310 var is_ad = 0;
311 is_ad = data[i]['is_ad'];
312 id_branch = data[i]['id_branch'];
313 $(extra).find(find_field).append('<option value="' + id_branch + '" data-ad="' + is_ad + '" ' + selected + '>' + data[i][field] + '</option>');
314 } else
315 {
316 if (field == 'city')
317 {
318 var is_ad = 0;
319 is_ad = data[i]['is_ad'];
320 $(extra).find(find_field).append('<option value="' + data[i][field] + '" data-ad="' + is_ad + '" ' + selected + '>' + data[i][field] + '</option>');
321 } else
322 {
323 $(extra).find(find_field).append('<option value="' + data[i][field] + '" ' + selected + '>' + data[i][field] + '</option>');
324 }
325
326 }
327 }
328 if (cnt == 1)
329 {
330 $(extra).find(find_field).change();
331 }
332 },
333 widgetDetailsClear: function (extra)
334 {
335 $(extra).find('.widget_block_title').css('display', 'none');
336 $(extra).find('.branch-foto').html('');
337 //left
338 $(extra).find('.pack-details-container').html('');
339
340 //right
341 $(extra).find('.pack-details-opening').html('');
342 },
343 widgetFillDetails: function (data, extra)
344 {
345 var lang = JSON.parse($('#ajaxfields').val());
346
347 $(extra).find('.widget_block_title').each(function ()
348 {
349 if ($(this).css('display') == 'none')
350 {
351 $(this).css('display', 'block');
352 }
353 });
354
355 // foto
356 $(extra).find('.branch-foto').html('<div class="col-md-6"><a href="' + data.url + '" target="_blank"><img src="' + data.img + '" id="branch-image" /></a></div>');
357
358 //right
359 if (data.dressing_room == 1)
360 var dressing_room = lang.yes;
361 else
362 var dressing_room = lang.no;
363 if (data.claim_assistant == 1)
364 var claim_assistant = lang.yes;
365 else
366 var claim_assistant = lang.no;
367 if (data.packet_consignment == 1)
368 var packet_consignment = lang.yes;
369 else
370 var packet_consignment = lang.no;
371
372 $(extra).find('.pack-details-container').html('<div class="branch-details"></div>');
373 if (data.region.length > 0)
374 $(extra).find('.pack-details-container .branch-details').append('<p>' + data.region + ', ' + data.city + '</p>');
375 else
376 $(extra).find('.pack-details-container .branch-details').append('<p>' + data.city + '</p>');
377 $(extra).find('.pack-details-container .branch-details').append('<p>' + data.street + '</p>');
378 $(extra).find('.pack-details-container .branch-details').append('<p>' + data.place + '</p>');
379 $(extra).find('.pack-details-container .branch-details').append('<p>' + lang.zip + ': ' + data['zip'] + '</p>');
380 $(extra).find('.pack-details-container .branch-details').append('<p>' + lang.max_weight + ': ' + data.max_weight + '</p>');
381 $(extra).find('.pack-details-container .branch-details').append('<p>' + lang.dressing_room + ': ' + dressing_room + '</p>');
382 $(extra).find('.pack-details-container .branch-details').append('<p>' + lang.claim_assistant + ': ' + claim_assistant + '</p>');
383 $(extra).find('.pack-details-container .branch-details').append('<p>' + lang.packet_consignment + ': ' + packet_consignment + '</p>');
384 $(extra).find('.pack-details-container .branch-details').append('<p><a href="' + data['url'] + '" target="_blank">' + lang.moredetails + '</a></p>');
385
386 //left
387 $(extra).find('.pack-details-opening').html('<div class="col-md-6"></div>');
388 var ohcs_html = data.opening_hours_short;
389 var ohcl_html = data.opening_hours_long;
390 var ohtable_html = data.opening_hours;
391 if (ohcl_html.length > 0)
392 {
393 $(extra).find('.pack-details-opening').append('<div>' + ohcl_html + '</div>');
394 return true;
395 }
396 if (ohtable_html.length > 0)
397 {
398 $(extra).find('.pack-details-opening').append('<div>' + ohtable_html + '</div>');
399 return true;
400 }
401 if (ohcs_html.length > 0)
402 {
403 $(extra).find('.pack-details-opening').append('<div>' + ohcs_html + '</div>');
404 return true;
405 }
406 },
407
408 widgetSaveOrderBranch: function (id_branch, id_carrier, name_branch)
409 {
410 $.ajax({
411 type: 'POST',
412 url: ajaxs.baseuri() + '/modules/packetery/ajax_front.php?action=widgetsaveorderbranch' + ajaxs.checkToken(),
413 data: {'id_branch': id_branch, 'id_carrier': id_carrier, 'name_branch': name_branch},
414 beforeSend: function ()
415 {
416 $("body").toggleClass("wait");
417 },
418 success: function (msg)
419 {
420 return true;
421 },
422 complete: function ()
423 {
424 $("body").toggleClass("wait");
425 },
426 });
427 },
428
429 widgetGetCities: function (extra)
430 {
431 var country = $(extra).find('#packetery-widget .js-country option:selected').val();
432 packetery.widgetDetailsClear();
433 $.ajax({
434 type: 'POST',
435 url: ajaxs.baseuri() + '/modules/packetery/ajax_front.php?action=widgetgetcities' + ajaxs.checkToken(),
436 data: {'country': country},
437 extra: extra,
438 beforeSend: function ()
439 {
440 $("body").toggleClass("wait");
441 },
442 success: function (msg)
443 {
444 data = JSON.parse(msg);
445 packetery.widgetFillField('city', data, this.extra);
446 },
447 complete: function ()
448 {
449 $("body").toggleClass("wait");
450 },
451 });
452 },
453
454 widgetGetNames: function (extra)
455 {
456 var country = $(extra).find('#packetery-widget .js-country option:selected').val();
457 var city = $(extra).find('#packetery-widget .js-city option:selected').val();
458 var is_ad = $(extra).find('#packetery-widget .js-city option:selected').data('ad');
459 packetery.widgetDetailsClear(extra);
460 $.ajax({
461 type: 'POST',
462 url: ajaxs.baseuri() + '/modules/packetery/ajax_front.php?action=widgetgetnames' + ajaxs.checkToken(),
463 data: {'country': country, 'city': city, 'is_ad': is_ad},
464 extra: extra,
465 beforeSend: function ()
466 {
467 $("body").toggleClass("wait");
468 },
469 success: function (msg)
470 {
471 data = JSON.parse(msg);
472 packetery.widgetFillField('name', data, this.extra)
473 },
474 complete: function ()
475 {
476 $("body").toggleClass("wait");
477 },
478 });
479 },
480 widgetGetDetails: function (extra)
481 {
482 var country = $(extra).find('#packetery-widget .js-country option:selected').val();
483 var city = $(extra).find('#packetery-widget .js-city option:selected').val();
484 var id_branch = $(extra).find('#packetery-widget .js-name option:selected').val();
485 $.ajax({
486 type: 'POST',
487 url: ajaxs.baseuri() + '/modules/packetery/ajax_front.php?action=widgetgetdetails' + ajaxs.checkToken(),
488 data: {'country': country, 'city': city, 'id_branch': id_branch},
489 extra: extra,
490 beforeSend: function ()
491 {
492 $("body").toggleClass("wait");
493 },
494 success: function (msg)
495 {
496 data = JSON.parse(msg);
497 if (data)
498 {
499 packetery.widgetFillDetails(data, this.extra);
500 }
501 },
502 complete: function ()
503 {
504 $("body").toggleClass("wait");
505 },
506 });
507 },
508}
509
510ajaxs = {
511 baseuri: function ()
512 {
513 return $('#baseuri').val();
514 },
515 checkToken: function ()
516 {
517 return '&token=' + prestashop.static_token;
518 },
519}
520
521var getUrlParameter = function getUrlParameter(sParam)
522{
523 var sPageURL = decodeURIComponent(window.location.search.substring(1)),
524 sURLVariables = sPageURL.split('&'),
525 sParameterName,
526 i;
527
528 for (i = 0; i < sURLVariables.length; i++)
529 {
530 sParameterName = sURLVariables[i].split('=');
531
532 if (sParameterName[0] === sParam)
533 {
534 return sParameterName[1] === undefined ? true : sParameterName[1];
535 }
536 }
537};
538
539var getStringParameter = function getUrlParameter(sParam, url)
540{
541 var sPageURL = decodeURIComponent(url),
542 sURLVariables = sPageURL.split('&'),
543 sParameterName,
544 i;
545 for (i = 0; i < sURLVariables.length; i++)
546 {
547 sParameterName = sURLVariables[i].split('=');
548
549 if (sParameterName[0] === sParam)
550 {
551 return sParameterName[1] === undefined ? true : sParameterName[1];
552 }
553 }
554};