JAVASCRIPT   120

admin.js

Guest on 7th September 2021 10:17:41 AM

  1. Admin = {
  2.     analytics: true,
  3.     init: function () {
  4.         Admin.TagsDropdown.init();
  5.         Admin.BrandsDropdown.init();
  6.         Admin.LabelUpdate.initCategory();
  7.         Admin.LabelUpdate.initBrand();
  8.         Admin.SlideshowInput.init();
  9.         Admin.Tabs.initVisible();
  10.         Admin.Form.focusTabWithError();
  11.     },
  12.     Form: {
  13.         focusTabWithError: function () {
  14.             var focusError = function () {
  15.                 if ($('span.label.label-danger').length) {
  16.                     $('span.label.label-danger').first().parent('a').click();
  17.                 }
  18.                 $('.wrapper.wrapper-content.transparent').addClass('animated fadeInRight').removeClass('transparent');
  19.  
  20.             };
  21.             focusError();
  22.             $(window).on('load', focusError);
  23.         }
  24.     },
  25.     Helper: {
  26.         switch: function () {
  27.             $('body').on('click', '.ms-input', function (e) {
  28.                 if ($(this).closest('.material-switch').hasClass('disabled')) {
  29.                     e.preventDefault();
  30.                     return false;
  31.                 }
  32.  
  33.                 var status = $(this).attr('checked') == 'checked';
  34.                 var id = $(this).data('id');
  35.                 var route = $(this).data('route');
  36.                 var $label = $(this).closest('.material-switch').find('label');
  37.  
  38.                 $.ajax({
  39.                     url: Helper.Router.route(route, ({id: id, status: status ? 0 : 1})),
  40.                     type: 'post',
  41.                     dataType: 'json',
  42.                     async: false,
  43.                     success: function (response) {
  44.                         if (response.success) {
  45.                             $(this).attr('checked', status ? '' : 'checked');
  46.                         } else {
  47.                             $(this).attr('checked', status ? 'checked' : '');
  48.                             console.log(status);
  49.                             console.log($label);
  50.                             if (status) {
  51.                                 console.log('deactivating');
  52.                                 $label.addClass('ms-error-deactivating');
  53.  
  54.                             } else {
  55.                                 console.log('activating');
  56.                                 $label.addClass('ms-error-activating');
  57.                             }
  58.                             swal("Error!", "Qualcosa è andato storto. Riprova!"!", "error");
  59.                         }
  60.                     },
  61.                     error: function (response) {
  62.                         $(this).attr('checked', status);
  63.                         $(this).closest('.material-switch').find('label').addClass('ms-error');
  64.                         swal("Error!", "Qualcosa è andato storto. Riprova!", "error");
  65.                     }
  66.                 });
  67.             });
  68.         },
  69.         selectAll: {
  70.             $allItemIds: null,
  71.             $quantity: null,
  72.             ids: {
  73.                 add: function (id) {
  74.                     id = parseInt(id);
  75.                     var ids = [];
  76.                     try {
  77.                         ids = JSON.parse(Admin.Helper.selectAll.$allItemIds.val())
  78.                     }
  79.                     catch (e) {
  80.  
  81.                     }
  82.                     if (ids.indexOf(id) === -1) {
  83.                         ids.push(id);
  84.                     }
  85.                     Admin.Helper.selectAll.$allItemIds.val(JSON.stringify(ids));
  86.                 },
  87.                 remove: function (id) {
  88.                     id = parseInt(id);
  89.                     var ids = [];
  90.                     try {
  91.                         ids = JSON.parse(Admin.Helper.selectAll.$allItemIds.val())
  92.                     }
  93.                     catch (e) {
  94.  
  95.                     }
  96.                     if (ids.indexOf(id) !== -1) {
  97.                         ids.splice(ids.indexOf(id), 1);
  98.                     }
  99.                     Admin.Helper.selectAll.$allItemIds.val(JSON.stringify(ids));
  100.                 }
  101.             },
  102.             init: function () {
  103.                 var $checkboxes = $('input.check-all-checkbox');
  104.                 Admin.Helper.selectAll.$allItemIds = $('#allItemIds');
  105.                 Admin.Helper.selectAll.$quantity = $('.items-selected-qty');
  106.                 var $selectAllItems = $('#select-all');
  107.                 var $selectAllVisible = $('#select-all-visibles');
  108.  
  109.                 $selectAllVisible.on('ifChecked ifUnchecked', function (event) {
  110.  
  111.                     if (event.type == 'ifChecked') {
  112.                         $checkboxes.iCheck('check');
  113.  
  114.                     } else {
  115.                         $checkboxes.iCheck('uncheck');
  116.                     }
  117.  
  118.                 });
  119.  
  120.                 $checkboxes.on('ifChecked ifUnchecked', function (event) {
  121.                     var checked = parseInt(Admin.Helper.selectAll.$quantity.text());
  122.                     if (event.type == 'ifChecked') {
  123.                         Admin.Helper.selectAll.ids.add($(this).val());
  124.                         $('.selected-items-menu .btn.action').removeClass('disabled').attr('disabled', false);
  125.                         checked++;
  126.                     } else {
  127.                         Admin.Helper.selectAll.ids.remove($(this).val());
  128.  
  129.                         checked--;
  130.                         if (checked == 0) {
  131.                             $('#select-all').iCheck('uncheck');
  132.                             $('.selected-items-menu .btn.action').addClass('disabled').attr('disabled', true);
  133.  
  134.                         }
  135.                     }
  136.  
  137.                     Admin.Helper.selectAll.$quantity.html(checked);
  138.                 });
  139.  
  140.  
  141.                 $selectAllItems.click(function () {
  142.  
  143.                     if (Admin.Helper.selectAll.$allItemIds.val() == $('#allItemIdsTmp').val()) {
  144.                         $selectAllVisible.iCheck('uncheck');
  145.                         $checkboxes.iCheck('uncheck');
  146.                         Admin.Helper.selectAll.$allItemIds.val('');
  147.                         Admin.Helper.selectAll.$quantity.html(0);
  148.                         $('.selected-items-menu .btn.action').addClass('disabled').attr('disabled', true);
  149.                         $selectAllItems.removeClass('btn-primary');
  150.                         $selectAllItems.addClass('btn-white');
  151.                     } else {
  152.                         $selectAllVisible.iCheck('check');
  153.                         $checkboxes.iCheck('check');
  154.                         $('.selected-items-menu .btn.action').removeClass('disabled').attr('disabled', false);
  155.                         var allIds = $('#allItemIdsTmp').val();
  156.                         Admin.Helper.selectAll.$allItemIds.val(allIds);
  157.                         var productIds = JSON.parse(allIds);
  158.                         Admin.Helper.selectAll.$quantity.html(productIds.length);
  159.                         $selectAllItems.addClass('btn-primary');
  160.                         $selectAllItems.removeClass('btn-white');
  161.                     }
  162.  
  163.                 });
  164.  
  165.                 $('#select-all-form,#bulk-price-modal').find('[data-alerttitle]').click(function () {
  166.                     if ($(this).hasClass('disabled')) {
  167.                         return false;
  168.                     }
  169.                     var config = {title: $(this).data('alerttitle')};
  170.                     if ($(this).parents('#select-all-form').length) {
  171.                         config.form = '#select-all-form';
  172.  
  173.                     }
  174.                     else {
  175.                         config.form = '#select-all-form-modal';
  176.  
  177.                     }
  178.                     if (!!$(this).attr('data-alertcolor')) {
  179.                         config.confirmButtonColor = $(this).attr('data-alertcolor');
  180.                     }
  181.                     return Admin.Helper.selectAll.alert(this, config);
  182.  
  183.                 });
  184.             },
  185.             alert: function (element, config) {
  186.                 var config = $.extend({}, Default.selectAllAlert, config);
  187.                 config.text = config.text.replace('%d', $('.items-selected-qty ').text())
  188.                 swal(config, function (isConfirm) {
  189.                     if (isConfirm) {
  190.                         var $selectAllForm = $(config.form);
  191.                         $selectAllForm.find('input[name="action"]').val($(element).val());
  192.                         $selectAllForm.submit()
  193.                     }
  194.                 });
  195.                 return false;
  196.  
  197.             }
  198.  
  199.         },
  200.  
  201.     /*        datePicker: {
  202.          settings: {
  203.          format: 'YYYY-MM-DD',
  204.          pickTime: false,
  205.          useStrict: true,
  206.          direction: 'bottom',
  207.          // locale: '{{ Lang::locale() }}'
  208.          },
  209.          init: function (selector) {
  210.          $(selector).datetimepicker(Admin.Helper.datePicker.settings);
  211.          },
  212.          dateOfBirth: function () {
  213.          $("#date_of_birth").datepicker({
  214.          changeMonth: true,
  215.          changeYear: true,
  216.          });
  217.  
  218.          }
  219.          },
  220.  
  221.          dateTimePicker: {
  222.          settings: {
  223.          format: 'YYYY-MM-DD HH:mm',
  224.          pickTime: true,
  225.          pick12HourFormat: false,
  226.          useStrict: true,
  227.          direction: 'bottom',
  228.          // locale: '{{ Lang::locale() }}'
  229.          },
  230.          init: function (selector) {
  231.          $(selector).datetimepicker(Admin.Helper.dateTimePicker.settings);
  232.          }
  233.          },*/},*/
  234.  
  235.         wysiwyg: {
  236.             init: function (selector) {
  237.             }
  238.         },
  239.  
  240.         delete: function (element, config) {
  241.             var config = $.extend({
  242.                 title: "Sicuro di voler eliminare questo elemento?",
  243.                 text: '',
  244.                 showConfirmButton: true,
  245.                 showCancelButton: true,
  246.                 confirmButtonColor: "#dd6b55",
  247.                 confirmButtonText: "Sì, eliminalo",
  248.                 cancelButtonText: "No, annulla",
  249.                 closeOnConfirm: true,
  250.                 closeOnCancel: true,
  251.                 type: "warning"
  252.             }, config);
  253.             swal(config, function (isConfirm) {
  254.                 if (isConfirm) {
  255.                     window.location.replace(element.href);
  256.                 } else {
  257.  
  258.                 }
  259.             });
  260.  
  261.             return false;
  262.         }
  263.     },
  264.     ListBox: {
  265.         init: function () {
  266.             $('.list-box .list-group-item'click'click', function () {
  267.                 var text = $(this).text();
  268.                 var input = $(this).parents('.list-box').attr(');
  269.                var slug = Helper.slug(text);
  270.                var data = $(this).attr('attr('data');
  271.  
  272.                 if (!$(this).parents('.list-box').find('.form-control span.tag-item-' + slug).is(':visible')) {
  273.                     var html =
  274.                         '<span class="tag-item-' + slug + ' search-choice">' +
  275.                         '<input type="text" class="display-none" name="' + input + '[]" readonly="readonly" value="' + data + '" />' +
  276.                         '' + text + '' +
  277.                         '<i class="fa fa-times" title="Remove"></i>' +
  278.                         '</span>';
  279.                     $(this).parents('.list-box').find('.form-control').append(html);
  280.                 }
  281.             });
  282.  
  283.             $('body'click'click', '.list-box .form-control span i', function () {
  284.                 $(this).parent('span').remove();
  285.             });
  286.         }
  287.     },
  288.     Size: {
  289.         init: function () {
  290.  
  291.             $('.size-add').on(", function () {
  292.                var i = $('#total-sizes').val();
  293.                var html = $('#size-template').html().split('[0]').join('[' + i + ']').split('_0').join('_' + i);
  294.                var $template = $(html);
  295.  
  296.                i++;
  297.  
  298.                $('#total-sizes').val(i);
  299.                $('.sizes .list').append($template);
  300.            });
  301.            $("   $(".sizes .list").sortable({
  302.                 containerSelector: '.sizes .list',
  303.                 itemSelector: '.col',
  304.                 placeholder: '<div class="col col-sm-12 text-center">Sposta qui</div>',
  305.                 exclude: '.sizes-icons'
  306.             });
  307.  
  308.         }
  309.     },
  310.     Chips: {
  311.         init: function (selector, multiple, options) {
  312.  
  313.             if (typeof options == 'undefined') {
  314.                 options = [];
  315.             }
  316.  
  317.             var padding = typeof options.padding == 'undefined' ? 1 : options.padding;
  318.             var remote = typeof options.remote == 'undefined' ? {} : options.remote;
  319.             var url = typeof remote.url == 'undefined' ? '' : remote.url;
  320.             var link = typeof options.link == 'undefined' ? '' : options.link;
  321.             var isAjax = url != '';
  322.             selector = selector.replace( '\\[, '\\[').replace( '\\], '\\]');
  323.             $(selector).on(', 'ck', '.chips-list-item', function () {
  324.                 var $this = $(this);
  325.                 var text = $this.find(').text();
  326.                var input = $this.parents('ents('.chips').attr(');
  327.                var slug = $this.attr('attr('data-slug');
  328.                 var data = $this.attr('data-id');
  329.                 var isMultiple = multiple == 1;
  330.                 if (!$(this).parents('.chips').find('.chips-selections span.chips-item-' + data).is(':visible') && (isMultiple || $(this).parents('.chips').find('.chips-selections').children().length == 0)) {
  331.                     var newInput = isMultiple ? input + '[]' : input;
  332.                     var html =
  333.                         '<span class="chips-item-' + data + '">' +
  334.                         '<input type="text" class="display-none" name="' + newInput + '" readonly="readonly" value="' + data + '" />' +
  335.                         '<strong>' + text + '</strong>' +
  336.                         '<i class="fa fa-times" data-id="' + data + '" data-slug="' + slug + '" title="Remove"></i>' +
  337.                         '</span>';
  338.                     $(this).parents('.chips').find('.chips-selections').append(html);
  339.                     $(this).addClass('selected');
  340.                 } else if (true) {
  341.                     $(this).parents('.chips').find('.chips-selections').find('.chips-item-' + data + '').remove();
  342.                     $(this).removeClass('selected');
  343.  
  344.                 }
  345.             });
  346.  
  347.             $(selector).on(', 'ck', '.chips-selections span i', function (e) {
  348.                 $(selector + ' .chips-list-item[data-id=' + $(this).attr('data-id') + ']').removeClass('selected');
  349.                 $(this).parent('span').remove();
  350.                 e.stopPropagation();
  351.             });
  352.  
  353.             var xhr;
  354.  
  355.             $(selector).on(', 'up', '.chips-search input', function () {
  356.                 var filter = $(this).val();
  357.                 if (filter.length >= padding || filter.length == 0) {
  358.                     if (isAjax) {
  359.                         $(selector).find('.chips-list').empty();
  360.                         $(selector).find('.chips-list').append('<div class="text-xs-center pa10"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i> <span class="sr-only">Loading...</span></div>');
  361.  
  362.                         remote.queryString = filter;
  363.  
  364.                         if (xhr && xhr.readyState != 4) {
  365.                             xhr.abort();
  366.                         }
  367.  
  368.                         xhr = $.post(url, remote, function (data) {
  369.                             $(selector).find('.chips-list').empty();
  370.                             jQuery.each(data, function (key, val) {
  371.                                 var selected = val.selected ? 'selected' : '';
  372.                                 var chip = '<div data-id="' + key + '" id="' + key + '_type_attributes_ids" data-slug="' + val.slug + '" class="chips-list-item ' + selected + '">' +
  373.                                     '<a href="javascript:void(0);">' +
  374.                                     '<span class="text">' + val.label + '</span><span class="filter">' + val.label + '</span>' +
  375.                                     '</a>';
  376.                                 if (typeof val.url != 'undefined') {
  377.                                     chip += '<span class="pull-right"><a href="' + val.url + '" target="_blank"><i class="fa fa-external-link"></i></a></span>';
  378.                                 }
  379.                                 chip += '</div>';
  380.                                 $(selector).find('.chips-list').append(chip);
  381.                             });
  382.                         }, 'json');
  383.                     } else {
  384.                   //if (val.indexOf(filter) !== -1) {
  385. -1) {
  386.                         $(selector).find(".chips-list-item:not(:contains(" + filter + "))").hide();
  387.                         $(selector).find(".chips-list-item:contains(" + filter + ")").show();
  388.                   //} else {
  389. lse {
  390.                   //    jQuery(selector).find(".chips-list a").show();
  391. ow();
  392.                   //}
  393.   //}
  394.                     }
  395.                 }
  396.             });
  397.         }
  398.     },
  399.     TagsDropdown: {
  400.         init: function () {
  401.             $('.tags-dropdown-button'click'click', function (event) {
  402.                 $(this).parent().toggleClass('open');
  403.             });
  404.             $('body'click'click', function (e) {
  405.                 if ($('.tags-dropdown').parent().has(e.target).length === 0) {
  406.                     $('.tags-dropdown-button').parent().removeClass('open');
  407.                 }
  408.             });
  409.         }
  410.     },
  411.     BrandsDropdown: {
  412.         init: function () {
  413.             $('.brands-dropdown-button'click'click', function (event) {
  414.                 $(this).parent().toggleClass('open');
  415.             });
  416.             $('body'click'click', function (e) {
  417.                 if ($('.brands-dropdown').parent().has(e.target).length === 0) {
  418.                     $('.brands-dropdown-button').parent().removeClass('open');
  419.                 }
  420.             });
  421.         }
  422.     },
  423.     LanguageSwitcher: {
  424.         init: function () {
  425.             $('.language-selector'click'click', '.btn-language', function () {
  426.                 var language = $(this).data('language');
  427.                 $('.btn-language').removeClass('active');
  428.                 $(this).addClass('active');
  429.                 if (language == 'all') {
  430.                     $('.panel-language').show();
  431.                     Helper.Preferences.set('admin_edit_language', 'all');
  432.                 } else {
  433.                     Helper.Preferences.set('admin_edit_language', language);
  434.                     $('.panel-language').hide();
  435.                     $('.panel-language[data-language=' + language + ']').show();
  436.                 }
  437.  
  438.             });
  439.  
  440.         }
  441.     },
  442.     Dashboard: {
  443.         switchStats: function () {
  444.             $('.stores-order-stats'click touchstart'start', '.btn-range', function () {
  445.                 $('.btn-range').removeClass('active');
  446.                 $(this).addClass('active');
  447.  
  448.                 if ($(this).hasClass('range-today')) {
  449.                     $(this).closest('.row-stats').find('.today').removeClass('hidden');
  450.                     $(this).closest('.row-stats').find('.monthly').addClass('hidden');
  451.                     $(this).closest('.row-stats').find('.annual').addClass('hidden');
  452.  
  453.                 } else if ($(this).hasClass('range-monthly')) {
  454.                     $(this).closest('.row-stats').find('.today').addClass('hidden');
  455.                     $(this).closest('.row-stats').find('.monthly').removeClass('hidden');
  456.                     $(this).closest('.row-stats').find('.annual').addClass('hidden');
  457.  
  458.                 } else if ($(this).hasClass('range-annual')) {
  459.                     $(this).closest('.row-stats').find('.today').addClass('hidden');
  460.                     $(this).closest('.row-stats').find('.monthly').addClass('hidden');
  461.                     $(this).closest('.row-stats').find('.annual').removeClass('hidden');
  462.                 }
  463.             });
  464.         }
  465.     },
  466.     Orders: {
  467.         updateOrderStatus: function (orderStatusesIcons) {
  468.             var currentValues = {};
  469.  
  470.             $(document).ready(function () {
  471.                 $(".order-status").each(function () {
  472.                     currentValues[$(this).attr("id")] = $(this).val();
  473.                 });
  474.             });
  475.  
  476.             $('.order-status'change'hange', function () {
  477.                 var inputSelect = $(this);
  478.                 var config = $.extend({
  479.                     title: "Sei sicuro di aggiornare lo stato questo ordine?",
  480.                     text: '',
  481.                     showConfirmButton: true,
  482.                     showCancelButton: true,
  483.                     confirmButtonColor: "#dd6b55",
  484.                     confirmButtonText: "Sì, aggiorna",
  485.                     cancelButtonText: "No, annulla",
  486.                     closeOnConfirm: true,
  487.                     closeOnCancel: true,
  488.                     type: "
  489.                }, config);
  490.                swal(config, function (isConfirm) {
  491.                    if (isConfirm) {
  492.                        id = (inputSelect.attr('id')).replace('order_status_', '');
  493.                        val = inputSelect.find("t.find(":selected").val();
  494.                         $.ajax({
  495.                             url: Helper.Router.route('admin_orders_update', ({id: id, order_status_id: val})),
  496.                             type: 'post',
  497.                             dataType: 'json',
  498.                             async: false,
  499.                             success: function (response) {
  500.                                 currentValues[inputSelect.attr("id")] = val;
  501.                                 inputSelect.closest('tr'i.status-icon'us-icon'class'('class', 'status-icon ' + orderStatusesIcons[val]);
  502.                                 swal("Good job!", "Ordine aggiornato con successo", ");
  503.                            },
  504.                            error: function (response) {
  505.                                swal("  swal("Error!", "Qualcosa è andato storto. Riprova!", "error");
  506.                             }
  507.                         });
  508.                     } else {
  509.                         inputSelect.val(currentValues[inputSelect.attr("id")]);
  510.                         return false;
  511.                     }
  512.  
  513.                 });
  514.             });
  515.         },
  516.         manageItems: function () {
  517.             var items = $('#items-table >tbody >tr');
  518.             var indexItems = items.length;
  519.  
  520.             $('#items-table').on('click', '.delete-item', function () {
  521.                 $(this).closest("tr").remove();
  522.             });
  523.  
  524.             $(').on('tem').on('click', function () {
  525.                 $('#items-table'<tr><td width="50%"><input class="form-control" name="items['e="items[' + indexItems + '][name]" type="text" value=""></td><td><input class="form-control" step="1"y" min="1" name="items[' + indexItems + '][quantity]" type="number" value=""></td><td><input class="form-control" step="0"y" min="0" name="items[' + indexItems + '][price]" type="number" value=""></td><td><input class="form-control" step="0"y" min="0" name="items[' + indexItems + '][tax]" type="number" value=""></td><td><input class="form-control" step="0"y" min="0" name="items[' + indexItems + '][total]" type="number" value=""></td><td width="40"><button class="btn btn-link delete-item" type="button" aria-expanded="false"><i class="fa fa-times"></i></button></td></tr>');
  526.                 $('#items-table').removeClass('hidden');
  527.                 indexItems++;
  528.             });
  529.         },
  530.     },
  531.     Stores: {
  532.         manageOtherCurrencies: function () {
  533.             var currencies = $('#currencies-table >tbody >tr');
  534.             var indexOtherCurrencies = currencies.length;
  535.             var currenciesOptions = '';
  536.             var currentCurrency = $(').find('y').find('option:selected').val();
  537.  
  538.             $.each(Config.allCurrencies, function (code, infos) {
  539.                 currenciesOptions += '<option value="' + code + '">' + infos.name + ';
  540.            });
  541.  
  542.            $('       $('#currencies-table').on('click', '.delete-item', function () {
  543.                 $(this).closest("tr").remove();
  544.             });
  545.  
  546.             $('.add-currency').on('click', function () {
  547.                 $('#currencies-table'<tr><td><select class="form-control" name="other_currencies['rrencies[' + indexOtherCurrencies + '][currency]">' + currenciesOptions + '</select></td><td width="5%"></td><td><div class="input-group"><span class="input-group-addon"> ' + Config.allCurrencies[currentCurrency].symbol_html + ' </span><input class="form-control" step="0"y" min="0" name="other_currencies[' + indexOtherCurrencies + '][conversion]" type="number" value=""></div></td><td width="40"><button class="btn btn-link delete-item" type="button" aria-expanded="false"><i class="fa fa-times"></i></button></td></tr>');
  548.                 $('#currencies-table').removeClass('hidden');
  549.                 indexOtherCurrencies++;
  550.             });
  551.  
  552.             $('#currency-field').on('change', function () {
  553.                 currentCurrency = $(this).find('option:selected').val();
  554.                 $('#currencies-table .input-group-addon').html(Config.allCurrencies[currentCurrency].symbol_html);
  555.             });
  556.         },
  557.     },
  558.     Users: {
  559.         manageAddresses: function () {
  560.             var addresses = $('#addresses-panel .panel');
  561.             var indexAddresses = addresses.length;
  562.  
  563.             $('#addresses-panel').on('click', '.delete-address', function () {
  564.                 $(this).closest("tr").remove();
  565.             });
  566.  
  567.             $('.add-address').on('click', function () {
  568.                 newAddress = $('.panel.hidden').clone()
  569.                 newAddress.find("input[name*='newAddresses[]']").each(function () {
  570.                     inputName = $(this).attr('name');
  571.                     newInputName = inputName.replace('newAddresses[]', 'addresses[' + indexAddresses + ']');
  572.                     $(this).attr('id', newInputName);
  573.                     $(this).attr('name', newInputName);
  574.                 });
  575.                 newAddress.find("select[name*='newAddresses[]']").each(function () {
  576.                     selectName = $(this).attr('name');
  577.                     newSelectName = selectName.replace('newAddresses[]', 'addresses[' + indexAddresses + ']');
  578.                     $(this).attr('id', newSelectName);
  579.                     $(this).attr('name', newSelectName);
  580.                 });
  581.                 newAddress.find(".chips").each(function () {
  582.                     chipsName = $(this).attr('input');
  583.                     newChipsName = chipsName.replace('newAddresses[]', 'addresses[' + indexAddresses + ']');
  584.                     $(this).attr('id' + newChipsName);
  585.                    $(this).attr('is).attr('input', newChipsName);
  586.  
  587.           // List items
  588. ist items
  589.                     chipsList = $(this).find('.chips-list');
  590.                     chipsList.children().each(function () {
  591.                         chipsItemName = $(this).attr('id');
  592.                         newChipsItemName = chipsItemName.replace('newAddresses[]', 'addresses[' + indexAddresses + ']');
  593.                         $(this).attr('id', newChipsItemName);
  594.                     });
  595.  
  596.           // Script
  597. // Script
  598.                     chipsScript = $(this).find("script[for='chips-" + chipsName + "']");
  599.                     chipsScript.attr('for' + newChipsName);
  600.                    chipsScript.html('ipt.html('$(function () { Admin.Chips.init("#chips-addresses[' + indexAddresses + '][country]", 0); });');
  601.                 });
  602.       // newAddress.find("label[for*='newAddresses[]']").each(function () {
  603. tion () {
  604.       //     labelName = $(this).attr('name');
  605. ('name');
  606.       //     newLabelName = labelName.replace('newAddresses[]', 'addresses['+indexAddresses+']');
  607. ses+']');
  608.       //     $(this).attr('for', newLabelName);
  609. belName);
  610.       // });
  611.    // });
  612.                 newAddress.removeClass('hidden').appendTo('#addresses-panel');
  613.  
  614.       // Script init
  615. ript init
  616.                 Admin.Chips.init("#chips-addresses[" + indexAddresses + "][country]", 0);
  617.  
  618.       // Add require attr
  619. uire attr
  620.                 $("input[name='addresses[" + indexAddresses + ").prop('required', true);
  621.                $("       $("input[name='addresses[" + indexAddresses + "][surname]'required''required', true);
  622.                 $("input[name='addresses[" + indexAddresses + "][address_1]'required''required', true);
  623.                 $("input[name='addresses[" + indexAddresses + "][zip_code]'required''required', true);
  624.                 $("input[name='addresses[" + indexAddresses + ").prop('required', true);
  625.  
  626.                indexAddresses++;
  627.            });
  628.  
  629.            $('#addresses-panel').on('click', '.remove-address', function () {
  630.                $(this).closest(".closest(".panel.panel-default").slideToggle(300, "swing", function () {
  631.                     $(this).closest(".panel.panel-default").remove();
  632.                 });
  633.             });
  634.         }
  635.     },
  636.     Warehouses: {
  637.         init: function (associatedStores) {
  638.             $('.storeSelector').find('.form-group').each(function () {
  639.                 if ($.inArray($(this).data('store').toString(), associatedStores) >= 0 && $(this).find('input').prop('checked') == false) {
  640.                     $(this).addClass('disabled');
  641.                     $(this).find('input').attr('disabled', 'disabled');
  642.                 }
  643.             })
  644.         }
  645.     },
  646.     Products: {
  647.         typeForm: function () {
  648.             $('#type').change(function () {
  649.                 $('.type_form').each(function () {
  650.                     $(this).addClass('hidden');
  651.                 });
  652.                 $('#type_form_' + $(this).val()).removeClass('hidden');
  653.             });
  654.             $('#type').change();
  655.         }/*manageTypeAttributes: function () {
  656.          $('#associated-product-table').on('click', '.delete-item', function () {
  657.          $(this).closest("tr").remove();
  658.          });
  659.  
  660.          $('.add-associated-product').on('click', function () {
  661.          $('#associated-product-table').removeClass('hidden');
  662.  
  663.          var indexAssociatedProducts = $('#associated-product-table >tbody >tr').length - 1;
  664.  
  665.          var clonedSchema = $('.associated_product_schema').clone().removeClass('hidden').removeClass('associated_product_schema');
  666.  
  667.          clonedSchema.find('select').each(function () {
  668.          this.name = this.name.replace('__associated_product_name__', 'type_attributes[' + indexAssociatedProducts + ']');
  669.          $(this).select2();
  670.          });
  671.          $('#associated-product-table tbody').append(clonedSchema);
  672.          });
  673.  
  674.          }*/       }*/
  675.   //Improvement dropdown selector
  676.  selector
  677.     LabelUpdate: {
  678.         initCategory: function () {
  679.             var $categoryLabel = $('#dropdown-category-label');
  680.  
  681.             $('#chips-categories').find('.chips-list-item').on('click', function () {
  682.                 var $selected = $(this).attr('data-id');
  683.                 var $value = $('#chips-categories').find('.chips-selections-box').find('input').val();
  684.                 var $label = 'Nessuna categoria';
  685.  
  686.                 console.log($selected);
  687.                 console.log($value);
  688.  
  689.                 if ($selected != $value && $value != '') {
  690.                     $categoryLabel.text('');
  691.                     $label = $('#chips-categories').find('.chips-selections-box').find('strong').text();
  692.                     console.log($label);
  693.                 } else {
  694.                     $categoryLabel.text('');
  695.                     $label = $(this).find('span[class = form-text]').text();
  696.                     console.log($label);
  697.                 }
  698.                 $categoryLabel.text($label);
  699.             })
  700.         },
  701.         initBrand: function () {
  702.             var $categoryLabel = $('#dropdown-brand-label');
  703.  
  704.             $('#chips-brands').find('.chips-list-item').on('click', function () {
  705.                 var $selected = $(this).attr('data-id');
  706.                 var $value = $('#chips-brands').find('.chips-selections-box').find('input').val();
  707.                 var $label = 'Nessuna categoria';
  708.  
  709.                 console.log($selected);
  710.                 console.log($value);
  711.  
  712.                 if ($selected != $value && $value != '') {
  713.                     $categoryLabel.text('');
  714.                     $label = $('#chips-brands').find('.chips-selections-box').find('strong').text();
  715.                     console.log($label);
  716.                 } else {
  717.                     $categoryLabel.text('');
  718.                     $label = $(this).find('span[class = form-text]').text();
  719.                     console.log($label);
  720.                 }
  721.                 $categoryLabel.text($label);
  722.             })
  723.         }
  724.     },
  725.  
  726.     SlideshowInput: {
  727.         init: function () {
  728.             var $selector = $('#slideshow-field');
  729.             var $inputImage = $('#slideshow-image-field');
  730.             $selector.on('change', function () {
  731.                 if ($selector.val() == 1) {
  732.                     $inputImage.removeClass('display-none');
  733.                 } else {
  734.                     $inputImage.addClass('display-none');
  735.                 }
  736.             });
  737.  
  738.             $(document).on('ready', function () {
  739.                 if ($selector.val() == 1) {
  740.                     $inputImage.removeClass('display-none');
  741.                 } else {
  742.                     $inputImage.addClass('display-none');
  743.                 }
  744.             })
  745.  
  746.         }
  747.     },
  748.  
  749.     Homepage: {
  750.         manageSlides: function () {
  751.             var sliders = $('.slides-panel');
  752.             var indexSliders = [];
  753.             sliders.each(function(i){
  754.                 var sliderLocale = $(this).data('locale');
  755.                 indexSliders[sliderLocale] = $(this).children('.panel').length;
  756.             });
  757.  
  758.             $('.slides-panel').on('click', '.delete-slide', function () {
  759.                 $(this).closest("tr").remove();
  760.             });
  761.  
  762.             $('.add-slide').on('click', function () {
  763.                 var locale = $(this).data('locale');
  764.                 newSlide = $('.panel.hidden').clone();
  765.  
  766.       // Inputs
  767. // Inputs
  768.                 newSlide.find("input[name*='newSlide[]']").each(function () {
  769.                     inputName = $(this).attr('name');
  770.                     newInputName = inputName.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  771.                     $(this).attr('id', newInputName);
  772.                     $(this).attr('name', newInputName);
  773.                 });
  774.  
  775.       // Image uploader
  776.  uploader
  777.                 newSlide.find(".image-uploader-button-add").each(function () {
  778.                     onclickFunction = $(this).attr('onclick');
  779.                     newOnclickFunction = onclickFunction.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  780.                     $(this).attr('onclick', newOnclickFunction);
  781.                 });
  782.                 newSlide.find(".gallery-close").each(function () {
  783.                     onclickFunction = $(this).attr('onclick');
  784.                     newOnclickFunction = onclickFunction.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  785.                     $(this).attr('onclick', newOnclickFunction);
  786.                 });
  787.                 newSlide.find(".img-responsive.thumbnail").each(function () {
  788.                     imgId = $(this).attr('id');
  789.                     newImgId = imgId.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  790.                     $(this).attr('id', newImgId);
  791.                     imgAlt = $(this).attr('alt');
  792.                     newImgAlt = imgAlt.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  793.                     $(this).attr('alt', newImgAlt);
  794.                 });
  795.                 newSlide.find("label").each(function () {
  796.                     labelFor = $(this).attr('for');
  797.                     newLabelFor = labelFor.replace([\]/g, locale+', locale+' + indexSliders[locale] + 'ocale] + ']');
  798.                     $(this).attr('for', newLabelFor);
  799.                 });
  800.  
  801.                 newSlide.removeClass('hidden').appendTo('#slides-panel-'+locale);
  802.  
  803.  
  804.       // Add require attr
  805. uire attr
  806.       // $("input[name='slides[" + indexSlides + "][subtitle]']").prop('required', true);
  807. ', true);
  808.       // $("input[name='slides[" + indexSlides + "][title]']").prop('required', true);
  809. ', true);
  810.       // $("input[name='slides[" + indexSlides + "][cta_label]']").prop('required', true);
  811. ', true);
  812.       // $("input[name='slides[" + indexSlides + "][cta_link]']").prop('required', true);
  813. ', true);
  814.  
  815.                 indexSliders[locale]++;
  816.             });
  817.  
  818.             $('.slides-panel').on('click', '.remove-slide', function () {
  819.                 $(this).closest(".panel.panel-default").slideToggle(300, "swing", function () {
  820.                     $(this).closest(".panel.panel-default").remove();
  821.                 });
  822.             });
  823.         }
  824.     },
  825.  
  826.  
  827.     Tabs: {
  828.         initVisible: function () {
  829.             $('.nav.nav-tabs').each(function () {
  830.                 $(this).children(":not('.tab-dropdown')").each(function () {
  831.                     $(this).attr('data-width', this.offsetWidth);
  832.                 });
  833.             });
  834.             $(window).resize(Admin.Tabs.recalculateVisible);
  835.   // $(window).on("load", Admin.Tabs.recalculateVisible);
  836. Visible);
  837.             $(Admin.Tabs.recalculateVisible);
  838.         },
  839.         recalculateVisible: function () {
  840.  
  841.             $('.nav.nav-tabs').each(function () {
  842.                 var width = 0;
  843.                 if ($(this).children('.hidden:not(.tab-dropdown)').length) {
  844.                     wi// the width of the "other" dropdown
  845.  dropdown
  846.                 }
  847.                 $(this).children(':not(.hidden,.tab-dropdown)').each(function () {
  848.                     width += parseInt($(this).attr('data-width'));
  849.                 });
  850.  
  851.                 if (this.offsetWidth < width) {
  852.                     var $lastVisible = $(this).children(":not('.hidden,.tab-dropdown'):last");
  853.  
  854.                     $(this).find(".tab-dropdown .dropdown-menu").prepend($lastVisible.clone());
  855.           // it's too big
  856. s too big
  857.                     $lastVisible.addClass('hidden');
  858.                     if ($lastVisible.hasClass('active')) {
  859.                         $(this).find(".tab-dropdown").addClass('active');
  860.                     }
  861.                     setTimeout(Admin.Tabs.recalculateVisible, 10);
  862.                     setTimeout(Admin.Tabs.recalculateDropdown, 10);
  863.                 } else {
  864.  
  865.           // get another item and try to add it
  866. to add it
  867.                     var $firstHidden = $(this).children(".hidden:not('.tab-dropdown'):first");
  868.  
  869.                     if ($firstHidden.length) {
  870.                         width += parseInt($firstHidden.attr('data-width'));
  871.                         if (this.offsetWidth > width) {
  872.  
  873.                             var $dropDownItem = $(this).find(".tab-dropdown .dropdown-menu").find('[href="' + $firstHidden.find('href'ttr('"]'f') + '"]').parent();
  874.                             if ($dropDownItem.hasClass('active')) {
  875.                                 $firstHidden.addClass('active');
  876.                                 $(this).find(".tab-dropdown").removeClass('active');
  877.  
  878.                             }
  879.                             $dropDownItem.remove();
  880.                             $firstHidden.removeClass('hidden');
  881.                             setTimeout(Admin.Tabs.recalculateVisible, 10);
  882.                             setTimeout(Admin.Tabs.recalculateDropdown, 10);
  883.  
  884.                         }
  885.                     }
  886.                 }
  887.             });
  888.  
  889.         },
  890.         recalculateDropdown: function () {
  891.  
  892.             var $navTabs = $('.nav.nav-tabs');
  893.  
  894.             $navTabs.each(function () {
  895.                 var $this = $(this);
  896.                 if ($this.children(".hidden:not(.tab-dropdown)").length) {
  897.                     $this.find('.tab-dropdown').removeClass('hidden');
  898.                     if ($this.children(".hidden:not(.tab-dropdown)").find('.mdi-alert').length) {
  899.                         $this.find('.dropdown-alert-container').removeClass('hidden');
  900.                     } else {
  901.                         $this.find('.dropdown-alert-container').addClass('hidden');
  902.                     }
  903.                 } else {
  904.                     $this.find('.tab-dropdown').addClass('hidden');
  905.                 }
  906.             });
  907.  
  908.         },
  909.  
  910.  
  911.     }
  912. };
  913.  
  914. $(function () {
  915.     Admin.i

Raw Paste


Login or Register to edit or fork this paste. It's free.