/* Plugin Name: Ultimate Member Description: Frontend scripts Version: 2.1.16 Author: Ultimate Member Author URI: http://ultimatemember.com/ */ if ( typeof (window.UM) !== 'object' ) { window.UM = {}; } UM.dropdown = { /** * Hide the menu * @param {object} menu * @returns {undefined} */ hide: function (menu) { var $menu = jQuery(menu); $menu.parents('div').find('a').removeClass('active'); $menu.hide(); }, /** * Hide all menus * @returns {undefined} */ hideAll: function () { var $menu = jQuery('.um-dropdown'); $menu.parents('div').find('a').removeClass('active'); $menu.hide(); }, /** * Update the menu position * @param {object} menu * @returns {undefined} */ setPosition: function (menu) { var $menu = jQuery(menu), menu_width = 200; var direction = jQuery('html').attr('dir'), element = $menu.attr('data-element'), position = $menu.attr('data-position'), trigger = $menu.attr('data-trigger'); var $element = element && jQuery(element).length ? jQuery(element) : ($menu.siblings('a').length ? $menu.siblings('a').first() : $menu.parent()); $element.addClass('um-trigger-menu-on-' + trigger); var gap_right = 0, left_p = ($element.outerWidth() - menu_width) / 2, top_p = $element.outerHeight(), coord = $element.offset(); // profile photo if ( $element.is('.um-profile-photo') ) { var $imgBox = $element.find('.um-profile-photo-img'); if ( $element.closest('div.uimob500').length ) { top_p = $element.outerHeight() - $imgBox.outerHeight() / 4; } else { left_p = ($imgBox.outerWidth() - menu_width) / 2; top_p = $imgBox.outerHeight() / 4; } } // cover photo if ( $element.is('.um-cover') ) { var $imgBox = $element.find('.um-cover-e'); if ( $element.closest('div.uimob500').length ) { left_p = ($imgBox.outerWidth() - menu_width) / 2; top_p = $imgBox.outerHeight() / 2 + 24; } else { left_p = ($imgBox.outerWidth() - menu_width) / 2; top_p = $imgBox.outerHeight() / 2 + 46; } } // position if ( position === 'lc' && direction === 'rtl' ) { position = 'rc'; } if( $element.outerWidth() < menu_width ){ if ( direction === 'rtl' && coord.left < menu_width*0.5 ){ position = 'rc'; } else if ( direction !== 'rtl' && (window.innerWidth - coord.left - $element.outerWidth()) < menu_width*0.5 ){ position = 'lc'; } } switch ( position ) { case 'lc': gap_right = $element.width() + 17; $menu.css({ 'top': 0, 'width': menu_width, 'left': 'auto', 'right': gap_right + 'px', 'text-align': 'center' }); $menu.find('.um-dropdown-arr').css({ 'top': '4px', 'left': 'auto', 'right': '-17px' }).find('i').removeClass().addClass('um-icon-arrow-right-b'); break; case 'rc': gap_right = $element.width() + 25; $menu.css({ 'top': 0, 'width': menu_width, 'left': gap_right + 'px', 'right': 'auto', 'text-align': 'center' }); $menu.find('.um-dropdown-arr').css({ 'top': '4px', 'left': '-17px', 'right': 'auto' }).find('i').removeClass().addClass('um-icon-arrow-left-b'); break; case 'bc': default: var top_offset = $menu.data('top-offset'); if ( typeof top_offset !== 'undefined' ) { top_p += top_offset; } $menu.css({ 'top': top_p + 6, 'width': menu_width, 'left': left_p, 'right': 'auto', 'text-align': 'center' }); $menu.find('.um-dropdown-arr').css({ 'top': '-17px', 'left': ($menu.width() / 2) - 12, 'right': 'auto' }).find('i').removeClass().addClass('um-icon-arrow-up-b'); break; } }, /** * Show the menu * @param {object} menu * @returns {undefined} */ show: function (menu) { var $menu = jQuery(menu); UM.dropdown.hideAll(); UM.dropdown.setPosition($menu); $menu.show(); } }; /** * Update menu position */ function UM_domenus() { jQuery('.um-dropdown').each( function( i, menu ) { UM.dropdown.setPosition( menu ); }); } function UM_check_password_matched() { jQuery(document).on('keyup', 'input[data-key=user_password],input[data-key=confirm_user_password]', function(e) { var value = jQuery('input[data-key=user_password]').val(); var match = jQuery('input[data-key=confirm_user_password]').val(); var field = jQuery('input[data-key=user_password],input[data-key=confirm_user_password]'); if(!value && !match) { field.removeClass('um-validate-matched').removeClass('um-validate-not-matched'); } else if(value !== match) { field.removeClass('um-validate-matched').addClass('um-validate-not-matched'); } else { field.removeClass('um-validate-not-matched').addClass('um-validate-matched'); } }); } function um_responsive(){ jQuery('.um').each(function(){ element_width = jQuery(this).width(); if ( element_width <= 340 ) { jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); jQuery(this).addClass('uimob340'); } else if ( element_width <= 500 ) { jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); jQuery(this).addClass('uimob500'); } else if ( element_width <= 800 ) { jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); jQuery(this).addClass('uimob800'); } else if ( element_width <= 960 ) { jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); jQuery(this).addClass('uimob960'); } else if ( element_width > 960 ) { jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); } if ( jQuery('.um-account-nav').length > 0 && jQuery('.um-account-side').is(':visible') && jQuery('.um-account-tab:visible').length == 0 ) { jQuery('.um-account-side li a.current').trigger('click'); } jQuery(this).css('opacity',1); }); jQuery('.um-cover, .um-member-cover, .um-cover-e').each(function(){ var elem = jQuery(this); var ratio = elem.data('ratio'); var width = elem.width(); var ratios = ratio.split(':'); calcHeight = Math.round( width / ratios[0] ) + 'px'; elem.height( calcHeight ); elem.find('.um-cover-add').height( calcHeight ); }); UM_domenus(); } function initImageUpload_UM( trigger ) { if (trigger.data('upload_help_text')){ upload_help_text = '' + trigger.data('upload_help_text') + ''; } else { upload_help_text = ''; } if ( trigger.data('icon') ) { icon = ''; } else { icon = ''; } if ( trigger.data('upload_text') ) { upload_text = '' + trigger.data('upload_text') + ''; } else { upload_text = ''; } var user_id = 0; if( jQuery('#um_upload_single:visible').data('user_id') ){ user_id = jQuery('#um_upload_single:visible').data('user_id'); } trigger.uploadFile({ url: wp.ajax.settings.url, method: "POST", multiple: false, formData: { action: 'um_imageupload', key: trigger.data('key'), set_id: trigger.data('set_id'), set_mode: trigger.data('set_mode'), _wpnonce: trigger.data('nonce'), timestamp: trigger.data('timestamp'), user_id: user_id }, fileName: trigger.data('key'), allowedTypes: trigger.data('allowed_types'), maxFileSize: trigger.data('max_size'), dragDropStr: icon + upload_text + upload_help_text, sizeErrorStr: trigger.data('max_size_error'), extErrorStr: trigger.data('extension_error'), maxFileCountErrorStr: trigger.data('max_files_error'), maxFileCount: 1, showDelete: false, showAbort: false, showDone: false, showFileCounter: false, showStatusAfterSuccess: true, returnType: 'json', onSubmit:function(files){ trigger.parents('.um-modal-body').find('.um-error-block').remove(); }, onSuccess:function( files, response, xhr ){ trigger.selectedFiles = 0; if ( response.success && response.success == false || typeof response.data.error !== 'undefined' ) { trigger.parents('.um-modal-body').append('
'+response.data.error+'
'); trigger.parents('.um-modal-body').find('.upload-statusbar').hide(0); um_modal_responsive(); } else { jQuery.each( response.data, function( i, d ) { var img_id = trigger.parents('.um-modal-body').find('.um-single-image-preview img'); var img_id_h = trigger.parents('.um-modal-body').find('.um-single-image-preview'); var cache_ts = new Date(); img_id.attr("src", d.url + "?"+cache_ts.getTime() ); img_id.data("file", d.file ); img_id.on( 'load', function() { trigger.parents('.um-modal-body').find('.um-modal-btn.um-finish-upload.disabled').removeClass('disabled'); trigger.parents('.um-modal-body').find('.ajax-upload-dragdrop,.upload-statusbar').hide(0); img_id_h.show(0); um_modal_responsive(); }); }); } }, onError: function ( e ){ console.log( e ); } }); } function initFileUpload_UM( trigger ) { if (trigger.data('upload_help_text')){ upload_help_text = '' + trigger.data('upload_help_text') + ''; } else { upload_help_text = ''; } if ( trigger.data('icon') ) { icon = ''; } else { icon = ''; } if ( trigger.data('upload_text') ) { upload_text = '' + trigger.data('upload_text') + ''; } else { upload_text = ''; } if( jQuery('#um_upload_single:visible').data('user_id') ){ user_id = jQuery('#um_upload_single:visible').data('user_id'); } trigger.uploadFile({ url: wp.ajax.settings.url, method: "POST", multiple: false, formData: { action: 'um_fileupload', key: trigger.data('key'), set_id: trigger.data('set_id'), user_id: trigger.data('user_id'), set_mode: trigger.data('set_mode'), _wpnonce: trigger.data('nonce'), timestamp: trigger.data('timestamp') }, fileName: trigger.data('key'), allowedTypes: trigger.data('allowed_types'), maxFileSize: trigger.data('max_size'), dragDropStr: icon + upload_text + upload_help_text, sizeErrorStr: trigger.data('max_size_error'), extErrorStr: trigger.data('extension_error'), maxFileCountErrorStr: trigger.data('max_files_error'), maxFileCount: 1, showDelete: false, showAbort: false, showDone: false, showFileCounter: false, showStatusAfterSuccess: true, onSubmit:function(files){ trigger.parents('.um-modal-body').find('.um-error-block').remove(); }, onSuccess:function( files, response ,xhr ){ trigger.selectedFiles = 0; if ( response.success && response.success == false || typeof response.data.error !== 'undefined' ) { trigger.parents('.um-modal-body').append('
'+ response.data.error+'
'); trigger.parents('.um-modal-body').find('.upload-statusbar').hide(0); setTimeout(function(){ um_modal_responsive(); },1000); } else { jQuery.each( response.data , function(key, value) { trigger.parents('.um-modal-body').find('.um-modal-btn.um-finish-upload.disabled').removeClass('disabled'); trigger.parents('.um-modal-body').find('.ajax-upload-dragdrop,.upload-statusbar').hide(0); trigger.parents('.um-modal-body').find('.um-single-file-preview').show(0); if ( key == 'icon' ) { trigger.parents('.um-modal-body').find('.um-single-fileinfo i').removeClass().addClass( value ); } else if ( key == 'icon_bg' ) { trigger.parents('.um-modal-body').find('.um-single-fileinfo span.icon').css({'background-color' : value } ); } else if ( key == 'filename' ) { trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('data-file', value ); }else if( key == 'original_name' ){ trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('data-orignal-name', value ); trigger.parents('.um-modal-body').find('.um-single-fileinfo span.filename').html( value ); } else if ( key == 'url' ) { trigger.parents('.um-modal-body').find('.um-single-fileinfo a').attr('href', value); } }); setTimeout(function(){ um_modal_responsive(); },1000); } }, onError: function ( e ){ console.log( e ); } }); } function um_new_modal( id, size, isPhoto, source ) { var modalOverlay = jQuery('.um-modal-overlay'); if ( modalOverlay.length !== 0 ) { modalOverlay.hide(); modalOverlay.next('.um-modal').hide(); } UM.common.tipsy.hide(); UM.dropdown.hideAll(); jQuery( 'body,html,textarea' ).css( 'overflow', 'hidden' ); jQuery( document ).bind( "touchmove", function(e){e.preventDefault();}); jQuery( '.um-modal' ).on('touchmove', function(e){e.stopPropagation();}); var $tpl = jQuery( '
' ); var $modal = $tpl.filter('.um-modal'); $modal.append( jQuery( '#' + id ) ); jQuery('body').append( $tpl ); if ( isPhoto ) { var photo_ = jQuery(''), photo_maxw = jQuery(window).width() - 60, photo_maxh = jQuery(window).height() - jQuery(window).height() * 0.25; photo_.on( 'load', function() { $modal.find('.um-modal-photo').html( photo_ ); $modal.addClass('is-photo').css({ 'width': photo_.width(), 'margin-left': '-' + photo_.width() / 2 + 'px' }).show().children().show(); photo_.css({ 'opacity': 0, 'max-width': photo_maxw, 'max-height': photo_maxh }).animate({'opacity' : 1}, 1000); um_modal_responsive(); }); } else { $modal.addClass('no-photo').show().children().show(); um_modal_size( size ); initImageUpload_UM( jQuery('.um-modal:visible .um-single-image-upload') ); initFileUpload_UM( jQuery('.um-modal:visible .um-single-file-upload') ); um_modal_responsive(); } } function um_modal_responsive() { var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var modal = jQuery('.um-modal:visible').not('.um-modal-hidden'); var photo_modal = modal.find('.um-modal-body.photo:visible'); if ( ! photo_modal.length && ! modal.length ) { return; } let half_gap = ( h - modal.innerHeight() ) / 2 + 'px'; modal.removeClass('uimob340').removeClass('uimob500'); if ( photo_modal.length ) { var photo_ = jQuery('.um-modal-photo img'); var photo_maxw = w - 60; var photo_maxh = h - ( h * 0.25 ); photo_.css({'opacity': 0}); photo_.css({'max-width': photo_maxw }); photo_.css({'max-height': photo_maxh }); modal.css({ 'width': photo_.width(), 'margin-left': '-' + photo_.width() / 2 + 'px' }); photo_.animate({'opacity' : 1}, 1000); modal.animate({ 'bottom' : half_gap }, 300); } else if ( modal.length ) { if ( w <= 340 ) { modal.addClass('uimob340'); } else if ( w <= 500 ) { modal.addClass('uimob500'); } UM.frontend.cropper.init(); if ( w <= 500 ) { modal.animate({ 'bottom' : 0 }, 300); } else { if ( h - parseInt(half_gap) > h ) { modal.animate({ 'bottom' : 0 }, 300); } else { modal.animate({ 'bottom' : half_gap }, 300); } } } } function um_remove_modal() { wp.hooks.doAction( 'um_remove_modal' ); jQuery('body,html,textarea').css("overflow", "auto"); jQuery(document).unbind('touchmove'); jQuery('body > .um-modal div[id^="um_"]').hide().appendTo('body'); jQuery('body > .um-modal, body > .um-modal-overlay').remove(); } function um_modal_size( aclass ) { jQuery('.um-modal:visible').not('.um-modal-hidden').addClass( aclass ); } function prepare_Modal() { if ( jQuery('.um-popup-overlay').length == 0 ) { jQuery('body').append('
'); jQuery('body').append('
'); jQuery('.um-popup').addClass('loading'); jQuery("body,html").css({ overflow: 'hidden' }); } } function remove_Modal() { if ( jQuery('.um-popup-overlay').length ) { wp.hooks.doAction( 'um_before_modal_removed', jQuery('.um-popup') ); UM.common.tipsy.hide(); jQuery('.um-popup').empty().remove(); jQuery('.um-popup-overlay').empty().remove(); jQuery("body,html").css({ overflow: 'auto' }); } } function show_Modal( contents ) { if ( jQuery('.um-popup-overlay').length ) { jQuery('.um-popup').removeClass('loading').html( contents ); UM.common.tipsy.init(); } } function responsive_Modal() { if ( jQuery('.um-popup-overlay').length ) { ag_height = jQuery(window).height() - jQuery('.um-popup .um-popup-header').outerHeight() - jQuery('.um-popup .um-popup-footer').outerHeight() - 80; if ( ag_height > 350 ) { ag_height = 350; } if ( jQuery('.um-popup-autogrow:visible').length ) { jQuery('.um-popup-autogrow:visible').css({'height': ag_height + 'px'}); } else if ( jQuery('.um-popup-autogrow2:visible').length ) { jQuery('.um-popup-autogrow2:visible').css({'max-height': ag_height + 'px'}); } } } function um_reset_field( dOm ){ //console.log(dOm); jQuery(dOm) .find('div.um-field-area') .find('input,textarea,select') .not(':button, :submit, :reset, :hidden') .val('') .prop('checked', false) .prop('selected', false); } jQuery(function(){ // Submit search form on keypress 'Enter' jQuery(".um-search form *").on( 'keypress', function(e){ if (e.which == 13) { jQuery('.um-search form').trigger('submit'); return false; } }); if( jQuery('input[data-key=user_password],input[data-key=confirm_user_password]').length == 2 ) { UM_check_password_matched(); } });