Ticket #12186: background-repeat2.diff

File background-repeat2.diff, 6.2 KB (added by jshreve, 3 years ago)

background-repeat with preview

  • wp-includes/theme.php

     
    14401440        if ( !$background && !$color ) 
    14411441                return; 
    14421442 
    1443         $repeat = get_theme_mod('background_repeat', 'repeat'); 
    1444         if ( 'no-repeat' == $repeat ) 
    1445                 $repeat = 'background-repeat: no-repeat;'; 
    1446         else 
    1447                 $repeat = 'background-repeat: repeat;'; 
    1448         $position = get_theme_mod('background_position', 'left'); 
    1449         if  ( 'center' == $position ) 
    1450                 $position = 'background-position: top center;'; 
    1451         elseif ( 'right' == $position ) 
    1452                 $position = 'background-position: top right;'; 
    1453         else 
    1454                 $position = 'background-position: top left;'; 
    1455         $attachment = get_theme_mod('background_attachment', 'fixed'); 
    1456         if ( 'scroll' == $attachment ) 
     1443        switch( get_theme_mod('background_repeat', 'repeat') ) { 
     1444         
     1445                case 'no-repeat': 
     1446                        $repeat = 'background-repeat: no-repeat;'; 
     1447                        break; 
     1448                case 'repeat-x'; 
     1449                        $repeat = 'background-repeat: repeat-x;'; 
     1450                        break;           
     1451                case 'repeat-y': 
     1452                        $repeat = 'background-repeat: repeat-y;';                
     1453                        break; 
     1454                default: 
     1455                        $repeat = 'background-repeat: repeat;'; 
     1456        } 
     1457 
     1458        switch ( get_theme_mod('background_position', 'left') ) { 
     1459                case 'center': 
     1460                        $position = 'background-position: top center;'; 
     1461                        break; 
     1462                case 'right': 
     1463                        $position = 'background-position: top right;'; 
     1464                        break; 
     1465                default: 
     1466                        $position = 'background-position: top left;'; 
     1467        } 
     1468 
     1469        if ( 'scroll' == get_theme_mod('background_attachment', 'fixed') ) 
    14571470                $attachment = 'background-attachment: scroll;'; 
    14581471        else 
    14591472                $attachment = 'background-attachment: fixed;'; 
     
    14631476        else 
    14641477                $image = ''; 
    14651478 
    1466         if ( !empty($background ) ) 
    1467                 $image = "background-image: url('$background');"; 
    1468         else 
    1469                 $image = ''; 
    1470  
    14711479        if ( !empty($color) ) 
    14721480                $color = "background-color: #$color;"; 
    14731481        else 
  • wp-admin/js/custom-background.dev.js

     
    2222                        pickColor( hex ); 
    2323        }); 
    2424        jQuery('input[name="background-position"]').change(function() { 
    25                 jQuery('#custom-background-image').css('text-align', jQuery(this).val()); 
     25                jQuery('#custom-background-image').css('background-position', 'top '+jQuery(this).val()); 
    2626        }); 
    27  
     27        jQuery('select[name="background-repeat"]').change(function() { 
     28                jQuery('#custom-background-image').css('background-repeat', jQuery(this).val()); 
     29        }); 
     30         
    2831        farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) { 
    2932                pickColor(color); 
    3033        }); 
  • wp-admin/css/wp-admin.dev.css

     
    36623662 
    36633663div#custom-background-image img { 
    36643664        max-width: 400px; 
    3665         max-height: 200px; 
     3665        max-height: 300px; 
    36663666} 
    36673667 
    36683668/* Custom Header */ 
  • wp-admin/custom-background.php

     
    9898                } 
    9999 
    100100                if ( isset($_POST['background-repeat']) ) { 
    101                         if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat')) ) 
     101                        if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) ) 
    102102                                $repeat = $_POST['background-repeat']; 
    103103                        else 
    104104                                $repeat = 'repeat'; 
     
    149149        if ( $this->admin_image_div_callback ) { 
    150150                call_user_func($this->admin_image_div_callback); 
    151151        } else { 
    152                 if ( $bgcolor = get_background_color() ) 
    153                         $bgcolor = 'background-color: #' . $bgcolor . ';'; 
     152?> 
    154153 
    155                 if ( $align = get_theme_mod('background_position', 'left') ) 
    156                         $align = "text-align: $align;";           
    157 ?> 
    158 <div id="custom-background-image"  style="<?php echo $bgcolor, $align ?>"> 
     154<style type="text/css">  
     155#custom-background-image { 
     156        background-color: #<?=get_background_color()?>; 
     157        <?php if ( get_background_image() ) { ?> 
     158        background: url(<?=get_theme_mod('background_image_thumb', '')?>); 
     159        background-repeat: <?=get_theme_mod('background_repeat', 'no-repeat')?>; 
     160        background-position: top <?=get_theme_mod('background_position', 'left')?>; 
     161        background-attachment: <?=get_theme_mod('background_position', 'fixed')?>; 
     162        <?php } ?> 
     163} 
     164</style>  
     165<div id="custom-background-image"> 
    159166<?php if ( get_background_image() ) { ?> 
    160 <img class="custom-background-image" src="<?php background_image(); ?>" /> 
     167<img class="custom-background-image" src="<?=get_theme_mod('background_image_thumb', '')?>" style="visibility:hidden;" /> 
    161168<?php } ?> 
    162169<br class="clear" /> 
    163170</div> 
     
    192199 
    193200<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Repeat' ); ?></span></legend> 
    194201<label> 
    195 <input name="background-repeat" type="radio" value="no-repeat" <?php checked('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> /> 
    196 <?php _e('No repeat') ?> 
     202<select name="background-repeat"> 
     203        <option value="no-repeat" <?php selected('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> ><?php _e('No repeat') ?></option> 
     204        <option value="repeat" <?php selected('repeat', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile') ?></option> 
     205        <option value="repeat-x" <?php selected('repeat-x', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile Horizontally') ?></option> 
     206        <option value="repeat-y" <?php selected('repeat-y', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile Vertically') ?></option> 
     207</select> 
    197208</label> 
    198 <label> 
    199 <input name="background-repeat" type="radio" value="repeat" <?php checked('repeat', get_theme_mod('background_repeat', 'repeat')); ?> /> 
    200 <?php _e('Tile') ?> 
    201 </label> 
    202209</fieldset></td> 
    203210 
    204211<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Attachment' ); ?></span></legend> 
     
    286293                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); 
    287294 
    288295                set_theme_mod('background_image', esc_url($url)); 
     296                 
     297                $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); 
     298                set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) ); 
     299                 
    289300                do_action('wp_create_file_in_uploads', $file, $id); // For replication 
    290301                $this->updated = true; 
    291302        }