var wcfe_settings = (function($, window, document) { var MSG_INVALID_NAME = WcfeAdmin.MSG_INVALID_NAME; $( "#wcfe_new_field_form_pp" ).dialog({ modal: true, width: 700, //height: 400, resizable: false, autoOpen: false, buttons: [{ text: "Add New Field", click: function() { var result = wcfe_add_new_row( this ); if(result){ $( this ).dialog( "close" ); } } }] }); $( "#wcfe_edit_field_form_pp" ).dialog({ modal: true, width: 700, //height: 400, resizable: false, autoOpen: false, buttons: [{ text: "Save", click: function() { var result = wcfe_update_row( this ); if(result){ $( this ).dialog( "close" ); } } }] }); $('select.wcfe-enhanced-multi-select').select2({ placeholder: "Select validations", minimumResultsForSearch: 10, allowClear : true, }).addClass('enhanced'); $( ".wcfe_remove_field_btn" ).click( function() { var form = $(this.form); $('#wcfe_checkout_fields tbody input:checkbox[name=select_field]:checked').each(function () { $(this).closest('tr').remove(); }); }); $('#wcfe_checkout_fields tbody').sortable({ items:'tr', cursor:'move', axis:'y', handle: 'td.sort', scrollSensitivity:40, helper:function(e,ui){ ui.children().each(function(){ $(this).width($(this).width()); }); ui.css('left', '0'); return ui; } }); $("#wcfe_checkout_fields tbody").on("sortstart", function( event, ui ){ ui.item.css('background-color','#f6f6f6'); }); $("#wcfe_checkout_fields tbody").on("sortstop", function( event, ui ){ ui.item.removeAttr('style'); wcfe_prepare_field_order_indexes(); }); _openNewFieldForm = function openNewFieldForm(tabName){ if(tabName == 'billing' || tabName == 'shipping' || tabName == 'additional' || tabName == 'account'){ tabName = tabName+'_'; } var form = $("#wcfe_new_field_form_pp"); wcfe_clear_form(form); form.find("select[name=ftype]").change(); form.find("input[name=fclass]").val('form-row-wide'); $( "#wcfe_new_field_form_pp" ).dialog( "open" ); } function wcfe_add_new_row(form){ var name = $(form).find("input[name=fname]").val(); var type = $(form).find("select[name=ftype]").val(); var label = $(form).find("input[name=flabel]").val(); var placeholder = $(form).find("input[name=fplaceholder]").val(); var optionsList = $(form).find("input[name=foptions]").val(); var maxlength = $(form).find("input[name=fmaxlength]").val(); var fieldClass = $(form).find("select[name=fclass]").val(); var labelClass = $(form).find("input[name=flabelclass]").val(); var required = $(form).find("input[name=frequired]").prop('checked'); var enabled = $(form).find("input[name=fenabled]").prop('checked'); var showinemail = $(form).find("input[name=fshowinemail]").prop('checked'); var showinorder = $(form).find("input[name=fshowinorder]").prop('checked'); var validations = $(form).find("select[name=fvalidate]").val(); var err_msgs = ''; if(name == ''){ err_msgs = 'Name is required'; }else if(!isHtmlIdValid(name)){ err_msgs = MSG_INVALID_NAME; }else if(type == ''){ err_msgs = 'Type is required'; }else if(optionsList == ''){ if(type == 'select'){ err_msgs = 'Options is required'; } } if(err_msgs != ''){ $(form).find('.err_msgs').html(err_msgs); return false; } required = required ? 1 : 0; enabled = enabled ? 1 : 0; showinemail = showinemail ? 1 : 0; showinorder = showinorder ? 1 : 0; validations = validations ? validations : ''; var index = $('#wcfe_checkout_fields tbody tr').size(); var newRow = ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''; newRow += ''+name+''; newRow += ''+type+''; newRow += ''+label+''; newRow += ''+placeholder+''; newRow += ''+validations+''; if(required == true){ newRow += 'Yes'; }else{ newRow += '-'; } if(enabled == true){ newRow += 'Yes'; }else{ newRow += '-'; } newRow += ''; newRow += ''; $('#wcfe_checkout_fields tbody tr:last').after(newRow); return true; } _openEditFieldForm = function openEditFieldForm(elm, rowId){ var row = $(elm).closest('tr') var is_custom = row.find(".f_custom").val(); var name = row.find(".f_name").val(); var type = row.find(".f_type").val(); var label = row.find(".f_label").val(); var placeholder = row.find(".f_placeholder").val(); var maxlength = row.find(".f_maxlength").val(); var optionsList = row.find(".f_options").val(); var field_classes = row.find(".f_class").val(); var label_classes = row.find(".f_label_class").val(); var required = row.find(".f_required").val(); var enabled = row.find(".f_enabled").val(); var validations = row.find(".f_validation").val(); var showinemail = row.find(".f_show_in_email").val(); var showinorder = row.find(".f_show_in_order").val(); is_custom = is_custom == 1 ? true : false; required = required == 1 ? true : false; enabled = enabled == 1 ? true : false; validations = validations.split(","); showinemail = showinemail == 1 ? true : false; showinorder = showinorder == 1 ? true : false; showinemail = is_custom == true ? showinemail : true; showinorder = is_custom == true ? showinorder : true; var form = $("#wcfe_edit_field_form_pp"); form.find('.err_msgs').html(''); form.find("input[name=rowId]").val(rowId); form.find("input[name=fname]").val(name); form.find("input[name=fnameNew]").val(name); form.find("select[name=ftype]").val(type); form.find("input[name=flabel]").val(label); form.find("input[name=fplaceholder]").val(placeholder); form.find("input[name=fmaxlength]").val(maxlength); form.find("input[name=foptions]").val(optionsList); form.find("select[name=fclass]").val(field_classes); form.find("input[name=flabelclass]").val(label_classes); form.find("select[name=fvalidate]").val(validations).trigger("change"); form.find("input[name=frequired]").prop('checked', required); form.find("input[name=fenabled]").prop('checked', enabled); form.find("input[name=fshowinemail]").prop('checked', showinemail); form.find("input[name=fshowinorder]").prop('checked', showinorder); form.find("select[name=ftype]").change(); $( "#wcfe_edit_field_form_pp" ).dialog( "open" ); if(is_custom == false){ form.find("input[name=fnameNew]").prop('disabled', true); form.find("select[name=ftype]").prop('disabled', true); form.find("input[name=fshowinemail]").prop('disabled', true); form.find("input[name=fshowinorder]").prop('disabled', true); form.find("input[name=flabel]").focus(); }else{ form.find("input[name=fnameNew]").prop('disabled', false); form.find("select[name=ftype]").prop('disabled', false); form.find("input[name=fshowinemail]").prop('disabled', false); form.find("input[name=fshowinorder]").prop('disabled', false); } } function wcfe_update_row(form){ var rowId = $(form).find("input[name=rowId]").val(); var name = $(form).find("input[name=fnameNew]").val(); var type = $(form).find("select[name=ftype]").val(); var label = $(form).find("input[name=flabel]").val(); var placeholder = $(form).find("input[name=fplaceholder]").val(); var maxlength = $(form).find("input[name=fmaxlength]").val(); var optionsList = $(form).find("input[name=foptions]").val(); var fieldClass = $(form).find("select[name=fclass]").val(); var labelClass = $(form).find("input[name=flabelclass]").val(); var access = $(form).find("input[name=faccess]").prop('checked'); var required = $(form).find("input[name=frequired]").prop('checked'); var enabled = $(form).find("input[name=fenabled]").prop('checked'); var showinemail = $(form).find("input[name=fshowinemail]").prop('checked'); var showinorder = $(form).find("input[name=fshowinorder]").prop('checked'); var validations = $(form).find("select[name=fvalidate]").val(); var err_msgs = ''; if(name == ''){ err_msgs = 'Name is required'; }else if(!isHtmlIdValid(name)){ err_msgs = MSG_INVALID_NAME; }else if(type == ''){ err_msgs = 'Type is required'; } if(err_msgs != ''){ $(form).find('.err_msgs').html(err_msgs); return false; } access = access ? 1 : 0; required = required ? 1 : 0; enabled = enabled ? 1 : 0; showinemail = showinemail ? 1 : 0; showinorder = showinorder ? 1 : 0; validations = validations ? validations : ''; var row = $('#wcfe_checkout_fields tbody').find('.row_'+rowId); row.find(".f_name").val(name); row.find(".f_type").val(type); row.find(".f_label").val(label); row.find(".f_placeholder").val(placeholder); row.find(".f_maxlength").val(maxlength); row.find(".f_options").val(optionsList); row.find(".f_class").val(fieldClass); row.find(".f_label_class").val(labelClass); row.find(".f_required").val(required); row.find(".f_enabled").val(enabled); row.find(".f_show_in_email").val(showinemail); row.find(".f_show_in_order").val(showinorder); row.find(".f_validation").val(validations); row.find(".td_name").html(name); row.find(".td_type").html(type); row.find(".td_label").html(label); row.find(".td_placeholder").html(placeholder); row.find(".td_validate").html(""+validations+""); row.find(".td_required").html(required == 1 ? 'Yes' : '-'); row.find(".td_enabled").html(enabled == 1 ? 'Yes' : '-'); return true; } _removeSelectedFields = function removeSelectedFields(){ $('#wcfe_checkout_fields tbody tr').removeClass('strikeout'); $('#wcfe_checkout_fields tbody input:checkbox[name=select_field]:checked').each(function () { //$(this).closest('tr').remove(); var row = $(this).closest('tr'); if(!row.hasClass("strikeout")){ row.addClass("strikeout"); row.fadeOut(); } row.find(".f_deleted").val(1); row.find(".f_edit_btn").prop('disabled', true); //row.find('.sort').removeClass('sort'); }); } _enableDisableSelectedFields = function enableDisableSelectedFields(enabled){ $('#wcfe_checkout_fields tbody input:checkbox[name=select_field]:checked').each(function () { var row = $(this).closest('tr'); if(enabled == 0){ if(!row.hasClass("wcfe-disabled")){ row.addClass("wcfe-disabled"); } } else{ if(!row.hasClass("wcfe-disabled")){ alert("Field is already enabled.") } row.removeClass("wcfe-disabled"); } row.find(".f_edit_btn").prop('disabled', enabled == 1 ? false : true); row.find(".td_enabled").html(enabled == 1 ? 'Yes' : '-'); row.find(".f_enabled").val(enabled); }); } function wcfe_clear_form( form ){ form.find('.err_msgs').html(''); form.find("input[name=fname]").val(''); form.find("input[name=fnameNew]").val(''); form.find("select[name=ftype]").prop('selectedIndex',0); form.find("input[name=flabel]").val(''); form.find("input[name=fplaceholder]").val(''); form.find("input[name=fmaxlength]").val(''); form.find("input[name=foptions]").val(''); form.find("input[name=fclass]").val(''); form.find("input[name=flabelclass]").val(''); form.find("select[name=fvalidate] option:selected").removeProp('selected'); form.find("input[name=frequired]").prop('checked', true); form.find("input[name=fenabled]").prop('checked', true); form.find("input[name=fshowinemail]").prop('checked', true); form.find("input[name=fshowinorder]").prop('checked', true); } function wcfe_prepare_field_order_indexes() { $('#wcfe_checkout_fields tbody tr').each(function(index, el){ $('input.f_order', el).val( parseInt( $(el).index('#wcfe_checkout_fields tbody tr') ) ); }); }; _fieldTypeChangeListner = function fieldTypeChangeListner(elm){ var type = $(elm).val(); var form = $(elm).closest('form'); showAllFields(form); if(type === 'select'){ form.find('.rowPlaceholder').hide(); form.find('.rowValidate').hide(); form.find('.rowMaxlength').hide(); } else{ form.find('.rowOptions').hide(); } } function showAllFields(form){ form.find('.rowLabel').show(); form.find('.rowOptions').show(); form.find('.rowPlaceholder').show(); form.find('.rowValidate').show(); } _selectAllCheckoutFields = function selectAllCheckoutFields(elm){ var checkAll = $(elm).prop('checked'); $('#wcfe_checkout_fields tbody input:checkbox[name=select_field]').prop('checked', checkAll); } function isHtmlIdValid(id) { var re = /^[a-zA-Z\_]+[a-z0-9\-_]*$/; return re.test(id.trim()); } return { openNewFieldForm : _openNewFieldForm, openEditFieldForm : _openEditFieldForm, removeSelectedFields : _removeSelectedFields, enableDisableSelectedFields : _enableDisableSelectedFields, fieldTypeChangeListner : _fieldTypeChangeListner, selectAllCheckoutFields : _selectAllCheckoutFields, }; }(window.jQuery, window, document)); function openNewFieldForm(tabName){ wcfe_settings.openNewFieldForm(tabName); } function openEditFieldForm(elm, rowId){ wcfe_settings.openEditFieldForm(elm, rowId); } function removeSelectedFields(){ wcfe_settings.removeSelectedFields(); } function enableSelectedFields(){ wcfe_settings.enableDisableSelectedFields(1); } function disableSelectedFields(){ wcfe_settings.enableDisableSelectedFields(0); } function fieldTypeChangeListner(elm){ wcfe_settings.fieldTypeChangeListner(elm); } function wcfeSelectAllCheckoutFields(elm){ wcfe_settings.selectAllCheckoutFields(elm); }