Index: src/wp-admin/css/forms.css =================================================================== --- src/wp-admin/css/forms.css (revision 32862) +++ src/wp-admin/css/forms.css (working copy) @@ -401,6 +401,11 @@ color: #777; } +button.wp-hide-pw > .dashicons { + position: relative; + top: 3px; +} + label, #your-profile label + a { vertical-align: middle; @@ -434,34 +439,58 @@ #pass-strength-result { background-color: #eee; border: 1px solid #ddd; - float: left; - margin: 13px 5px 5px 1px; + margin: -2px 5px 5px 1px; padding: 3px 5px; text-align: center; - width: 200px; - display: none; + width: 25em; + box-sizing: border-box; + opacity: 0; } #pass-strength-result.short { + opacity: 1; background-color: #ffa0a0; border-color: #f04040; } #pass-strength-result.bad { + opacity: 1; background-color: #ffb78c; border-color: #ff853c; } #pass-strength-result.good { + opacity: 1; background-color: #ffec8b; border-color: #fc0; } #pass-strength-result.strong { + opacity: 1; background-color: #c3ff88; border-color: #8dff1c; } +#pass1.short { + border-color: #f04040; +} + +#pass1.bad { + border-color: #ff853c; +} + +#pass1.good { + border-color: #fc0; +} + +#pass1.strong { + border-color: #8dff1c; +} + +.pw-weak{ + display:none; +} + .indicator-hint { padding-top: 8px; } Index: src/wp-admin/js/user-profile.js =================================================================== --- src/wp-admin/js/user-profile.js (revision 32862) +++ src/wp-admin/js/user-profile.js (working copy) @@ -1,6 +1,99 @@ /* global ajaxurl, pwsL10n */ (function($){ + $(function(){ + var pw_new = $('.user-pass1-wrap'), + pw_line = pw_new.find('.wp-pwd'), + pw_field = $('#pass1'), + pw_field2 = $('#pass2'), + pw_togglebtn = pw_new.find('.wp-hide-pw'), + pw_generatebtn = pw_new.find('button.wp-generate-pw'), + pw_2 = $('.user-pass2-wrap'), + parentform = pw_new.closest('form'), + pw_strength = $('#pass-strength-result'), + pw_submitbtn = $('#submit'), + pw_checkbox = $('.pw-checkbox'), + pw_weak = $('.pw-weak') + ; + pw_2.hide(); + pw_line.hide(); + pw_togglebtn.show(); + pw_generatebtn.show(); + + parentform.on('submit', function(){ + pw_field2.val( pw_field.val() ); + pw_field.attr('type', 'password'); + }); + + + pw_field.on('input propertychange', function(){ + setTimeout( function(){ + var cssClass = pw_strength.attr('class'); + console.log( cssClass ); + pw_field.removeClass( 'short bad good strong' ); + if ( 'undefined' !== typeof cssClass ) { + pw_field.addClass( cssClass ); + if ( cssClass == 'short' || cssClass == 'bad' ) { + if ( ! pw_checkbox.attr( 'checked' ) ) { + pw_submitbtn.attr( 'disabled','disabled' ); + } + pw_weak.show(); + } else { + pw_submitbtn.removeAttr( 'disabled' ); + pw_weak.hide(); + } + } + }, 1 ); + } ); + + pw_checkbox.change( function() { + if ( pw_checkbox.attr( 'checked' ) ) { + pw_submitbtn.removeAttr( 'disabled' ); + } else { + pw_submitbtn.attr( 'disabled','disabled' ); + } + } ); + + /** + * Fix a LastPass mismatch issue, LastPass only changes pass2. + * + * This fixes the issue by copying any changes from the hidden + * pass2 field to the pass1 field. + */ + pw_field2.on( 'input propertychange', function() { + pw_field.val( pw_field2.val() ); + pw_field.trigger( 'propertychange' ); + } ); + + pw_new.on( 'click', 'button.wp-generate-pw', function() { + pw_generatebtn.hide(); + pw_line.show(); + pw_field.val( pw_field.data( 'pw' ) ).attr( 'type', 'text' ); + pw_field.trigger( 'propertychange' ); + pw_field.focus(); + pw_field[0].setSelectionRange(100, 100); + }); + + pw_togglebtn.on( 'click', function() { + var show = pw_togglebtn.attr( 'data-toggle' ); + if ( show == 1 ) { + pw_field.attr( 'type', 'text' ); + pw_togglebtn.attr( 'data-toggle', 0 ) + .find( '.text' ) + .text( 'hide' ) + ; + } else { + pw_field.attr( 'type', 'password' ); + pw_togglebtn.attr( 'data-toggle', 1 ) + .find( '.text' ) + .text( 'show' ) + ; + } + pw_field.focus(); + pw_field[0].setSelectionRange(100, 100); + }); + }); + function check_pass_strength() { var pass1 = $('#pass1').val(), pass2 = $('#pass2').val(), strength; Index: src/wp-admin/user-edit.php =================================================================== --- src/wp-admin/user-edit.php (revision 32862) +++ src/wp-admin/user-edit.php (working copy) @@ -462,28 +462,33 @@