X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/61343b82c4f0da4c68e4c6373daafff4a81efdd1..245e789b234afa4525862e7a6e5e3c2e7a52ef20:/wp-includes/class-wp-customize-control.php diff --git a/wp-includes/class-wp-customize-control.php b/wp-includes/class-wp-customize-control.php index fde85615..df440744 100644 --- a/wp-includes/class-wp-customize-control.php +++ b/wp-includes/class-wp-customize-control.php @@ -39,19 +39,19 @@ class WP_Customize_Control { * @access public * @var int */ - public $priority = 10; + public $priority = 10; /** * @access public * @var string */ - public $section = ''; + public $section = ''; /** * @access public * @var string */ - public $label = ''; + public $label = ''; /** * @todo: Remove choices @@ -59,7 +59,7 @@ class WP_Customize_Control { * @access public * @var array */ - public $choices = array(); + public $choices = array(); /** * @access public @@ -77,6 +77,8 @@ class WP_Customize_Control { /** * Constructor. * + * Supplied $args override class property defaults. + * * If $args['settings'] is not defined, use the $id as the setting ID. * * @since 3.4.0 @@ -95,7 +97,6 @@ class WP_Customize_Control { $this->manager = $manager; $this->id = $id; - // Process settings. if ( empty( $this->settings ) ) $this->settings = $id; @@ -178,14 +179,32 @@ class WP_Customize_Control { if ( ! $this->check_capabilities() ) return; + /** + * Fires just before the current Customizer control is rendered. + * + * @since 3.4.0 + * + * @param WP_Customize_Control $this WP_Customize_Control instance. + */ do_action( 'customize_render_control', $this ); + + /** + * Fires just before a specific Customizer control is rendered. + * + * The dynamic portion of the hook name, $this->id, refers to + * the control ID. + * + * @since 3.4.0 + * + * @param WP_Customize_Control $this WP_Customize_Control instance. + */ do_action( 'customize_render_control_' . $this->id, $this ); $this->render(); } /** - * Render the control. Renders the control wrapper, then calls $this->render_content(). + * Renders the control wrapper and calls $this->render_content() for the internals. * * @since 3.4.0 */ @@ -199,7 +218,7 @@ class WP_Customize_Control { } /** - * Get the data link parameter for a setting. + * Get the data link attribute for a setting. * * @since 3.4.0 * @@ -214,7 +233,7 @@ class WP_Customize_Control { } /** - * Render the data link parameter for a setting + * Render the data link attribute for the control's input element. * * @since 3.4.0 * @uses WP_Customize_Control::get_link() @@ -228,7 +247,9 @@ class WP_Customize_Control { /** * Render the control's content. * - * Allows the content to be overriden without having to rewrite the wrapper. + * Allows the content to be overriden without having to rewrite the wrapper in $this->render(). + * + * Supports basic input types `text`, `checkbox`, `radio`, `select` and `dropdown-pages`. * * @since 3.4.0 */ @@ -331,8 +352,6 @@ class WP_Customize_Color_Control extends WP_Customize_Control { /** * Constructor. * - * If $args['settings'] is not defined, use the $id as the setting ID. - * * @since 3.4.0 * @uses WP_Customize_Control::__construct() * @@ -346,7 +365,7 @@ class WP_Customize_Color_Control extends WP_Customize_Control { } /** - * Enqueue control related scripts/styles. + * Enqueue scripts/styles for the color picker. * * @since 3.4.0 */ @@ -467,8 +486,6 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control { /** * Constructor. * - * If $args['settings'] is not defined, use the $id as the setting ID. - * * @since 3.4.0 * @uses WP_Customize_Upload_Control::__construct() * @@ -593,7 +610,7 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control { */ public function tab_upload_new() { if ( ! _device_can_upload() ) { - echo '

' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the native app for your device instead.'), 'http://wordpress.org/mobile/' ) . '

'; + echo '

' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the native app for your device instead.'), 'https://wordpress.org/mobile/' ) . '

'; } else { ?>
@@ -691,37 +708,9 @@ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control { } } -/** - * Customize Header Image Control Class - * - * @package WordPress - * @subpackage Customize - * @since 3.4.0 - */ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { - /** - * The processed default headers. - * @since 3.4.2 - * @var array - */ - protected $default_headers; - - /** - * The uploaded headers. - * @since 3.4.2 - * @var array - */ - protected $uploaded_headers; + public $type = 'header'; - /** - * Constructor. - * - * @since 3.4.0 - * @uses WP_Customize_Image_Control::__construct() - * @uses WP_Customize_Image_Control::add_tab() - * - * @param WP_Customize_Manager $manager - */ public function __construct( $manager ) { parent::__construct( $manager, 'header_image', array( 'label' => __( 'Header Image' ), @@ -733,85 +722,247 @@ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { 'context' => 'custom-header', 'removed' => 'remove-header', 'get_url' => 'get_header_image', - 'statuses' => array( - '' => __('Default'), - 'remove-header' => __('No Image'), - 'random-default-image' => __('Random Default Image'), - 'random-uploaded-image' => __('Random Uploaded Image'), - ) ) ); - // Remove the upload tab. - $this->remove_tab( 'upload-new' ); } - /** - * Prepares the control. - * - * If no tabs exist, removes the control from the manager. - * - * @since 3.4.2 - */ + public function to_json() { + parent::to_json(); + } + + public function enqueue() { + wp_enqueue_media(); + wp_enqueue_script( 'customize-views' ); + + $this->prepare_control(); + + wp_localize_script( 'customize-views', '_wpCustomizeHeader', array( + 'data' => array( + 'width' => absint( get_theme_support( 'custom-header', 'width' ) ), + 'height' => absint( get_theme_support( 'custom-header', 'height' ) ), + 'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ), + 'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ), + 'currentImgSrc' => $this->get_current_image_src(), + ), + 'nonces' => array( + 'add' => wp_create_nonce( 'header-add' ), + 'remove' => wp_create_nonce( 'header-remove' ), + ), + 'uploads' => $this->uploaded_headers, + 'defaults' => $this->default_headers + ) ); + + parent::enqueue(); + } + public function prepare_control() { global $custom_image_header; - if ( empty( $custom_image_header ) ) - return parent::prepare_control(); + if ( empty( $custom_image_header ) ) { + return; + } // Process default headers and uploaded headers. $custom_image_header->process_default_headers(); - $this->default_headers = $custom_image_header->default_headers; - $this->uploaded_headers = get_uploaded_header_images(); + $this->default_headers = $custom_image_header->get_default_header_images(); + $this->uploaded_headers = $custom_image_header->get_uploaded_header_images(); + } - if ( $this->default_headers ) - $this->add_tab( 'default', __('Default'), array( $this, 'tab_default_headers' ) ); + function print_header_image_template() { + ?> + + + + value(); + if ( isset( $this->get_url ) ) { + $src = call_user_func( $this->get_url, $src ); + return $src; } + return null; + } + + public function render_content() { + $this->print_header_image_template(); + $visibility = $this->get_current_image_src() ? '' : ' style="display:none" '; + $width = absint( get_theme_support( 'custom-header', 'width' ) ); + $height = absint( get_theme_support( 'custom-header', 'height' ) ); + ?> +
+

+ Add new, your theme recommends a header size of %s × %s pixels.' ), $width, $height ); + } elseif ( $width ) { + printf( __( 'While you can crop images to your liking after clicking Add new, your theme recommends a header width of %s pixels.' ), $width ); + } else { + printf( __( 'While you can crop images to your liking after clicking Add new, your theme recommends a header height of %s pixels.' ), $height ); + } + ?> +

+
+ + + +
+
+
+
+ + + + +
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+
+ json[ $key ] = $this->$key; + } + } + + public function render_content() { ?> - - - + + + + + + + +
uploaded_headers as $choice => $header ) - $this->print_header_image( $choice, $header ); + public function to_json() { + parent::to_json(); + $exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' ); + foreach ( $exported_properties as $key ) { + $this->json[ $key ] = $this->$key; + } } - /** - * @since 3.4.0 - */ - public function tab_default_headers() { - foreach ( $this->default_headers as $choice => $header ) - $this->print_header_image( $choice, $header ); + public function render_content() { + global $wp_registered_widgets; + require_once ABSPATH . '/wp-admin/includes/widgets.php'; + + $widget = $wp_registered_widgets[ $this->widget_id ]; + if ( ! isset( $widget['params'][0] ) ) { + $widget['params'][0] = array(); + } + + $args = array( + 'widget_id' => $widget['id'], + 'widget_name' => $widget['name'], + ); + + $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) ); + echo $this->manager->widgets->get_widget_control( $args ); } -} \ No newline at end of file +} +