WordPress.org

Make WordPress Core

Ticket #22058: 22058.diff

File 22058.diff, 10.6 KB (added by cdog, 5 years ago)
  • wp-includes/class-wp-customize-manager.php

     
    847847                ) );
    848848
    849849                $this->add_control( 'background_position_x', array(
    850                         'label'      => __( 'Background Position' ),
    851                         'section'    => 'background_image',
    852                         'type'       => 'radio',
    853                         'choices'    => array(
    854                                 'left'       => __('Left'),
    855                                 'center'     => __('Center'),
    856                                 'right'      => __('Right'),
     850                        'label'   => __( 'Horizontal Background Position' ),
     851                        'section' => 'background_image',
     852                        'type'    => 'radio',
     853                        'choices' => array(
     854                                'left'   => __( 'Left' ),
     855                                'center' => __( 'Center' ),
     856                                'right'  => __( 'Right' ),
    857857                        ),
    858858                ) );
    859859
     860                $this->add_setting( 'background_position_y', array(
     861                        'default'        => 'top',
     862                        'theme_supports' => 'custom-background',
     863                ) );
     864
     865                $this->add_control( 'background_position_y', array(
     866                        'label'   => __( 'Vertical Background Position' ),
     867                        'section' => 'background_image',
     868                        'type'    => 'radio',
     869                        'choices' => array(
     870                                'top'    => __( 'Top' ),
     871                                'center' => __( 'Center' ),
     872                                'bottom' => __( 'Bottom' )
     873                        ),
     874                ) );
     875
    860876                $this->add_setting( 'background_attachment', array(
    861877                        'default'        => 'fixed',
    862878                        'theme_supports' => 'custom-background',
     
    875891                // If the theme is using the default background callback, we can update
    876892                // the background CSS using postMessage.
    877893                if ( get_theme_support( 'custom-background', 'wp-head-callback' ) === '_custom_background_cb' ) {
    878                         foreach ( array( 'color', 'image', 'position_x', 'repeat', 'attachment' ) as $prop ) {
     894                        foreach ( array( 'attachment', 'color', 'image', 'position_x', 'position_y', 'repeat' ) as $prop ) {
    879895                                $this->get_setting( 'background_' . $prop )->transport = 'postMessage';
    880896                        }
    881897                }
  • wp-includes/js/customize-preview.js

     
    9898                preview.send( 'ready' );
    9999
    100100                /* Custom Backgrounds */
    101                 bg = $.map(['color', 'image', 'position_x', 'repeat', 'attachment'], function( prop ) {
     101                bg = $.map( [ 'attachment', 'color', 'image', 'position_x', 'position_y', 'repeat' ], function( prop ) {
    102102                        return 'background_' + prop;
    103103                });
    104104
    105                 api.when.apply( api, bg ).done( function( color, image, position_x, repeat, attachment ) {
     105                api.when.apply( api, bg ).done( function( attachment, color, image, position_x, position_y, repeat ) {
    106106                        var body = $(document.body),
    107107                                head = $('head'),
    108108                                style = $('#custom-background-css'),
     
    126126                                        css += 'background-color: ' + color() + ';';
    127127
    128128                                if ( image() ) {
     129                                        css += 'background-attachment: ' + attachment() + ';';
    129130                                        css += 'background-image: url("' + image() + '");';
    130                                         css += 'background-position: top ' + position_x() + ';';
     131                                        css += 'background-position: ' + position_x() + ' ' + position_y() + ';';
    131132                                        css += 'background-repeat: ' + repeat() + ';';
    132                                         css += 'background-attachment: ' + attachment() + ';';
    133133                                }
    134134
    135135                                // Refresh the stylesheet by removing and recreating it.
  • wp-includes/theme.php

     
    11671167                        $repeat = 'repeat';
    11681168                $repeat = " background-repeat: $repeat;";
    11691169
    1170                 $position = get_theme_mod( 'background_position_x', 'left' );
    1171                 if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
    1172                         $position = 'left';
    1173                 $position = " background-position: top $position;";
     1170                $position_x = get_theme_mod( 'background_position_x', 'left' );
    11741171
     1172                if ( ! in_array( $position_x, array( 'center', 'left', 'right' ) ) )
     1173                        $position_x = 'left';
     1174
     1175                $position_y = get_theme_mod( 'background_position_y', 'top' );
     1176
     1177                if ( ! in_array( $position_y, array( 'bottom', 'center', 'top' ) ) )
     1178                        $position_y = 'top';
     1179
     1180                $position = ' background-position: ' . $position_x . ' ' . $position_y . ';';
     1181
    11751182                $attachment = get_theme_mod( 'background_attachment', 'scroll' );
    11761183                if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) )
    11771184                        $attachment = 'scroll';
     
    17321739                }());
    17331740        </script>
    17341741        <?php
    1735 }
    1736  No newline at end of file
     1742}
  • wp-admin/js/custom-background.js

     
    1212                        }
    1313                });
    1414
    15                 $('input[name="background-position-x"]').change(function() {
    16                         bgImage.css('background-position', $(this).val() + ' top');
    17                 });
     15                $( 'input[name="background-position-x"]' ).change( function() {
     16                        bgPosition = bgImage.css( 'background-position' ).split( ' ' );
    1817
     18                        bgImage.css( 'background-position', $( this ).val() + ' ' + bgPosition[1] );
     19                } );
     20
     21                $( 'input[name="background-position-y"]' ).change( function() {
     22                        bgPosition = bgImage.css( 'background-position' ).split( ' ' );
     23
     24                        bgImage.css( 'background-position', bgPosition[0] + ' ' + $( this ).val() );
     25                } );
     26
    1927                $('input[name="background-repeat"]').change(function() {
    2028                        bgImage.css('background-repeat', $(this).val());
    2129                });
     
    7179                        frame.open();
    7280                });
    7381        });
    74 })(jQuery);
    75  No newline at end of file
     82})(jQuery);
  • wp-admin/js/customize-controls.js

     
    914914                // Control visibility for default controls
    915915                $.each({
    916916                        'background_image': {
    917                                 controls: [ 'background_repeat', 'background_position_x', 'background_attachment' ],
     917                                controls: [ 'background_repeat', 'background_position_x', 'background_position_y', 'background_attachment' ],
    918918                                callback: function( to ) { return !! to }
    919919                        },
    920920                        'show_on_front': {
  • wp-admin/custom-background.php

     
    141141                        set_theme_mod('background_repeat', $repeat);
    142142                }
    143143
    144                 if ( isset($_POST['background-position-x']) ) {
    145                         check_admin_referer('custom-background');
    146                         if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) )
    147                                 $position = $_POST['background-position-x'];
     144                if ( isset( $_POST[ 'background-position-x' ] ) ) {
     145                        check_admin_referer( 'custom-background' );
     146
     147                        if ( in_array( $_POST[ 'background-position-x' ], array( 'center', 'left', 'right') ) )
     148                                $position_x = $_POST[ 'background-position-x' ];
    148149                        else
    149                                 $position = 'left';
    150                         set_theme_mod('background_position_x', $position);
     150                                $position_x = 'left';
     151
     152                        set_theme_mod( 'background_position_x', $position_x );
    151153                }
    152154
     155                if ( isset( $_POST[ 'background-position-y' ] ) ) {
     156                        check_admin_referer( 'custom-background' );
     157
     158                        if ( in_array( $_POST[ 'background-position-y' ], array( 'bottom', 'center', 'top' ) ) )
     159                                $position_y = $_POST[ 'background-position-y' ];
     160                        else
     161                                $position_y = 'top';
     162
     163                        set_theme_mod( 'background_position_y', $position_y );
     164                }
     165
    153166                if ( isset($_POST['background-attachment']) ) {
    154167                        check_admin_referer('custom-background');
    155168                        if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) )
     
    206219        // background-image URL must be single quote, see below
    207220        $background_styles .= ' background-image: url(\'' . set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ) . '\');'
    208221                . ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';'
    209                 . ' background-position: top ' . get_theme_mod('background_position_x', 'left');
     222                . ' background-position: ' . get_theme_mod( 'background_position_x', 'left' ) . ' ' . get_theme_mod( 'background_position_y', 'top' );
    210223}
    211224?>
    212225<div id="custom-background-image" style="<?php echo $background_styles; ?>"><?php // must be double quote, see above ?>
     
    273286<tbody>
    274287<?php if ( get_background_image() ) : ?>
    275288<tr valign="top">
    276 <th scope="row"><?php _e( 'Position' ); ?></th>
     289<th scope="row"><?php _e( 'Horizontal Position' ); ?></th>
    277290<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Position' ); ?></span></legend>
    278291<label>
    279 <input name="background-position-x" type="radio" value="left"<?php checked('left', get_theme_mod('background_position_x', 'left')); ?> />
    280 <?php _e('Left') ?>
     292<input name="background-position-x" type="radio" value="left"<?php checked( 'left', get_theme_mod( 'background_position_x', 'left' ) ); ?> />
     293<?php _e( 'Left' ); ?>
    281294</label>
    282295<label>
    283 <input name="background-position-x" type="radio" value="center"<?php checked('center', get_theme_mod('background_position_x', 'left')); ?> />
    284 <?php _e('Center') ?>
     296<input name="background-position-x" type="radio" value="center"<?php checked( 'center', get_theme_mod( 'background_position_x', 'left' ) ); ?> />
     297<?php _e( 'Center' ); ?>
    285298</label>
    286299<label>
    287 <input name="background-position-x" type="radio" value="right"<?php checked('right', get_theme_mod('background_position_x', 'left')); ?> />
    288 <?php _e('Right') ?>
     300<input name="background-position-x" type="radio" value="right"<?php checked( 'right', get_theme_mod( 'background_position_x', 'left' ) ); ?> />
     301<?php _e( 'Right' ); ?>
    289302</label>
    290303</fieldset></td>
    291304</tr>
    292305
    293306<tr valign="top">
     307<th scope="row"><?php _e( 'Vertical Position' ); ?></th>
     308<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Position' ); ?></span></legend>
     309<label>
     310<input name="background-position-y" type="radio" value="top"<?php checked( 'top', get_theme_mod( 'background_position_y', 'top' ) ); ?> />
     311<?php _e( 'Top' ); ?>
     312</label>
     313<label>
     314<input name="background-position-y" type="radio" value="center"<?php checked( 'center', get_theme_mod( 'background_position_y', 'top' ) ); ?> />
     315<?php _e( 'Center' ); ?>
     316</label>
     317<label>
     318<input name="background-position-y" type="radio" value="bottom"<?php checked( 'bottom', get_theme_mod( 'background_position_y', 'top' ) ); ?> />
     319<?php _e( 'Bottom' ); ?>
     320</label>
     321</fieldset></td>
     322</tr>
     323
     324<tr valign="top">
    294325<th scope="row"><?php _e( 'Repeat' ); ?></th>
    295326<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Repeat' ); ?></span></legend>
    296327<label><input type="radio" name="background-repeat" value="no-repeat"<?php checked('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> /> <?php _e('No Repeat'); ?></label>