diff --git a/assets/js/um-account.js b/assets/js/um-account.js index b49b913b..ba033531 100644 --- a/assets/js/um-account.js +++ b/assets/js/um-account.js @@ -1,12 +1,14 @@ jQuery(document).ready(function() { var current_tab = jQuery('.um-account-main').attr('data-current_tab'); - - if ( current_tab ) { - jQuery('.um-account-tab[data-tab='+current_tab+']').show(); + + if ( current_tab ) { + jQuery('.um-account-tab[data-tab="'+current_tab+'"]').show(); + + jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true ); } - jQuery(document).on('click','.um-account-side li a',function(e){ + jQuery( document.body ).on( 'click', '.um-account-side li a', function(e) { e.preventDefault(); var link = jQuery(this); @@ -16,32 +18,35 @@ jQuery(document).ready(function() { var url_ = jQuery(this).attr('href'); var tab_ = jQuery(this).attr('data-tab'); - jQuery("input[id=_um_account_tab]:hidden").val( tab_ ); + jQuery('input[id="_um_account_tab"]:hidden').val( tab_ ); window.history.pushState("", "", url_); - + jQuery('.um-account-tab').hide(); - jQuery('.um-account-tab[data-tab='+tab_+']').fadeIn(); - + jQuery('.um-account-tab[data-tab="'+tab_+'"]').fadeIn(); + + jQuery('.um-account-tab:visible').find( 'input.um_account_inactive:disabled' ).removeClass('um_account_inactive').prop( 'disabled', false ).attr( 'disabled', false ); + jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true ); + jQuery('.um-account-nav a').removeClass('current'); - jQuery('.um-account-nav a[data-tab='+tab_+']').addClass('current'); + jQuery('.um-account-nav a[data-tab="'+tab_+'"]').addClass('current'); return false; }); -}); - jQuery(document).on('click','.um-account-nav a',function(e){ + + jQuery(document.body).on( 'click', '.um-account-nav a', function(e) { e.preventDefault(); - + var tab_ = jQuery(this).attr('data-tab'); var div = jQuery(this).parents('div'); var link = jQuery(this); - - jQuery("input[id=_um_account_tab]:hidden").val( tab_ ); - + + jQuery('input[id="_um_account_tab"]:hidden').val( tab_ ); + jQuery('.um-account-tab').hide(); - + if ( link.hasClass('current') ) { div.next('.um-account-tab').slideUp(); link.removeClass('current'); @@ -51,9 +56,12 @@ jQuery(document).ready(function() { link.addClass('current'); } + jQuery('.um-account-tab:visible').find( 'input.um_account_inactive:disabled' ).removeClass('um_account_inactive').prop( 'disabled', false ).attr( 'disabled', false ); + jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true ); + jQuery('.um-account-side li a').removeClass('current'); - jQuery('.um-account-side li a[data-tab='+tab_+']').addClass('current'); + jQuery('.um-account-side li a[data-tab="'+tab_+'"]').addClass('current'); return false; }); - +}); \ No newline at end of file diff --git a/assets/js/um-account.min.js b/assets/js/um-account.min.js index d6f2578c..735c8a78 100644 --- a/assets/js/um-account.min.js +++ b/assets/js/um-account.min.js @@ -1 +1 @@ -jQuery(document).ready(function(){var a=jQuery(".um-account-main").attr("data-current_tab");a&&jQuery(".um-account-tab[data-tab="+a+"]").show(),jQuery(document).on("click",".um-account-side li a",function(a){a.preventDefault();var t=jQuery(this);t.parents("ul").find("li a").removeClass("current"),t.addClass("current");var u=jQuery(this).attr("href"),e=jQuery(this).attr("data-tab");return jQuery("input[id=_um_account_tab]:hidden").val(e),window.history.pushState("","",u),jQuery(".um-account-tab").hide(),jQuery(".um-account-tab[data-tab="+e+"]").fadeIn(),jQuery(".um-account-nav a").removeClass("current"),jQuery(".um-account-nav a[data-tab="+e+"]").addClass("current"),!1})}),jQuery(document).on("click",".um-account-nav a",function(a){a.preventDefault();var t=jQuery(this).attr("data-tab"),u=jQuery(this).parents("div"),e=jQuery(this);return jQuery("input[id=_um_account_tab]:hidden").val(t),jQuery(".um-account-tab").hide(),e.hasClass("current")?(u.next(".um-account-tab").slideUp(),e.removeClass("current")):(u.next(".um-account-tab").slideDown(),e.parents("div").find("a").removeClass("current"),e.addClass("current")),jQuery(".um-account-side li a").removeClass("current"),jQuery(".um-account-side li a[data-tab="+t+"]").addClass("current"),!1}); \ No newline at end of file +jQuery(document).ready(function(){var a=jQuery(".um-account-main").attr("data-current_tab");a&&(jQuery('.um-account-tab[data-tab="'+a+'"]').show(),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0)),jQuery(document.body).on("click",".um-account-side li a",function(a){a.preventDefault();var t=jQuery(this);t.parents("ul").find("li a").removeClass("current"),t.addClass("current");var u=jQuery(this).attr("href"),e=jQuery(this).attr("data-tab");return jQuery('input[id="_um_account_tab"]:hidden').val(e),window.history.pushState("","",u),jQuery(".um-account-tab").hide(),jQuery('.um-account-tab[data-tab="'+e+'"]').fadeIn(),jQuery(".um-account-tab:visible").find("input.um_account_inactive:disabled").removeClass("um_account_inactive").prop("disabled",!1).attr("disabled",!1),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),jQuery(".um-account-nav a").removeClass("current"),jQuery('.um-account-nav a[data-tab="'+e+'"]').addClass("current"),!1}),jQuery(document.body).on("click",".um-account-nav a",function(a){a.preventDefault();var t=jQuery(this).attr("data-tab"),u=jQuery(this).parents("div"),e=jQuery(this);return jQuery('input[id="_um_account_tab"]:hidden').val(t),jQuery(".um-account-tab").hide(),e.hasClass("current")?(u.next(".um-account-tab").slideUp(),e.removeClass("current")):(u.next(".um-account-tab").slideDown(),e.parents("div").find("a").removeClass("current"),e.addClass("current")),jQuery(".um-account-tab:visible").find("input.um_account_inactive:disabled").removeClass("um_account_inactive").prop("disabled",!1).attr("disabled",!1),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),jQuery(".um-account-side li a").removeClass("current"),jQuery('.um-account-side li a[data-tab="'+t+'"]').addClass("current"),!1})}); \ No newline at end of file diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 508aee76..a62636a5 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -492,7 +492,13 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'id' => 'account_email', 'type' => 'checkbox', 'label' => __( 'Allow users to change e-mail','ultimate-member' ), - 'tooltip' => __('Whether to allow users changing their email in account page.','ultimate-member'), + 'tooltip' => __( 'Whether to allow users changing their email in account page.', 'ultimate-member' ), + ), + array( + 'id' => 'account_general_password', + 'type' => 'checkbox', + 'label' => __( 'Password is required?','ultimate-member' ), + 'tooltip' => __( 'Password is required to save account data.', 'ultimate-member' ), ), array( 'id' => 'account_hide_in_directory', diff --git a/includes/class-config.php b/includes/class-config.php index 60af5282..58739726 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -498,6 +498,7 @@ if ( ! class_exists( 'um\Config' ) ) { 'account_name_disable' => 0, 'account_name_require' => 1, 'account_email' => 1, + 'account_general_password' => 0, 'account_hide_in_directory' => 1, 'account_require_strongpass' => 0, 'photo_thumb_sizes' => array( 40, 80, 190 ), diff --git a/includes/core/class-account.php b/includes/core/class-account.php index 99eddf23..6e4d8725 100644 --- a/includes/core/class-account.php +++ b/includes/core/class-account.php @@ -65,13 +65,15 @@ if ( ! class_exists( 'um\core\Account' ) ) { foreach ( $arr as $id => $info ) { - if ( ! empty( $args['tab'] ) && $id != $args['tab'] ) + if ( ! empty( $args['tab'] ) && $id != $args['tab'] ) { continue; + } $output = $this->get_tab_fields( $id, $args ); - if ( ! empty( $output ) ) - $tabs_structed[$id] = $info; + if ( ! empty( $output ) ) { + $tabs_structed[ $id ] = $info; + } } @@ -518,8 +520,9 @@ if ( ! class_exists( 'um\core\Account' ) ) { UM()->fields()->editing = true; if ( ! empty( $this->tab_output[$id]['content'] ) && ! empty( $this->tab_output[$id]['hash'] ) && - $this->tab_output[$id]['hash'] == md5( json_encode( $shortcode_args ) ) ) + $this->tab_output[$id]['hash'] == md5( json_encode( $shortcode_args ) ) ) { return $this->tab_output[$id]['content']; + } switch ( $id ) { @@ -607,6 +610,10 @@ if ( ! class_exists( 'um\core\Account' ) ) { $args = str_replace(',user_email','', $args ); } + if ( UM()->options()->get( 'account_general_password' ) ) { + $args .= ',single_user_password'; + } + /** * UM hook * diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 0552ccad..f7e8ece4 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -24,10 +24,10 @@ function um_submit_account_errors_hook( $args ) { case 'delete': { // delete account if ( strlen(trim( $_POST['single_user_password'] ) ) == 0 ) { - UM()->form()->add_error('single_user_password', __('You must enter your password','ultimate-member') ); + UM()->form()->add_error( 'single_user_password', __( 'You must enter your password', 'ultimate-member' ) ); } else { if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) { - UM()->form()->add_error('single_user_password', __('This is not your password','ultimate-member') ); + UM()->form()->add_error( 'single_user_password', __( 'This is not your password', 'ultimate-member' ) ); } } @@ -95,14 +95,29 @@ function um_submit_account_errors_hook( $args ) { } if ( isset( $_POST['user_email'] ) ) { - if ( strlen( trim( $_POST['user_email'] ) ) == 0 ) + + if ( strlen( trim( $_POST['user_email'] ) ) == 0 ) { UM()->form()->add_error( 'user_email', __( 'You must provide your e-mail', 'ultimate-member' ) ); + } - if ( ! is_email( $_POST['user_email'] ) ) + if ( ! is_email( $_POST['user_email'] ) ) { UM()->form()->add_error( 'user_email', __( 'Please provide a valid e-mail', 'ultimate-member' ) ); + } - if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() ) + if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() ) { UM()->form()->add_error( 'user_email', __( 'Email already linked to another account', 'ultimate-member' ) ); + } + } + + // check account password + if ( UM()->options()->get( 'account_general_password' ) ) { + if ( strlen( trim( $_POST['single_user_password'] ) ) == 0 ) { + UM()->form()->add_error('single_user_password', __( 'You must enter your password', 'ultimate-member' ) ); + } else { + if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) { + UM()->form()->add_error('single_user_password', __( 'This is not your password', 'ultimate-member' ) ); + } + } } break; diff --git a/templates/account.php b/templates/account.php index 9d938a93..362367d4 100644 --- a/templates/account.php +++ b/templates/account.php @@ -26,65 +26,65 @@ */ do_action( 'um_account_page_hidden_fields', $args ); ?> -