/** * Ajax handler for image editing. * * @since 3.1.0 */ function wp_ajax_image_editor() { $attachment_id = intval($_POST['postid']); if (empty($attachment_id) || !current_user_can('edit_post', $attachment_id)) { wp_die(-1); } check_ajax_referer("image_editor-{$attachment_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = false; switch ($_POST['do']) { case 'save': $msg = wp_save_image($attachment_id); $msg = wp_json_encode($msg); wp_die($msg); break; case 'scale': $msg = wp_save_image($attachment_id); break; case 'restore': $msg = wp_restore_image($attachment_id); break; } wp_image_editor($attachment_id, $msg); wp_die(); }
/** * Displays the image and editor in the post editor * * @since 3.5.0 */ function edit_form_image_editor($post) { $open = isset($_GET['image-editor']); if ($open) { require_once ABSPATH . 'wp-admin/includes/image-edit.php'; } $thumb_url = false; if ($attachment_id = intval($post->ID)) { $thumb_url = wp_get_attachment_image_src($attachment_id, array(900, 450), true); } $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true); $att_url = wp_get_attachment_url($post->ID); ?> <div class="wp_attachment_holder"> <?php if (wp_attachment_is_image($post->ID)) { $image_edit_button = ''; if (wp_image_editor_supports(array('mime_type' => $post->post_mime_type))) { $nonce = wp_create_nonce("image_editor-{$post->ID}"); $image_edit_button = "<input type='button' id='imgedit-open-btn-{$post->ID}' onclick='imageEdit.open( {$post->ID}, \"{$nonce}\" )' class='button' value='" . esc_attr__('Edit Image') . "' /> <span class='spinner'></span>"; } ?> <div class="imgedit-response" id="imgedit-response-<?php echo $attachment_id; ?> "></div> <div<?php if ($open) { echo ' style="display:none"'; } ?> class="wp_attachment_image" id="media-head-<?php echo $attachment_id; ?> "> <p id="thumbnail-head-<?php echo $attachment_id; ?> "><img class="thumbnail" src="<?php echo set_url_scheme($thumb_url[0]); ?> " style="max-width:100%" alt="" /></p> <p><?php echo $image_edit_button; ?> </p> </div> <div<?php if (!$open) { echo ' style="display:none"'; } ?> class="image-editor" id="image-editor-<?php echo $attachment_id; ?> "> <?php if ($open) { wp_image_editor($attachment_id); } ?> </div> <?php } elseif ($attachment_id && 0 === strpos($post->post_mime_type, 'audio/')) { wp_maybe_generate_attachment_metadata($post); echo wp_audio_shortcode(array('src' => $att_url)); } elseif ($attachment_id && 0 === strpos($post->post_mime_type, 'video/')) { wp_maybe_generate_attachment_metadata($post); $meta = wp_get_attachment_metadata($attachment_id); $w = !empty($meta['width']) ? min($meta['width'], 640) : 0; $h = !empty($meta['height']) ? $meta['height'] : 0; if ($h && $w < $meta['width']) { $h = round($meta['height'] * $w / $meta['width']); } $attr = array('src' => $att_url); if (!empty($w) && !empty($h)) { $attr['width'] = $w; $attr['height'] = $h; } $thumb_id = get_post_thumbnail_id($attachment_id); if (!empty($thumb_id)) { $attr['poster'] = wp_get_attachment_url($thumb_id); } echo wp_video_shortcode($attr); } ?> </div> <div class="wp_attachment_details edit-form-section"> <p> <label for="attachment_caption"><strong><?php _e('Caption'); ?> </strong></label><br /> <textarea class="widefat" name="excerpt" id="attachment_caption"><?php echo $post->post_excerpt; ?> </textarea> </p> <?php if ('image' === substr($post->post_mime_type, 0, 5)) { ?> <p> <label for="attachment_alt"><strong><?php _e('Alternative Text'); ?> </strong></label><br /> <input type="text" class="widefat" name="_wp_attachment_image_alt" id="attachment_alt" value="<?php echo esc_attr($alt_text); ?> " /> </p> <?php } ?> <?php $quicktags_settings = array('buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close'); $editor_args = array('textarea_name' => 'content', 'textarea_rows' => 5, 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings); ?> <label for="content"><strong><?php _e('Description'); ?> </strong><?php if (preg_match('#^(audio|video)/#', $post->post_mime_type)) { echo ': ' . __('Displayed on attachment pages.'); } ?> </label> <?php wp_editor($post->post_content, 'attachment_content', $editor_args); ?> </div> <?php $extras = get_compat_media_markup($post->ID); echo $extras['item']; echo '<input type="hidden" id="image-edit-context" value="edit-attachment" />' . "\n"; }
/** * Displays the image and editor in the post editor * * @since 3.5.0 */ function edit_form_image_editor() { $post = get_post(); $open = isset($_GET['image-editor']); if ($open) { require_once ABSPATH . 'wp-admin/includes/image-edit.php'; } $thumb_url = false; if ($attachment_id = intval($post->ID)) { $thumb_url = wp_get_attachment_image_src($attachment_id, array(900, 450), true); } $filename = esc_html(basename($post->guid)); $title = esc_attr($post->post_title); $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true); $att_url = wp_get_attachment_url($post->ID); if (wp_attachment_is_image($post->ID)) { $image_edit_button = ''; if (wp_image_editor_supports(array('mime_type' => $post->post_mime_type))) { $nonce = wp_create_nonce("image_editor-{$post->ID}"); $image_edit_button = "<input type='button' id='imgedit-open-btn-{$post->ID}' onclick='imageEdit.open( {$post->ID}, \"{$nonce}\" )' class='button' value='" . esc_attr__('Edit Image') . "' /> <span class='spinner'></span>"; } ?> <div class="wp_attachment_holder"> <div class="imgedit-response" id="imgedit-response-<?php echo $attachment_id; ?> "></div> <div<?php if ($open) { echo ' style="display:none"'; } ?> class="wp_attachment_image" id="media-head-<?php echo $attachment_id; ?> "> <p id="thumbnail-head-<?php echo $attachment_id; ?> "><img class="thumbnail" src="<?php echo set_url_scheme($thumb_url[0]); ?> " style="max-width:100%" alt="" /></p> <p><?php echo $image_edit_button; ?> </p> </div> <div<?php if (!$open) { echo ' style="display:none"'; } ?> class="image-editor" id="image-editor-<?php echo $attachment_id; ?> "> <?php if ($open) { wp_image_editor($attachment_id); } ?> </div> </div> <?php } ?> <div class="wp_attachment_details"> <p> <label for="attachment_caption"><strong><?php _e('Caption'); ?> </strong></label><br /> <textarea class="widefat" name="excerpt" id="attachment_caption"><?php echo $post->post_excerpt; ?> </textarea> </p> <?php if ('image' === substr($post->post_mime_type, 0, 5)) { ?> <p> <label for="attachment_alt"><strong><?php _e('Alternative Text'); ?> </strong></label><br /> <input type="text" class="widefat" name="_wp_attachment_image_alt" id="attachment_alt" value="<?php echo esc_attr($alt_text); ?> " /> </p> <?php } ?> <?php $quicktags_settings = array('buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close'); $editor_args = array('textarea_name' => 'content', 'textarea_rows' => 5, 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings); ?> <label for="content"><strong><?php _e('Description'); ?> </strong></label> <?php wp_editor($post->post_content, 'attachment_content', $editor_args); ?> </div> <?php $extras = get_compat_media_markup($post->ID); echo $extras['item']; echo '<input type="hidden" id="image-edit-context" value="edit-attachment" />' . "\n"; }
include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = false; switch ($_POST['do']) { case 'save': $msg = wp_save_image($attachment_id); $msg = json_encode($msg); die($msg); break; case 'scale': $msg = wp_save_image($attachment_id); break; case 'restore': $msg = wp_restore_image($attachment_id); break; } wp_image_editor($attachment_id, $msg); die; break; case 'set-post-thumbnail': $post_id = intval($_POST['post_id']); if (!current_user_can('edit_post', $post_id)) { die('-1'); } $thumbnail_id = intval($_POST['thumbnail_id']); if ($thumbnail_id == '-1') { delete_post_meta($post_id, '_thumbnail_id'); die(_wp_post_thumbnail_html()); } if ($thumbnail_id && get_post($thumbnail_id)) { $thumbnail_html = wp_get_attachment_image($thumbnail_id, 'thumbnail'); if (!empty($thumbnail_html)) {
if ($form = $wp_registered_widget_controls[$widget_id]) { call_user_func_array($form['callback'], $form['params']); } die; break; case 'image-edit-save': // $post_id is the attachment ID $post_id = intval($_POST['postid']); if (empty($post_id) || !current_user_can('edit_post', $post_id)) { die('-1'); } check_ajax_referer("image_editor-{$post_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = wp_save_image($post_id); die($msg); break; case 'open-image-editor': $post_id = intval($_POST['postid']); if (empty($post_id) || !current_user_can('edit_post', $post_id)) { die('-1'); } check_ajax_referer("image_editor-{$post_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; wp_image_editor($post_id); die; break; default: do_action('wp_ajax_' . $_POST['action']); die('0'); break; }