WordPress.org

Make WordPress Core

Ticket #24633: 24633.24.patch

File 24633.24.patch, 8.2 KB (added by mordauk, 3 years ago)
  • src/wp-admin/admin-ajax.php

     
    6161        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
    6262        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
    6363        'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
    64         'parse-media-shortcode', 'destroy-sessions'
     64        'parse-media-shortcode', 'destroy-sessions', 'generate_password',
    6565);
    6666
    6767// Register core Ajax calls.
  • src/wp-admin/css/forms.css

     
    10041004                padding: 0;
    10051005                line-height: 2;
    10061006        }
    1007 
    1008         .form-field #domain {
    1009                 max-width: none;
    1010         }
    10111007}
    10121008
    10131009@media only screen and (max-width: 768px) {
  • src/wp-admin/includes/ajax-actions.php

     
    28282828
    28292829        wp_send_json_success( array( 'message' => $message ) );
    28302830}
     2831
     2832/**
     2833 * Generates a password via ajax
     2834 *
     2835 * @since 4.1.0
     2836 */
     2837function wp_ajax_generate_password() {
     2838        wp_die( wp_generate_password( 30 ) );
     2839}
  • src/wp-admin/js/user-profile.js

     
    11/* global ajaxurl, pwsL10n */
    22(function($){
    33
    4         function check_pass_strength() {
    5                 var pass1 = $('#pass1').val(), pass2 = $('#pass2').val(), strength;
     4        $(document).ready( function() {
     5                var $colorpicker, $stylesheet, user_id, current_user_id,
     6                        select = $( '#display_name' );
    67
    7                 $('#pass-strength-result').removeClass('short bad good strong');
    8                 if ( ! pass1 ) {
    9                         $('#pass-strength-result').html( pwsL10n.empty );
    10                         return;
    11                 }
     8                /* Passwords */
    129
    13                 strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     10                wp.passwords.init( '#pass1', '#pass2', '#generate-password' );
    1411
    15                 switch ( strength ) {
    16                         case 2:
    17                                 $('#pass-strength-result').addClass('bad').html( pwsL10n.bad );
    18                                 break;
    19                         case 3:
    20                                 $('#pass-strength-result').addClass('good').html( pwsL10n.good );
    21                                 break;
    22                         case 4:
    23                                 $('#pass-strength-result').addClass('strong').html( pwsL10n.strong );
    24                                 break;
    25                         case 5:
    26                                 $('#pass-strength-result').addClass('short').html( pwsL10n.mismatch );
    27                                 break;
    28                         default:
    29                                 $('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
    30                 }
    31         }
     12                /* End Passwords */
    3213
    33         $(document).ready( function() {
    34                 var $colorpicker, $stylesheet, user_id, current_user_id,
    35                         select = $( '#display_name' );
    36 
    37                 $('#pass1').val('').keyup( check_pass_strength );
    38                 $('#pass2').val('').keyup( check_pass_strength );
    39                 $('#pass-strength-result').show();
    4014                $('.color-palette').click( function() {
    4115                        $(this).siblings('input[name="admin_color"]').prop('checked', true);
    4216                });
  • src/wp-admin/user-edit.php

     
    468468        <th><label for="pass1"><?php _e( 'New Password' ); ?></label></th>
    469469        <td>
    470470                <input class="hidden" value=" " /><!-- #24364 workaround -->
    471                 <input type="password" name="pass1" id="pass1" class="regular-text" size="16" value="" autocomplete="off" />
    472                 <p class="description"><?php _e( 'If you would like to change the password type a new one. Otherwise leave this blank.' ); ?></p>
     471                <input type="password" name="pass1" id="pass1" class="regular-text" value="" autocomplete="off" />
     472                <input type="button" name="generate-password" id="generate-password" value="<?php _e( 'Generate Password' ); ?>" class="button hide-if-no-js" />
    473473        </td>
    474474</tr>
    475 <tr class="user-pass2-wrap">
    476         <th scope="row"><label for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th>
     475<tr id="password2" class="user-pass2-wrap">
     476        <th><label class="password-repeat" for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th>
    477477        <td>
    478         <input name="pass2" type="password" id="pass2" class="regular-text" size="16" value="" autocomplete="off" />
    479         <p class="description"><?php _e( 'Type your new password again.' ); ?></p>
    480         <br />
    481         <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div>
    482         <p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
     478                <div class="password-repeat">
     479                        <input name="pass2" type="password" id="pass2" class="regular-text" value="" autocomplete="off" />
     480                        <br />
     481                        <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div>
     482                        <p class="description indicator-hint"><?php _e( 'Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).' ); ?></p>
     483                </div>
     484                <p class="description"><?php _e( 'If you would like to change the password type or generate a new one. Otherwise leave this blank.' ); ?></p>
     485                <?php if( ! IS_PROFILE_PAGE ) { ?>
     486                <p class="hide-if-no-js">
     487                        <label for="send_password">
     488                                <input type="checkbox" name="send_password" id="send_password" value="1" /> <?php _e( 'Send this password to the user by email.' ); ?>
     489                        </label>
     490                        <br />
     491                        <label for="reset_password">
     492                                <input type="checkbox" name="reset_password" id="reset_password" value="1" /> <?php _e( 'Encourage the user to change their password, once logged in.' ); ?>
     493                        </label>
     494                </p>
     495                <?php } ?>
    483496        </td>
    484497</tr>
    485498<?php endif; ?>
  • src/wp-includes/js/wp-util.js

     
    109109                }
    110110        };
    111111
     112        wp.passwords = {
     113               
     114                pass1: '',
     115                pass2: '',
     116                submit: '',
     117                results: $('#pass-strength-result'),
     118
     119                init: function( pass1, pass2, submit ) {
     120               
     121                        wp.passwords.pass1 = $( pass1 );
     122                        wp.passwords.pass2 = $( pass2 );
     123                        wp.passwords.submit = $( submit );
     124
     125                        wp.passwords.pass2.val('').keyup( wp.passwords.check_strength() );
     126                       
     127                        // Handle user entering password
     128                        wp.passwords.pass1.val('').on( 'keyup', function() {
     129                                wp.passwords.check_strength();
     130                                // Ensure fireld type is password
     131                                if ( 'text' === wp.passwords.pass1.attr( 'type' ) ) {
     132                                        wp.passwords.pass1.attr( 'type', 'password' );
     133                                }
     134                                if ( 'text' === wp.passwords.pass2.attr( 'type' ) ) {
     135                                        wp.passwords.pass2.attr( 'type', 'password' );
     136                                }
     137                        });
     138
     139                        // Handle the Generate Password button
     140                        $( submit ).on('click', function() {
     141
     142                                wp.passwords.generate();
     143
     144                        });
     145
     146                },
     147
     148                generate: function() {
     149
     150                        // Send an ajax request to the server to get a new password
     151                        $.post( ajaxurl, { action: 'generate_password' }, function(response) {
     152                                wp.passwords.pass1.val( response ).trigger( 'keyup' );
     153                                wp.passwords.pass2.val( response );
     154                                wp.passwords.check_strength();
     155                                wp.passwords.pass1.attr( 'type', 'text' );
     156                                wp.passwords.pass2.attr( 'type', 'text' );
     157                                wp.passwords.pass1.focus().select();
     158                        });
     159
     160                },
     161
     162                check_strength: function() {
     163
     164                        var pass1 = wp.passwords.pass1.val(), pass2 = wp.passwords.pass2.val(), strength;
     165
     166                        wp.passwords.results.removeClass('short bad good strong');
     167                        if ( ! pass1 ) {
     168                                wp.passwords.results.html( pwsL10n.empty );
     169                                return;
     170                        }
     171
     172                        strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     173
     174                        switch ( strength ) {
     175                                case 2:
     176                                        wp.passwords.results.addClass('bad').html( pwsL10n.bad );
     177                                        break;
     178                                case 3:
     179                                        wp.passwords.results.addClass('good').html( pwsL10n.good );
     180                                        break;
     181                                case 4:
     182                                        wp.passwords.results.addClass('strong').html( pwsL10n.strong );
     183                                        break;
     184                                case 5:
     185                                        wp.passwords.results.addClass('short').html( pwsL10n.mismatch );
     186                                        break;
     187                                default:
     188                                        wp.passwords.results.addClass('short').html( pwsL10n['short'] );
     189                        }
     190
     191                        wp.passwords.results.show();
     192
     193                }
     194
     195        };
     196
    112197}(jQuery));