X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/e08b42e8ad054ec67522d7ac1aaae5dc68cb3d01..5e031ad59895b5682d1509675cafe9f2c5081c12:/wp-admin/custom-background.php diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php index e5666e71..fc320f9f 100644 --- a/wp-admin/custom-background.php +++ b/wp-admin/custom-background.php @@ -20,27 +20,21 @@ class Custom_Background { * * @var callback * @since 3.0.0 - * @access private */ - var $admin_header_callback; + public $admin_header_callback; /** * Callback for header div. * * @var callback * @since 3.0.0 - * @access private */ - var $admin_image_div_callback; + public $admin_image_div_callback; /** - * Holds the page menu hook. - * - * @var string - * @since 3.0.0 - * @access private + * @var bool */ - var $page = ''; + private $updated; /** * Constructor - Register administration header callback. @@ -48,13 +42,16 @@ class Custom_Background { * @since 3.0.0 * @param callback $admin_header_callback * @param callback $admin_image_div_callback Optional custom image div output callback. - * @return Custom_Background */ - function __construct($admin_header_callback = '', $admin_image_div_callback = '') { + public function __construct($admin_header_callback = '', $admin_image_div_callback = '') { $this->admin_header_callback = $admin_header_callback; $this->admin_image_div_callback = $admin_image_div_callback; add_action( 'admin_menu', array( $this, 'init' ) ); + + add_action( 'wp_ajax_custom-background-add', array( $this, 'ajax_background_add' ) ); + + // Unused since 3.5.0. add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) ); } @@ -63,18 +60,19 @@ class Custom_Background { * * @since 3.0.0 */ - function init() { - if ( ! current_user_can('edit_theme_options') ) + public function init() { + $page = add_theme_page( __( 'Background' ), __( 'Background' ), 'edit_theme_options', 'custom-background', array( $this, 'admin_page' ) ); + if ( ! $page ) { return; + } - $this->page = $page = add_theme_page(__('Background'), __('Background'), 'edit_theme_options', 'custom-background', array($this, 'admin_page')); - - add_action("load-$page", array($this, 'admin_load')); - add_action("load-$page", array($this, 'take_action'), 49); - add_action("load-$page", array($this, 'handle_upload'), 49); + add_action( "load-$page", array( $this, 'admin_load' ) ); + add_action( "load-$page", array( $this, 'take_action' ), 49 ); + add_action( "load-$page", array( $this, 'handle_upload' ), 49 ); - if ( $this->admin_header_callback ) - add_action("admin_head-$page", $this->admin_header_callback, 51); + if ( $this->admin_header_callback ) { + add_action( "admin_head-$page", $this->admin_header_callback, 51 ); + } } /** @@ -82,7 +80,7 @@ class Custom_Background { * * @since 3.0.0 */ - function admin_load() { + public function admin_load() { get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __('Overview'), @@ -95,8 +93,8 @@ class Custom_Background { get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . - '

' . __( 'Documentation on Custom Background' ) . '

' . - '

' . __( 'Support Forums' ) . '

' + '

' . __( 'Documentation on Custom Background' ) . '

' . + '

' . __( 'Support Forums' ) . '

' ); wp_enqueue_media(); @@ -109,7 +107,7 @@ class Custom_Background { * * @since 3.0.0 */ - function take_action() { + public function take_action() { if ( empty($_POST) ) return; @@ -176,53 +174,70 @@ class Custom_Background { * * @since 3.0.0 */ - function admin_page() { + public function admin_page() { ?>
-

-updated) ) { ?> +

+ + +
+

+ Customizer.' ), + admin_url( 'customize.php?autofocus[control]=background_image' ) + ); + ?> +

+
+ + +updated ) ) { ?>

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

- + +

- if ( $this->admin_image_div_callback ) { - call_user_func($this->admin_image_div_callback); - } else { -?> -

- - + + + - + + - - + + - @@ -268,11 +283,11 @@ if ( get_background_image() ) {
- -
- -
- - -
- + admin_image_div_callback ) { + call_user_func( $this->admin_image_div_callback ); + } else { + $background_styles = ''; + if ( $bgcolor = get_background_color() ) + $background_styles .= 'background-color: #' . $bgcolor . ';'; + + $background_image_thumb = get_background_image(); + if ( $background_image_thumb ) { + $background_image_thumb = esc_url( set_url_scheme( get_theme_mod( 'background_image_thumb', str_replace( '%', '%%', $background_image_thumb ) ) ) ); + + // Background-image URL must be single quote, see below. + $background_styles .= ' background-image: url(\'' . $background_image_thumb . '\');' + . ' background-repeat: ' . get_theme_mod( 'background_repeat', get_theme_support( 'custom-background', 'default-repeat' ) ) . ';' + . ' background-position: top ' . get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) ); + } + ?> +
+ +
+ + +
+
-
+
@@ -233,21 +248,21 @@ if ( get_background_image() ) { -
- +
+


@@ -257,9 +272,9 @@ if ( get_background_image() ) {


- + data-update="">

-
+ - + - + - + - +
@@ -300,7 +315,7 @@ if ( get_background_image() ) {
false); $uploaded_file = $_FILES['import']; - $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'], false ); + $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'] ); if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) ); @@ -391,23 +406,53 @@ if ( current_theme_supports( 'custom-background', 'default-color' ) ) } /** - * Unused since 3.5.0. + * AJAX handler for adding custom background context to an attachment. + * + * Triggered when the user adds a new background image from the + * Media Manager. + * + * @since 4.1.0 + */ + public function ajax_background_add() { + check_ajax_referer( 'background-add', 'nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) { + wp_send_json_error(); + } + + $attachment_id = absint( $_POST['attachment_id'] ); + if ( $attachment_id < 1 ) { + wp_send_json_error(); + } + + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_stylesheet() ); + + wp_send_json_success(); + } + + /** * * @since 3.4.0 + * @deprecated 3.5.0 */ - function attachment_fields_to_edit( $form_fields ) { + public function attachment_fields_to_edit( $form_fields ) { return $form_fields; } /** - * Unused since 3.5.0. * * @since 3.4.0 + * @deprecated 3.5.0 */ - function filter_upload_tabs( $tabs ) { + public function filter_upload_tabs( $tabs ) { return $tabs; } + /** + * + * @since 3.4.0 + * @deprecated 3.5.0 + */ public function wp_set_background_image() { if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit; $attachment_id = absint($_POST['attachment_id']);