X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/bf5c68485ef07868ad0a91168ecd0092af7661ae..8f374b7233bc2815ccc387e448d208c5434eb961:/wp-admin/custom-background.php diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php index 168c65e3..8fb1399b 100644 --- a/wp-admin/custom-background.php +++ b/wp-admin/custom-background.php @@ -53,6 +53,9 @@ class Custom_Background { 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_set-background-image', array( $this, 'wp_set_background_image' ) ); } /** @@ -70,6 +73,12 @@ class Custom_Background { add_action("load-$page", array(&$this, 'take_action'), 49); add_action("load-$page", array(&$this, 'handle_upload'), 49); + if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) { + add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 ); + add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) ); + add_filter( 'media_upload_mime_type_links', '__return_empty_array' ); + } + if ( $this->admin_header_callback ) add_action("admin_head-$page", $this->admin_header_callback, 51); } @@ -96,6 +105,8 @@ class Custom_Background { '

' . __( 'Support Forums' ) . '

' ); + add_thickbox(); + wp_enqueue_script('media-upload'); wp_enqueue_script('custom-background'); wp_enqueue_style('farbtastic'); } @@ -124,6 +135,7 @@ class Custom_Background { set_theme_mod('background_image', ''); set_theme_mod('background_image_thumb', ''); $this->updated = true; + wp_safe_redirect( $_POST['_wp_http_referer'] ); return; } @@ -199,15 +211,15 @@ if ( $bgcolor = get_background_color() ) if ( get_background_image() ) { // background-image URL must be single quote, see below - $background_styles .= ' background-image: url(\'' . get_theme_mod('background_image_thumb', '') . '\');' + $background_styles .= ' background-image: url(\'' . set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ) . '\');' . ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';' . ' background-position: top ' . get_theme_mod('background_position_x', 'left'); } ?>
-
- +
+
@@ -226,7 +238,8 @@ if ( get_background_image() ) { - + + @@ -240,13 +253,25 @@ if ( get_background_image() ) { - +
-
- - - -
+

+
+ + + + +

+ 'custom-background', 'TB_iframe' => 1 ), $image_library_url ); + ?> +

+
+ +

+ @@ -302,9 +327,10 @@ if ( get_background_image() ) {
- + - class="hide-if-no-js" id="clearcolor"> () + class="hide-if-no-js" id="clearcolor"> () +
@@ -357,14 +383,50 @@ if ( get_background_image() ) { wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); - set_theme_mod('background_image', esc_url($url)); + set_theme_mod('background_image', esc_url_raw($url)); $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); - set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) ); + set_theme_mod('background_image_thumb', esc_url_raw( $thumbnail[0] ) ); do_action('wp_create_file_in_uploads', $file, $id); // For replication $this->updated = true; } + /** + * Replace default attachment actions with "Set as background" link. + * + * @since 3.4.0 + */ + function attachment_fields_to_edit( $form_fields, $post ) { + $form_fields = array( 'image-size' => $form_fields['image-size'] ); + $form_fields['buttons'] = array( 'tr' => '' . __( 'Set as background' ) . '' ); + $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' ); + + return $form_fields; + } + + /** + * Leave only "Media Library" tab in the uploader window. + * + * @since 3.4.0 + */ + function filter_upload_tabs() { + return array( 'library' => __('Media Library') ); + } + + public function wp_set_background_image() { + if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit; + $attachment_id = absint($_POST['attachment_id']); + $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) )); + $size = 'thumbnail'; + if ( in_array( $_POST['size'], $sizes ) ) + $size = esc_attr( $_POST['size'] ); + + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + $url = wp_get_attachment_image_src( $attachment_id, $size ); + $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); + set_theme_mod( 'background_image', esc_url_raw( $url[0] ) ); + set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) ); + exit; + } } -?>