]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/js/user-profile.js
WordPress 4.4
[autoinstalls/wordpress.git] / wp-admin / js / user-profile.js
index 245d8738fd7e22bc08d4bd83896e6cb0701f7256..525084483bbe559f14555684d72bcde1763e2924 100644 (file)
                } );
        }
 
+       function resetToggle() {
+               $toggleButton
+                       .data( 'toggle', 0 )
+                       .attr({
+                               'aria-label': userProfileL10n.ariaHide
+                       })
+                       .find( '.text' )
+                               .text( userProfileL10n.hide )
+                       .end()
+                       .find( '.dashicons' )
+                               .removeClass( 'dashicons-visibility' )
+                               .addClass( 'dashicons-hidden' );
+
+               $pass1Text.focus();
+
+               $pass1Label.attr( 'for', 'pass1-text' );
+       }
+
        function bindToggleButton() {
                $toggleButton = $pass1Row.find('.wp-hide-pw');
                $toggleButton.show().on( 'click', function () {
                        if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) {
                                $pass1Wrap.addClass( 'show-password' );
-                               $toggleButton
-                                       .data( 'toggle', 0 )
-                                       .attr({
-                                               'aria-label': userProfileL10n.ariaHide
-                                       })
-                                       .find( '.text' )
-                                               .text( userProfileL10n.hide )
-                                       .end()
-                                       .find( '.dashicons' )
-                                               .removeClass('dashicons-visibility')
-                                               .addClass('dashicons-hidden');
-
-                               $pass1Text.focus();
 
-                               $pass1Label.attr( 'for', 'pass1-text' );
+                               resetToggle();
 
                                if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
                                        $pass1Text[0].setSelectionRange( 0, 100 );
                        }
                } );
 
-               $passwordWrapper = $pass1Row.find('.wp-pwd').hide();
+               // Disable hidden inputs to prevent autofill and submission.
+               if ( $pass1.is( ':hidden' ) ) {
+                       $pass1.prop( 'disabled', true );
+                       $pass2.prop( 'disabled', true );
+                       $pass1Text.prop( 'disabled', true );
+               }
+
+               $passwordWrapper = $pass1Row.find( '.wp-pwd' );
+               $generateButton  = $pass1Row.find( 'button.wp-generate-pw' );
 
                bindToggleButton();
 
-               $generateButton = $pass1Row.find( 'button.wp-generate-pw' ).show();
+               if ( $generateButton.length ) {
+                       $passwordWrapper.hide();
+               }
+
+               $generateButton.show();
                $generateButton.on( 'click', function () {
                        updateLock = true;
 
                        $generateButton.hide();
                        $passwordWrapper.show();
 
+                       // Enable the inputs when showing.
+                       $pass1.attr( 'disabled', false );
+                       $pass2.attr( 'disabled', false );
+                       $pass1Text.attr( 'disabled', false );
+
                        if ( $pass1Text.val().length === 0 ) {
                                generatePassword();
                        }
                $cancelButton.on( 'click', function () {
                        updateLock = false;
 
+                       // Clear any entered password.
+                       $pass1Text.val( '' );
+
+                       // Generate a new password.
+                       wp.ajax.post( 'generate-password' )
+                               .done( function( data ) {
+                                       $pass1.data( 'pw', data );
+                               } );
+
                        $generateButton.show();
                        $passwordWrapper.hide();
 
+                       // Disable the inputs when hiding to prevent autofill and submission.
+                       $pass1.prop( 'disabled', true );
+                       $pass2.prop( 'disabled', true );
+                       $pass1Text.prop( 'disabled', true );
+
+                       resetToggle();
+
                        // Clear password field to prevent update
                        $pass1.val( '' ).trigger( 'pwupdate' );
                        $submitButtons.prop( 'disabled', false );
                $pass1Row.closest('form').on( 'submit', function () {
                        updateLock = false;
 
+                       $pass1.prop( 'disabled', false );
+                       $pass2.prop( 'disabled', false );
                        $pass2.val( $pass1.val() );
                        $pass1Wrap.removeClass( 'show-password' );
                });