X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/e08b42e8ad054ec67522d7ac1aaae5dc68cb3d01..a9fa37e08fa731c7bd108a175c24876823bc071b:/wp-admin/custom-background.php diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php index e5666e71..dba32c66 100644 --- a/wp-admin/custom-background.php +++ b/wp-admin/custom-background.php @@ -18,43 +18,44 @@ class Custom_Background { /** * Callback for administration header. * - * @var callback + * @var callable * @since 3.0.0 - * @access private */ - var $admin_header_callback; + public $admin_header_callback; /** * Callback for header div. * - * @var callback + * @var callable * @since 3.0.0 - * @access private */ - var $admin_image_div_callback; + public $admin_image_div_callback; /** - * Holds the page menu hook. + * Used to trigger a success message when settings updated and set to true. * - * @var string * @since 3.0.0 * @access private + * @var bool */ - var $page = ''; + private $updated; /** * Constructor - Register administration header callback. * * @since 3.0.0 - * @param callback $admin_header_callback - * @param callback $admin_image_div_callback Optional custom image div output callback. - * @return Custom_Background + * @param callable $admin_header_callback + * @param callable $admin_image_div_callback Optional custom image div output callback. */ - 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 +64,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 +84,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 +97,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,8 +111,7 @@ class Custom_Background { * * @since 3.0.0 */ - function take_action() { - + public function take_action() { if ( empty($_POST) ) return; @@ -176,53 +177,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 { -?> -

- - + + + - + + - - + + + - +
- -
- -
- - -
- + 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 +251,22 @@ if ( get_background_image() ) { -
- +
+


@@ -257,22 +276,23 @@ if ( get_background_image() ) {


- + data-update="">

-
+ - + - + - + - +
@@ -300,7 +320,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 +410,59 @@ 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 + * + * @param array $form_fields + * @return array $form_fields */ - 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 + * + * @param array $tabs + * @return array $tabs */ - 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']);