WordPress.org

Make WordPress Core

Ticket #24633: 24633.diff

File 24633.diff, 8.0 KB (added by adamsilverstein, 4 years ago)

use visibility dash icon for password show/hide, first pass

  • src/wp-admin/admin-ajax.php

     
    6060        'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment', 
    6161        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor', 
    6262        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs', 
    63         'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail' 
     63        'save-user-color-scheme', 'generate_password', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail' 
    6464); 
    6565 
    6666// Register core Ajax calls. 
  • src/wp-admin/css/forms.css

     
    655655        cursor: pointer; 
    656656} 
    657657 
     658.pass1-password-visibility { 
     659        padding-top: 2px; 
     660        clear: none; 
     661        margin-right: 10px; 
     662} 
     663 
     664.pass1-password-visibility.show { 
     665        color: #666; 
     666} 
     667 
     668.pass1-password-visibility.hide { 
     669        color: #000; 
     670} 
     671 
    658672/*------------------------------------------------------------------------------ 
    659673  19.0 - Tools 
    660674------------------------------------------------------------------------------*/ 
  • src/wp-admin/includes/ajax-actions.php

     
    26662666 
    26672667        wp_send_json_success( $parsed ); 
    26682668} 
     2669 
     2670/** 
     2671 * Generates a password via ajax 
     2672 * 
     2673 * @since 4.0.0 
     2674 */ 
     2675function wp_ajax_generate_password() { 
     2676        die( wp_generate_password() ); 
     2677} 
     2678 No newline at end of file 
  • src/wp-admin/includes/user.php

     
    174174 
    175175        if ( $update ) { 
    176176                $user_id = wp_update_user( $user ); 
     177 
     178                // Encourage the user to reset their password 
     179                if( ! empty( $_POST['reset_password'] ) ) { 
     180                        update_user_option( $user_id, 'default_password_nag', true, true ); 
     181                } 
     182 
     183                // Send the new, plaintext password to the user 
     184                if( ! empty( $_POST['send_password'] ) ) { 
     185                        $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); 
     186                        $message  = sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n"; 
     187                        $message .= sprintf( __( 'Password: %s' ), $pass1 ) . "\r\n"; 
     188                        $message .= wp_login_url() . "\r\n"; 
     189 
     190                        wp_mail( $user->user_email, sprintf( __( '[%s] Your username and password' ), $blogname ), $message ); 
     191                } 
     192 
    177193        } else { 
    178194                $user_id = wp_insert_user( $user ); 
    179195                wp_new_user_notification( $user_id, isset( $_POST['send_password'] ) ? wp_unslash( $pass1 ) : '' ); 
  • src/wp-admin/js/user-profile.js

     
    3434                var $colorpicker, $stylesheet, user_id, current_user_id, 
    3535                        select = $( '#display_name' ); 
    3636 
    37                 $('#pass1').val('').keyup( check_pass_strength ); 
    38                 $('#pass2').val('').keyup( check_pass_strength ); 
     37                /* Passwords */ 
     38 
     39                var visibilityIconShow = $( '.pass1-password-visibility.show' ), 
     40                        visibilityIconHide = $( '.pass1-password-visibility.hide' ), 
     41                        pass1 = $('#pass1'), 
     42                        pass2 = $('#pass2'), 
     43                        password_repeat = $('#password-repeat'); 
     44 
     45                pass1.val('').keyup(function(e) { 
     46                        check_pass_strength(); 
     47                        changed = true; 
     48 
     49                        if ( 'text' == pass1.attr('type') ) { 
     50                                pass2.attr('type', 'text'); 
     51                        } 
     52                        password_repeat.show(); 
     53                }); 
     54                pass2.val('').keyup( check_pass_strength ); 
     55 
     56                $('#generate-password').on('click', function() { 
     57                        if ( 'profile' == pagenow ) { 
     58                                // User's own password 
     59                                pass1.attr('type', 'text'); 
     60                                pass2.attr('type', 'text'); 
     61                        } else { 
     62                                pass1.attr('type', 'password'); 
     63                                pass2.attr('type', 'password'); 
     64                        } 
     65                        $.post( ajaxurl, { action: 'generate_password' }, function( response ) { 
     66                                pass1.val( response ).trigger('keyup'); 
     67                                pass2.val( response ).trigger('keyup'); 
     68                                if( 'profile' == pagenow ) { 
     69                                        // User's own password 
     70                                        visibilityIconHide.show(); 
     71                                        visibilityIconShow.hide(); 
     72                                } else { 
     73                                        visibilityIconHide.hide(); 
     74                                        visibilityIconShow.show(); 
     75                                } 
     76                                pass1.focus(); 
     77                                password_repeat.hide(); 
     78                        }); 
     79                }); 
     80                visibilityIconShow.on('click', function(e) { 
     81                        visibilityIconShow.hide(); 
     82                        visibilityIconHide.show(); 
     83                        e.preventDefault(); 
     84                        pass1.attr('type', 'text'); 
     85                        pass2.attr('type', 'text'); 
     86                }); 
     87                visibilityIconHide.on('click', function(e) { 
     88                        visibilityIconHide.hide(); 
     89                        visibilityIconShow.show(); 
     90                        e.preventDefault(); 
     91                        pass1.attr('type', 'password'); 
     92                        pass2.attr('type', 'password'); 
     93                }); 
     94 
    3995                $('#pass-strength-result').show(); 
     96 
     97                /* End Passwords */ 
     98 
    4099                $('.color-palette').click( function() { 
    41100                        $(this).siblings('input[name="admin_color"]').prop('checked', true); 
    42101                }); 
  • src/wp-admin/user-edit.php

     
    459459        <th><label for="pass1"><?php _e( 'New Password' ); ?></label></th> 
    460460        <td> 
    461461                <input class="hidden" value=" " /><!-- #24364 workaround --> 
    462                 <input type="password" name="pass1" id="pass1" class="regular-text" size="16" value="" autocomplete="off" /><br /> 
    463                 <span class="description"><?php _e( 'If you would like to change the password type a new one. Otherwise leave this blank.' ); ?></span> 
    464         </td> 
     462                <input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" /> 
     463                <span class="dashicons dashicons-visibility pass1-password-visibility hidden show" title="<?php _e( 'Show Password' ); ?>"></span> 
     464                <span class="dashicons dashicons-visibility pass1-password-visibility hidden hide" title="<?php _e( 'Hide Password' ); ?>"></span> 
     465                <input type="button" name="generate-password" id="generate-password" value="<?php _e( 'Generate Password' ); ?>" class="button hide-if-no-js" /> 
     466                <div id="password-repeat" class="hidden"> 
     467                        <input name="pass2" type="password" id="pass2" size="16" value="" autocomplete="off" /> 
     468                        <label for="pass2"><?php _e( 'Repeat New Password' ); ?></label> 
     469                        <br /> 
     470                        <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div> 
     471                        <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> 
     472                </div> 
     473                <p class="description"><?php _e( 'If you would like to change the password type or generate a new one. Otherwise leave this blank.' ); ?></p> 
     474                <?php if( ! IS_PROFILE_PAGE ) { ?> 
     475                <p class="hide-if-no-js"> 
     476                        <label for="send_password"> 
     477                                <input type="checkbox" name="send_password" id="send_password" value="1" /> <?php _e( 'Send this password to the user by email.' ); ?> 
     478                        </label> 
     479                        <br /> 
     480                        <label for="reset_password"> 
     481                                <input type="checkbox" name="reset_password" id="reset_password" value="1" /> <?php _e( 'Encourage the user to change their password, once logged in.' ); ?> 
     482                        </label> 
     483                </p> 
     484                <?php } ?> 
     485        </td> 
    465486</tr> 
    466 <tr> 
    467         <th scope="row"><label for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th> 
    468         <td> 
    469         <input name="pass2" type="password" id="pass2" class="regular-text" size="16" value="" autocomplete="off" /><br /> 
    470         <span class="description" for="pass2"><?php _e( 'Type your new password again.' ); ?></span> 
    471         <br /> 
    472         <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div> 
    473         <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> 
    474         </td> 
    475 </tr> 
    476487<?php endif; ?> 
    477488</table> 
    478489