WordPress.org

Make WordPress Core

Ticket #19840: 19840.11.diff

File 19840.11.diff, 14.0 KB (added by sabreuse, 2 years ago)

refresh of 19840.10.diff

  • wp-admin/js/set-post-thumbnail.dev.js

     
    55        jQuery.post(ajaxurl, { 
    66                action:"set-post-thumbnail", post_id: post_id, thumbnail_id: id, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie) 
    77        }, function(str){ 
    8                 var win = window.dialogArguments || opener || parent || top; 
     8                var win = GetParentWindow(); 
    99                $link.text( setPostThumbnailL10n.setThumbnail ); 
    1010                if ( str == '0' ) { 
    1111                        alert( setPostThumbnailL10n.error ); 
     
    1919        } 
    2020        ); 
    2121} 
     22 
     23function WPSetAsBackground(id){ 
     24        jQuery.post(ajaxurl, { 
     25                action: 'set-background-image', 
     26                attachment_id: id, 
     27                size: jQuery('input[name="attachments[' + id + '][image-size]"]').filter(':checked').val() 
     28        }, function(){ 
     29                tb_remove(); 
     30                GetParentWindow().location.reload(); 
     31        }); 
     32} 
     33 
     34function GetParentWindow() { 
     35        return ( window.dialogArguments || opener || parent || top ); 
     36} 
  • wp-admin/includes/post.php

     
    11521152        if ( empty( $post_id ) ) 
    11531153                $post_id = $post_ID; 
    11541154 
    1155         $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="' . esc_url( get_upload_iframe_src('image', $post_id) ) . '" id="set-post-thumbnail" class="thickbox">%s</a></p>'; 
     1155        $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="' . esc_url( get_upload_iframe_src( array( 'type'=>'image', 'post_id'=>$post_id ) ) ) . '" id="set-post-thumbnail" class="thickbox">%s</a></p>'; 
    11561156        $content = sprintf($set_thumbnail_link, esc_html__( 'Set featured image' )); 
    11571157 
    11581158        if ( $thumbnail_id && get_post( $thumbnail_id ) ) { 
  • wp-admin/includes/media.php

     
    401401        return "<a href='" . esc_url( get_upload_iframe_src($type) ) . "' id='{$id}-add_{$type}' class='thickbox add_$type' title='" . esc_attr( $title ) . "'><img src='" . esc_url( admin_url( $icon ) ) . "' alt='$title' onclick='return false;' /></a>"; 
    402402} 
    403403 
    404 function get_upload_iframe_src( $type = null, $post_id = null ) { 
     404function get_upload_iframe_src( $args = array() ) { 
    405405        global $post_ID; 
    406406 
    407         if ( empty( $post_id ) ) 
    408                 $post_id = $post_ID; 
     407        $defaults = array( 'type' => '', 'post_id' => $post_ID ); 
     408        // Backwards compat for first parameter being type 
     409        if ( is_string( $args ) ) 
     410                $args = array( 
     411                        'type' => $args, 
     412                        'post_id'=> $post_ID 
     413                ); 
    409414 
    410         $uploading_iframe_ID = (int) $post_id; 
    411         $upload_iframe_src = add_query_arg( 'post_id', $uploading_iframe_ID, admin_url('media-upload.php') ); 
     415        $args = wp_parse_args( $args, $defaults ); 
    412416 
    413         if ( $type && 'media' != $type ) 
    414                 $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src); 
     417        $upload_iframe_src = add_query_arg( 'post_id', (int) $args['post_id'], admin_url('media-upload.php') ); 
    415418 
    416         $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src); 
     419        if ( $args['type'] && 'media' != $args['type'] ) 
     420                $upload_iframe_src = add_query_arg('type', $args['type'], $upload_iframe_src); 
    417421 
     422        if ( ! empty( $args['tab'] ) ) 
     423                $upload_iframe_src = add_query_arg('tab', $args['tab'], $upload_iframe_src); 
     424 
     425        $upload_iframe_src = apply_filters($args['type'] . '_upload_iframe_src', $upload_iframe_src); 
     426 
    418427        return add_query_arg('TB_iframe', true, $upload_iframe_src); 
    419428} 
    420429 
     
    495504        if ( isset($send_id) ) { 
    496505                $attachment = stripslashes_deep( $_POST['attachments'][$send_id] ); 
    497506 
    498                 $html = $attachment['post_title']; 
     507                $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : ''; 
    499508                if ( !empty($attachment['url']) ) { 
    500509                        $rel = ''; 
    501510                        if ( strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url'] ) 
  • wp-admin/custom-header.php

     
    9090                add_action("admin_head-$page", array(&$this, 'take_action'), 50); 
    9191                add_action("admin_head-$page", array(&$this, 'js'), 50); 
    9292                add_action("admin_head-$page", $this->admin_header_callback, 51); 
     93 
     94                add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 ); 
     95                add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) ); 
    9396        } 
    9497 
    9598        /** 
     
    140143        function js_includes() { 
    141144                $step = $this->step(); 
    142145 
    143                 if ( 1 == $step ) 
     146                if ( ( 1 == $step || 3 == $step ) ) { 
     147                        add_thickbox(); 
     148                        wp_enqueue_script('media-upload'); 
    144149                        wp_enqueue_script('jquery-masonry'); 
    145                 if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) 
    146                         wp_enqueue_script('farbtastic'); 
    147                 elseif ( 2 == $step ) 
    148                         wp_enqueue_script('imgareaselect'); 
     150 
     151                        if ( $this->header_text() ) 
     152                                wp_enqueue_script('farbtastic'); 
     153                } elseif ( 2 == $step ) { 
     154                         wp_enqueue_script('imgareaselect'); 
     155                } 
    149156        } 
    150157 
    151158        /** 
     
    583590                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?> 
    584591        </p> 
    585592        </form> 
     593        <?php 
     594                $image_library_url = get_upload_iframe_src( array( 'type' => 'image', 'tab' => 'library' ) ); 
     595                $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url ); 
     596                $image_library_url = add_query_arg( array( 'context' => 'custom-header', 'TB_iframe' => 1 ), $image_library_url ); 
     597        ?> 
     598        <span class="howto"><?php _ex( 'or', 'Custom Header: Choose an image from your computer - or - Choose from image library' ); ?></span> <a class="thickbox" href="<?php echo $image_library_url; ?>"><?php _e( 'Choose from image library' ); ?></a> 
    586599</td> 
    587600</tr> 
    588601<?php endif; ?> 
     
    706719                if ( ! current_theme_supports( 'custom-header-uploads' ) ) 
    707720                        wp_die( __( 'Cheatin&#8217; uh?' ) ); 
    708721 
    709                 $overrides = array('test_form' => false); 
    710                 $file = wp_handle_upload($_FILES['import'], $overrides); 
     722                if ( empty( $_POST ) && isset( $_GET['file'] ) ) { 
     723                        $id = absint( $_GET['file'] ); 
     724                        $file = get_attached_file( $id, true ); 
     725                        $url = wp_get_attachment_image_src( $id, 'full'); 
     726                        $url = $url[0]; 
     727                } else if ( isset( $_POST ) ) { 
     728                        extract($this->step_2_manage_upload()); 
     729                } 
    711730 
    712                 if ( isset($file['error']) ) 
    713                         wp_die( $file['error'],  __( 'Image Upload Error' ) ); 
    714  
    715                 $url = $file['url']; 
    716                 $type = $file['type']; 
    717                 $file = $file['file']; 
    718                 $filename = basename($file); 
    719  
    720                 // Construct the object array 
    721                 $object = array( 
    722                 'post_title' => $filename, 
    723                 'post_content' => $url, 
    724                 'post_mime_type' => $type, 
    725                 'guid' => $url, 
    726                 'context' => 'custom-header' 
    727                 ); 
    728  
    729                 // Save the data 
    730                 $id = wp_insert_attachment($object, $file); 
    731  
    732731                list($width, $height, $type, $attr) = getimagesize( $file ); 
    733732 
    734733                $header_support = get_theme_support( 'custom-header' ); 
     
    785784        <input type="hidden" name="height" id="height" value="<?php echo esc_attr( $height ); ?>"/> 
    786785        <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $id ); ?>" /> 
    787786        <input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" /> 
     787        <?php if ( empty( $_POST ) && isset( $_GET['file'] ) ) { ?> 
     788        <input type="hidden" name="new-attachment" value="true" /> 
     789        <?php } ?> 
    788790        <?php wp_nonce_field( 'custom-header-crop-image' ) ?> 
    789791 
    790792        <?php submit_button( __( 'Crop and Publish' ) ); ?> 
     
    794796                <?php 
    795797        } 
    796798 
     799 
     800        function step_2_manage_upload() { 
     801                $overrides = array('test_form' => false); 
     802                $file = wp_handle_upload($_FILES['import'], $overrides); 
     803 
     804                if ( isset($file['error']) ) 
     805                        wp_die( $file['error'],  __( 'Image Upload Error' ) ); 
     806 
     807                $url = $file['url']; 
     808                $type = $file['type']; 
     809                $file = $file['file']; 
     810                $filename = basename($file); 
     811 
     812                // Construct the object array 
     813                $object = array( 
     814                        'post_title'     => $filename, 
     815                        'post_content'   => $url, 
     816                        'post_mime_type' => $type, 
     817                        'guid'           => $url, 
     818                        'context'        => 'custom-header' 
     819                ); 
     820 
     821                // Save the data 
     822                $id = wp_insert_attachment( $object, $file ); 
     823                return compact( 'id', 'file', 'filename', 'url', 'type' ); 
     824        } 
     825 
    797826        /** 
    798827         * Display third step of custom header image page. 
    799828         * 
     
    859888                        'guid' => $url, 
    860889                        'context' => 'custom-header' 
    861890                ); 
     891                if ( isset( $_POST['new-attachment'] ) && $_POST['new-attachment'] ) 
     892                        unset($object['ID']); 
    862893 
    863894                // Update the attachment 
    864                 wp_insert_attachment($object, $cropped); 
     895                $attachment_id = wp_insert_attachment( $object, $cropped ); 
    865896                wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) ); 
    866897                update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) ); 
    867898 
     
    878909 
    879910                // cleanup 
    880911                $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); 
    881                 @unlink( apply_filters( 'wp_delete_file', $medium ) ); 
    882                 @unlink( apply_filters( 'wp_delete_file', $original ) ); 
     912                if ( file_exists( $medium ) ) 
     913                        @unlink( apply_filters( 'wp_delete_file', $medium ) ); 
     914                if ( empty ( $_POST['new-attachment'] ) ) 
     915                        @unlink( apply_filters( 'wp_delete_file', $original ) ); 
    883916 
    884917                return $this->finished(); 
    885918        } 
     
    911944                        $this->step_3(); 
    912945        } 
    913946 
     947        function attachment_fields_to_edit( $form_fields, $post ) { 
     948                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) { 
     949                        $form_fields = array(); 
     950                        $href = rawurlencode(add_query_arg(array( 
     951                                'page' => 'custom-header', 
     952                                'step' => 2, 
     953                                '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'), 
     954                                'file' => $post->ID 
     955                        ), admin_url('themes.php'))); 
     956 
     957                        $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a href="javascript: GetParentWindow().location.href=\'' . $href . '\';">' . _( 'Set as header' ) . '</a></td></tr>' ); 
     958                        $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' ); 
     959                } 
     960 
     961                return $form_fields; 
     962        } 
     963 
     964        function filter_upload_tabs( $tabs ) { 
     965                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) 
     966                        return array( 'library' => __('Media Library') ); 
     967 
     968                return $tabs; 
     969        } 
     970 
    914971} 
  • wp-admin/custom-background.php

     
    5353        function __construct($admin_header_callback = '', $admin_image_div_callback = '') { 
    5454                $this->admin_header_callback = $admin_header_callback; 
    5555                $this->admin_image_div_callback = $admin_image_div_callback; 
     56                add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) ); 
    5657        } 
    5758 
    5859        /** 
     
    6970                add_action("load-$page", array(&$this, 'admin_load')); 
    7071                add_action("load-$page", array(&$this, 'take_action'), 49); 
    7172                add_action("load-$page", array(&$this, 'handle_upload'), 49); 
     73                add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 ); 
     74                add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) ); 
    7275 
    7376                if ( $this->admin_header_callback ) 
    7477                        add_action("admin_head-$page", $this->admin_header_callback, 51); 
     
    9699                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>' 
    97100                ); 
    98101 
     102                add_thickbox(); 
     103                wp_enqueue_script('media-upload'); 
    99104                wp_enqueue_script('custom-background'); 
    100105                wp_enqueue_style('farbtastic'); 
    101106        } 
     
    246251<input type="hidden" name="action" value="save" /> 
    247252<?php wp_nonce_field('custom-background-upload', '_wpnonce-custom-background-upload') ?> 
    248253<?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?> 
    249 </form> 
     254<?php 
     255        $image_library_url = get_upload_iframe_src( array( 'type' => 'image', 'tab' => 'library' ) ); 
     256        $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url ); 
     257        $image_library_url = add_query_arg( array( 'context' => 'custom-background', 'TB_iframe' => 1 ), $image_library_url ); 
     258?> 
     259        </form> 
     260        <span class="howto"><?php _ex( 'or', 'Custom Background: Choose an image from your computer - or - Choose from image library' ); ?></span> <a class="thickbox" href="<?php echo $image_library_url; ?>"><?php _e( 'Choose from image library' ); ?></a> 
    250261</td> 
    251262</tr> 
    252263</tbody> 
     
    366377                $this->updated = true; 
    367378        } 
    368379 
     380        function attachment_fields_to_edit( $form_fields, $post ) { 
     381                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) { 
     382                        $form_fields = array( 'image-size' => $form_fields['image-size'] ); 
     383                        $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a href="javascript: WPSetAsBackground(' . $post->ID . ');">' . _( 'Set as background' ) . '</a></td></tr>' ); 
     384                        $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' ); 
     385                } 
     386 
     387                return $form_fields; 
     388        } 
     389 
     390        function filter_upload_tabs ( $tabs ){ 
     391                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) 
     392                        return array( 'library' => __('Media Library') ); 
     393 
     394                return $tabs; 
     395        } 
     396 
     397        public function wp_set_background_image() { 
     398                if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit; 
     399                $attachment_id = absint($_POST['attachment_id']); 
     400                $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) )); 
     401                $size = 'thumbnail'; 
     402                if ( in_array( $_POST['size'], $sizes ) ) 
     403                        $size = esc_attr( $_POST['size'] ); 
     404 
     405                update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); 
     406                $url = wp_get_attachment_image_src( $attachment_id, $size ); 
     407                $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); 
     408                set_theme_mod( 'background_image', esc_url( $url[0] ) ); 
     409                set_theme_mod( 'background_image_thumb', esc_url( $thumbnail[0] ) ); 
     410                exit; 
     411        } 
    369412}