X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/3e7fab96d7874067884348df10bbdcdefa4a89ad..9c40b4d36daed9e28e48a5fe9205c32557195a4b:/wp-admin/custom-header.php diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php index 8d605655..fb07fe80 100644 --- a/wp-admin/custom-header.php +++ b/wp-admin/custom-header.php @@ -1,27 +1,107 @@ admin_header_callback = $admin_header_callback; } + /** + * Setup the hooks for the Custom Header admin page. + * + * @since unknown + */ function init() { - $page = add_theme_page(__('Custom Image Header'), __('Custom Image Header'), 'edit_themes', 'custom-header', array(&$this, 'admin_page')); + $page = add_theme_page(__('Custom Header'), __('Custom Header'), 'edit_themes', 'custom-header', array(&$this, 'admin_page')); add_action("admin_print_scripts-$page", array(&$this, 'js_includes')); + add_action("admin_print_styles-$page", array(&$this, 'css_includes')); + add_action("admin_head-$page", array(&$this, 'take_action'), 50); add_action("admin_head-$page", array(&$this, 'js'), 50); add_action("admin_head-$page", $this->admin_header_callback, 51); } + /** + * Get the current step. + * + * @since unknown + * + * @return int Current step + */ + function step() { + if ( ! isset( $_GET['step'] ) ) + return 1; + + $step = (int) $_GET['step']; + if ( $step < 1 || 3 < $step ) + $step = 1; + + return $step; + } + + /** + * Setup the enqueue for the JavaScript files. + * + * @since unknown + */ function js_includes() { - wp_enqueue_script('cropper'); - wp_enqueue_script('colorpicker'); + $step = $this->step(); + + if ( 1 == $step ) + wp_enqueue_script('farbtastic'); + elseif ( 2 == $step ) + wp_enqueue_script('jcrop'); } - function js() { + /** + * Setup the enqueue for the CSS files + * + * @since 2.7 + */ + function css_includes() { + $step = $this->step(); + + if ( 1 == $step ) + wp_enqueue_style('farbtastic'); + elseif ( 2 == $step ) + wp_enqueue_style('jcrop'); + } + /** + * Execute custom header modification. + * + * @since unknown + */ + function take_action() { if ( isset( $_POST['textcolor'] ) ) { check_admin_referer('custom-header'); if ( 'blank' == $_POST['textcolor'] ) { @@ -36,119 +116,156 @@ class Custom_Image_Header { check_admin_referer('custom-header'); remove_theme_mods(); } - ?> + } + + /** + * Execute Javascript depending on step. + * + * @since unknown + */ + function js() { + $step = $this->step(); + if ( 1 == $step ) + $this->js_1(); + elseif ( 2 == $step ) + $this->js_2(); + } + + /** + * Display Javascript based on Step 1. + * + * @since unknown + */ + function js_1() { ?> +'; - $('hidetext').value = ''; - Event.stopObserving( $('hidetext'), 'click', show_text ); - Event.observe( $('hidetext'), 'click', hide_text ); + /** + * Display Javascript based on Step 2. + * + * @since unknown + */ + function js_2() { ?> +
@@ -157,33 +274,34 @@ Event.observe( window, 'load', hide_text );
+

-
+

-
- - + + + -
+ - +

%1$d x %2$d pixels will be used as-is.'), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); ?>

-
+

- +

@@ -193,15 +311,20 @@ Event.observe( window, 'load', hide_text );

-
+ - +
false); @@ -211,6 +334,7 @@ Event.observe( window, 'load', hide_text ); die( $file['error'] ); $url = $file['url']; + $type = $file['type']; $file = $file['file']; $filename = basename($file); @@ -218,19 +342,20 @@ Event.observe( window, 'load', hide_text ); $object = array( 'post_title' => $filename, 'post_content' => $url, - 'post_mime_type' => 'import', + 'post_mime_type' => $type, 'guid' => $url); // Save the data $id = wp_insert_attachment($object, $file); - $upload = array('file' => $file, 'id' => $id); - list($width, $height, $type, $attr) = getimagesize( $file ); if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { - set_theme_mod('header_image', clean_url($url)); - $header = apply_filters('wp_create_file_in_uploads', $file, $id); // For replication + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + + set_theme_mod('header_image', esc_url($url)); + do_action('wp_create_file_in_uploads', $file, $id); // For replication return $this->finished(); } elseif ( $width > HEADER_IMAGE_WIDTH ) { $oitar = $width / HEADER_IMAGE_WIDTH; @@ -247,10 +372,10 @@ Event.observe( window, 'load', hide_text );
-
+

-
+
@@ -261,10 +386,10 @@ Event.observe( window, 'load', hide_text ); - - + + - +

@@ -272,6 +397,11 @@ Event.observe( window, 'load', hide_text ); 1 ) { @@ -281,26 +411,43 @@ Event.observe( window, 'load', hide_text ); $_POST['height'] = $_POST['height'] * $_POST['oitar']; } - $header = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); - $header = apply_filters('wp_create_file_in_uploads', $header); // For replication + $original = get_attached_file( $_POST['attachment_id'] ); - $parent = get_post($_POST['attachment_id']); + $cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); + $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication + $parent = get_post($_POST['attachment_id']); $parent_url = $parent->guid; + $url = str_replace(basename($parent_url), basename($cropped), $parent_url); - $url = str_replace(basename($parent_url), basename($header), $parent_url); + // Construct the object array + $object = array( + 'ID' => $_POST['attachment_id'], + 'post_title' => basename($cropped), + 'post_content' => $url, + 'post_mime_type' => 'image/jpeg', + 'guid' => $url + ); + + // Update the attachment + wp_insert_attachment($object, $cropped); + wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) ); set_theme_mod('header_image', $url); // cleanup - $file = get_attached_file( $_POST['attachment_id'] ); - $medium = str_replace(basename($file), 'midsize-'.basename($file), $file); + $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); @unlink( apply_filters( 'wp_delete_file', $medium ) ); - wp_delete_attachment( $_POST['attachment_id'] ); + @unlink( apply_filters( 'wp_delete_file', $original ) ); return $this->finished(); } + /** + * Display last step of custom header image page. + * + * @since unknown + */ function finished() { ?>
@@ -312,20 +459,19 @@ Event.observe( window, 'load', hide_text ); step(); + if ( 1 == $step ) $this->step_1(); - } elseif ( 2 == $step ) { + elseif ( 2 == $step ) $this->step_2(); - } elseif ( 3 == $step ) { + elseif ( 3 == $step ) $this->step_3(); - } - } }