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);
}