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() ) {
|
|
@@ -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;
+ }
}
-?>