| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707 |
- function um_sanitize_value( value, el ) {
- var element = document.createElement( 'div' );
- element.innerText = value;
- var sanitized_value = element.innerHTML;
- if ( el ) {
- jQuery( el ).val( sanitized_value );
- }
- return sanitized_value;
- }
- function um_unsanitize_value( input ) {
- var e = document.createElement( 'textarea' );
- e.innerHTML = input;
- // handle case of empty input
- return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
- }
- function um_init_datetimepicker() {
- jQuery('.um-datepicker:not(.picker__input)').each(function(){
- var elem = jQuery(this);
- var disable = false;
- if ( typeof elem.attr('data-disabled_weekdays') != 'undefined' && elem.attr('data-disabled_weekdays') !== '' ) {
- disable = JSON.parse( elem.attr('data-disabled_weekdays') );
- }
- var years_n = null;
- if ( typeof elem.attr('data-years') != 'undefined' ) {
- years_n = elem.attr('data-years');
- }
- var minRange = elem.attr('data-date_min');
- var maxRange = elem.attr('data-date_max');
- var minSplit = [], maxSplit = [];
- if ( typeof minRange != 'undefined' ) {
- minSplit = minRange.split(",");
- }
- if ( typeof maxRange != 'undefined' ) {
- maxSplit = maxRange.split(",");
- }
- var min = minSplit.length ? new Date(minSplit) : null;
- var max = minSplit.length ? new Date(maxSplit) : null;
- // fix min date for safari
- if ( min && min.toString() == 'Invalid Date' && minSplit.length == 3 ) {
- var minDateString = minSplit[1] + '/' + minSplit[2] + '/' + minSplit[0];
- min = new Date(Date.parse(minDateString));
- }
- // fix max date for safari
- if ( max && max.toString() == 'Invalid Date' && maxSplit.length == 3 ) {
- var maxDateString = maxSplit[1] + '/' + maxSplit[2] + '/' + maxSplit[0];
- max = new Date(Date.parse(maxDateString));
- }
- var data = {
- disable: disable,
- format: elem.attr( 'data-format' ),
- formatSubmit: 'yyyy/mm/dd',
- hiddenName: true,
- onOpen: function() { elem.blur(); },
- onClose: function() { elem.blur(); }
- };
- if ( years_n !== null ) {
- data.selectYears = years_n;
- }
- if ( min !== null ) {
- data.min = min;
- }
- if ( max !== null ) {
- data.max = max;
- }
- elem.pickadate( data );
- });
- jQuery('.um-timepicker:not(.picker__input)').each(function(){
- var elem = jQuery(this);
- elem.pickatime({
- format: elem.attr('data-format'),
- interval: parseInt( elem.attr('data-intervals') ),
- formatSubmit: 'HH:i',
- hiddenName: true,
- onOpen: function() { elem.blur(); },
- onClose: function() { elem.blur(); }
- });
- });
- }
- function init_tipsy() {
- if ( typeof( jQuery.fn.tipsy ) === 'function' ) {
- jQuery('.um-tip-n').tipsy({gravity: 'n', opacity: 1, live: 'a.live', offset: 3 });
- jQuery('.um-tip-w').tipsy({gravity: 'w', opacity: 1, live: 'a.live', offset: 3 });
- jQuery('.um-tip-e').tipsy({gravity: 'e', opacity: 1, live: 'a.live', offset: 3 });
- jQuery('.um-tip-s').tipsy({gravity: 's', opacity: 1, live: 'a.live', offset: 3 });
- }
- }
- jQuery(document).ready(function() {
- jQuery( document.body ).on('click', '.um-dropdown a.real_url', function() {
- window.location = jQuery(this).attr('href');
- });
- jQuery( document.body ).on( 'click', '.um-trigger-menu-on-click', function() {
- var menu = jQuery(this).find('.um-dropdown');
- UM.dropdown.show( menu );
- return false;
- });
- jQuery( document.body ).on('click', '.um-dropdown-hide', function() {
- UM.dropdown.hideAll();
- return false;
- });
- jQuery( document.body ).on('click', 'a.um-manual-trigger', function() {
- var child = jQuery(this).attr('data-child');
- var parent = jQuery(this).attr('data-parent');
- jQuery(this).parents( parent ).find( child ).trigger('click');
- UM.dropdown.hideAll();
- return false;
- });
- jQuery('.um-s1,.um-s2').css({'display':'block'});
- /**
- * Unselect empty option if something is selected
- *
- * @since 2.1.16
- * @param {object} e
- * @returns {undefined}
- */
- function unselectEmptyOption( e ) {
- var $element = jQuery( e.currentTarget );
- var $selected = $element.find(':selected');
- if ( $selected.length > 1 ) {
- $selected.each( function ( i, option ) {
- if ( option.value === '' ) {
- option.selected = false;
- $element.trigger( 'change' );
- }
- });
- }
- }
- if ( typeof( jQuery.fn.select2 ) === 'function' ) {
- jQuery(".um-s1").each( function( e ) {
- var obj = jQuery(this);
- obj.select2({
- allowClear: true,
- dropdownParent: obj.parent()
- }).on( 'change', unselectEmptyOption );
- } );
- jQuery(".um-s2").each( function( e ) {
- var obj = jQuery(this);
- obj.select2({
- allowClear: false,
- minimumResultsForSearch: 10,
- dropdownParent: obj.parent()
- }).on( 'change', unselectEmptyOption );
- } );
- jQuery(".um-s3").each( function( e ) {
- var obj = jQuery(this);
- obj.select2({
- allowClear: false,
- minimumResultsForSearch: -1,
- dropdownParent: obj.parent()
- }).on( 'change', unselectEmptyOption );
- } );
- }
- init_tipsy();
- if ( typeof( jQuery.fn.um_raty ) === 'function' ) {
- jQuery('.um-rating').um_raty({
- half: false,
- starType: 'i',
- number: function() {
- return jQuery(this).attr('data-number');
- },
- score: function() {
- return jQuery(this).attr('data-score');
- },
- scoreName: function() {
- return jQuery(this).attr('data-key');
- },
- hints: false,
- click: function( score, evt ) {
- um_live_field = this.id;
- um_live_value = score;
- um_apply_conditions( jQuery(this), false );
- }
- });
- jQuery('.um-rating-readonly').um_raty({
- half: false,
- starType: 'i',
- number: function() {
- return jQuery(this).attr('data-number');
- },
- score: function() {
- return jQuery(this).attr('data-score');
- },
- scoreName: function() {
- return jQuery(this).attr('data-key');
- },
- hints: false,
- readOnly: true
- });
- }
- jQuery(document).on('change', '.um-field-area input[type="radio"]', function() {
- var field = jQuery(this).parents('.um-field-area');
- var this_field = jQuery(this).parents('label');
- field.find('.um-field-radio').removeClass('active');
- field.find('.um-field-radio').find('i').removeAttr('class').addClass('um-icon-android-radio-button-off');
- this_field.addClass('active');
- this_field.find('i').removeAttr('class').addClass('um-icon-android-radio-button-on');
- });
- jQuery(document).on('change', '.um-field-area input[type="checkbox"]', function() {
- var this_field = jQuery(this).parents('label');
- if ( this_field.hasClass('active') ) {
- this_field.removeClass('active');
- this_field.find('i').removeAttr('class').addClass('um-icon-android-checkbox-outline-blank');
- } else {
- this_field.addClass('active');
- this_field.find('i').removeAttr('class').addClass('um-icon-android-checkbox-outline');
- }
- });
- um_init_datetimepicker();
- jQuery(document).on('click', '.um .um-single-image-preview a.cancel', function( e ) {
- e.preventDefault();
- var parent = jQuery(this).parents('.um-field');
- var filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
- var src = jQuery(this).parents('.um-field').find('.um-single-image-preview img').attr('src');
- var mode = parent.data('mode');
- var args = {
- data: {
- mode: mode,
- filename: filename,
- src: src,
- nonce: um_scripts.nonce
- },
- success: function() {
- parent.find('.um-single-image-preview img').attr( 'src', '' );
- parent.find('.um-single-image-preview').hide();
- parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
- parent.find('input[type="hidden"]').val( 'empty_file' );
- }
- };
- if ( mode !== 'register' ) {
- args.data.user_id = jQuery(this).parents('form' ).find( '#user_id' ).val();
- }
- wp.ajax.send( 'um_remove_file', args );
- return false;
- });
- jQuery(document).on('click', '.um .um-single-file-preview a.cancel', function( e ) {
- e.preventDefault();
- var parent = jQuery(this).parents('.um-field');
- var filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
- var src = jQuery(this).parents('.um-field').find('.um-single-fileinfo a').attr('href');
- var mode = parent.data('mode');
- var args = {
- data: {
- mode: mode,
- filename: filename,
- src: src,
- nonce: um_scripts.nonce
- },
- success: function() {
- parent.find('.um-single-file-preview').hide();
- parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
- parent.find('input[type=hidden]').val( 'empty_file' );
- }
- };
- if ( mode !== 'register' ) {
- args.data.user_id = jQuery(this).parents('form' ).find( '#user_id' ).val();
- }
- wp.ajax.send( 'um_remove_file', args );
- return false;
- });
- jQuery(document).on('click', '.um-field-group-head:not(.disabled)', function() {
- var field = jQuery(this).parents('.um-field-group');
- var limit = field.data('max_entries');
- if ( field.find('.um-field-group-body').is(':hidden')){
- field.find('.um-field-group-body').show();
- } else {
- field.find('.um-field-group-body:first').clone().appendTo( field );
- }
- var increase_id = 0;
- field.find('.um-field-group-body').each(function(){
- increase_id++;
- jQuery(this).find('input').each(function(){
- var input = jQuery(this);
- input.attr('id', input.data('key') + '-' + increase_id );
- input.attr('name', input.data('key') + '-' + increase_id );
- input.parent().parent().find('label').attr('for', input.data('key') + '-' + increase_id );
- });
- });
- if ( limit > 0 && field.find('.um-field-group-body').length == limit ) {
- jQuery(this).addClass('disabled');
- }
- });
- jQuery(document).on('click', '.um-field-group-cancel', function( e ) {
- e.preventDefault();
- var field = jQuery(this).parents('.um-field-group');
- var limit = field.data('max_entries');
- if ( field.find('.um-field-group-body').length > 1 ) {
- jQuery(this).parents('.um-field-group-body').remove();
- } else {
- jQuery(this).parents('.um-field-group-body').hide();
- }
- if ( limit > 0 && field.find('.um-field-group-body').length < limit ) {
- field.find('.um-field-group-head').removeClass('disabled');
- }
- return false;
- });
- jQuery( document.body ).on( 'click', '.um-ajax-paginate', function( e ) {
- e.preventDefault();
- var obj = jQuery(this);
- var parent = obj.parent();
- parent.addClass( 'loading' );
- var pages = obj.data('pages')*1;
- var next_page = obj.data('page')*1 + 1;
- var hook = obj.data('hook');
- if ( 'um_load_posts' === hook ) {
- jQuery.ajax({
- url: wp.ajax.settings.url,
- type: 'post',
- data: {
- action: 'um_ajax_paginate_posts',
- author: jQuery(this).data('author'),
- page: next_page,
- nonce: um_scripts.nonce
- },
- complete: function() {
- parent.removeClass( 'loading' );
- },
- success: function( data ) {
- parent.before( data );
- if ( next_page === pages ) {
- parent.remove();
- } else {
- obj.data( 'page', next_page );
- }
- }
- });
- } else if ( 'um_load_comments' === hook ) {
- jQuery.ajax({
- url: wp.ajax.settings.url,
- type: 'post',
- data: {
- action: 'um_ajax_paginate_comments',
- user_id: jQuery(this).data('user_id'),
- page: next_page,
- nonce: um_scripts.nonce
- },
- complete: function() {
- parent.removeClass( 'loading' );
- },
- success: function( data ) {
- parent.before( data );
- if ( next_page === pages ) {
- parent.remove();
- } else {
- obj.data( 'page', next_page );
- }
- }
- });
- } else {
- var args = jQuery(this).data('args');
- var container = jQuery(this).parents('.um').find('.um-ajax-items');
- jQuery.ajax({
- url: wp.ajax.settings.url,
- type: 'post',
- data: {
- action: 'um_ajax_paginate',
- hook: hook,
- args: args,
- nonce: um_scripts.nonce
- },
- complete: function() {
- parent.removeClass( 'loading' );
- },
- success: function(data){
- parent.remove();
- container.append( data );
- }
- });
- }
- });
- jQuery(document).on('click', '.um-ajax-action', function( e ) {
- e.preventDefault();
- var hook = jQuery(this).data('hook');
- var user_id = jQuery(this).data('user_id');
- var arguments = jQuery(this).data('arguments');
- if ( jQuery(this).data('js-remove') ){
- jQuery(this).parents('.'+jQuery(this).data('js-remove')).fadeOut('fast');
- }
- jQuery.ajax({
- url: wp.ajax.settings.url,
- type: 'post',
- data: {
- action: 'um_muted_action',
- hook: hook,
- user_id: user_id,
- arguments: arguments,
- nonce: um_scripts.nonce
- },
- success: function(data){
- }
- });
- return false;
- });
- jQuery( document.body ).on('click', '#um-search-button', function() {
- var action = jQuery(this).parents('.um-search-form').data('members_page');
- var search_keys = [];
- jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
- search_keys.push( jQuery(this).val() );
- });
- var search = jQuery(this).parents('.um-search-form').find('.um-search-field').val();
- var url;
- if ( search === '' ) {
- url = action;
- } else {
- var query = '?';
- for ( var i = 0; i < search_keys.length; i++ ) {
- query += search_keys[i] + '=' + search;
- if ( i !== search_keys.length - 1 ) {
- query += '&';
- }
- }
- url = action + query;
- }
- window.location = url;
- });
- //make search on Enter click
- jQuery( document.body ).on( 'keypress', '.um-search-field', function(e) {
- if ( e.which === 13 ) {
- var action = jQuery(this).parents('.um-search-form').data('members_page');
- var search_keys = [];
- jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
- search_keys.push( jQuery(this).val() );
- });
- var search = jQuery(this).val();
- var url;
- if ( search === '' ) {
- url = action;
- } else {
- var query = '?';
- for ( var i = 0; i < search_keys.length; i++ ) {
- query += search_keys[i] + '=' + search;
- if ( i !== search_keys.length - 1 ) {
- query += '&';
- }
- }
- url = action + query;
- }
- window.location = url;
- }
- });
- jQuery('.um-form input[class="um-button"][type="submit"]').prop('disabled', false);
- jQuery(document).one('click', '.um:not(.um-account) .um-form input[class="um-button"][type="submit"]:not(.um-has-recaptcha)', function() {
- jQuery(this).attr('disabled','disabled');
- jQuery(this).parents('form').trigger('submit');
- });
- var um_select_options_cache = {};
- /**
- * Find all select fields with parent select fields
- */
- jQuery('select[data-um-parent]').each( function() {
- var me = jQuery(this);
- var parent_option = me.data('um-parent');
- var um_ajax_source = me.data('um-ajax-source');
- me.attr('data-um-init-field', true );
- jQuery(document).on('change','select[name="' + parent_option + '"]',function() {
- var parent = jQuery(this);
- var form_id = parent.closest( 'form' ).find( 'input[type="hidden"][name="form_id"]' ).val();
- var arr_key;
- if ( me.attr( 'data-member-directory' ) === 'yes' ) {
- var directory = parent.parents('.um-directory');
- arr_key = um_get_data_for_directory( directory, 'filter_' + parent_option );
- if ( typeof arr_key != 'undefined' ) {
- arr_key = arr_key.split('||');
- } else {
- arr_key = '';
- }
- } else {
- arr_key = parent.val();
- }
- if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] !== 'object' ) {
- if ( typeof( me.um_wait ) === 'undefined' || me.um_wait === false ) {
- me.um_wait = true;
- } else {
- return;
- }
- jQuery.ajax({
- url: wp.ajax.settings.url,
- type: 'post',
- data: {
- action: 'um_select_options',
- parent_option_name: parent_option,
- parent_option: arr_key,
- child_callback: um_ajax_source,
- child_name: me.attr('name'),
- members_directory: me.attr('data-member-directory'),
- form_id: form_id,
- nonce: um_scripts.nonce
- },
- success: function( data ) {
- if ( data.status === 'success' && arr_key !== '' ) {
- um_select_options_cache[ arr_key ] = data;
- um_field_populate_child_options( me, data, arr_key );
- }
- if ( typeof data.debug !== 'undefined' ) {
- console.log( data );
- }
- me.um_wait = false;
- },
- error: function( e ) {
- console.log( e );
- me.um_wait = false;
- }
- });
- }
- if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] == 'object' ) {
- setTimeout( um_field_populate_child_options, 10, me, um_select_options_cache[ arr_key ], arr_key );
- }
- if ( typeof arr_key != 'undefined' || arr_key === '' ) {
- me.find('option[value!=""]').remove();
- me.val('').trigger('change');
- }
- });
- jQuery('select[name="' + parent_option + '"]').trigger('change');
- });
- /**
- * Populates child options and cache ajax response
- *
- * @param me
- * @param data
- * @param arr_key
- */
- function um_field_populate_child_options( me, data, arr_key ) {
- var directory = me.parents('.um-directory');
- var child_name = me.attr('name');
- me.find('option[value!=""]').remove();
- if ( ! me.hasClass('um-child-option-disabled') ) {
- me.prop('disabled', false);
- }
- var arr_items = [],
- search_get = '';
- if ( data.post.members_directory === 'yes' ) {
- arr_items.push({id: '', text: '', selected: 1});
- }
- jQuery.each( data.items, function(k,v){
- arr_items.push({id: k, text: v, selected: (v === search_get)});
- });
- me.select2('destroy');
- me.select2({
- data: arr_items,
- allowClear: true,
- minimumResultsForSearch: 10
- });
- if ( data.post.members_directory === 'yes' ) {
- me.find('option').each( function() {
- if ( jQuery(this).html() !== '' ) {
- jQuery(this).data( 'value_label', jQuery(this).html() ).attr( 'data-value_label', jQuery(this).html() );
- }
- });
- var current_filter_val = um_get_data_for_directory( directory, 'filter_' + child_name );
- if ( typeof current_filter_val !== 'undefined' ) {
- current_filter_val = current_filter_val.split('||');
- var temp_filter_val = [];
- jQuery.each( current_filter_val, function(i) {
- if ( me.find('option[value="' + current_filter_val[ i ] + '"]').length ) {
- temp_filter_val.push( current_filter_val[ i ] );
- }
- me.find('option[value="' + current_filter_val[ i ] + '"]').prop('disabled', true).hide();
- if ( me.find('option:not(:disabled)').length === 1 ) {
- me.prop('disabled', true);
- }
- me.select2('destroy').select2();
- me.val('').trigger( 'change' );
- });
- temp_filter_val = temp_filter_val.join('||');
- if ( current_filter_val !== temp_filter_val ) {
- um_set_url_from_data( directory, 'filter_' + child_name, temp_filter_val );
- um_ajax_get_members( directory );
- }
- }
- um_change_tag( directory );
- }
- if ( data.post.members_directory !== 'yes' ) {
- if ( typeof data.field.default !== 'undefined' && ! me.data('um-original-value') ) {
- me.val( data.field.default ).trigger('change');
- } else if ( me.data('um-original-value') !== '' ) {
- me.val( me.data('um-original-value') ).trigger('change');
- }
- if ( data.field.editable == 0 ) {
- me.addClass('um-child-option-disabled');
- me.attr('disabled','disabled');
- }
- }
- }
- });
|