function um_admin_init_users_select() {
if ( jQuery('.um-user-select-field:visible:not(.um-select2-inited)').length ) {
function avatarformat( data ) {
var option;
if ( ! data.id ) {
return data.text;
}
if ( 'undefined' !== typeof data.img ) {
option = jQuery('
' + data.text + '');
} else {
let img;
if ( 'undefined' !== typeof data.element ) {
if ( 'undefined' !== typeof data.element.attributes['data-img'] ) {
img = data.element.attributes['data-img']['value'];
}
}
if ( img ) {
option = jQuery('
' + data.text + '');
} else {
option = jQuery('' + data.text + '');
}
}
return option;
}
var select2_atts = {
ajax: {
url: wp.ajax.settings.url,
dataType: 'json',
delay: 250, // delay in ms while typing when to perform a AJAX search
data: function( params ) {
var args = {
action: 'um_get_users', // AJAX action for admin-ajax.php
search: params.term, // search query
page: params.page || 1, // infinite scroll pagination
nonce: um_admin_scripts.nonce
};
jQuery.each( jQuery(this)[0].attributes, function() {
// this.attributes is not a plain object, but an array
// of attribute nodes, which contain both the name and value
if ( this.specified ) {
if ( -1 !== this.name.indexOf( 'data-ajax-args-' ) ) {
var arg_name = this.name.replace( 'data-ajax-args-', '' ).trim();
args[ arg_name ] = this.value;
}
}
});
return args;
},
processResults: function( response, params ) {
params.page = params.page || 1;
var options = [];
if ( response.data.users ) {
jQuery.each( response.data.users, function( index, text ) {
if ( typeof text.img !== 'undefined' ) {
options.push({ id: text.ID, text: text.user_login + ' (#' + text.ID + ')', img: text.img });
} else {
options.push( { id: text.ID, text: text.user_login + ' (#' + text.ID + ')' } );
}
});
}
return {
results: options,
pagination: {
more: ( params.page * 20 ) < response.data.total_count
}
};
},
cache: true
},
minimumInputLength: 0, // the minimum of symbols to input before perform a search
allowClear: true,
width: "100%",
allowHtml: true,
dropdownCssClass: 'um-select2-users-dropdown',
containerCssClass : 'um-select2-users-container',
placeholder: jQuery(this).data('placeholder'),
templateSelection: avatarformat,
templateResult: avatarformat
};
let selector = jQuery('.um-user-select-field:visible:not(.um-select2-inited)');
selector.each( function() {
if ( jQuery(this).hasClass('select2-hidden-accessible') ) {
jQuery(this).removeClass('um-select2-inited').select2( 'destroy' );
}
});
selector.addClass('um-select2-inited').select2( select2_atts );
}
}
function um_admin_init_pages_select() {
// multiple select with AJAX search
jQuery('.um-pages-select2').select2({
ajax: {
url: wp.ajax.settings.url,
dataType: 'json',
delay: 250, // delay in ms while typing when to perform a AJAX search
data: function( params ) {
return {
search: params.term, // search query
action: 'um_get_pages_list', // AJAX action for admin-ajax.php
page: params.page || 1, // infinite scroll pagination
nonce: um_admin_scripts.nonce
};
},
processResults: function( data, params ) {
params.page = params.page || 1;
var options = [];
if ( data ) {
// data is the array of arrays, and each of them contains ID and the Label of the option
jQuery.each( data, function( index, text ) { // do not forget that "index" is just auto incremented value
if ( index === 'total_count' ) {
return;
}
options.push( { id: text[0], text: text[1] } );
});
}
return {
results: options,
pagination: {
more: ( params.page * 10 ) < data.total_count
}
};
},
cache: true
},
placeholder: jQuery(this).data('placeholder'),
minimumInputLength: 0, // the minimum of symbols to input before perform a search
allowClear: true,
});
}
/**
*
* @param field_key
* @param line
*/
function um_add_same_page_log( field_key, line ) {
var log_field = jQuery( '.um-same-page-update-' + field_key ).find( '.upgrade_log' );
var previous_html = log_field.html();
log_field.html( previous_html + line + "
" );
}
function um_same_page_wrong_ajax( field_key ) {
um_add_same_page_log( field_key, wp.i18n.__( 'Wrong AJAX response...', 'ultimate-member' ) );
um_add_same_page_log( field_key, wp.i18n.__( 'Your upgrade was crashed, please contact with support', 'ultimate-member' ) );
}
function um_same_page_something_wrong( field_key ) {
um_add_same_page_log( field_key, wp.i18n.__( 'Something went wrong with AJAX request...', 'ultimate-member' ) );
um_add_same_page_log( field_key, wp.i18n.__( 'Your upgrade was crashed, please contact with support', 'ultimate-member' ) );
}
jQuery(document).ready( function() {
um_admin_init_users_select();
um_admin_init_pages_select();
/**
* Same page upgrade field
*/
jQuery( document.body ).on( 'click', '.um-forms-field[data-log-object]', function() {
var obj = jQuery( this ).data( 'log-object' );
if ( jQuery( this ).is( ':checked' ) ) {
jQuery( this ).parents('label').siblings( '.um-same-page-update-' + obj ).show();
} else {
jQuery( this ).parents('label').siblings( '.um-same-page-update-' + obj ).hide();
}
});
jQuery( document.body ).on( 'click', '.um-admin-form-same-page-update', function() {
var field_key = jQuery(this).data('upgrade_cb');
jQuery(this).prop( 'disabled', true );
um_add_same_page_log( field_key, wp.i18n.__( 'Upgrade Process Started...', 'ultimate-member' ) );
if ( field_key === 'sync_metatable' ) {
var metadata_pages = 0;
var metadata_per_page = 500;
var current_page;
jQuery.ajax({
url: wp.ajax.settings.url,
type: 'POST',
dataType: 'json',
data: {
action: 'um_same_page_update',
cb_func: 'um_usermeta_fields',
nonce: um_admin_scripts.nonce
},
success: function( response ) {
get_metadata();
},
error: function() {
um_same_page_something_wrong( field_key );
}
});
/**
*
* @returns {boolean}
*/
function get_metadata() {
current_page = 1;
um_add_same_page_log( field_key, wp.i18n.__( 'Getting metadata', 'ultimate-member' ) );
jQuery.ajax({
url: wp.ajax.settings.url,
type: 'POST',
dataType: 'json',
data: {
action: 'um_same_page_update',
cb_func: 'um_get_metadata',
nonce: um_admin_scripts.nonce
},
success: function( response ) {
if ( typeof response.data.count != 'undefined' ) {
um_add_same_page_log( field_key, wp.i18n.__( 'There are ', 'ultimate-member' ) + response.data.count + wp.i18n.__( ' metadata rows...', 'ultimate-member' ) );
um_add_same_page_log( field_key, wp.i18n.__( 'Start metadata upgrading...', 'ultimate-member' ) );
metadata_pages = Math.ceil( response.data.count / metadata_per_page );
update_metadata_per_page();
} else {
um_same_page_wrong_ajax( field_key );
}
},
error: function() {
um_same_page_something_wrong( field_key );
}
});
return false;
}
function update_metadata_per_page() {
if ( current_page <= metadata_pages ) {
jQuery.ajax({
url: wp.ajax.settings.url,
type: 'POST',
dataType: 'json',
data: {
action: 'um_same_page_update',
cb_func: 'um_update_metadata_per_page',
page: current_page,
nonce: um_admin_scripts.nonce
},
success: function( response ) {
if ( typeof response.data != 'undefined' ) {
um_add_same_page_log( field_key, response.data.message );
current_page++;
update_metadata_per_page();
} else {
um_same_page_wrong_ajax( field_key );
}
},
error: function() {
um_same_page_something_wrong( field_key );
}
});
} else {
window.location = um_forms_data.successfully_redirect;
}
}
} else {
wp.hooks.doAction( 'um_same_page_upgrade', field_key );
}
});
/**
* Sortable items
*/
jQuery('.um-sortable-items-field').sortable({
items: '.um-sortable-item',
connectWith: '.um-admin-drag-col,.um-admin-drag-group',
forcePlaceholderSize: true,
update: function( event, ui ) {
var sortable_value = [];
jQuery(this).find('li').each( function() {
if ( ! jQuery(this).hasClass( 'um-hidden-item' ) ) {
sortable_value.push( jQuery(this).data('tab-id') );
}
});
jQuery(this).siblings('.um-sortable-items-value' ).val( sortable_value.join( ',' ) );
}
});
/**
* Multi-selects sort
*/
jQuery('.um-multi-selects-list.um-sortable-multi-selects').sortable({
items: '.um-admin-drag-fld',
connectWith: '.um-admin-drag-col,.um-admin-drag-group',
forcePlaceholderSize: true
});
jQuery('.um-multi-selects-list[data-field_id="_um_sorting_fields"] li').each( function() {
var if_other = jQuery(this).find( '.um-field-wrapper:not(.um-custom-order-fields) select' ).val();
if ( if_other === 'other' ) {
jQuery(this).find( '.um-field-wrapper.um-custom-order-fields' ).show();
} else {
jQuery(this).find( '.um-field-wrapper.um-custom-order-fields' ).hide();
}
});
jQuery( '.um-forms-line[data-field_type="md_sorting_fields"] .um-multi-selects-add-option' ).on('click', function() {
var list = jQuery(this).siblings('ul.um-multi-selects-list');
var sortable = list.hasClass( 'um-sortable-multi-selects' );
var field_id = list.data('field_id');
var k = 0;
if ( list.find( 'li:last select.um-forms-field' ).length > 0 ) {
k = list.find( 'li:last select.um-forms-field' ).attr('id').split("-");
k = k[1]*1 + 1;
}
var selector_html = jQuery( '
' ).append( list.siblings('.um-hidden-multi-selects').clone() ).html();
var html = '
';
if ( sortable ) {
html += '';
}
let dataTypesOptions = '';
jQuery.each( um_forms_data.md_sorting_data_types, function( key, label ) {
dataTypesOptions += '';
} );
html += '' + selector_html + '' +
'' +
'' + wp.i18n.__( 'Remove', 'ultimate-member' ) + '' +
'' +
'' +
'' +
'' +
'' +
'';
list.append( html );
list.find('li:last .um-hidden-multi-selects').attr('name', jQuery(this).data('name') ).
addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-selects').attr('id', list.data('id_attr') + '-' + k).trigger('change');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][meta_key]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][label]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][data_type]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][order]');
});
jQuery( document.body ).on( 'change', '.um-multi-selects-list[data-field_id="_um_sorting_fields"] .um-field-wrapper:not(.um-custom-order-fields) select', function() {
var if_other = jQuery(this).val();
if ( if_other === 'other' ) {
jQuery(this).parents('li').find( '.um-field-wrapper.um-custom-order-fields' ).show();
} else {
jQuery(this).parents('li').find( '.um-field-wrapper.um-custom-order-fields' ).hide();
}
});
/**
* Multi-selects field
*/
jQuery( document.body ).on( 'click', '.um-multi-selects-option-line .um-select-delete', function() {
jQuery( this ).parents( 'li.um-multi-selects-option-line' ).remove();
});
/**
* Multi-selects field
*/
jQuery( document.body ).on( 'click', '.um-md-default-filters-option-line .um-select-delete', function() {
jQuery( this ).parents( 'li.um-md-default-filters-option-line' ).remove();
});
jQuery( '.um-multi-selects-add-option' ).on('click', function() {
if ( jQuery(this).parents( '.um-forms-line[data-field_type="md_sorting_fields"]' ).length ) {
return;
}
var list = jQuery(this).siblings('ul.um-multi-selects-list');
var sortable = list.hasClass( 'um-sortable-multi-selects' );
var field_id = list.data('field_id');
var k = 0;
if ( list.find( 'li:last select.um-forms-field' ).length > 0 ) {
k = list.find( 'li:last select.um-forms-field' ).attr('id').split("-");
k = k[1]*1 + 1;
}
var selector_html = jQuery( '
' ).append( list.siblings('.um-hidden-multi-selects').clone() ).html();
var html = '
';
if ( sortable ) {
html += '';
}
html += '' + selector_html + '' +
'' +
'' + wp.i18n.__( 'Remove', 'ultimate-member' ) + '' +
'' +
'';
list.append( html );
list.find('li:last .um-hidden-multi-selects').attr('name', jQuery(this).data('name') ).
addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-selects').attr('id', list.data('id_attr') + '-' + k);
});
jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_exclude_fields][]"]').on('click', function() {
jQuery('.um-multi-selects-list[data-field_id="_um_search_include_fields"] li.um-multi-selects-option-line').remove();
});
jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_include_fields][]"]').on('click', function() {
jQuery('.um-multi-selects-list[data-field_id="_um_search_exclude_fields"] li.um-multi-selects-option-line').remove();
});
var um_local_date = new Date();
var um_gmt_hours = -um_local_date.getTimezoneOffset() / 60;
jQuery('input[name="um-gmt-offset"]').val( um_gmt_hours );
//slider filter
jQuery('.um-admin-metabox').find('.um-slider').each( function() {
var slider = jQuery( this );
var min_default_value = parseInt( slider.data('min') );
var max_default_value = parseInt( slider.data('max') );
if ( typeof jQuery( '#' + slider.data('field_name') + '_min' ).val() != 'undefined' ) {
min_default_value = jQuery( '#' + slider.data('field_name') + '_min' ).val();
}
if ( typeof jQuery( '#' + slider.data('field_name') + '_max' ).val() != 'undefined' ) {
max_default_value = jQuery( '#' + slider.data('field_name') + '_max' ).val();
}
var default_value = [ min_default_value, max_default_value ];
slider.slider({
range: true,
min: parseInt( slider.data('min') ),
max: parseInt( slider.data('max') ),
values: default_value,
create: function( event, ui ) {
//console.log( ui );
},
step: 1,
slide: function( event, ui ) {
um_set_range_label( jQuery( this ), ui );
},
stop: function( event, ui ) {
}
});
um_set_range_label( slider );
});
//datepicker filter
jQuery('.um-admin-metabox').find('.um-datepicker-filter').each( function() {
var elem = jQuery(this);
var min = new Date( elem.data('date_min')*1000 );
var max = new Date( elem.data('date_max')*1000 );
var $input = elem.pickadate({
selectYears: true,
min: min,
max: max,
formatSubmit: 'yyyy/mm/dd',
hiddenName: true,
onOpen: function() {
elem.blur();
elem.siblings('.picker').find('.picker__button--close').addClass('button');
},
onClose: function() {
elem.blur();
},
onSet: function( context ) {
}
});
var $picker = $input.pickadate('picker');
if ( elem.data('value') ) {
$picker.set( 'select', elem.data('value')*1000 );
}
});
//timepicker filter
jQuery('.um-admin-metabox').find('.um-timepicker-filter').each( function() {
var elem = jQuery(this);
//using arrays formatted as [HOUR,MINUTE]
var min = elem.data('min');
var max = elem.data('max');
var picker_min = min.split(':');
var picker_max = max.split(':');
var $input = elem.pickatime({
format: elem.data('format'),
interval: parseInt( elem.data('intervals') ),
min: [picker_min[0],picker_min[1]],
max: [picker_max[0],picker_max[1]],
formatSubmit: 'HH:i',
hiddenName: true,
onOpen: function() { elem.blur(); },
onClose: function() { elem.blur(); },
onSet: function( context ) {
}
});
});
var um_member_dir_filters_busy = false;
jQuery( document.body ).on( 'change', '.um-md-default-filters-option-line .um-field-wrapper select', function() {
if ( um_member_dir_filters_busy ) {
return;
}
var obj = jQuery(this);
var filter_key = obj.val();
var directory_id = obj.data('member_directory');
um_member_dir_filters_busy = true;
wp.ajax.send( 'um_member_directory_default_filter_settings', {
data: {
key: filter_key,
directory_id: directory_id,
nonce: um_admin_scripts.nonce
},
success: function( data ) {
var field_wrapper = obj.parents( '.um-md-default-filters-option-line' ).find('.um-field-wrapper2');
field_wrapper.html( data.field_html );
um_member_dir_filters_busy = false;
//slider filter
field_wrapper.find('.um-slider').each( function() {
var slider = jQuery( this );
var min_default_value = parseInt( slider.data('min') );
var max_default_value = parseInt( slider.data('max') );
var default_value = [ min_default_value, max_default_value ];
slider.slider({
range: true,
min: parseInt( slider.data('min') ),
max: parseInt( slider.data('max') ),
values: default_value,
create: function( event, ui ) {
//console.log( ui );
},
step: 1,
slide: function( event, ui ) {
um_set_range_label( jQuery( this ), ui );
},
stop: function( event, ui ) {
}
});
um_set_range_label( slider );
});
//datepicker filter
field_wrapper.find('.um-datepicker-filter').each( function() {
var elem = jQuery(this);
var min = new Date( elem.data('date_min')*1000 );
var max = new Date( elem.data('date_max')*1000 );
var $input = elem.pickadate({
selectYears: true,
min: min,
max: max,
formatSubmit: 'yyyy/mm/dd',
hiddenName: true,
onOpen: function() {
elem.blur();
elem.siblings('.picker').find('.picker__button--close').addClass('button');
},
onClose: function() {
elem.blur();
},
onSet: function( context ) {
}
});
});
//timepicker filter
field_wrapper.find('.um-timepicker-filter').each( function() {
var elem = jQuery(this);
//using arrays formatted as [HOUR,MINUTE]
var min = elem.data('min');
var max = elem.data('max');
var picker_min = min.split(':');
var picker_max = max.split(':');
var $input = elem.pickatime({
format: elem.data('format'),
interval: parseInt( elem.data('intervals') ),
min: [picker_min[0],picker_min[1]],
max: [picker_max[0],picker_max[1]],
formatSubmit: 'HH:i',
hiddenName: true,
onOpen: function() { elem.blur(); },
onClose: function() { elem.blur(); },
onSet: function( context ) {
}
});
});
},
error: function( data ) {
return false;
}
});
});
function um_set_range_label( slider, ui ) {
var placeholder = '';
var placeholder_s = slider.siblings( '.um-slider-range' ).data( 'placeholder-s' );
var placeholder_p = slider.siblings( '.um-slider-range' ).data( 'placeholder-p' );
var um_range_min, um_range_max;
if ( ui ) {
if ( ui.values[ 0 ] === ui.values[ 1 ] ) {
placeholder = placeholder_s.replace( '\{value\}', ui.values[ 0 ] )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
} else {
placeholder = placeholder_p.replace( '\{min_range\}', ui.values[ 0 ] )
.replace( '\{max_range\}', ui.values[ 1 ] )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = ui.values[0];
um_range_max = ui.values[1];
} else {
if ( slider.slider( "values", 0 ) === slider.slider( "values", 1 ) ) {
placeholder = placeholder_s.replace( '\{value\}', slider.slider( "values", 0 ) )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
} else {
placeholder = placeholder_p.replace( '\{min_range\}', slider.slider( "values", 0 ) )
.replace( '\{max_range\}', slider.slider( "values", 1 ) )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = slider.slider( "values", 0 );
um_range_max = slider.slider( "values", 1 );
}
slider.siblings( '.um-slider-range' ).html( placeholder );
slider.siblings( ".um_range_min" ).val( um_range_min );
slider.siblings( ".um_range_max" ).val( um_range_max );
}
jQuery( '.um-md-default-filters-add-option' ).on('click', function() {
if ( um_member_dir_filters_busy ) {
return;
}
var list = jQuery(this).siblings('ul.um-md-default-filters-list');
var field_id = list.data('field_id');
var k = 0;
if ( list.find( 'li:last select.um-forms-field' ).length > 0 ) {
k = list.find( 'li:last select.um-forms-field' ).attr('id').split("-");
k = k[1]*1 + 1;
}
var selector_html = jQuery( '
' ).append( list.siblings('.um-hidden-md-default-filters').clone() ).html();
list.append(
'
' + selector_html +
'' + wp.i18n.__( 'Remove', 'ultimate-member' ) + ''
);
list.find('li:last .um-hidden-md-default-filters').attr('name', jQuery(this).data('name') ).
addClass('um-forms-field um-long-field').removeClass('um-hidden-md-default-filters').attr('id', list.data('id_attr') + '-' + k);
list.find('li:last .um-field-wrapper select').trigger('change');
});
/**
* Multi-text field
*/
jQuery( document.body ).on( 'click', '.um-text-delete', function() {
jQuery(this).parents('li.um-multi-text-option-line').remove();
});
jQuery( '.um-multi-text-add-option' ).on('click', function() {
var list = jQuery(this).siblings( 'ul.um-multi-text-list' );
var k = 0;
if ( list.find( 'li:last input.um-forms-field' ).length > 0 ) {
k = list.find( 'li:last input.um-forms-field' ).attr('id').split("-");
k = k[1]*1 + 1;
}
var text_html = jQuery( '
' ).append( list.siblings('.um-hidden-multi-text').clone() ).html();
var classes = list.data('item_class');
list.append(
'
' + text_html +
'' + wp.i18n.__( 'Remove', 'ultimate-member' ) + ''
);
list.find('li:last .um-hidden-multi-text').attr('name', jQuery(this).data('name') ).
addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-text').attr('id', list.data('id_attr') + '-' + k);
});
/**
* Media uploader
*/
jQuery( '.um-media-upload' ).each( function() {
var field = jQuery(this).find( '.um-forms-field' );
var default_value = field.data('default');
if ( field.val() != '' && field.val() != default_value ) {
field.siblings('.um-set-image').hide();
field.siblings('.um-clear-image').show();
field.siblings('.icon_preview').show();
} else {
if ( field.val() == default_value ) {
field.siblings('.icon_preview').show();
}
field.siblings('.um-set-image').show();
field.siblings('.um-clear-image').hide();
}
});
if ( typeof wp !== 'undefined' && wp.media && wp.media.editor ) {
var frame;
jQuery( '.um-set-image' ).on('click', function(e) {
var button = jQuery(this);
e.preventDefault();
// If the media frame already exists, reopen it.
if ( frame ) {
frame.remove();
/*frame.open();
return;*/
}
// Create a new media frame
frame = wp.media({
title: button.data('upload_frame'),
button: {
text: wp.i18n.__( 'Select', 'ultimate-member' )
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected in the media frame...
frame.on( 'select', function() {
// Get media attachment details from the frame state
var attachment = frame.state().get('selection').first().toJSON();
// Send the attachment URL to our custom image input field.
button.siblings('.icon_preview').attr( 'src', attachment.url ).show();
button.siblings('.um-forms-field').val( attachment.url );
button.siblings('.um-media-upload-data-id').val(attachment.id);
button.siblings('.um-media-upload-data-width').val(attachment.width);
button.siblings('.um-media-upload-data-height').val(attachment.height);
button.siblings('.um-media-upload-data-thumbnail').val(attachment.thumbnail);
button.siblings('.um-media-upload-data-url').trigger('change');
button.siblings('.um-media-upload-url').val(attachment.url);
button.siblings('.um-clear-image').show();
button.hide();
jQuery( document ).trigger( 'um_media_upload_select', [button, attachment] );
});
frame.open();
});
jQuery('.icon_preview').on('click', function(e) {
jQuery(this).siblings('.um-set-image').trigger('click');
});
jQuery('.um-clear-image').on('click', function(e) {
let clear_button = jQuery(this);
let default_image_url = clear_button.siblings('.um-forms-field').data('default');
if ( undefined === default_image_url ) {
default_image_url = '';
}
clear_button.siblings('.um-set-image').show();
clear_button.hide();
clear_button.siblings('.icon_preview').attr( 'src', default_image_url );
if ( '' === default_image_url ) {
clear_button.siblings('.icon_preview').hide();
}
clear_button.siblings('.um-media-upload-data-id').val('');
clear_button.siblings('.um-media-upload-data-width').val('');
clear_button.siblings('.um-media-upload-data-height').val('');
clear_button.siblings('.um-media-upload-data-thumbnail').val('');
clear_button.siblings('.um-forms-field').val( default_image_url );
clear_button.siblings('.um-media-upload-data-url').trigger('change');
clear_button.siblings('.um-media-upload-url').val( default_image_url );
jQuery( document ).trigger( 'um_media_upload_clear', clear_button );
});
}
/**
* On option fields change
*/
jQuery( document.body ).on('change', '.um-forms-field', function() {
if ( jQuery('.um-forms-line[data-conditional*=\'"' + jQuery(this).data('field_id') + '",\']').length > 0 || jQuery('.um-forms-line[data-conditional*=\'' + jQuery(this).data('field_id') + '|\']').length > 0 || jQuery('.um-forms-line[data-conditional*=\'|' + jQuery(this).data('field_id') + '\']').length > 0 ) {
run_check_conditions();
}
});
//first load hide unconditional fields
run_check_conditions();
/**
* Run conditional logic
*/
function run_check_conditions() {
jQuery( '.um-forms-line' ).removeClass('um-forms-line-conditioned').each( function() {
if ( typeof jQuery(this).data('conditional') === 'undefined' || jQuery(this).hasClass('um-forms-line-conditioned') )
return;
if ( check_condition( jQuery(this) ) ) {
jQuery(this).show();
um_admin_init_users_select();
} else {
jQuery(this).hide();
}
});
}
function um_distinct( value, index, self ) {
return self.indexOf( value ) === index;
}
/**
* Conditional logic
*
* true - show field
* false - hide field
*
* @returns {boolean}
*/
function check_condition( form_line ) {
form_line.addClass( 'um-forms-line-conditioned' );
var conditional = form_line.data('conditional');
var condition = conditional[1];
var value = conditional[2];
var prefix = form_line.data( 'prefix' );
var parent_condition = true;
if ( condition === '=' || condition === '!=' ) {
if ( conditional[0].indexOf( '||' ) === -1 ) {
var condition_field = jQuery( '#' + prefix + '_' + conditional[0] );
if ( typeof condition_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( condition_field.parents('.um-forms-line') );
}
}
} else if ( condition === '~' ) {
var selectors = conditional[0].split('|');
var condition_fields = [];
jQuery.each( selectors, function(i) {
condition_fields.push( jQuery( '#' + prefix + '_' + selectors[i] ) );
});
if ( typeof condition_fields[0].parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( condition_fields[0].parents('.um-forms-line') );
}
} else if ( condition === '><' ) {
var condition_field = jQuery( '#' + prefix + '_' + conditional[0] + '_' + conditional[2] );
if ( typeof condition_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( condition_field.parents('.um-forms-line') );
}
}
var own_condition = false;
if ( condition === '=' ) {
if ( conditional[0].indexOf( '||' ) !== -1 ) {
var selectors = conditional[0].split('||');
var complete_condition = false;
jQuery.each( selectors, function(i) {
var cond_field = jQuery( '#' + prefix + '_' + selectors[i] );
own_condition = false;
parent_condition = true;
if ( typeof cond_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( cond_field.parents('.um-forms-line') );
}
var tagName = cond_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = cond_field.attr('type');
if ( input_type === 'checkbox' ) {
own_condition = ( value == '1' ) ? cond_field.is(':checked') : ! cond_field.is(':checked');
} else {
if ( Array.isArray( value ) ) {
own_condition = ( value.indexOf( cond_field.val() ) !== -1 );
} else {
own_condition = ( cond_field.val() == value );
}
}
} else if ( tagName === 'select' ) {
if ( Array.isArray( value ) ) {
own_condition = ( value.indexOf( cond_field.val() ) !== -1 );
} else {
own_condition = ( cond_field.val() == value );
}
}
if ( own_condition && parent_condition ) {
complete_condition = true;
}
});
return complete_condition;
} else {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? condition_field.is(':checked') : ! condition_field.is(':checked');
} else {
if ( Array.isArray( value ) ) {
own_condition = ( value.indexOf( condition_field.val() ) !== -1 );
} else {
own_condition = ( condition_field.val() == value );
}
}
} else if ( tagName == 'select' ) {
if ( Array.isArray( value ) ) {
own_condition = ( value.indexOf( condition_field.val() ) !== -1 );
} else {
own_condition = ( condition_field.val() == value );
}
}
return ( own_condition && parent_condition );
}
} else if ( condition === '!=' ) {
if ( conditional[0].indexOf( '||' ) !== -1 ) {
var selectors = conditional[0].split('||');
var complete_condition = false;
jQuery.each( selectors, function(i) {
var cond_field = jQuery( '#' + prefix + '_' + selectors[i] );
own_condition = false;
parent_condition = true;
if ( typeof cond_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( cond_field.parents('.um-forms-line') );
}
var tagName = cond_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = cond_field.attr('type');
if ( input_type === 'checkbox' ) {
own_condition = ( value == '1' ) ? ! cond_field.is(':checked') : cond_field.is(':checked');
} else {
own_condition = ( cond_field.val() != value );
}
} else if ( tagName === 'select' ) {
own_condition = ( cond_field.val() != value );
}
if ( own_condition && parent_condition ) {
complete_condition = true;
}
});
return complete_condition;
} else {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? ! condition_field.is(':checked') : condition_field.is(':checked');
} else {
own_condition = ( condition_field.val() != value );
}
} else if ( tagName == 'select' ) {
own_condition = ( condition_field.val() != value );
}
return ( own_condition && parent_condition );
}
} else if ( condition === '~' ) {
var field_id;
var visible_options = [];
var lines_field;
if ( form_line.data('field_type') === 'sortable_items' ) {
field_id = form_line.find( '.um-sortable-items-value' ).data('field_id');
jQuery.each( condition_fields, function(i) {
var condition_field = condition_fields[ i ];
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type === 'checkbox' ) {
if ( value == '1' && condition_field.is(':checked') ) {
visible_options.push( condition_field.data( 'fill_' + field_id ) );
}
}
} else if ( tagName == 'select' ) {
if ( ! value && condition_field.val() ) {
visible_options = visible_options.concat( condition_field.val() );
visible_options = visible_options.filter( um_distinct );
}
}
});
lines_field = jQuery( '[data-field_id="' + field_id + '"]' );
if ( visible_options.length ) {
lines_field.siblings('.um-sortable-items-field').find('li').addClass('um-hidden-item');
jQuery.each( visible_options, function(i) {
lines_field.siblings('.um-sortable-items-field').find('li[data-tab-id="' + visible_options[ i ] + '"]').removeClass('um-hidden-item');
});
var sortable_value = [];
lines_field.siblings('.um-sortable-items-field').find('li').each( function() {
if ( ! jQuery(this).hasClass( 'um-hidden-item' ) ) {
sortable_value.push( jQuery(this).data('tab-id') );
}
});
lines_field.val( sortable_value.join( ',' ) );
lines_field.siblings( '.um-sortable-items-field' ).sortable( 'refresh' );
own_condition = true;
} else {
lines_field.val( null );
}
} else {
field_id = form_line.find( form_line.data('field_type') ).data('field_id');
jQuery.each( condition_fields, function(i) {
var condition_field = condition_fields[ i ];
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type === 'checkbox' ) {
if ( value == '1' && condition_field.is(':checked') ) {
visible_options.push( condition_field.data( 'fill_' + field_id ) );
}
}
} else if ( tagName == 'select' ) {
if ( ! value && condition_field.val() ) {
visible_options = visible_options.concat( condition_field.val() );
visible_options = visible_options.filter( um_distinct );
}
}
});
lines_field = jQuery( '[data-field_id="' + field_id + '"]' );
if ( visible_options.length ) {
lines_field.find( 'option' ).hide();
jQuery.each( visible_options, function(i) {
lines_field.find( 'option[value="' + visible_options[ i ] + '"]' ).show();
});
if ( visible_options.indexOf( lines_field.val() ) === -1 ) {
lines_field.val( visible_options[0] );
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
lines_field.find( 'option[value="' + visible_options[0] + '"]' ).attr( 'selected', true ).prop( 'selected', true );
}
own_condition = true;
} else {
lines_field.val( null );
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
}
}
return ( own_condition && parent_condition );
} else if ( condition === '><' ) {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = condition_field.is(':checked');
}
}
return ( own_condition && parent_condition );
}
return false;
}
});