Make WordPress Core

Ticket #27065: 27065.diff

File 27065.diff, 19.2 KB (added by ericlewis, 11 years ago)
  • wp-admin/customize.php

     
    11<?php
    22/**
    3  * Customize Controls
     3 * Customize Screen.
    44 *
    55 * @package WordPress
    66 * @subpackage Customize
     
    99
    1010define( 'IFRAME_REQUEST', true );
    1111
     12// WordPress Administration Bootstrap
    1213require_once( dirname( __FILE__ ) . '/admin.php' );
     14
    1315if ( ! current_user_can( 'edit_theme_options' ) )
    1416        wp_die( __( 'Cheatin&#8217; uh?' ) );
    1517
     
    199201                'customize-login' => 1
    200202        ), wp_login_url() );
    201203
     204        // Prepare customizer settings to pass to Javascript.
    202205        $settings = array(
    203206                'theme'    => array(
    204207                        'stylesheet' => $wp_customize->get_stylesheet(),
     
    227230                ),
    228231        );
    229232
     233        // Prepare Customize Setting objects to pass to Javascript.
    230234        foreach ( $wp_customize->settings() as $id => $setting ) {
    231235                $settings['settings'][ $id ] = array(
    232236                        'value'     => $setting->js_value(),
     
    234238                );
    235239        }
    236240
     241        // Prepare Customize Control objects to pass to Javascript.
    237242        foreach ( $wp_customize->controls() as $id => $control ) {
    238243                $control->to_json();
    239244                $settings['controls'][ $id ] = $control->json;
  • wp-content/themes/twentytwelve/style.css

     
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1010Tags: light, gray, white, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
    1111Text Domain: twentytwelve
     12Template: bp-default
    1213
    1314This theme, like WordPress, is licensed under the GPL.
    1415Use it to make something cool, have fun, and share what you've learned with others.
  • wp-includes/class-wp-customize-control.php

     
    3939         * @access public
    4040         * @var int
    4141         */
    42         public $priority          = 10;
     42        public $priority = 10;
    4343
    4444        /**
    4545         * @access public
    4646         * @var string
    4747         */
    48         public $section           = '';
     48        public $section = '';
    4949
    5050        /**
    5151         * @access public
    5252         * @var string
    5353         */
    54         public $label             = '';
     54        public $label = '';
    5555
    5656        /**
    5757         * @todo: Remove choices
     
    5959         * @access public
    6060         * @var array
    6161         */
    62         public $choices           = array();
     62        public $choices = array();
    6363
    6464        /**
    6565         * @access public
     
    7777        /**
    7878         * Constructor.
    7979         *
     80         * Supplied $args override class property defaults.
     81         *
    8082         * If $args['settings'] is not defined, use the $id as the setting ID.
    8183         *
    8284         * @since 3.4.0
     
    9597                $this->manager = $manager;
    9698                $this->id = $id;
    9799
    98 
    99100                // Process settings.
    100101                if ( empty( $this->settings ) )
    101102                        $this->settings = $id;
     
    185186        }
    186187
    187188        /**
    188          * Render the control. Renders the control wrapper, then calls $this->render_content().
     189         * Renders the control wrapper and calls $this->render_content() for the internals.
    189190         *
    190191         * @since 3.4.0
    191192         */
     
    199200        }
    200201
    201202        /**
    202          * Get the data link parameter for a setting.
     203         * Get the data link attribute for a setting.
    203204         *
    204205         * @since 3.4.0
    205206         *
    206          * @param string $setting_key
     207         * @param  string $setting_key
    207208         * @return string Data link parameter, if $setting_key is a valid setting, empty string otherwise.
    208209         */
    209210        public function get_link( $setting_key = 'default' ) {
     
    214215        }
    215216
    216217        /**
    217          * Render the data link parameter for a setting
     218         * Render the data link attribute for the control's input element.
    218219         *
    219220         * @since 3.4.0
    220221         * @uses WP_Customize_Control::get_link()
     
    228229        /**
    229230         * Render the control's content.
    230231         *
    231          * Allows the content to be overriden without having to rewrite the wrapper.
     232         * Allows the content to be overriden without having to rewrite the wrapper in $this->render().
    232233         *
     234         * Supports basic input types `text`, `checkbox`, `radio`, `select` and `dropdown-pages`.
     235         *
    233236         * @since 3.4.0
    234237         */
    235238        protected function render_content() {
     
    331334        /**
    332335         * Constructor.
    333336         *
    334          * If $args['settings'] is not defined, use the $id as the setting ID.
    335          *
    336337         * @since 3.4.0
    337338         * @uses WP_Customize_Control::__construct()
    338339         *
     
    346347        }
    347348
    348349        /**
    349          * Enqueue control related scripts/styles.
     350         * Enqueue color-picker related scripts/styles.
    350351         *
    351352         * @since 3.4.0
    352353         */
     
    467468        /**
    468469         * Constructor.
    469470         *
    470          * If $args['settings'] is not defined, use the $id as the setting ID.
    471          *
    472471         * @since 3.4.0
    473472         * @uses WP_Customize_Upload_Control::__construct()
    474473         *
  • wp-includes/class-wp-customize-manager.php

     
    22/**
    33 * Customize Manager.
    44 *
     5 * Bootstraps the Customize experience on the server-side.
     6 *
     7 * Sets up the theme-switching process if a theme other than the active one is
     8 * being previewed and customized.
     9 *
     10 * Serves as a factory for Customize Controls and Settings, and
     11 * instantiates default Customize Controls and Settings.
     12 *
    513 * @package WordPress
    614 * @subpackage Customize
    715 * @since 3.4.0
    816 */
    917final class WP_Customize_Manager {
     18        /**
     19         * An instance of the theme that is being customized.
     20         *
     21         * @var WP_Theme
     22         */
    1023        protected $theme;
     24
     25        /**
     26         * The directory name of the previously active theme (within the theme_root).
     27         *
     28         * @var string
     29         */
    1130        protected $original_stylesheet;
    1231
     32        /**
     33         * Whether filters have been set to change the active theme to the theme being
     34         * customized.
     35         *
     36         * @var boolean
     37         */
    1338        protected $previewing = false;
    1439
    1540        protected $settings = array();
     
    2045
    2146        protected $customized;
    2247
     48        /**
     49         * $_POST values for Customize Settings.
     50         *
     51         * @var array
     52         */
    2353        private $_post_values;
    2454
    2555        /**
     
    2858         * @since 3.4.0
    2959         */
    3060        public function __construct() {
     61                // All classes in session.
    3162                require( ABSPATH . WPINC . '/class-wp-customize-setting.php' );
    3263                require( ABSPATH . WPINC . '/class-wp-customize-section.php' );
    3364                require( ABSPATH . WPINC . '/class-wp-customize-control.php' );
     
    127158                        // Once the theme is loaded, we'll validate it.
    128159                        add_action( 'after_setup_theme', array( $this, 'after_setup_theme' ) );
    129160                } else {
     161                        // If the requested theme is not the active theme and the user doesn't have the
     162                        // switch_themes cap, bail.
    130163                        if ( ! current_user_can( 'switch_themes' ) )
    131164                                $this->wp_die( -1 );
    132165
    133                         // If the theme isn't active, you can't preview it if it is not allowed or has errors.
     166                        // If the theme has errors while loading, bail.
    134167                        if ( $this->theme()->errors() )
    135168                                $this->wp_die( -1 );
    136169
     170                        // If the theme isn't allowed per multisite settings, bail.
    137171                        if ( ! $this->theme()->is_allowed() )
    138172                                $this->wp_die( -1 );
    139173                }
    140174
     175                // All good, let's do some internal business to preview the theme.
    141176                $this->start_previewing_theme();
    142177        }
    143178
     
    154189        }
    155190
    156191        /**
    157          * Start previewing the selected theme.
     192         * Start previewing the selected theme by adding filters to change the current theme.
    158193         *
    159          * Adds filters to change the current theme.
    160          *
    161194         * @since 3.4.0
    162195         */
    163196        public function start_previewing_theme() {
     
    300333        }
    301334
    302335        /**
    303          * Decode the $_POST attribute used to override the WP_Customize_Setting values.
     336         * Decode the $_POST['customized'] values for a specific Customize Setting.
    304337         *
    305338         * @since 3.4.0
    306339         *
    307          * @param mixed $setting A WP_Customize_Setting derived object
    308          * @return string Sanitized attribute
     340         * @param  mixed  $setting    A WP_Customize_Setting derived object
     341         * @return string $post_value Sanitized value
    309342         */
    310343        public function post_value( $setting ) {
    311344                if ( ! isset( $this->_post_values ) ) {
     
    487520        }
    488521
    489522        /**
    490          * Switch the theme and trigger the save action of each setting.
     523         * Switch the theme and trigger the save() method on each setting.
    491524         *
    492525         * @since 3.4.0
    493526         */
     
    522555         *
    523556         * @since 3.4.0
    524557         *
    525          * @param string $id A specific ID of the setting. Can be a
    526          *                   theme mod or option name.
    527          * @param array $args Setting arguments.
     558         * @param WP_Customize_Setting|string $id Customize Setting object, or ID.
     559         * @param array $args                     Setting arguments; passed to WP_Customize_Setting
     560         *                                        constructor.
    528561         */
    529562        public function add_setting( $id, $args = array() ) {
    530563                if ( is_a( $id, 'WP_Customize_Setting' ) )
     
    540573         *
    541574         * @since 3.4.0
    542575         *
    543          * @param string $id A specific ID of the setting.
    544          * @return object The settings object.
     576         * @param  string $id           Customize Setting ID.
     577         * @return WP_Customize_Setting
    545578         */
    546579        public function get_setting( $id ) {
    547580                if ( isset( $this->settings[ $id ] ) )
     
    553586         *
    554587         * @since 3.4.0
    555588         *
    556          * @param string $id A specific ID of the setting.
     589         * @param string $id Customize Setting ID.
    557590         */
    558591        public function remove_setting( $id ) {
    559592                unset( $this->settings[ $id ] );
     
    564597         *
    565598         * @since 3.4.0
    566599         *
    567          * @param string $id A specific ID of the section.
    568          * @param array $args Section arguments.
     600         * @param WP_Customize_Section|string $id   Customize Section object, or Section ID.
     601         * @param array                       $args Section arguments.
    569602         */
    570603        public function add_section( $id, $args = array() ) {
    571604                if ( is_a( $id, 'WP_Customize_Section' ) )
     
    581614         *
    582615         * @since 3.4.0
    583616         *
    584          * @param string $id A specific ID of the section.
    585          * @return object The section object.
     617         * @param  string $id           Section ID.
     618         * @return WP_Customize_Section
    586619         */
    587620        public function get_section( $id ) {
    588621                if ( isset( $this->sections[ $id ] ) )
     
    594627         *
    595628         * @since 3.4.0
    596629         *
    597          * @param string $id A specific ID of the section.
     630         * @param string $id Section ID.
    598631         */
    599632        public function remove_section( $id ) {
    600633                unset( $this->sections[ $id ] );
     
    605638         *
    606639         * @since 3.4.0
    607640         *
    608          * @param string $id A specific ID of the control.
    609          * @param array $args Setting arguments.
     641         * @param WP_Customize_Control|string $id   Customize Control object, or ID.
     642         * @param array                       $args Control arguments; passed to WP_Customize_Control
     643         *                                          constructor.
    610644         */
    611645        public function add_control( $id, $args = array() ) {
    612646                if ( is_a( $id, 'WP_Customize_Control' ) )
     
    622656         *
    623657         * @since 3.4.0
    624658         *
    625          * @param string $id A specific ID of the control.
    626          * @return object The settings object.
     659         * @param  string               $id      ID of the control.
     660         * @return WP_Customize_Control $control The control object.
    627661         */
    628662        public function get_control( $id ) {
    629663                if ( isset( $this->controls[ $id ] ) )
     
    631665        }
    632666
    633667        /**
    634          * Remove a customize setting.
     668         * Remove a customize control.
    635669         *
    636670         * @since 3.4.0
    637671         *
    638          * @param string $id A specific ID of the control.
     672         * @param string $id ID of the control.
    639673         */
    640674        public function remove_control( $id ) {
    641675                unset( $this->controls[ $id ] );
     
    662696        /**
    663697         * Prepare settings and sections.
    664698         *
     699         * For each, check if required related components exist,
     700         * whether the user has the necessary capabilities,
     701         * and sort by priority.
     702         *
    665703         * @since 3.4.0
    666704         */
    667705        public function prepare_controls() {
    668                 // Prepare controls
    669                 // Reversing makes uasort sort by time added when conflicts occur.
    670706
    671707                $this->controls = array_reverse( $this->controls );
    672708                $controls = array();
     
    9951031};
    9961032
    9971033/**
    998  * Validates a hex color.
     1034 * Sanitizes a hex color.
    9991035 *
    10001036 * Returns either '', a 3 or 6 digit hex color (with #), or null.
    1001  * For validating values without a #, see sanitize_hex_color_no_hash().
     1037 * For sanitizing values without a #, see sanitize_hex_color_no_hash().
    10021038 *
    10031039 * @since 3.4.0
    10041040 *
  • wp-includes/class-wp-customize-section.php

     
    22/**
    33 * Customize Section Class.
    44 *
     5 * A UI container for controls, managed by the WP_Customize_Manager.
     6 *
    57 * @package WordPress
    68 * @subpackage Customize
    79 * @since 3.4.0
    810 */
    911class WP_Customize_Section {
     12        /**
     13         * @access public
     14         *
     15         * @var WP_Customize_Manager
     16         */
    1017        public $manager;
     18
     19        /**
     20         * Unique identifier.
     21         *
     22         * @var string
     23         */
    1124        public $id;
     25
     26        /**
     27         * Priority of the section which informs load order of sections.
     28         *
     29         * @var integer
     30         */
    1231        public $priority       = 10;
     32
     33        /**
     34         * Capability required for the section.
     35         *
     36         * @var string
     37         */
    1338        public $capability     = 'edit_theme_options';
    1439        public $theme_supports = '';
     40
     41        /**
     42         * Title of the section to show in UI.
     43         *
     44         * @var string
     45         */
    1546        public $title          = '';
     47
     48        /**
     49         * Description to show in the UI.
     50         *
     51         * @var string
     52         */
    1653        public $description    = '';
    1754        public $controls;
    1855
    1956        /**
    2057         * Constructor.
    2158         *
     59         * Any supplied $args override class property defaults.
     60         *
    2261         * @since 3.4.0
    2362         *
    2463         * @param WP_Customize_Manager $manager
    25          * @param string $id An specific ID of the section.
    26          * @param array $args Section arguments.
     64         * @param string               $id      An specific ID of the section.
     65         * @param array                $args    Section arguments.
    2766         */
    2867        function __construct( $manager, $id, $args = array() ) {
    2968                $keys = array_keys( get_class_vars( __CLASS__ ) );
     
    4180        }
    4281
    4382        /**
    44          * Check if the theme supports the section and check user capabilities.
     83         * Checks required user capabilities and whether the theme has the
     84         * feature support required by the section.
    4585         *
    4686         * @since 3.4.0
    4787         *
     
    71111                 *
    72112                 * @since 3.4.0
    73113                 *
    74                  * @param WP_Customize_Section $this The WP_Customize_Section instance.
     114                 * @param WP_Customize_Section $this WP_Customize_Section instance.
    75115                 */
    76116                do_action( 'customize_render_section', $this );
    77117                /**
     
    88128        }
    89129
    90130        /**
    91          * Render the section.
     131         * Render the section, and the controls that have been added to it.
    92132         *
    93133         * @since 3.4.0
    94134         */
  • wp-includes/class-wp-customize-setting.php

     
    22/**
    33 * Customize Setting Class.
    44 *
     5 * Handles business logic for a setting: saving and sanitizing data.
     6 *
    57 * @package WordPress
    68 * @subpackage Customize
    79 * @since 3.4.0
    810 */
    911class WP_Customize_Setting {
     12        /**
     13         * @access public
     14         * @var WP_Customize_Manager
     15         */
    1016        public $manager;
     17
     18        /**
     19         * @access public
     20         * @var string
     21         */
    1122        public $id;
    1223
    13         public $type            = 'theme_mod';
     24        /**
     25         * @access public
     26         * @var string
     27         */
     28        public $type = 'theme_mod';
     29
     30        /**
     31         * Capability required to edit this setting.
     32         *
     33         * @var string
     34         */
    1435        public $capability      = 'edit_theme_options';
     36
     37        /**
     38         * Feature a theme is required to support to enable this setting.
     39         *
     40         * @access public
     41         * @var string
     42         */
    1543        public $theme_supports  = '';
    1644        public $default         = '';
    1745        public $transport       = 'refresh';
    1846
     47        /**
     48         * Server-side sanitization callback for the setting's value.
     49         *
     50         * @var callback
     51         */
    1952        public $sanitize_callback    = '';
    2053        public $sanitize_js_callback = '';
    2154
    2255        protected $id_data = array();
    23         private $_post_value; // Cached, sanitized $_POST value.
    2456
    2557        /**
     58         * Cached and sanitized $_POST value for the setting.
     59         *
     60         * @access private
     61         * @var mixed
     62         */
     63        private $_post_value;
     64
     65        /**
    2666         * Constructor.
    2767         *
     68         * Any supplied $args override class property defaults.
     69         *
    2870         * @since 3.4.0
    2971         *
    30          * @param WP_Customize_Manager $manager
    31          * @param string $id An specific ID of the setting. Can be a
    32          *                   theme mod or option name.
    33          * @param array $args Setting arguments.
    34          * @return WP_Customize_Setting
     72         * @param WP_Customize_Manager  $manager
     73         * @param string                $id      An specific ID of the setting. Can be a
     74         *                                       theme mod or option name.
     75         * @param  array                $args    Setting arguments.
     76         * @return WP_Customize_Setting $setting
    3577         */
    3678        function __construct( $manager, $id, $args = array() ) {
    3779                $keys = array_keys( get_class_vars( __CLASS__ ) );
     
    98140        }
    99141
    100142        /**
    101          * Set the value of the parameter for a specific theme.
     143         * Check user capabilities and theme supports, and then save
     144         * the value of the setting.
    102145         *
    103146         * @since 3.4.0
    104147         *
     
    116159        }
    117160
    118161        /**
    119          * Fetches, validates, and sanitizes the $_POST value.
     162         * Fetch and sanitize the $_POST value for the setting.
    120163         *
    121164         * @since 3.4.0
    122165         *
     
    124167         * @return mixed The default value on failure, otherwise the sanitized value.
    125168         */
    126169        public final function post_value( $default = null ) {
     170                // Check for a cached value
    127171                if ( isset( $this->_post_value ) )
    128172                        return $this->_post_value;
    129173
     174                // Call the manager for the post value
    130175                $result = $this->manager->post_value( $this );
    131176
    132177                if ( isset( $result ) )
     
    140185         *
    141186         * @since 3.4.0
    142187         *
    143          * @param mixed $value The value to sanitize.
     188         * @param  mixed $value The value to sanitize.
    144189         * @return mixed Null if an input isn't valid, otherwise the sanitized value.
    145190         */
    146191        public function sanitize( $value ) {
     
    149194        }
    150195
    151196        /**
    152          * Set the value of the parameter for a specific theme.
     197         * Save the value of the setting, using the related API.
    153198         *
    154199         * @since 3.4.0
    155200         *
    156          * @param mixed $value The value to update.
    157          * @return mixed The result of saving the value.
     201         * @param  mixed $value The value to update.
     202         * @return mixed        The result of saving the value.
    158203         */
    159204        protected function update( $value ) {
    160205                switch( $this->type ) {
     
    190235        }
    191236
    192237        /**
    193          * Update the theme mod from the value of the parameter.
     238         * Update the option from the value of the setting.
    194239         *
    195240         * @since 3.4.0
    196241         *
    197          * @param mixed $value The value to update.
     242         * @param  mixed $value The value to update.
    198243         * @return mixed The result of saving the value.
    199244         */
    200245        protected function _update_option( $value ) {
     
    210255        }
    211256
    212257        /**
    213          * Fetch the value of the parameter for a specific theme.
     258         * Fetch the value of the setting.
    214259         *
    215260         * @since 3.4.0
    216261         *
    217          * @return mixed The requested value.
     262         * @return mixed The value.
    218263         */
    219264        public function value() {
     265                // Get the callback that corresponds to the setting type.
    220266                switch( $this->type ) {
    221267                        case 'theme_mod' :
    222268                                $function = 'get_theme_mod';
     
    238284        }
    239285
    240286        /**
    241          * Escape the parameter's value for use in JavaScript.
     287         * Sanitize and escape the setting's value for use in JavaScript.
    242288         *
    243289         * @since 3.4.0
    244290         *
     
    254300        }
    255301
    256302        /**
    257          * Check if the theme supports the setting and check user capabilities.
     303         * Validate user capabilities whether the theme supports the setting.
    258304         *
    259305         * @since 3.4.0
    260306         *