WordPress.org

Make WordPress Core

Ticket #24633: 24633.8.patch

File 24633.8.patch, 12.4 KB (added by michalzuber, 4 years ago)

Only Generate password without option checkboxes

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

     
    4949); 
    5050 
    5151$core_actions_post = array( 
    52         'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link', 
    53         'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment', 
    54         'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment', 
    55         'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'closed-postboxes', 
    56         'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax', 
    57         'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink', 
    58         'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order', 
    59         'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post', 
    60         'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment', 
    61         'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor', 
    62         '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' 
     52        'oembed-cache',               'image-editor',           'delete-comment',     'delete-tag',          'delete-link', 
     53        'delete-meta',                'delete-post',            'trash-post',         'untrash-post',        'delete-page', 
     54        'add-link-category',          'add-tag',                'get-tagcloud',       'get-comments',        'replyto-comment', 
     55        'edit-comment',               'add-menu-item',          'add-meta',           'add-user',            'closed-postboxes', 
     56        'hidden-columns',             'update-welcome-panel',   'menu-get-metabox',   'wp-link-ajax',        'dim-comment', 
     57        'sample-permalink',           'inline-save',            'inline-save-tax',    'find_posts',          'widgets-order', 
     58        'save-widget',                'set-post-thumbnail',     'date_format',        'time_format',         'wp-fullscreen-save-post', 
     59        'send-attachment-to-editor',  'save-attachment-order',  'heartbeat',          'get-revision-diffs',  'generate_password', 
     60        'save-user-color-scheme',     'update-widget',          'query-themes',       'parse-embed',         'set-attachment-thumbnail', 
     61        'wp-remove-post-lock',        'dismiss-wp-pointer',     'upload-attachment',  'get-attachment',      'menu-locations-save', 
     62        'menu-quick-search',          'meta-box-order',         'get-permalink',      'query-attachments',   'save-attachment', 
     63        'save-attachment-compat',     'send-link-to-editor', 
    6464); 
    6565 
    6666// Register core Ajax calls. 
  • src/wp-admin/includes/ajax-actions.php

     
    22232223} 
    22242224 
    22252225/** 
     2226 * Ajax handler for password generation 
     2227 * 
     2228 * @since 4.0 
     2229 */ 
     2230function wp_ajax_generate_password() {  
     2231        die( wp_generate_password() );  
     2232} 
     2233 
     2234/** 
    22262235 * Ajax handler for saving backwards compatible attachment attributes. 
    22272236 * 
    22282237 * @since 3.5.0 
  • src/wp-admin/js/user-profile.js

     
    3030                } 
    3131        } 
    3232 
    33         $(document).ready( function() { 
    34                 var $colorpicker, $stylesheet, user_id, current_user_id, 
    35                         select = $( '#display_name' ); 
     33        var $colorpicker, $stylesheet, user_id, current_user_id, 
     34                select = $( '#display_name' ), 
     35                pass1 = $( '#pass1' ); 
    3636 
    37                 $('#pass1').val('').keyup( check_pass_strength ); 
    38                 $('#pass2').val('').keyup( check_pass_strength ); 
    39                 $('#pass-strength-result').show(); 
    40                 $('.color-palette').click( function() { 
    41                         $(this).siblings('input[name="admin_color"]').prop('checked', true); 
     37        /* Passwords */ 
     38        pass1.val('').keyup(function(e) { 
     39                if( ! pass1.is(':focus') || 'text' == pass1.attr('type') ) { 
     40                        //return; 
     41                } 
     42                check_pass_strength(); 
     43                changed = true; 
     44        }); 
     45 
     46        $( '#generate-password' ).on( 'click', function() { 
     47                if( 'profile' == pagenow ) { 
     48                        // User's own password 
     49                        $(pass1).attr( 'type', 'text' ); 
     50                } else { 
     51                        $(pass1).attr( 'type', 'password' ); 
     52                } 
     53                $.post( ajaxurl, { action: 'generate_password' }, function( response ) { 
     54                        pass1.attr('type', 'text'); 
     55                        $( '#show-password' ).text( 'Hide Password' ); 
     56                        pass1.val( response ).trigger('keyup'); 
     57                        pass1.focus(); 
    4258                }); 
     59        }); 
     60        $( '#show-password' ).on( 'click', function() { 
     61                if ( 'password' == pass1.attr( 'type' ) ) { 
     62                        pass1.attr('type', 'text'); 
     63                        $( this ).text( 'Hide Password' ); 
     64                } else { 
     65                        pass1.attr('type', 'password'); 
     66                        $( this ).text( 'Show Password' ); 
     67                } 
    4368 
    44                 if ( select.length ) { 
    45                         $('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() { 
    46                                 var dub = [], 
    47                                         inputs = { 
    48                                                 display_nickname  : $('#nickname').val() || '', 
    49                                                 display_username  : $('#user_login').val() || '', 
    50                                                 display_firstname : $('#first_name').val() || '', 
    51                                                 display_lastname  : $('#last_name').val() || '' 
    52                                         }; 
     69                return false; 
     70        }); 
    5371 
    54                                 if ( inputs.display_firstname && inputs.display_lastname ) { 
    55                                         inputs.display_firstlast = inputs.display_firstname + ' ' + inputs.display_lastname; 
    56                                         inputs.display_lastfirst = inputs.display_lastname + ' ' + inputs.display_firstname; 
    57                                 } 
     72        $( '#pass-strength-result' ).show(); 
    5873 
    59                                 $.each( $('option', select), function( i, el ){ 
    60                                         dub.push( el.value ); 
    61                                 }); 
     74        /* End Passwords */ 
    6275 
    63                                 $.each(inputs, function( id, value ) { 
    64                                         if ( ! value ) { 
    65                                                 return; 
    66                                         } 
     76        $('.color-palette').click( function() { 
     77                $(this).siblings('input[name="admin_color"]').prop('checked', true); 
     78        }); 
    6779 
    68                                         var val = value.replace(/<\/?[a-z][^>]*>/gi, ''); 
     80        if ( select.length ) { 
     81                $('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() { 
     82                        var dub = [], 
     83                                inputs = { 
     84                                        display_nickname  : $('#nickname').val() || '', 
     85                                        display_username  : $('#user_login').val() || '', 
     86                                        display_firstname : $('#first_name').val() || '', 
     87                                        display_lastname  : $('#last_name').val() || '' 
     88                                }; 
    6989 
    70                                         if ( inputs[id].length && $.inArray( val, dub ) === -1 ) { 
    71                                                 dub.push(val); 
    72                                                 $('<option />', { 
    73                                                         'text': val 
    74                                                 }).appendTo( select ); 
    75                                         } 
    76                                 }); 
     90                        if ( inputs.display_firstname && inputs.display_lastname ) { 
     91                                inputs.display_firstlast = inputs.display_firstname + ' ' + inputs.display_lastname; 
     92                                inputs.display_lastfirst = inputs.display_lastname + ' ' + inputs.display_firstname; 
     93                        } 
     94 
     95                        $.each( $('option', select), function( i, el ){ 
     96                                dub.push( el.value ); 
    7797                        }); 
    78                 } 
    7998 
    80                 $colorpicker = $( '#color-picker' ); 
    81                 $stylesheet = $( '#colors-css' ); 
    82                 user_id = $( 'input#user_id' ).val(); 
    83                 current_user_id = $( 'input[name="checkuser_id"]' ).val(); 
     99                        $.each(inputs, function( id, value ) { 
     100                                if ( ! value ) { 
     101                                        return; 
     102                                } 
    84103 
    85                 $colorpicker.on( 'click.colorpicker', '.color-option', function() { 
    86                         var colors, 
    87                                 $this = $(this); 
     104                                var val = value.replace(/<\/?[a-z][^>]*>/gi, ''); 
    88105 
    89                         if ( $this.hasClass( 'selected' ) ) { 
    90                                 return; 
    91                         } 
     106                                if ( inputs[id].length && $.inArray( val, dub ) === -1 ) { 
     107                                        dub.push(val); 
     108                                        $('<option />', { 
     109                                                'text': val 
     110                                        }).appendTo( select ); 
     111                                } 
     112                        }); 
     113                }); 
     114        } 
    92115 
    93                         $this.siblings( '.selected' ).removeClass( 'selected' ); 
    94                         $this.addClass( 'selected' ).find( 'input[type="radio"]' ).prop( 'checked', true ); 
     116        $colorpicker = $( '#color-picker' ); 
     117        $stylesheet = $( '#colors-css' ); 
     118        user_id = $( 'input#user_id' ).val(); 
     119        current_user_id = $( 'input[name="checkuser_id"]' ).val(); 
    95120 
    96                         // Set color scheme 
    97                         if ( user_id === current_user_id ) { 
    98                                 // Load the colors stylesheet. 
    99                                 // The default color scheme won't have one, so we'll need to create an element. 
    100                                 if ( 0 === $stylesheet.length ) { 
    101                                         $stylesheet = $( '<link rel="stylesheet" />' ).appendTo( 'head' ); 
    102                                 } 
    103                                 $stylesheet.attr( 'href', $this.children( '.css_url' ).val() ); 
     121        $colorpicker.on( 'click.colorpicker', '.color-option', function() { 
     122                var colors, 
     123                        $this = $(this); 
    104124 
    105                                 // repaint icons 
    106                                 if ( typeof wp !== 'undefined' && wp.svgPainter ) { 
    107                                         try { 
    108                                                 colors = $.parseJSON( $this.children( '.icon_colors' ).val() ); 
    109                                         } catch ( error ) {} 
     125                if ( $this.hasClass( 'selected' ) ) { 
     126                        return; 
     127                } 
    110128 
    111                                         if ( colors ) { 
    112                                                 wp.svgPainter.setColors( colors ); 
    113                                                 wp.svgPainter.paint(); 
    114                                         } 
     129                $this.siblings( '.selected' ).removeClass( 'selected' ); 
     130                $this.addClass( 'selected' ).find( 'input[type="radio"]' ).prop( 'checked', true ); 
     131 
     132                // Set color scheme 
     133                if ( user_id === current_user_id ) { 
     134                        // Load the colors stylesheet. 
     135                        // The default color scheme won't have one, so we'll need to create an element. 
     136                        if ( 0 === $stylesheet.length ) { 
     137                                $stylesheet = $( '<link rel="stylesheet" />' ).appendTo( 'head' ); 
     138                        } 
     139                        $stylesheet.attr( 'href', $this.children( '.css_url' ).val() ); 
     140 
     141                        // repaint icons 
     142                        if ( typeof wp !== 'undefined' && wp.svgPainter ) { 
     143                                try { 
     144                                        colors = $.parseJSON( $this.children( '.icon_colors' ).val() ); 
     145                                } catch ( error ) {} 
     146 
     147                                if ( colors ) { 
     148                                        wp.svgPainter.setColors( colors ); 
     149                                        wp.svgPainter.paint(); 
    115150                                } 
     151                        } 
    116152 
    117                                 // update user option 
    118                                 $.post( ajaxurl, { 
    119                                         action:       'save-user-color-scheme', 
    120                                         color_scheme: $this.children( 'input[name="admin_color"]' ).val(), 
    121                                         nonce:        $('#color-nonce').val() 
    122                                 }); 
    123                         } 
    124                 }); 
     153                        // update user option 
     154                        $.post( ajaxurl, { 
     155                                action:       'save-user-color-scheme', 
     156                                color_scheme: $this.children( 'input[name="admin_color"]' ).val(), 
     157                                nonce:        $('#color-nonce').val() 
     158                        }); 
     159                } 
    125160        }); 
    126161 
    127162})(jQuery); 
  • src/wp-admin/user-edit.php

     
    456456if ( $show_password_fields ) : 
    457457?> 
    458458<tr id="password"> 
    459         <th><label for="pass1"><?php _e( 'New Password' ); ?></label></th> 
     459        <th scope="row"><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> 
     462                <input name="pass1" type="password" id="pass1" class="regular-text" autocomplete="off" /> 
     463                <button type="button" id="generate-password" class="button hide-if-no-js"><?php _e( 'Generate Password' ); ?></button>  
     464                <a href="#" id="show-password"><?php _e( 'Show Password' ); ?></a>  
    464465        </td> 
    465466</tr> 
    466467<tr> 
    467468        <th scope="row"><label for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th> 
    468469        <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> 
     470                <input name="pass2" type="password" id="pass2" class="regular-text" value="" autocomplete="off" /><br /> 
     471                <div id="pass-strength-result"><?php _e('Strength indicator'); ?></div> 
     472                <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> 
    474473        </td> 
    475474</tr> 
    476475<?php endif; ?> 
  • src/wp-admin/user-new.php

     
    389389                <td> 
    390390                        <input class="hidden" value=" " /><!-- #24364 workaround --> 
    391391                        <input name="pass1" type="password" id="pass1" autocomplete="off" /> 
     392                        <button type="button" id="generate-password" class="button hide-if-no-js"><?php _e( 'Generate Password' ); ?></button>  
     393                        <a href="#" id="show-password"><?php _e( 'Show Password' ); ?></a>  
    392394                </td> 
    393395        </tr> 
    394396        <tr class="form-field form-required">