/* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ var fees_is_hide = false; $(document).ready(function() { bind_inputs(); initCarrierWizard(); if (parseInt($('input[name="is_free"]:checked').val())) is_freeClick($('input[name="is_free"]:checked')); displayRangeType(); $('#attachement_fileselectbutton').click(function(e) { $('#carrier_logo_input').trigger('click'); }); $('#attachement_filename').click(function(e) { $('#carrier_logo_input').trigger('click'); }); $('#carrier_logo_input').change(function(e) { if ($(this)[0].files !== undefined) { var files = $(this)[0].files; var name = ''; $.each(files, function(index, value) { name += value.name+', '; }); $('#attachement_filename').val(name.slice(0, -2)); } else // Internet Explorer 9 Compatibility { var name = $(this).val().split(/[\\/]/); $('#attachement_filename').val(name[name.length-1]); } }); $('#carrier_logo_remove').click(function(e) { $('#attachement_filename').val(''); }); }); function initCarrierWizard() { $("#carrier_wizard").smartWizard({ 'labelNext' : labelNext, 'labelPrevious' : labelPrevious, 'labelFinish' : labelFinish, 'fixHeight' : 1, 'onShowStep' : onShowStepCallback, 'onLeaveStep' : onLeaveStepCallback, 'onFinish' : onFinishCallback, 'transitionEffect' : 'slideleft', 'enableAllSteps' : enableAllSteps, 'keyNavigation' : false }); displayRangeType(); } function displayRangeType() { if ($('input[name="shipping_method"]:checked').val() == 1) { string = string_weight; $('.weight_unit').show(); $('.price_unit').hide(); } else { string = string_price; $('.price_unit').show(); $('.weight_unit').hide(); } is_freeClick($('input[name="is_free"]:checked')); $('.range_type').html(string); } function onShowStepCallback() { $('.anchor li a').each(function () { $(this).closest('li').addClass($(this).attr('class')); }); $('#carrier_logo_block').prependTo($('div.content').filter(function() { return $(this).css('display') != 'none' }).find('.defaultForm').find('fieldset')); resizeWizard(); } function onFinishCallback(obj, context) { $('.wizard_error').remove(); $.ajax({ type:"POST", url : validate_url, async: false, dataType: 'json', data : $('#carrier_wizard .stepContainer .content form').serialize() + '&action=finish_step&ajax=1&step_number='+context.fromStep, success : function(data) { if (data.has_error) { displayError(data.errors, context.fromStep); resizeWizard(); } else window.location.href = carrierlist_url; }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); } }); } function onLeaveStepCallback(obj, context) { if (context.toStep == nbr_steps) displaySummary(); return validateSteps(context.fromStep, context.toStep); // return false to stay on step and true to continue navigation } function displaySummary() { // used as buffer - you must not replace directly in the translation vars var tmp; // Carrier name $('#summary_name').html($('#name').val()); // Delay and pricing tmp = summary_translation_meta_informations.replace('@s2', '' + $('#delay_1').val() + ''); if ($('#is_free_on').attr('checked')) tmp = tmp.replace('@s1', summary_translation_free); else tmp = tmp.replace('@s1', summary_translation_paid); $('#summary_meta_informations').html(tmp); // Tax and calculation mode for the shipping cost tmp = summary_translation_shipping_cost.replace('@s2', '' + $('#id_tax_rules_group option:selected').text() + ''); if ($('#billing_price').attr('checked')) tmp = tmp.replace('@s1', summary_translation_price); else if ($('#billing_weight').attr('checked')) tmp = tmp.replace('@s1', summary_translation_weight); else tmp = tmp.replace('@s1', '' + summary_translation_undefined + ''); $('#summary_shipping_cost').html(tmp); // Weight or price ranges $('#summary_range').html(summary_translation_range+' '+summary_translation_range_limit); if ($('input[name="shipping_method"]:checked').val() == 1) unit = PS_WEIGHT_UNIT; else unit = currency_sign; var range_inf = summary_translation_undefined; var range_sup = summary_translation_undefined; $('tr.range_inf td input').each(function() { if (!isNaN(parseFloat($(this).val())) && (range_inf == summary_translation_undefined || parseFloat(range_inf) > parseFloat($(this).val()))) range_inf = $(this).val(); }); $('tr.range_sup td input').each(function(){ if (!isNaN(parseFloat($(this).val())) && (range_sup == summary_translation_undefined || parseFloat(range_sup) < parseFloat($(this).val()))) range_sup = $(this).val(); }); $('#summary_range').html( $('#summary_range').html() .replace('@s1', '' + range_inf +' '+ unit + '') .replace('@s2', '' + range_sup +' '+ unit + '') .replace('@s3', '' + $('#range_behavior option:selected').text().toLowerCase() + '') ); if ($('#is_free_on').attr('checked')) $('span.is_free').hide(); // Delivery zones $('#summary_zones').html(''); $('.input_zone').each(function(){ if ($(this).attr('checked')) $('#summary_zones').html($('#summary_zones').html() + '
  • ' + $(this).closest('tr').find('label').text() + '
  • '); }); // Group restrictions $('#summary_groups').html(''); $('input[name$="groupBox[]"]').each(function(){ if ($(this).attr('checked')) $('#summary_groups').html($('#summary_groups').html() + '
  • ' + $(this).closest('tr').find('td:eq(2)').text() + '
  • '); }); // shop restrictions $('#summary_shops').html(''); $('.input_shop').each(function(){ if ($(this).attr('checked')) $('#summary_shops').html($('#summary_shops').html() + '
  • ' + $(this).closest().text() + '
  • '); }); } function validateSteps(fromStep, toStep) { var is_ok = true; if ((multistore_enable && fromStep == 3) || (!multistore_enable && fromStep == 2)) { if (toStep > fromStep && !$('#is_free_on').attr('checked') && !validateRange(2)) is_ok = false; } $('.wizard_error').remove(); if (is_ok && isOverlapping()) is_ok = false; if (is_ok) { form = $('#carrier_wizard #step-'+fromStep+' form'); $.ajax({ type:"POST", url : validate_url, async: false, dataType: 'json', data : form.serialize()+'&step_number='+fromStep+'&action=validate_step&ajax=1', success : function(datas) { if (datas.has_error) { is_ok = false; $('div.input-group input').focus(function () { $(this).closest('div.input-group').removeClass('has-error'); }); displayError(datas.errors, fromStep); resizeWizard(); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); } }); } return is_ok; } function displayError(errors, step_number) { $('#carrier_wizard .actionBar a.btn').removeClass('disabled'); $('.wizard_error').remove(); str_error = ''); $('.wizard_error').fadeIn('fast'); bind_inputs(); } function resizeWizard() { resizeInterval = setInterval(function (){$("#carrier_wizard").smartWizard('fixHeight'); clearInterval(resizeInterval)}, 100); } function bind_inputs() { $('input').focus(function () { $(this).closest('div.input-group').removeClass('has-error'); $('#carrier_wizard .actionBar a.btn').not('.buttonFinish').removeClass('disabled'); $('.wizard_error').fadeOut('fast', function () { $(this).remove()}); }); $('tr.delete_range td button').off('click').on('click', function () { if (confirm(delete_range_confirm)) { index = $(this).closest('td').index(); $('tr.range_sup td:eq('+index+'), tr.range_inf td:eq('+index+'), tr.fees_all td:eq('+index+'), tr.delete_range td:eq('+index+')').remove(); $('tr.fees').each(function () { $(this).find('td:eq('+index+')').remove(); }); rebuildTabindex(); } return false; }); $('tr.fees td input:checkbox').off('change').on('change', function () { if($(this).is(':checked')) { $(this).closest('tr').find('td').each(function () { index = $(this).index(); if ($('tr.fees_all td:eq('+index+')').hasClass('validated')) { enableGlobalFees(index); $(this).find('div.input-group input:text').removeAttr('disabled'); } else disabledGlobalFees(index); }); } else $(this).closest('tr').find('td').find('div.input-group input:text').attr('disabled', 'disabled').val(''); return false; }); $('tr.range_sup td input:text, tr.range_inf td input:text').focus(function () { $(this).closest('div.input-group').removeClass('has-error'); }); $('tr.range_sup td input:text, tr.range_inf td input:text').keypress(function (evn) { index = $(this).closest('td').index(); if (evn.keyCode == 13) { if (validateRange(index)) enableRange(index); else disableRange(index); return false; } }); $('tr.fees_all td input:text').keypress(function (evn) { index = $(this).parent('td').index(); if (evn.keyCode == 13) return false; }); $('tr.range_sup td input:text, tr.range_inf td input:text').typeWatch({ captureLength: 0, highlight: false, wait: 1000, callback: function() { index = $(this.el).closest('td').index(); range_sup = $('tr.range_sup td:eq('+index+')').find('div.input-group input:text').val().trim(); range_inf = $('tr.range_inf td:eq('+index+')').find('div.input-group input:text').val().trim(); if (range_sup != '' && range_inf != '') { if (validateRange(index)) enableRange(index); else disableRange(index); } } }); $(document.body).off('change', 'tr.fees_all td input').on('change', 'tr.fees_all td input', function() {    index = $(this).closest('td').index(); val = $(this).val(); $(this).val(''); $('tr.fees').each(function () { $(this).find('td:eq('+index+') input:text:enabled').val(val); }); return false; }); $('input[name="is_free"]').off('click').on('click', function() { is_freeClick(this); }); $('input[name="shipping_method"]').off('click').on('click', function() { $.ajax({ type:"POST", url : validate_url, async: false, dataType: 'html', data : 'id_carrier='+parseInt($('#id_carrier').val())+'&shipping_method='+parseInt($(this).val())+'&action=changeRanges&ajax=1', success : function(data) { $('#zone_ranges').replaceWith(data); displayRangeType(); bind_inputs(); }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); } }); }); $('#zones_table td input[type=text]').off('change').on('change', function () { checkAllFieldIsNumeric(); }); } function is_freeClick(elt) { var is_free = $(elt); if (parseInt(is_free.val())) hideFees(); else if (fees_is_hide) showFees(); } function hideFees() { $('tr.range_inf td, tr.range_sup td, tr.fees_all td, tr.fees td').each(function () { if ($(this).index() >= 2) { $(this).find('input:text, button').val('').attr('disabled', 'disabled').css('background-color', '#999999').css('border-color', '#999999'); $(this).css('background-color', '#999999'); } }); fees_is_hide = true; } function showFees() { $('tr.range_inf td, tr.range_sup td, tr.fees_all td, tr.fees td').each(function () { if ($(this).index() >= 2) { //enable only if zone is active tr = $(this).closest('tr'); validate = $('tr.fees_all td:eq('+$(this).index()+')').hasClass('validated'); if ($(tr).index() > 2 && $(tr).find('td:eq(1) input').attr('checked') && validate || !$(tr).hasClass('range_sup') || !$(tr).hasClass('range_inf')) $(this).find('div.input-group input:text').removeAttr('disabled'); $(this).find('input:text, button').css('background-color', '').css('border-color', ''); $(this).find('button').css('background-color', '').css('border-color', '').removeAttr('disabled'); $(this).css('background-color', ''); } }); } function validateRange(index) { $('#carrier_wizard .actionBar a.btn').removeClass('disabled'); $('.wizard_error').remove(); //reset error css $('tr.range_sup td input:text').closest('div.input-group').removeClass('has-error'); $('tr.range_inf td input:text').closest('div.input-group').removeClass('has-error'); var is_valid = true; range_sup = parseFloat($('tr.range_sup td:eq('+index+')').find('div.input-group input:text').val().trim()); range_inf = parseFloat($('tr.range_inf td:eq('+index+')').find('div.input-group input:text').val().trim()); if (isNaN(range_sup) || range_sup.length === 0) { $('tr.range_sup td:eq('+index+')').find('div.input-group input:text').closest('div.input-group').addClass('has-error'); is_valid = false; displayError([invalid_range], $("#carrier_wizard").smartWizard('currentStep')); } else if (is_valid && (isNaN(range_inf) || range_inf.length === 0)) { $('tr.range_inf td:eq('+index+')').closest('div.input-group input:text').closest('div.input-group').addClass('has-error'); is_valid = false; displayError([invalid_range], $("#carrier_wizard").smartWizard('currentStep')); } else if (is_valid && range_inf >= range_sup) { $('tr.range_sup td:eq('+index+')').find('div.input-group input:text').closest('div.input-group').addClass('has-error'); $('tr.range_inf td:eq('+index+')').find('div.input-group input:text').closest('div.input-group').addClass('has-error'); is_valid = false; displayError([invalid_range], $("#carrier_wizard").smartWizard('currentStep')); } else if (is_valid && index > 2) //check range only if it's not the first range { $('tr.range_sup td').not('.range_type, .range_sign, tr.range_sup td:last').each(function () { if ($('tr.fees_all td:eq('+index+')').hasClass('validated')) { is_valid = false; curent_index = $(this).index(); current_sup = $(this).find('div.input-group input').val(); current_inf = $('tr.range_inf td:eq('+curent_index+') input').val(); if ($('tr.range_inf td:eq('+curent_index+1+') input').length) next_inf = $('tr.range_inf td:eq('+curent_index+1+') input').val(); else next_inf = false; //check if range already exist //check if ranges is overlapping if ((range_sup != current_sup && range_inf != current_inf) && ((range_sup > current_sup || range_sup <= current_inf) && (range_inf < current_inf || range_inf >= current_sup))) is_valid = true; } }); if (!is_valid) { $('tr.range_sup td:eq('+index+')').find('div.input-group input:text').closest('div.input-group').addClass('has-error'); $('tr.range_inf td:eq('+index+')').find('div.input-group input:text').closest('div.input-group').addClass('has-error'); displayError([range_is_overlapping], $("#carrier_wizard").smartWizard('currentStep')); } else isOverlapping(); } return is_valid; } function enableZone(index) { $('tr.fees').each(function () { if ($(this).find('td:eq(1)').find('input[type=checkbox]:checked').length) $(this).find('td:eq('+index+')').find('div.input-group input').removeAttr('disabled'); }); } function disableZone(index) { $('tr.fees').each(function () { $(this).find('td:eq('+index+')').find('div.input-group input').attr('disabled', 'disabled'); }); } function enableRange(index) { $('tr.fees').each(function () { //only enable fees for enabled zones if ($(this).find('td').find('input:checkbox').attr('checked') == 'checked') enableZone(index); }); $('tr.fees_all td:eq('+index+')').addClass('validated').removeClass('not_validated'); //if ($('.zone input[type=checkbox]:checked').length) enableGlobalFees(index); bind_inputs(); } function enableGlobalFees(index) { $('span.fees_all').show(); $('tr.fees_all td:eq('+index+')').find('div.input-group input').show().removeAttr('disabled'); $('tr.fees_all td:eq('+index+')').find('div.input-group .currency_sign').show(); } function disabledGlobalFees(index) { $('span.fees_all').hide(); $('tr.fees_all td:eq('+index+')').find('div.input-group input').hide().attr('disabled', 'disabled'); $('tr.fees_all td:eq('+index+')').find('div.input-group .currency_sign').hide(); } function disableRange(index) { $('tr.fees').each(function () { //only enable fees for enabled zones if ($(this).find('td').find('input:checkbox').attr('checked') == 'checked') disableZone(index); }); $('tr.fees_all td:eq('+index+')').find('div.input-group input').attr('disabled', 'disabled'); $('tr.fees_all td:eq('+index+')').removeClass('validated').addClass('not_validated'); } function add_new_range() { if (!$('tr.fees_all td:last').hasClass('validated')) { alert(need_to_validate); return false; } last_sup_val = $('tr.range_sup td:last input').val(); //add new rand sup input $('tr.range_sup td:last').after('
    '); //add new rand inf input $('tr.range_inf td:last').after('
    '); $('tr.fees_all td:last').after('
    '); $('tr.fees').each(function () { $(this).find('td:last').after('
    '+currency_sign+'
    '); }); $('tr.delete_range td:last').after('