WordPress.org

Make WordPress Core

Changeset 13788


Ignore:
Timestamp:
03/21/10 06:06:18 (4 years ago)
Author:
dd32
Message:

Cleanup of Custom Background. Move JS to external file, Add @since, Remove redundant steps functionality, Preview of Image alignment. See #12186

Location:
trunk
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/custom-background.php

    r13765 r13788  
    11<?php 
    22/** 
    3  * The custom background image script. 
     3 * The custom background script. 
    44 * 
    55 * @package WordPress 
     
    88 
    99/** 
    10  * The custom background image class. 
     10 * The custom background class. 
    1111 * 
    12  * @since unknown 
     12 * @since 3.0 
    1313 * @package WordPress 
    1414 * @subpackage Administration 
     
    2929     * 
    3030     * @var callback 
    31      * @since unknown 
     31     * @since 3.0 
    3232     * @access private 
    3333     */ 
     
    3737     * PHP4 Constructor - Register administration header callback. 
    3838     * 
    39      * @since unknown 
     39     * @since 3.0 
    4040     * @param callback $admin_header_callback 
    4141     * @param callback $admin_image_div_callback Optional custom image div output callback. 
     
    5050     * Set up the hooks for the Custom Background admin page. 
    5151     * 
    52      * @since unknown 
     52     * @since 3.0 
    5353     */ 
    5454    function init() { 
     
    5858        $page = add_theme_page(__('Background'), __('Background'), 'switch_themes', 'custom-background', array(&$this, 'admin_page')); 
    5959 
    60         add_action("admin_print_scripts-$page", array(&$this, 'js_includes')); 
    61         add_action("admin_print_styles-$page", array(&$this, 'css_includes')); 
    62         add_action("admin_head-$page", array(&$this, 'js'), 50); 
    63         add_action("admin_head-$page", array(&$this, 'take_action'), 49); 
     60        add_action("load-$page", array(&$this, 'admin_load')); 
     61        add_action("load-$page", array(&$this, 'take_action'), 49); 
     62        add_action("load-$page", array(&$this, 'handle_upload'), 49); 
     63 
    6464        if ( $this->admin_header_callback ) 
    6565            add_action("admin_head-$page", $this->admin_header_callback, 51); 
     
    6767 
    6868    /** 
    69      * Get the current step. 
    70      * 
    71      * @since unknown 
    72      * 
    73      * @return int Current step 
    74      */ 
    75     function step() { 
    76         if ( ! isset( $_GET['step'] ) ) 
    77             return 1; 
    78  
    79         $step = (int) $_GET['step']; 
    80         if ( $step < 1 || 3 < $step ) 
    81             $step = 1; 
    82  
    83         return $step; 
    84     } 
    85  
    86     /** 
    87      * Set up the enqueue for the JavaScript files. 
    88      * 
    89      * @since unknown 
    90      */ 
    91     function js_includes() { 
    92         wp_enqueue_script('farbtastic'); 
    93     } 
    94  
    95     /** 
    96      * Set up the enqueue for the CSS files 
    97      * 
    98      * @since unknown 
    99      */ 
    100     function css_includes() { 
     69     * Set up the enqueue for the CSS & JavaScript files. 
     70     * 
     71     * @since 3.0 
     72     */ 
     73    function admin_load() { 
     74        wp_enqueue_script('custom-background'); 
    10175        wp_enqueue_style('farbtastic'); 
    10276    } 
     
    10579     * Execute custom background modification. 
    10680     * 
    107      * @since unknown 
     81     * @since 3.0 
    10882     */ 
    10983    function take_action() { 
    110         if ( ! current_user_can('switch_themes') ) 
    111             return; 
    11284 
    11385        if ( empty($_POST) ) 
     
    11688        check_admin_referer('custom-background'); 
    11789 
    118         if ( isset($_POST['reset-background']) ) 
     90        // @TODO: No UI entry point for this: 
     91        if ( isset($_POST['reset-background']) ) { 
    11992            remove_theme_mods(); 
     93            return; 
     94        } 
     95        if ( isset($_POST['remove-background']) ) { 
     96            // @TODO: Uploaded files are not removed here. 
     97            set_theme_mod('background_image', ''); 
     98        } 
     99 
    120100        if ( isset($_POST['background-repeat']) ) { 
    121101            if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat')) ) 
     
    139119            set_theme_mod('background_attachment', $attachment); 
    140120        } 
    141         if ( isset($_POST['remove-background']) ) 
    142             set_theme_mod('background_image', ''); 
    143         if ( isset( $_POST['background-color'] ) ) { 
     121        if ( isset($_POST['background-color']) ) { 
    144122            $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['background-color']); 
    145123            if ( strlen($color) == 6 || strlen($color) == 3 ) 
     
    153131 
    154132    /** 
    155      * Execute Javascript depending on step. 
    156      * 
    157      * @since unknown 
    158      */ 
    159     function js() { 
    160         $this->js_1(); 
    161     } 
    162  
    163     /** 
    164      * Display Javascript based on Step 1. 
    165      * 
    166      * @since unknown 
    167      */ 
    168     function js_1() { ?> 
    169 <script type="text/javascript"> 
    170     var buttons = ['#pickcolor'], 
    171         farbtastic; 
    172  
    173     function pickColor(color) { 
    174         jQuery('#background-color').val(color); 
    175         farbtastic.setColor(color); 
    176         jQuery('#custom-background-image').css('background-color', color); 
    177     } 
    178  
    179     jQuery(document).ready(function() { 
    180         jQuery('#pickcolor').click(function() { 
    181             jQuery('#colorPickerDiv').show(); 
    182         }); 
    183         jQuery('#background-color').keyup(function() { 
    184             var _hex = jQuery('#background-color').val(); 
    185             var hex = _hex; 
    186             if ( hex[0] != '#' ) 
    187                 hex = '#' + hex; 
    188             hex = hex.replace(/[^#a-fA-F0-9]+/, ''); 
    189             if ( hex != _hex ) 
    190                 jQuery('#background-color').val(hex); 
    191             if ( hex.length == 4 || hex.length == 7 ) 
    192                 pickColor( hex ); 
    193         }); 
    194  
    195         farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) { pickColor(color); }); 
    196         pickColor('#<?php background_color(); ?>'); 
    197     }); 
    198  
    199     jQuery(document).mousedown(function(){ 
    200         hide_picker(); // Make the picker disappear if you click outside its div element 
    201     }); 
    202  
    203     function hide_picker(what) { 
    204         var update = false; 
    205         jQuery('#colorPickerDiv').each(function(){ 
    206             var id = jQuery(this).attr('id'); 
    207             if (id == what) { 
    208                 return; 
    209             } 
    210             var display = jQuery(this).css('display'); 
    211             if (display == 'block') { 
    212                 jQuery(this).fadeOut(2); 
    213             } 
    214         }); 
    215     } 
    216  
    217 </script> 
    218 <?php 
    219     } 
    220  
    221     /** 
    222      * Display first step of custom background image page. 
    223      * 
    224      * @since unknown 
    225      */ 
    226     function step_1() { 
     133     * Display the custom background page. 
     134     * 
     135     * @since 3.0 
     136     */ 
     137    function admin_page() { 
    227138?> 
    228139<div class="wrap" id="custom-background"> 
     
    240151    } else { 
    241152        if ( $bgcolor = get_background_color() ) 
    242             $bgcolor = ' style="background-color: #' . $bgcolor . ';"'; 
    243         else 
    244             $bgcolor = ''; 
     153            $bgcolor = 'background-color: #' . $bgcolor . ';'; 
     154 
     155        if ( $align = get_theme_mod('background_position', 'left') ) 
     156            $align = "text-align: $align;";       
    245157?> 
    246 <div id="custom-background-image"<?php echo $bgcolor; ?>> 
     158<div id="custom-background-image"  style="<?php echo $bgcolor, $align ?>"> 
    247159<?php if ( get_background_image() ) { ?> 
    248160<img class="custom-background-image" src="<?php background_image(); ?>" /> 
    249161<?php } ?> 
     162<br class="clear" /> 
    250163</div> 
    251164<?php } ?> 
    252165<h3><?php _e('Change Display Options') ?></h3> 
    253 <form method="post" action="<?php echo esc_attr(add_query_arg('step', 1)) ?>"> 
     166<form method="post" action=""> 
    254167<table> 
    255168<thead> 
     
    315228 
    316229<h3><?php _e('Upload New Background Image'); ?></h3> 
    317 <form enctype="multipart/form-data" id="uploadForm" method="POST" action="<?php echo esc_attr(add_query_arg('step', 2)) ?>"> 
     230<form enctype="multipart/form-data" id="uploadForm" method="POST" action=""> 
    318231<label for="upload"><?php _e('Choose an image from your computer:'); ?></label><br /><input type="file" id="upload" name="import" /> 
    319232<input type="hidden" name="action" value="save" /> 
     
    327240<h3><?php _e('Remove Background Image'); ?></h3> 
    328241<p><?php _e('This will remove the background image. You will not be able to retrieve any customizations.') ?></p> 
    329 <form method="post" action="<?php echo esc_attr(add_query_arg('step', 1)) ?>"> 
     242<form method="post" action=""> 
    330243<?php wp_nonce_field('custom-background'); ?> 
    331244<input type="submit" class="button" name="remove-background" value="<?php esc_attr_e('Remove Background'); ?>" /> 
    332245</form> 
    333  
    334246<?php endif; ?> 
     247 
    335248</div> 
    336249<?php 
     
    338251 
    339252    /** 
    340      * Display second step of custom background image page. 
    341      * 
    342      * @since unknown 
    343      */ 
    344     function step_2() { 
     253     * Handle a Image upload for the background image. 
     254     * 
     255     * @since 3.0 
     256     */ 
     257    function handle_upload() { 
     258 
     259        if ( empty($_FILES) ) 
     260            return; 
     261 
    345262        check_admin_referer('custom-background'); 
    346263        $overrides = array('test_form' => false); 
     
    372289        do_action('wp_create_file_in_uploads', $file, $id); // For replication 
    373290        $this->updated = true; 
    374         return $this->finished(); 
    375     } 
    376  
    377     /** 
    378      * Display last step of custom header image page. 
    379      * 
    380      * @since unknown 
    381      */ 
    382     function finished() { 
    383         $this->step_1(); 
    384     } 
    385  
    386     /** 
    387      * Display the page based on the current step. 
    388      * 
    389      * @since unknown 
    390      */ 
    391     function admin_page() { 
    392         if ( ! current_user_can('switch_themes') ) 
    393             wp_die(__('You do not have permission to customize the background.')); 
    394         $step = $this->step(); 
    395         if ( 1 == $step ) 
    396             $this->step_1(); 
    397         elseif ( 2 == $step ) 
    398             $this->step_2(); 
    399291    } 
    400292 
  • trunk/wp-includes/script-loader.php

    r13766 r13788  
    407407            'warnDelete' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ), 
    408408        ) ); 
     409 
     410        $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), '20100321' ); 
     411        $scripts->add_data( 'custom-background', 'group', 1 ); 
     412        // See wp_just_in_time_script_localization() for translation data for this object 
     413 
    409414    } 
    410415} 
     
    510515 
    511516/** 
    512  * Load localized script just in time for MCE. 
     517 * Load localized data on print rather than initialization. 
    513518 * 
    514519 * These localizations require information that may not be loaded even by init. 
     
    527532        'l10n_print_after' => 'try{convertEntities(autosaveL10n);}catch(e){};' 
    528533    ) ); 
     534 
     535    wp_localize_script( 'custom-background', 'customBackgroundL10n', array( 
     536        'backgroundcolor' => '#' . get_background_color(), 
     537    ) ); 
    529538} 
    530539 
Note: See TracChangeset for help on using the changeset viewer.