WordPress.org

Make WordPress Core

Ticket #36316: 36316.2.patch

File 36316.2.patch, 6.6 KB (added by afercia, 4 years ago)
  • src/wp-admin/includes/image-edit.php

     
    6060                <legend><?php _e( 'New dimensions:' ); ?></legend>
    6161                <div class="nowrap">
    6262                <label><span class="screen-reader-text"><?php _e( 'scale width' ); ?></span>
    63                 <input type="text" id="imgedit-scale-width-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" value="<?php echo isset( $meta['width'] ) ? $meta['width'] : 0; ?>" />
     63                <input type="text" id="imgedit-scale-width-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1, this)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1, this)" value="<?php echo isset( $meta['width'] ) ? $meta['width'] : 0; ?>" />
    6464                </label>
    6565                <span class="imgedit-separator">&times;</span>
    6666                <label><span class="screen-reader-text"><?php _e( 'scale height' ); ?></span>
    67                 <input type="text" id="imgedit-scale-height-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" value="<?php echo isset( $meta['height'] ) ? $meta['height'] : 0; ?>" />
     67                <input type="text" id="imgedit-scale-height-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0, this)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0, this)" value="<?php echo isset( $meta['height'] ) ? $meta['height'] : 0; ?>" />
    6868                </label>
    6969                <span class="imgedit-scale-warn" id="imgedit-scale-warn-<?php echo $post_id; ?>">!</span>
    7070                <input id="imgedit-scale-button" type="button" onclick="imageEdit.action(<?php echo "$post_id, '$nonce'"; ?>, 'scale')" class="button button-primary" value="<?php esc_attr_e( 'Scale' ); ?>" />
     
    116116                <legend><?php _e( 'Aspect ratio:' ); ?></legend>
    117117                <div class="nowrap">
    118118                <label><span class="screen-reader-text"><?php _e( 'crop ratio width' ); ?></span>
    119                 <input type="text" id="imgedit-crop-width-<?php echo $post_id; ?>" onkeyup="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 0, this)" />
     119                <input type="text" id="imgedit-crop-width-<?php echo $post_id; ?>" onkeyup="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 0, this)" onblur="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 0, this)" />
    120120                </label>
    121121                <span class="imgedit-separator">:</span>
    122122                <label><span class="screen-reader-text"><?php _e( 'crop ratio height' ); ?></span>
    123                 <input type="text" id="imgedit-crop-height-<?php echo $post_id; ?>" onkeyup="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 1, this)" />
     123                <input type="text" id="imgedit-crop-height-<?php echo $post_id; ?>" onkeyup="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 1, this)" onblur="imageEdit.setRatioSelection(<?php echo $post_id; ?>, 1, this)" />
    124124                </label>
    125125                </div>
    126126        </fieldset>
     
    129129                <legend><?php _e( 'Selection:' ); ?></legend>
    130130                <div class="nowrap">
    131131                <label><span class="screen-reader-text"><?php _e( 'selection width' ); ?></span>
    132                 <input type="text" id="imgedit-sel-width-<?php echo $post_id; ?>" onkeyup="imageEdit.setNumSelection(<?php echo $post_id; ?>)" />
     132                <input type="text" id="imgedit-sel-width-<?php echo $post_id; ?>" onkeyup="imageEdit.setNumSelection(<?php echo $post_id; ?>, this)" onblur="imageEdit.setNumSelection(<?php echo $post_id; ?>, this)" />
    133133                </label>
    134134                <span class="imgedit-separator">&times;</span>
    135135                <label><span class="screen-reader-text"><?php _e( 'selection height' ); ?></span>
    136                 <input type="text" id="imgedit-sel-height-<?php echo $post_id; ?>" onkeyup="imageEdit.setNumSelection(<?php echo $post_id; ?>)" />
     136                <input type="text" id="imgedit-sel-height-<?php echo $post_id; ?>" onkeyup="imageEdit.setNumSelection(<?php echo $post_id; ?>, this)" onblur="imageEdit.setNumSelection(<?php echo $post_id; ?>, this)" />
    137137                </label>
    138138                </div>
    139139        </fieldset>
     
    224224
    225225        </div>
    226226        <div class="imgedit-wait" id="imgedit-wait-<?php echo $post_id; ?>"></div>
    227         <script type="text/javascript">jQuery( function() { imageEdit.init(<?php echo $post_id; ?>); });</script>
    228227        <div class="hidden" id="imgedit-leaving-<?php echo $post_id; ?>"><?php _e("There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor."); ?></div>
    229228        </div>
    230229<?php
  • src/wp-admin/js/image-edit.js

     
    88        _view : false,
    99
    1010        intval : function(f) {
     11                /*
     12                 * Bitwise OR operator: one of the obscure ways to truncate floating point figures,
     13                 * worth reminding JavaScript doesn't have a distinct "integer" type.
     14                 */
    1115                return f | 0;
    1216        },
    1317
     
    7983                return $('input[name="imgedit-target-' + postid + '"]:checked', '#imgedit-save-target-' + postid).val() || 'full';
    8084        },
    8185
    82         scaleChanged : function(postid, x) {
     86        scaleChanged : function( postid, x, el ) {
    8387                var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
    8488                warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '';
    8589
     90                if ( false === this.validateNumeric( el ) ) {
     91                        return;
     92                }
     93
    8694                if ( x ) {
    8795                        h1 = ( w.val() !== '' ) ? Math.round( w.val() / this.hold.xy_ratio ) : '';
    8896                        h.val( h1 );
     
    361369                                btn.removeClass( 'button-activated' );
    362370                                spin.removeClass( 'is-active' );
    363371                        });
     372                        // Initialise the Image Editor now that everything is ready.
     373                        imageEdit.init( postid );
    364374                });
    365375
    366376                return dfd;
     
    586596                });
    587597        },
    588598
    589         setNumSelection : function(postid) {
     599        setNumSelection : function( postid, el ) {
    590600                var sel, elX = $('#imgedit-sel-width-' + postid), elY = $('#imgedit-sel-height-' + postid),
    591601                        x = this.intval( elX.val() ), y = this.intval( elY.val() ),
    592602                        img = $('#image-preview-' + postid), imgh = img.height(), imgw = img.width(),
    593603                        sizer = this.hold.sizer, x1, y1, x2, y2, ias = this.iasapi;
    594604
     605                if ( false === this.validateNumeric( el ) ) {
     606                        return;
     607                }
     608
    595609                if ( x < 1 ) {
    596610                        elX.val('');
    597611                        return false;
     
    650664                        y = this.intval( $('#imgedit-crop-height-' + postid).val() ),
    651665                        h = $('#image-preview-' + postid).height();
    652666
    653                 if ( !this.intval( $(el).val() ) ) {
    654                         $(el).val('');
     667                if ( false === this.validateNumeric( el ) ) {
    655668                        return;
    656669                }
    657670
     
    676689                                this.iasapi.update();
    677690                        }
    678691                }
     692        },
     693
     694        validateNumeric: function( el ) {
     695                if ( ! this.intval( $( el ).val() ) ) {
     696                        $( el ).val( '' );
     697                        return false;
     698                }
    679699        }
    680700};
    681701})(jQuery);