PageSourceSearch

https://seicap.es/wp-content/plugins/ultimate-member/assets/js/um-scripts.js?ver=2.11.1

js seicap.es collected 2026-10-02 10:36:34 UTC 19,650 bytes, 709 lines download raw bytes

1function um_sanitize_value( value, el ) {
2	var element = document.createElement( 'div' );
3	element.innerText = value;
4	var sanitized_value = element.innerHTML;
5	if ( el ) {
6		jQuery( el ).val( sanitized_value );
7	}
8
9	return sanitized_value;
10}
11
12function um_unsanitize_value( input ) {
13	var e = document.createElement( 'textarea' );
14	e.innerHTML = input;
15	// handle case of empty input
16	return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
17}
18
19jQuery(document).ready(function() {
20
21	jQuery( document.body ).on('click', '.um-dropdown a.real_url', function() {
22		window.location = jQuery(this).attr('href');
23	});
24
25	jQuery( document.body ).on( 'click', '.um-trigger-menu-on-click', function() {
26		var menu = jQuery(this).find('.um-dropdown');
27		UM.dropdown.show( menu );
28		return false;
29	});
30
31	jQuery( document.body ).on('click', '.um-dropdown-hide', function() {
32		UM.dropdown.hideAll();
33		return false;
34	});
35
36	jQuery( document.body ).on('click', 'a.um-manual-trigger', function() {
37		var child = jQuery(this).attr('data-child');
38		var parent = jQuery(this).attr('data-parent');
39		jQuery(this).parents( parent ).find( child ).trigger('click');
40		UM.dropdown.hideAll();
41		return false;
42	});
43
44	jQuery('.um-s1,.um-s2').css({'display':'block'});
45
46	/**
47	 * Unselect empty option if something is selected
48	 *
49	 * @since   2.1.16
50	 * @param   {object} e
51	 * @returns {undefined}
52	 */
53	function unselectEmptyOption( e ) {
54		var $element = jQuery( e.currentTarget );
55		var $selected = $element.find(':selected');
56
57		if ( $selected.length > 1 ) {
58			$selected.each( function ( i, option ) {
59				if ( option.value === '' ) {
60					option.selected = false;
61					$element.trigger( 'change' );
62				}
63			});
64		}
65	}
66
67	if ( typeof( jQuery.fn.select2 ) === 'function' ) {
68		jQuery(".um-s1").each( function( e ) {
69			var obj = jQuery(this);
70
71			obj.select2({
72				allowClear: true,
73				dropdownParent: obj.parent()
74			}).on( 'change', unselectEmptyOption );
75		} );
76
77		jQuery(".um-s2").each( function( e ) {
78			var obj = jQuery(this);
79
80			// fix https://github.com/ultimatemember/ultimatemember/issues/941
81			// using .um-custom-shortcode-tab class as temporarily solution
82			var atts = {};
83			if ( obj.parents('.um-custom-shortcode-tab').length ) {
84				atts = {
85					allowClear: false
86				};
87			} else {
88				atts = {
89					allowClear: false,
90					minimumResultsForSearch: 10,
91					dropdownParent: obj.parent()
92				};
93			}
94			obj.select2( atts ).on( 'change', unselectEmptyOption );
95		} );
96
97		jQuery(".um-s3").each( function( e ) {
98			var obj = jQuery(this);
99
100			obj.select2({
101				allowClear: false,
102				minimumResultsForSearch: -1,
103				dropdownParent: obj.parent()
104			}).on( 'change', unselectEmptyOption );
105		} );
106	}
107
108	if ( typeof( jQuery.fn.um_raty ) === 'function' ) {
109		jQuery('.um-rating').um_raty({
110			half:       false,
111			starType:   'i',
112			number:     function() {
113				return jQuery(this).attr('data-number');
114			},
115			score:      function() {
116				return jQuery(this).attr('data-score');
117			},
118			scoreName:  function() {
119				return jQuery(this).attr('data-key');
120			},
121			hints:      false,
122			click:      function( score, evt ) {
123				um_live_field = this.id;
124				um_live_value = score;
125				um_apply_conditions( jQuery(this), false );
126			}
127		});
128
129		jQuery('.um-rating-readonly').um_raty({
130			half:       false,
131			starType:   'i',
132			number:     function() {
133				return jQuery(this).attr('data-number');
134			},
135			score:      function() {
136				return jQuery(this).attr('data-score');
137			},
138			scoreName:  function() {
139				return jQuery(this).attr('data-key');
140			},
141			hints:      false,
142			readOnly:   true
143		});
144	}
145
146	jQuery(document).on('change', '.um-field-area input[type="radio"]', function() {
147		var field = jQuery(this).parents('.um-field-area');
148		var this_field = jQuery(this).parents('label');
149		field.find('.um-field-radio').removeClass('active');
150		field.find('.um-field-radio').find('i').removeAttr('class').addClass('um-icon-android-radio-button-off');
151		this_field.addClass('active');
152		this_field.find('i').removeAttr('class').addClass('um-icon-android-radio-button-on');
153	});
154
155	jQuery(document).on('change', '.um-field-area input[type="checkbox"]', function() {
156		var this_field = jQuery(this).parents('label');
157		if ( this_field.hasClass('active') ) {
158			this_field.removeClass('active');
159			this_field.find('i').removeAttr('class').addClass('um-icon-android-checkbox-outline-blank');
160		} else {
161			this_field.addClass('active');
162			this_field.find('i').removeAttr('class').addClass('um-icon-android-checkbox-outline');
163		}
164	});
165
166	jQuery(document.body).on('click', '.um-single-image-preview a.cancel', function(e) {
167		e.preventDefault();
168
169		let isModal = false;
170		if ( jQuery(this).parents('.um-modal-body').length > 0 ) {
171			isModal = true;
172		}
173
174		let parent, mode, src, args;
175
176		if ( ! isModal ) {
177			parent = jQuery(this).parents('.um-field');
178			mode   = parent.data('mode');
179			src    = parent.find('.um-single-image-preview img').attr('src');
180
181			let filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
182
183			args = {
184				data: {
185					mode: mode,
186					filename: filename,
187					src: src,
188					nonce: um_scripts.nonce
189				},
190				success: function() {
191					parent.find('.um-single-image-preview img').replaceWith('<img src="" alt="" />');
192					parent.find('.um-single-image-preview').removeAttr('style').hide();
193					parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
194					parent.find('input[type="hidden"]').val( 'empty_file' );
195				}
196			};
197
198			if ( mode !== 'register' ) {
199				args.data.user_id = jQuery(this).parents('form').find('#user_id').val();
200			}
201		} else {
202			parent = jQuery(this).parents('.um-modal-body');
203			mode   = parent.find('.um-single-image-upload').data('set_mode');
204			src    = parent.find('.um-single-image-preview img').attr('src');
205
206			args = {
207				data: {
208					src: src,
209					mode: mode,
210					nonce: um_scripts.nonce
211				},
212				success: function() {
213					wp.hooks.doAction( 'um_after_removing_preview' );
214
215					parent.find('.um-single-image-preview img').replaceWith('<img src="" alt="" />'); // required replaceWith for flushing DOM before re-init Cropper.
216					parent.find('.um-single-image-preview').removeAttr('style').hide();
217					parent.find('.ajax-upload-dragdrop').show();
218					parent.find('.um-modal-btn.um-finish-upload').addClass( 'disabled' );
219
220					um_modal_responsive();
221				}
222			};
223		}
224
225		wp.ajax.send( 'um_remove_file', args );
226	});
227
228	jQuery(document.body).on('click', '.um-single-file-preview a.cancel', function(e) {
229		e.preventDefault();
230
231		let isModal = false;
232		if ( jQuery(this).parents('.um-modal-body').length > 0 ) {
233			isModal = true;
234		}
235
236		let parent, mode, src, args;
237
238		if ( ! isModal ) {
239			parent = jQuery(this).parents('.um-field');
240			src    = parent.find('.um-single-fileinfo a').attr('href');
241			mode   = parent.data('mode');
242
243			let filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
244
245			args = {
246				data: {
247					mode: mode,
248					filename: filename,
249					src: src,
250					nonce: um_scripts.nonce
251				},
252				success: function() {
253					parent.find('.um-single-file-preview').hide();
254					parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
255					parent.find('input[type=hidden]').val( 'empty_file' );
256				}
257			};
258
259			if ( mode !== 'register' ) {
260				args.data.user_id = jQuery(this).parents('form' ).find( '#user_id' ).val();
261			}
262		} else {
263			parent = jQuery(this).parents('.um-modal-body');
264			src    = parent.find('.um-single-fileinfo a').attr('href');
265			mode   = parent.find('.um-single-file-upload').data('set_mode');
266
267			args = {
268				data: {
269					src: src,
270					mode: mode,
271					nonce: um_scripts.nonce
272				},
273				success: function() {
274					parent.find('.um-single-file-preview').hide();
275					parent.find('.ajax-upload-dragdrop').show();
276					parent.find('.um-modal-btn.um-finish-upload').addClass('disabled');
277					um_modal_responsive();
278				}
279			};
280		}
281		wp.ajax.send( 'um_remove_file', args );
282	});
283
284	// @todo deprecate
285	jQuery(document).on('click', '.um-field-group-head:not(.disabled)', function() {
286		var field = jQuery(this).parents('.um-field-group');
287		var limit = field.data('max_entries');
288
289		if ( field.find('.um-field-group-body').is(':hidden')){
290			field.find('.um-field-group-body').show();
291		} else {
292			field.find('.um-field-group-body:first').clone().appendTo( field );
293		}
294
295		var increase_id = 0;
296		field.find('.um-field-group-body').each(function(){
297			increase_id++;
298			jQuery(this).find('input').each(function(){
299				var input = jQuery(this);
300				input.attr('id', input.data('key') + '-' + increase_id );
301				input.attr('name', input.data('key') + '-' + increase_id );
302				input.parent().parent().find('label').attr('for', input.data('key') + '-' + increase_id );
303			});
304		});
305
306		if ( limit > 0 && field.find('.um-field-group-body').length == limit ) {
307
308			jQuery(this).addClass('disabled');
309
310		}
311	});
312	// @todo deprecate
313	jQuery(document).on('click', '.um-field-group-cancel', function( e ) {
314		e.preventDefault();
315		var field = jQuery(this).parents('.um-field-group');
316
317		var limit = field.data('max_entries');
318
319		if ( field.find('.um-field-group-body').length > 1 ) {
320			jQuery(this).parents('.um-field-group-body').remove();
321		} else {
322			jQuery(this).parents('.um-field-group-body').hide();
323		}
324
325		if ( limit > 0 && field.find('.um-field-group-body').length < limit ) {
326			field.find('.um-field-group-head').removeClass('disabled');
327		}
328
329		return false;
330	});
331
332
333	jQuery( document.body ).on( 'click', '.um-ajax-paginate', function( e ) {
334		e.preventDefault();
335
336		var obj = jQuery(this);
337		var parent = obj.parent();
338		parent.addClass( 'loading' );
339
340		var pages = obj.data('pages')*1;
341		var next_page = obj.data('page')*1 + 1;
342
343		var hook = obj.data('hook');
344
345		if ( 'um_load_posts' === hook ) {
346
347			jQuery.ajax({
348				url: wp.ajax.settings.url,
349				type: 'post',
350				data: {
351					action: 'um_ajax_paginate_posts',
352					author: jQuery(this).data('author'),
353					page:   next_page,
354					nonce: um_scripts.nonce
355				},
356				complete: function() {
357					parent.removeClass( 'loading' );
358				},
359				success: function( data ) {
360					parent.before( data );
361					if ( next_page === pages ) {
362						parent.remove();
363					} else {
364						obj.data( 'page', next_page );
365					}
366				}
367			});
368		} else if ( 'um_load_comments' === hook ) {
369
370			jQuery.ajax({
371				url: wp.ajax.settings.url,
372				type: 'post',
373				data: {
374					action: 'um_ajax_paginate_comments',
375					user_id: jQuery(this).data('user_id'),
376					page: next_page,
377					nonce: um_scripts.nonce
378				},
379				complete: function() {
380					parent.removeClass( 'loading' );
381				},
382				success: function( data ) {
383					parent.before( data );
384					if ( next_page === pages ) {
385						parent.remove();
386					} else {
387						obj.data( 'page', next_page );
388					}
389				}
390			});
391		} else {
392			var args = jQuery(this).data('args');
393			var container = jQuery(this).parents('.um.um-profile.um-viewing').find('.um-ajax-items');
394
395			jQuery.ajax({
396				url: wp.ajax.settings.url,
397				type: 'post',
398				data: {
399					action: 'um_ajax_paginate',
400					hook: hook,
401					args: args,
402					nonce: um_scripts.nonce
403				},
404				complete: function() {
405					parent.removeClass( 'loading' );
406				},
407				success: function(data){
408					parent.remove();
409					container.append( data );
410				}
411			});
412		}
413	});
414
415
416	jQuery(document).on('click', '.um-ajax-action', function( e ) {
417		e.preventDefault();
418		var hook = jQuery(this).data('hook');
419		var user_id = jQuery(this).data('user_id');
420		var args = jQuery(this).data('args');
421
422		if ( jQuery(this).data('js-remove') ){
423			jQuery(this).parents('.'+jQuery(this).data('js-remove')).fadeOut('fast');
424		}
425
426		jQuery.ajax({
427			url: wp.ajax.settings.url,
428			type: 'post',
429			data: {
430				action: 'um_muted_action',
431				hook: hook,
432				user_id: user_id,
433				arguments: args,
434				nonce: um_scripts.nonce
435			},
436			success: function(data){
437
438			}
439		});
440		return false;
441	});
442
443	jQuery( document.body ).on('click', '#um-search-button', function() {
444		var action = jQuery(this).parents('.um-search-form').data('members_page');
445
446		var search_keys = [];
447		jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
448			search_keys.push( jQuery(this).val() );
449		});
450
451		var search = jQuery(this).parents('.um-search-form').find('.um-search-field').val();
452
453		var url;
454		if ( search === '' ) {
455			url = action;
456		} else {
457			var query = '?';
458			for ( var i = 0; i < search_keys.length; i++ ) {
459				query += search_keys[i] + '=' + search;
460				if ( i !== search_keys.length - 1 ) {
461					query += '&';
462				}
463			}
464
465			url = action + query;
466		}
467		window.location = url;
468	});
469
470	//make search on Enter click
471	jQuery( document.body ).on( 'keypress', '.um-search-field', function(e) {
472		if ( e.which === 13 ) {
473			var action = jQuery(this).parents('.um-search-form').data('members_page');
474
475			var search_keys = [];
476			jQuery(this).parents('.um-search-form').find('input[name="um-search-keys[]"]').each( function() {
477				search_keys.push( jQuery(this).val() );
478			});
479
480			var search = jQuery(this).val();
481
482			var url;
483			if ( search === '' ) {
484				url = action;
485			} else {
486				var query = '?';
487				for ( var i = 0; i < search_keys.length; i++ ) {
488					query += search_keys[i] + '=' + search;
489					if ( i !== search_keys.length - 1 ) {
490						query += '&';
491					}
492				}
493
494				url = action + query;
495			}
496			window.location = url;
497		}
498	});
499
500	jQuery('.um-form input[class="um-button"][type="submit"]').prop('disabled', false);
501
502	jQuery(document).one('click', '.um:not(.um-account) .um-form input[class="um-button"][type="submit"]:not(.um-has-recaptcha)', function() {
503		jQuery(this).attr('disabled','disabled');
504		jQuery(this).parents('form').trigger('submit');
505	});
506
507
508	var um_select_options_cache = {};
509
510	/**
511	 * Find all select fields with parent select fields
512	 */
513	jQuery('select[data-um-parent]').each( function() {
514
515		var me = jQuery(this);
516		var parent_option = me.data('um-parent');
517		var um_ajax_source = me.data('um-ajax-source');
518
519		me.attr('data-um-init-field', true );
520
521		jQuery(document).on('change','select[name="' + parent_option + '"]',function() {
522			var parent  = jQuery(this);
523			var form_id = parent.closest( 'form' ).find( 'input[type="hidden"][name="form_id"]' ).val();
524
525			var arr_key;
526			if ( me.attr( 'data-member-directory' ) === 'yes' ) {
527				var directory = parent.parents('.um-directory');
528				arr_key = um_get_data_for_directory( directory, 'filter_' + parent_option );
529				if ( typeof arr_key != 'undefined' ) {
530					arr_key = arr_key.split('||');
531				} else {
532					arr_key = '';
533				}
534			} else {
535				arr_key = parent.val();
536			}
537
538			if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] !== 'object' ) {
539
540				if ( typeof( me.um_wait ) === 'undefined' || me.um_wait === false ) {
541					me.um_wait = true;
542				} else {
543					return;
544				}
545
546				jQuery.ajax({
547					url: wp.ajax.settings.url,
548					type: 'post',
549					data: {
550						action: 'um_select_options',
551						parent_option_name: parent_option,
552						parent_option: arr_key,
553						child_callback: um_ajax_source,
554						child_name: me.attr('name'),
555						members_directory: me.attr('data-member-directory'),
556						form_id: form_id,
557						nonce: um_scripts.nonce
558					},
559					success: function( data ) {
560						if ( data.status === 'success' && arr_key !== '' ) {
561							um_select_options_cache[ arr_key ] = data;
562							um_field_populate_child_options( me, data, arr_key );
563						}
564
565						if ( typeof data.debug !== 'undefined' ) {
566							console.log( data );
567						}
568
569						me.um_wait = false;
570					},
571					error: function( e ) {
572						console.log( e );
573						me.um_wait = false;
574					}
575				});
576
577			}
578
579			if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] == 'object' ) {
580				setTimeout( um_field_populate_child_options, 10, me, um_select_options_cache[ arr_key ], arr_key );
581			}
582
583			if ( typeof arr_key != 'undefined' || arr_key === '' ) {
584				me.find('option[value!=""]').remove();
585				me.val('').trigger('change');
586			}
587
588		});
589
590		jQuery('select[name="' + parent_option + '"]').trigger('change');
591
592	});
593
594
595	/**
596	 * Populates child options and cache ajax response
597	 *
598	 * @param me
599	 * @param data
600	 * @param arr_key
601	 */
602	function um_field_populate_child_options( me, data, arr_key ) {
603		var directory = me.parents('.um-directory');
604		var child_name = me.attr('name');
605		me.find('option[value!=""]').remove();
606
607		if ( ! me.hasClass('um-child-option-disabled') ) {
608			me.prop('disabled', false);
609		}
610
611		var arr_items = [],
612			search_get = '';
613
614		if ( data.post.members_directory === 'yes' ) {
615			arr_items.push({id: '', text: '', selected: 1});
616		}
617		jQuery.each( data.items, function(k,v){
618			arr_items.push({id: k, text: v, selected: (v === search_get)});
619		});
620
621		me.select2('destroy');
622		if ( me.hasClass( 'um-s1' ) ) {
623			me.select2({
624				data: arr_items,
625				allowClear: true,
626				dropdownParent: me.parent()
627			});
628		} else if ( me.hasClass( 'um-s2' ) ) {
629			me.select2({
630				data: arr_items,
631				allowClear: true,
632				minimumResultsForSearch: 10,
633				dropdownParent: me.parent()
634			});
635		}
636
637
638
639		if ( data.post.members_directory === 'yes' ) {
640			me.find('option').each( function() {
641				if ( jQuery(this).html() !== '' ) {
642					jQuery(this).data( 'value_label', jQuery(this).html() ).attr( 'data-value_label', jQuery(this).html() );
643				}
644			});
645
646			var current_filter_val = um_get_data_for_directory( directory, 'filter_' + child_name );
647			if ( typeof current_filter_val !== 'undefined' ) {
648				current_filter_val = current_filter_val.split('||');
649
650				var temp_filter_val = [];
651				jQuery.each( current_filter_val, function(i) {
652					if ( me.find('option[value="' + current_filter_val[ i ] + '"]').length ) {
653						temp_filter_val.push( current_filter_val[ i ] );
654					}
655					me.find('option[value="' + current_filter_val[ i ] + '"]').prop('disabled', true).hide();
656					if ( me.find('option:not(:disabled)').length === 1 ) {
657						me.prop('disabled', true);
658					}
659
660					me.select2('destroy').select2();
661					me.val('').trigger( 'change' );
662				});
663
664				temp_filter_val = temp_filter_val.join('||');
665				if ( current_filter_val !== temp_filter_val ) {
666					um_set_url_from_data( directory, 'filter_' + child_name, temp_filter_val );
667					um_ajax_get_members( directory );
668				}
669			}
670
671			um_change_tag( directory );
672		}
673
674		if ( data.post.members_directory !== 'yes' ) {
675			if ( typeof data.field.default !== 'undefined' && ! me.data('um-original-value') ) {
676				me.val( data.field.default ).trigger('change');
677			} else if ( me.data('um-original-value') !== '' ) {
678				me.val( me.data('um-original-value') ).trigger('change');
679			}
680
681			if ( data.field.editable == 0 ) {
682				me.addClass('um-child-option-disabled');
683				me.attr('disabled','disabled');
684			}
685		}
686	}
687
688	jQuery( document.body ).on('click', '.um-toggle-password', function (){
689		let parent = jQuery(this).closest('.um-field-area-password');
690		let passwordField = parent.find('input');
691		let type = passwordField.attr('type');
692		if ( 'text' === type ) {
693			passwordField.attr('type', 'password');
694			parent.find('i').toggleClass('um-icon-eye um-icon-eye-disabled');
695		} else {
696			passwordField.attr('type', 'text');
697			parent.find('i').toggleClass('um-icon-eye um-icon-eye-disabled');
698		}
699	});
700});
701
702// Makes the honeypot.
703jQuery( window ).on( 'load', function() {
704	let $honeypotField = jQuery('input[name="um_request"]');
705	if ( $honeypotField.length ) {
706		$honeypotField.val('');
707	}
708});
709

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.