scripts_js_file.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. package template
  2. var VarScriptsJsFile = []byte(`(function(window, $) {
  3. var frontend = function(window, $) {
  4. var ShopProductsLightGalleryLastImage = '';
  5. // Private
  6. function ShopProductsInitLightGallery() {
  7. $('#product_thumbnails').lightGallery({
  8. pager: false,
  9. showThumbByDefault: false,
  10. toogleThumb: false,
  11. controls: false,
  12. download: false
  13. });
  14. $('#product_image img').css('cursor', 'pointer').click(function() {
  15. $($('#product_thumbnails a.thumbnail').get($(this).data('index'))).click();
  16. });
  17. $('#product_thumbnails a.thumbnail').each(function() {
  18. $(this).mouseover(function() {
  19. if($(this).data('hover') != ShopProductsLightGalleryLastImage) {
  20. ShopProductsLightGalleryLastImage = $(this).data('hover');
  21. $('#product_image img').attr('src', $(this).data('hover'));
  22. $('#product_image img').data('index', $(this).data('index'));
  23. }
  24. });
  25. });
  26. };
  27. function ShopBasketBlockObject(object) {
  28. if(object && !$(object).hasClass('click-blocked')) {
  29. $(object).addClass('click-blocked');
  30. }
  31. };
  32. function ShopBasketUnBlockObject(object) {
  33. if(object && $(object).hasClass('click-blocked')) {
  34. $(object).removeClass('click-blocked');
  35. }
  36. };
  37. function ShopBasketObjectIsNotBlocked(object) {
  38. if(!object) {
  39. return true;
  40. }
  41. return !$(object).hasClass('click-blocked');
  42. };
  43. function ShopBasketSetNavBtnProductsCount(value) {
  44. $('#basket-nav-btn .badge').html(value);
  45. $('#basket-mobile-btn').html(value);
  46. };
  47. function ShopBasketAjaxCommand(cmd, product_id, success, fail, always) {
  48. $.ajax({
  49. type: "GET",
  50. dataType: 'json',
  51. url: '/shop/basket/' + cmd + '/' + product_id + '/'
  52. }).done(function(data) {
  53. if(success) { success(data); }
  54. }).fail(function(xhr, status, error) {
  55. if(fail) { fail(xhr, status, error); }
  56. }).always(function() {
  57. if(always) { always(); }
  58. });
  59. };
  60. function ShopBasketAjaxGetInfo(success, fail, always) {
  61. $.ajax({
  62. type: "GET",
  63. dataType: 'json',
  64. url: '/shop/basket/info/'
  65. }).done(function(data) {
  66. if(success && data) { success(data); }
  67. }).fail(function(xhr, status, error) {
  68. if(fail) { fail(xhr, status, error); }
  69. }).always(function() {
  70. if(always) { always(); }
  71. });
  72. };
  73. function ShopBasketAjaxGetCount(success, fail, always) {
  74. ShopBasketAjaxGetInfo(function(data) {
  75. if(success && data && data.total_count != undefined) {
  76. success(data.total_count);
  77. }
  78. }, function(xhr, status, error) {
  79. if(fail) { fail(xhr, status, error); }
  80. }, function() {
  81. if(always) { always(); }
  82. });
  83. };
  84. function ShopBasketAjaxUpdateCount() {
  85. ShopBasketAjaxGetCount(function(count) {
  86. ShopBasketSetNavBtnProductsCount(count);
  87. });
  88. };
  89. function ShopBasketAjaxProductsHtml(success, fail, always) {
  90. ShopBasketAjaxGetInfo(function(data) {
  91. if(data) {
  92. if(data.total_count != undefined && data.total_count > 0) {
  93. var table = '';
  94. table += '<table class="table data-table table-striped table-bordered">';
  95. table += '<thead><tr><th class="thc-1">&nbsp;</th><th class="thc-2">Product</th><th class="thc-3">Price</th><th class="thc-4">Quantity</th><th class="thc-5">Sum</th><th class="thc-6">&nbsp;</th></tr></thead>';
  96. table += '<tbody>';
  97. for(var i in data.products) {
  98. table += '<tr>';
  99. table += '<td class="thc-1"><img src="' + data.products[i].image + '" width="50" height="50" /></td>';
  100. table += '<td class="thc-2"><a href="' + data.products[i].link + '">' + data.products[i].name + '</a></td>';
  101. table += '<td class="thc-3">' + data.products[i].price + ' ' + data.currency.code + '</td>';
  102. table += '<td class="thc-4"><button type="button" class="btn btn-minus" onclick="frontend.ShopBasketProductMinus(this,' + data.products[i].id + ');"><span>-</span></button><input class="form-control" type="text" value="' + data.products[i].quantity + '" readonly><button type="button" class="btn btn-plus" onclick="frontend.ShopBasketProductPlus(this,' + data.products[i].id + ');"><span>+</span></button></td>';
  103. table += '<td class="thc-5">' + data.products[i].sum + ' ' + data.currency.code + '</td>';
  104. table += '<td class="thc-6"><a href="" onclick="frontend.ShopBasketProductRemove(this,' + data.products[i].id + ');return false;">&times;</a></td>';
  105. table += '</tr>';
  106. }
  107. table += '</tbody>';
  108. table += '</table>';
  109. table += '<div class="total"><span class="caption">Total sum:</span><span class="value">' + data.total_sum + ' ' + data.currency.code + '</span></div>';
  110. if(success) { success(table, data.total_count); }
  111. } else {
  112. if(success) { success('You basket currently empty...', 0); }
  113. }
  114. } else {
  115. window.location.reload(true);
  116. }
  117. }, function(xhr, status, error) {
  118. if(fail) { fail(xhr, status, error); }
  119. }, function() {
  120. if(always) { always(); }
  121. });
  122. };
  123. function ShopBasketEnableDisableOrderBtn(total) {
  124. $('#sys-modal-shop-basket button.btn-order').prop('disabled', total <= 0);
  125. };
  126. function Initialize() {
  127. // Check if jQuery was loaded
  128. if(typeof $ == 'function') {
  129. ShopProductsInitLightGallery();
  130. } else {
  131. console.log('Error: jQuery is not loaded!');
  132. }
  133. };
  134. // Initialize
  135. if(window.addEventListener) {
  136. // W3C standard
  137. window.addEventListener('load', Initialize, false);
  138. } else if(window.attachEvent) {
  139. // Microsoft
  140. window.attachEvent('onload', Initialize);
  141. };
  142. // Public
  143. return {
  144. ShopBasketBtnCollapse: function() {
  145. if(!$('.navbar-toggler').hasClass('collapsed')) {
  146. $('.navbar-toggler').click();
  147. }
  148. return true;
  149. },
  150. ShopBasketOpen: function(object) {
  151. if(ShopBasketObjectIsNotBlocked(object)) {
  152. ShopBasketBlockObject(object);
  153. var html = '<div class="modal fade" id="sys-modal-shop-basket" tabindex="-1" role="dialog" aria-labelledby="sysModalShopBasketLabel" aria-hidden="true"> \
  154. <div class="modal-dialog modal-dialog-centered" role="document"> \
  155. <div class="modal-content"> \
  156. <input type="hidden" name="action" value="index-user-update-profile"> \
  157. <div class="modal-header"> \
  158. <h5 class="modal-title" id="sysModalShopBasketLabel">Basket</h5> \
  159. <button type="button" class="close" data-dismiss="modal" aria-label="Close"> \
  160. <span aria-hidden="true">&times;</span> \
  161. </button> \
  162. </div> \
  163. <div class="modal-body text-left" style="position:relative;"> \
  164. <div class="blocker" style="position:absolute;left:0px;top:0px;width:100%;height:100%;background:#fff;opacity:0.5;display:none;"></div> \
  165. <div class="data"></div> \
  166. </div> \
  167. <div class="modal-footer"> \
  168. <button type="button" class="btn btn-close btn-secondary" data-dismiss="modal">Continue Shopping</button> \
  169. <button type="button" class="btn btn-order btn-success" disabled>Make order</button> \
  170. </div> \
  171. </div> \
  172. </div> \
  173. </div>';
  174. $('#sys-modal-shop-basket-placeholder').html(html);
  175. $("#sys-modal-shop-basket").modal({
  176. backdrop: 'static',
  177. keyboard: true,
  178. show: false,
  179. });
  180. $('#sys-modal-shop-basket').on('hidden.bs.modal', function(e) {
  181. $('#sys-modal-shop-basket-placeholder').html('');
  182. $('#navbar-top').css('margin-right', $('#body').css('padding-right'));
  183. });
  184. ShopBasketAjaxProductsHtml(function(html, total) {
  185. $('#sys-modal-shop-basket .modal-body .data').html(html);
  186. ShopBasketEnableDisableOrderBtn(total);
  187. $("#sys-modal-shop-basket").modal('show');
  188. $('#navbar-top').css('margin-right', $('#body').css('padding-right'));
  189. }, function(xhr, status, error) {
  190. window.location.reload(true);
  191. });
  192. ShopBasketUnBlockObject(object);
  193. }
  194. return false;
  195. },
  196. ShopBasketProductAdd: function(object, product_id) {
  197. if(ShopBasketObjectIsNotBlocked(object)) {
  198. ShopBasketBlockObject(object);
  199. ShopBasketAjaxCommand('plus', product_id, function(data) {
  200. frontend.ShopBasketOpen();
  201. }, function(xhr, status, error) {
  202. window.location.reload(true);
  203. }, function() {
  204. ShopBasketAjaxUpdateCount();
  205. ShopBasketUnBlockObject(object);
  206. });
  207. }
  208. return false;
  209. },
  210. ShopBasketProductPlus: function(object, product_id) {
  211. if(ShopBasketObjectIsNotBlocked(object)) {
  212. ShopBasketBlockObject(object);
  213. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'block');
  214. ShopBasketAjaxCommand('plus', product_id, function(data) {
  215. ShopBasketAjaxProductsHtml(function(html, total) {
  216. $('#sys-modal-shop-basket .modal-body .data').html(html);
  217. ShopBasketEnableDisableOrderBtn(total);
  218. }, function(xhr, status, error) {
  219. window.location.reload(true);
  220. });
  221. }, function(xhr, status, error) {
  222. window.location.reload(true);
  223. }, function() {
  224. ShopBasketAjaxUpdateCount();
  225. ShopBasketUnBlockObject(object);
  226. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'none');
  227. });
  228. }
  229. return false;
  230. },
  231. ShopBasketProductMinus: function(object, product_id) {
  232. if(ShopBasketObjectIsNotBlocked(object)) {
  233. ShopBasketBlockObject(object);
  234. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'block');
  235. ShopBasketAjaxCommand('minus', product_id, function(data) {
  236. ShopBasketAjaxProductsHtml(function(html, total) {
  237. $('#sys-modal-shop-basket .modal-body .data').html(html);
  238. ShopBasketEnableDisableOrderBtn(total);
  239. }, function(xhr, status, error) {
  240. window.location.reload(true);
  241. });
  242. }, function(xhr, status, error) {
  243. window.location.reload(true);
  244. }, function() {
  245. ShopBasketAjaxUpdateCount();
  246. ShopBasketUnBlockObject(object);
  247. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'none');
  248. });
  249. }
  250. return false;
  251. },
  252. ShopBasketProductRemove: function(object, product_id) {
  253. if(ShopBasketObjectIsNotBlocked(object)) {
  254. ShopBasketBlockObject(object);
  255. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'block');
  256. ShopBasketAjaxCommand('remove', product_id, function(data) {
  257. ShopBasketAjaxProductsHtml(function(html, total) {
  258. $('#sys-modal-shop-basket .modal-body .data').html(html);
  259. ShopBasketEnableDisableOrderBtn(total);
  260. }, function(xhr, status, error) {
  261. window.location.reload(true);
  262. });
  263. }, function(xhr, status, error) {
  264. window.location.reload(true);
  265. }, function() {
  266. ShopBasketAjaxUpdateCount();
  267. ShopBasketUnBlockObject(object);
  268. $('#sys-modal-shop-basket .modal-body .blocker').css('display', 'none');
  269. });
  270. }
  271. return false;
  272. },
  273. };
  274. }(window, $);
  275. window.frontend = frontend;
  276. }(window, jQuery));`)