PageSourceSearch

https://ateneodegranada.com/wp-content/plugins/ultimate-member/assets/js/um-scripts.js?ver=2.14.0

js ateneodegranada.com collected 2026-10-02 07:05:57 UTC 19,344 bytes, 696 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 nonce = jQuery(this).data('nonce');
175
176		let parent, mode, src, args;
177
178		if ( ! isModal ) {
179			parent = jQuery(this).parents('.um-field');
180			mode   = parent.data('mode');
181			src    = parent.find('.um-single-image-preview img').attr('src');
182
183			let filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
184
185			args = {
186				data: {
187					mode: mode,
188					filename: filename,
189					src: src,
190					key: parent.data('key'),
191					_wpnonce: nonce
192				},
193				success: function() {
194					parent.find('.um-single-image-preview img').replaceWith('<img src="" alt="" />');
195					parent.find('.um-single-image-preview').removeAttr('style').hide();
196					parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
197					parent.find('input[type="hidden"]').val( 'empty_file' );
198				}
199			};
200
201			if ( mode !== 'register' ) {
202				args.data.user_id = jQuery(this).parents('form').find('#user_id').val();
203			}
204		} else {
205			parent = jQuery(this).parents('.um-modal-body');
206			mode   = parent.find('.um-single-image-upload').data('set_mode');
207			src    = parent.find('.um-single-image-preview img').attr('src');
208
209			args = {
210				data: {
211					src: src,
212					mode: mode,
213					key: parent.find('.um-single-image-upload').data('key'),
214					_wpnonce: nonce
215				},
216				success: function() {
217					wp.hooks.doAction( 'um_after_removing_preview' );
218
219					parent.find('.um-single-image-preview img').replaceWith('<img src="" alt="" />'); // required replaceWith for flushing DOM before re-init Cropper.
220					parent.find('.um-single-image-preview').removeAttr('style').hide();
221					parent.find('.ajax-upload-dragdrop').show();
222					parent.find('.um-modal-btn.um-finish-upload').addClass( 'disabled' );
223
224					um_modal_responsive();
225				}
226			};
227		}
228
229		wp.ajax.send( 'um_remove_file', args );
230	});
231
232	jQuery(document.body).on('click', '.um-single-file-preview a.cancel', function(e) {
233		e.preventDefault();
234
235		let isModal = false;
236		if ( jQuery(this).parents('.um-modal-body').length > 0 ) {
237			isModal = true;
238		}
239
240		let nonce = jQuery(this).data('nonce');
241
242		let parent, mode, src, args;
243
244		if ( ! isModal ) {
245			parent = jQuery(this).parents('.um-field');
246			src    = parent.find('.um-single-fileinfo a').attr('href');
247			mode   = parent.data('mode');
248
249			let filename = parent.find( 'input[type="hidden"]#' + parent.data('key') + '-' + jQuery(this).parents('form').find('input[type="hidden"][name="form_id"]').val() ).val();
250
251			args = {
252				data: {
253					mode: mode,
254					filename: filename,
255					src: src,
256					key: parent.data('key'),
257					_wpnonce: nonce
258				},
259				success: function() {
260					parent.find('.um-single-file-preview').hide();
261					parent.find('.um-btn-auto-width').html( parent.data('upload-label') );
262					parent.find('input[type=hidden]').val( 'empty_file' );
263				}
264			};
265
266			if ( mode !== 'register' ) {
267				args.data.user_id = jQuery(this).parents('form' ).find( '#user_id' ).val();
268			}
269		} else {
270			parent = jQuery(this).parents('.um-modal-body');
271			src    = parent.find('.um-single-fileinfo a').attr('href');
272			mode   = parent.find('.um-single-file-upload').data('set_mode');
273
274			args = {
275				data: {
276					src: src,
277					mode: mode,
278					key: parent.find('.um-single-file-upload').data('key'),
279					_wpnonce: nonce
280				},
281				success: function() {
282					parent.find('.um-single-file-preview').hide();
283					parent.find('.ajax-upload-dragdrop').show();
284					parent.find('.um-modal-btn.um-finish-upload').addClass('disabled');
285					um_modal_responsive();
286				}
287			};
288		}
289		wp.ajax.send( 'um_remove_file', args );
290	});
291
292	// @todo deprecate
293	jQuery(document).on('click', '.um-field-group-head:not(.disabled)', function() {
294		var field = jQuery(this).parents('.um-field-group');
295		var limit = field.data('max_entries');
296
297		if ( field.find('.um-field-group-body').is(':hidden')){
298			field.find('.um-field-group-body').show();
299		} else {
300			field.find('.um-field-group-body:first').clone().appendTo( field );
301		}
302
303		var increase_id = 0;
304		field.find('.um-field-group-body').each(function(){
305			increase_id++;
306			jQuery(this).find('input').each(function(){
307				var input = jQuery(this);
308				input.attr('id', input.data('key') + '-' + increase_id );
309				input.attr('name', input.data('key') + '-' + increase_id );
310				input.parent().parent().find('label').attr('for', input.data('key') + '-' + increase_id );
311			});
312		});
313
314		if ( limit > 0 && field.find('.um-field-group-body').length == limit ) {
315
316			jQuery(this).addClass('disabled');
317
318		}
319	});
320	// @todo deprecate
321	jQuery(document).on('click', '.um-field-group-cancel', function( e ) {
322		e.preventDefault();
323		var field = jQuery(this).parents('.um-field-group');
324
325		var limit = field.data('max_entries');
326
327		if ( field.find('.um-field-group-body').length > 1 ) {
328			jQuery(this).parents('.um-field-group-body').remove();
329		} else {
330			jQuery(this).parents('.um-field-group-body').hide();
331		}
332
333		if ( limit > 0 && field.find('.um-field-group-body').length < limit ) {
334			field.find('.um-field-group-head').removeClass('disabled');
335		}
336
337		return false;
338	});
339
340
341	jQuery( document.body ).on( 'click', '.um-ajax-paginate', function( e ) {
342		e.preventDefault();
343
344		var obj = jQuery(this);
345		var parent = obj.parent();
346		parent.addClass( 'loading' );
347
348		var pages = obj.data('pages')*1;
349		var next_page = obj.data('page')*1 + 1;
350
351		var hook = obj.data('hook');
352		let nonce = obj.data('nonce');
353
354		if ( 'um_load_posts' === hook ) {
355
356			jQuery.ajax({
357				url: wp.ajax.settings.url,
358				type: 'post',
359				data: {
360					action: 'um_ajax_paginate_posts',
361					author: jQuery(this).data('author'),
362					page:   next_page,
363					_wpnonce: nonce
364				},
365				complete: function() {
366					parent.removeClass( 'loading' );
367				},
368				success: function( data ) {
369					parent.before( data );
370					if ( next_page === pages ) {
371						parent.remove();
372					} else {
373						obj.data( 'page', next_page );
374					}
375				}
376			});
377		} else if ( 'um_load_comments' === hook ) {
378
379			jQuery.ajax({
380				url: wp.ajax.settings.url,
381				type: 'post',
382				data: {
383					action: 'um_ajax_paginate_comments',
384					user_id: jQuery(this).data('user_id'),
385					page: next_page,
386					_wpnonce: nonce
387				},
388				complete: function() {
389					parent.removeClass( 'loading' );
390				},
391				success: function( data ) {
392					parent.before( data );
393					if ( next_page === pages ) {
394						parent.remove();
395					} else {
396						obj.data( 'page', next_page );
397					}
398				}
399			});
400		} else {
401			var args = jQuery(this).data('args');
402			var user_id = jQuery(this).data('user_id');
403			var container = jQuery(this).parents('.um.um-profile.um-viewing').find('.um-ajax-items');
404
405			jQuery.ajax({
406				url: wp.ajax.settings.url,
407				type: 'post',
408				data: {
409					action: 'um_ajax_paginate',
410					hook: hook,
411					user_id: user_id,
412					args: args,
413					_wpnonce: nonce
414				},
415				complete: function() {
416					parent.removeClass( 'loading' );
417				},
418				success: function(data){
419					parent.remove();
420					container.append( data );
421				}
422			});
423		}
424	});
425
426	jQuery( document.body ).on('click', '#um-search-button', function(e) {
427		e.preventDefault();
428
429		let $btn = jQuery(this);
430		if ( $btn.hasClass( 'um-disabled' ) ) {
431			return;
432		}
433
434		let $form = $btn.parents('.um-search-form');
435		let search = $form.find('.um-search-field').val();
436		let nonce = $form.data('nonce');
437
438		$btn.addClass('um-disabled');
439		wp.ajax.send( 'um_search_widget_request', {
440			data: {
441				search: search,
442				_wpnonce: nonce
443			},
444			success: function(response) {
445				$btn.removeClass('um-disabled');
446				window.location = response.url;
447			},
448			error: function(e) {
449				console.log(e);
450				$btn.removeClass('um-disabled');
451			}
452		});
453	});
454
455	//make search on Enter click
456	jQuery( document.body ).on( 'keypress', '.um-search-field', function(e) {
457		if ( e.which === 13 ) {
458			let $field = jQuery(this);
459			let $form = $field.parents('.um-search-form');
460
461			let $btn = $form.find('#um-search-button');
462			if ( $btn.hasClass( 'um-disabled' ) ) {
463				return;
464			}
465			let search = $field.val();
466			let nonce = $form.data('nonce');
467
468			$btn.addClass('um-disabled');
469			wp.ajax.send( 'um_search_widget_request', {
470				data: {
471					search: search,
472					_wpnonce: nonce
473				},
474				success: function(response) {
475					$btn.removeClass('um-disabled');
476					window.location = response.url;
477				},
478				error: function(e) {
479					console.log(e);
480					$btn.removeClass('um-disabled');
481				}
482			});
483		}
484	});
485
486	jQuery('.um-form input[class="um-button"][type="submit"]').prop('disabled', false);
487
488	jQuery(document).one('click', '.um:not(.um-account) .um-form input[class="um-button"][type="submit"]:not(.um-has-recaptcha)', function() {
489		jQuery(this).attr('disabled','disabled');
490		jQuery(this).parents('form').trigger('submit');
491	});
492
493
494	var um_select_options_cache = {};
495
496	/**
497	 * Find all select fields with parent select fields
498	 */
499	jQuery('select[data-um-parent]').each( function() {
500
501		var me = jQuery(this);
502		var parent_option = me.data('um-parent');
503		let parent_nonce = me.data('parent-nonce');
504		var um_ajax_source = me.data('um-ajax-source');
505
506		me.attr('data-um-init-field', true );
507
508		jQuery(document).on('change','select[name="' + parent_option + '"]',function() {
509			var parent  = jQuery(this);
510			var form_id = parent.closest( 'form' ).find( 'input[type="hidden"][name="form_id"]' ).val();
511
512			var arr_key;
513			if ( me.attr( 'data-member-directory' ) === 'yes' ) {
514				var directory = parent.parents('.um-directory');
515				arr_key = um_get_data_for_directory( directory, 'filter_' + parent_option );
516				if ( typeof arr_key != 'undefined' ) {
517					arr_key = arr_key.split('||');
518				} else {
519					arr_key = '';
520				}
521			} else {
522				arr_key = parent.val();
523			}
524
525			if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] !== 'object' ) {
526
527				if ( typeof( me.um_wait ) === 'undefined' || me.um_wait === false ) {
528					me.um_wait = true;
529				} else {
530					return;
531				}
532
533				jQuery.ajax({
534					url: wp.ajax.settings.url,
535					type: 'post',
536					data: {
537						action: 'um_select_options',
538						parent_option_name: parent_option,
539						parent_option: arr_key,
540						child_callback: um_ajax_source,
541						child_name: me.attr('name'),
542						members_directory: me.attr('data-member-directory'),
543						form_id: form_id,
544						_wpnonce: parent_nonce
545					},
546					success: function( data ) {
547						if ( data.status === 'success' && arr_key !== '' ) {
548							um_select_options_cache[ arr_key ] = data;
549							um_field_populate_child_options( me, data, arr_key );
550						}
551
552						if ( typeof data.debug !== 'undefined' ) {
553							console.log( data );
554						}
555
556						me.um_wait = false;
557					},
558					error: function( e ) {
559						console.log( e );
560						me.um_wait = false;
561					}
562				});
563
564			}
565
566			if ( typeof arr_key != 'undefined' && arr_key !== '' && typeof um_select_options_cache[ arr_key ] == 'object' ) {
567				setTimeout( um_field_populate_child_options, 10, me, um_select_options_cache[ arr_key ], arr_key );
568			}
569
570			if ( typeof arr_key != 'undefined' || arr_key === '' ) {
571				me.find('option[value!=""]').remove();
572				me.val('').trigger('change');
573			}
574
575		});
576
577		jQuery('select[name="' + parent_option + '"]').trigger('change');
578
579	});
580
581
582	/**
583	 * Populates child options and cache ajax response
584	 *
585	 * @param me
586	 * @param data
587	 * @param arr_key
588	 */
589	function um_field_populate_child_options( me, data, arr_key ) {
590		var directory = me.parents('.um-directory');
591		var child_name = me.attr('name');
592		me.find('option[value!=""]').remove();
593
594		if ( ! me.hasClass('um-child-option-disabled') ) {
595			me.prop('disabled', false);
596		}
597
598		var arr_items = [],
599			search_get = '';
600
601		if ( data.post.members_directory === 'yes' ) {
602			arr_items.push({id: '', text: '', selected: 1});
603		}
604		jQuery.each( data.items, function(k,v){
605			arr_items.push({id: k, text: v, selected: (v === search_get)});
606		});
607
608		me.select2('destroy');
609		if ( me.hasClass( 'um-s1' ) ) {
610			me.select2({
611				data: arr_items,
612				allowClear: true,
613				dropdownParent: me.parent()
614			});
615		} else if ( me.hasClass( 'um-s2' ) ) {
616			me.select2({
617				data: arr_items,
618				allowClear: true,
619				minimumResultsForSearch: 10,
620				dropdownParent: me.parent()
621			});
622		}
623
624
625
626		if ( data.post.members_directory === 'yes' ) {
627			me.find('option').each( function() {
628				if ( jQuery(this).html() !== '' ) {
629					jQuery(this).data( 'value_label', jQuery(this).html() ).attr( 'data-value_label', jQuery(this).html() );
630				}
631			});
632
633			var current_filter_val = um_get_data_for_directory( directory, 'filter_' + child_name );
634			if ( typeof current_filter_val !== 'undefined' ) {
635				current_filter_val = current_filter_val.split('||');
636
637				var temp_filter_val = [];
638				jQuery.each( current_filter_val, function(i) {
639					if ( me.find('option[value="' + current_filter_val[ i ] + '"]').length ) {
640						temp_filter_val.push( current_filter_val[ i ] );
641					}
642					me.find('option[value="' + current_filter_val[ i ] + '"]').prop('disabled', true).hide();
643					if ( me.find('option:not(:disabled)').length === 1 ) {
644						me.prop('disabled', true);
645					}
646
647					me.select2('destroy').select2();
648					me.val('').trigger( 'change' );
649				});
650
651				temp_filter_val = temp_filter_val.join('||');
652				if ( current_filter_val !== temp_filter_val ) {
653					um_set_url_from_data( directory, 'filter_' + child_name, temp_filter_val );
654					um_ajax_get_members( directory );
655				}
656			}
657
658			um_change_tag( directory );
659		}
660
661		if ( data.post.members_directory !== 'yes' ) {
662			if ( typeof data.field.default !== 'undefined' && ! me.data('um-original-value') ) {
663				me.val( data.field.default ).trigger('change');
664			} else if ( me.data('um-original-value') !== '' ) {
665				me.val( me.data('um-original-value') ).trigger('change');
666			}
667
668			if ( data.field.editable == 0 ) {
669				me.addClass('um-child-option-disabled');
670				me.attr('disabled','disabled');
671			}
672		}
673	}
674
675	jQuery( document.body ).on('click', '.um-toggle-password', function (){
676		let parent = jQuery(this).closest('.um-field-area-password');
677		let passwordField = parent.find('input');
678		let type = passwordField.attr('type');
679		if ( 'text' === type ) {
680			passwordField.attr('type', 'password');
681			parent.find('i').toggleClass('um-icon-eye um-icon-eye-disabled');
682		} else {
683			passwordField.attr('type', 'text');
684			parent.find('i').toggleClass('um-icon-eye um-icon-eye-disabled');
685		}
686	});
687});
688
689// Makes the honeypot.
690jQuery( window ).on( 'load', function() {
691	let $honeypotField = jQuery('input[name="um_request"]');
692	if ( $honeypotField.length ) {
693		$honeypotField.val('');
694	}
695});
696

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.