WordPress.org

Make WordPress Core

Ticket #19840: 19840.8.diff

File 19840.8.diff, 15.2 KB (added by ryan, 6 years ago)

Another refresh

  • 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

     
    392392        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>";
    393393}
    394394
    395 function get_upload_iframe_src( $type = null, $post_id = null ) {
     395function get_upload_iframe_src( $args = array() ) {
    396396        global $post_ID;
    397397
    398         if ( empty( $post_id ) )
    399                 $post_id = $post_ID;
     398        $defaults = array( 'type' => '', 'post_id' => $post_ID );
     399        // Backwards compat for first parameter being type
     400        if ( is_string( $args ) )
     401                $args = array(
     402                        'type' => $args,
     403                        'post_id'=> $post_ID
     404                );
    400405
    401         $uploading_iframe_ID = (int) $post_id;
    402         $upload_iframe_src = add_query_arg( 'post_id', $uploading_iframe_ID, admin_url('media-upload.php') );
     406        $args = wp_parse_args( $args, $defaults );
    403407
    404         if ( $type && 'media' != $type )
    405                 $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
     408        $upload_iframe_src = add_query_arg( 'post_id', (int) $args['post_id'], admin_url('media-upload.php') );
    406409
    407         $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
     410        if ( $args['type'] && 'media' != $args['type'] )
     411                $upload_iframe_src = add_query_arg('type', $args['type'], $upload_iframe_src);
    408412
     413        if ( ! empty( $args['tab'] ) )
     414                $upload_iframe_src = add_query_arg('tab', $args['tab'], $upload_iframe_src);
     415
     416        $upload_iframe_src = apply_filters($args['type'] . '_upload_iframe_src', $upload_iframe_src);
     417
    409418        return add_query_arg('TB_iframe', true, $upload_iframe_src);
    410419}
    411420
     
    486495        if ( isset($send_id) ) {
    487496                $attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
    488497
    489                 $html = $attachment['post_title'];
     498                $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
    490499                if ( !empty($attachment['url']) ) {
    491500                        $rel = '';
    492501                        if ( strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url'] )
  • wp-admin/js/custom-background.dev.js

     
    1010                jQuery('#clearcolor').hide();
    1111}
    1212
     13function send_to_editor( data ) {
     14        data = jQuery.parseJSON(data);
     15        jQuery.post(ajaxurl, { action: 'set-background-image', attachment_id: data.id, size: data.size }, function(){
     16                tb_remove();
     17                window.location.reload();
     18        });
     19}
     20
    1321jQuery(document).ready(function() {
    1422        jQuery('#pickcolor').click(function() {
    1523                jQuery('#colorPickerDiv').show();
  • 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' ) );
     96                add_filter( 'media_send_to_editor', array( $this, 'image_send_to_editor' ), 1, 2 );
    9397        }
    9498
    9599        /**
     
    140144        function js_includes() {
    141145                $step = $this->step();
    142146
    143                 if ( 1 == $step )
    144                         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');
     147                if ( ( 1 == $step || 3 == $step ) ) {
     148                        add_thickbox();
     149                        if ( $this->header_text() )
     150                                wp_enqueue_script('farbtastic');
     151                        if ( 1 == $step )
     152                                wp_enqueue_script('jquery-masonry');
     153                } elseif ( 2 == $step ) {
     154                         wp_enqueue_script('imgareaselect');
     155                }
    149156        }
    150157
    151158        /**
     
    327334         */
    328335        function js() {
    329336                $step = $this->step();
    330                 if ( ( 1 == $step || 3 == $step ) && $this->header_text() )
    331                         $this->js_1();
    332                 elseif ( 2 == $step )
     337                if ( ( 1 == $step || 3 == $step ) ) {
     338                        $this->js_0();
     339                        if ( $this->header_text() )
     340                                $this->js_1();
     341                } elseif ( 2 == $step ) {
    333342                        $this->js_2();
     343                }
    334344        }
    335345
    336346        /**
     
    338348         *
    339349         * @since 2.6.0
    340350         */
     351        function js_0() { ?>
     352<script type="text/javascript">
     353/* <![CDATA[ */
     354        step2_url = '<?php echo add_query_arg( array( 'page' => 'custom-header', 'step' => 2, '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload') ), admin_url('themes.php') ); ?>';
     355        function send_to_editor( file_id ) {
     356                window.location = step2_url + '&file=' + file_id;
     357        }
     358/* ]]> */
     359</script>
     360<?php
     361        }
     362
     363        /**
     364         * Display Javascript based on Step 1 and 3 if header text is active.
     365         *
     366         * @since 2.6.0
     367         */
    341368        function js_1() { ?>
    342369<script type="text/javascript">
    343370/* <![CDATA[ */
     
    583610                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
    584611        </p>
    585612        </form>
     613        <?php
     614                $image_library_url = get_upload_iframe_src( array( 'type' => 'image', 'tab' => 'library' ) );
     615                $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
     616                $image_library_url = add_query_arg( array( 'context' => 'custom-header', 'TB_iframe' => 1 ), $image_library_url );
     617        ?>
     618        <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>
    586619</td>
    587620</tr>
    588621<?php endif; ?>
     
    706739                if ( ! current_theme_supports( 'custom-header-uploads' ) )
    707740                        wp_die( __( 'Cheatin&#8217; uh?' ) );
    708741
    709                 $overrides = array('test_form' => false);
    710                 $file = wp_handle_upload($_FILES['import'], $overrides);
     742                if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
     743                        $id = absint( $_GET['file'] );
     744                        $file = get_attached_file( $id, true );
     745                        $url = wp_get_attachment_image_src( $id, 'full');
     746                        $url = $url[0];
     747                } else if ( isset( $_POST ) ) {
     748                        extract($this->step_2_manage_upload());
     749                }
    711750
    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 
    732751                list($width, $height, $type, $attr) = getimagesize( $file );
    733752
    734753                $header_support = get_theme_support( 'custom-header' );
     
    785804        <input type="hidden" name="height" id="height" value="<?php echo esc_attr( $height ); ?>"/>
    786805        <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $id ); ?>" />
    787806        <input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" />
     807        <?php if ( empty( $_POST ) && isset( $_GET['file'] ) ) { ?>
     808        <input type="hidden" name="new-attachment" value="true" />
     809        <?php } ?>
    788810        <?php wp_nonce_field( 'custom-header-crop-image' ) ?>
    789811
    790812        <?php submit_button( __( 'Crop and Publish' ) ); ?>
     
    794816                <?php
    795817        }
    796818
     819
     820        function step_2_manage_upload() {
     821                $overrides = array('test_form' => false);
     822                $file = wp_handle_upload($_FILES['import'], $overrides);
     823
     824                if ( isset($file['error']) )
     825                        wp_die( $file['error'],  __( 'Image Upload Error' ) );
     826
     827                $url = $file['url'];
     828                $type = $file['type'];
     829                $file = $file['file'];
     830                $filename = basename($file);
     831
     832                // Construct the object array
     833                $object = array(
     834                        'post_title'     => $filename,
     835                        'post_content'   => $url,
     836                        'post_mime_type' => $type,
     837                        'guid'           => $url,
     838                        'context'        => 'custom-header'
     839                );
     840
     841                // Save the data
     842                $id = wp_insert_attachment( $object, $file );
     843                return compact( 'id', 'file', 'filename', 'url', 'type' );
     844        }
     845
    797846        /**
    798847         * Display third step of custom header image page.
    799848         *
     
    859908                        'guid' => $url,
    860909                        'context' => 'custom-header'
    861910                );
     911                if ( isset( $_POST['new-attachment'] ) && $_POST['new-attachment'] )
     912                        unset($object['ID']);
    862913
    863914                // Update the attachment
    864                 wp_insert_attachment($object, $cropped);
     915                $attachment_id = wp_insert_attachment( $object, $cropped );
    865916                wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) );
    866917                update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) );
    867918
     
    878929
    879930                // cleanup
    880931                $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 ) );
     932                if ( file_exists( $medium ) )
     933                        @unlink( apply_filters( 'wp_delete_file', $medium ) );
     934                if ( empty ( $_POST['new-attachment'] ) )
     935                        @unlink( apply_filters( 'wp_delete_file', $original ) );
    883936
    884937                return $this->finished();
    885938        }
     
    911964                        $this->step_3();
    912965        }
    913966
     967        function attachment_fields_to_edit( $form_fields, $post ) {
     968                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) {
     969                        $form_fields = array(); // Reset
     970                        $button = get_submit_button( __( 'Use as header image' ), 'button', "send[{$post->ID}]", false );
     971                        $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td>'.$button.'</td></tr>' );
     972                        $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' );
     973                }
     974
     975                return $form_fields;
     976        }
     977
     978        function image_send_to_editor( $html, $id ) {
     979                if ( isset( $_REQUEST['attachments'][$id]['context'] ) && $_REQUEST['attachments'][$id]['context'] == 'custom-header' ) {
     980                        remove_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
     981                        return $id;
     982                }
     983
     984                return $html;
     985        }
     986
     987        function filter_upload_tabs( $tabs ) {
     988                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' )
     989                        return array( 'library' => __('Media Library') );
     990
     991                return $tabs;
     992        }
     993
    914994}
  • 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_send_to_editor', array( $this, 'image_send_to_editor' ), 1, 3 );
     75                add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
    7276
    7377                if ( $this->admin_header_callback )
    7478                        add_action("admin_head-$page", $this->admin_header_callback, 51);
     
    96100                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
    97101                );
    98102
     103                add_thickbox();
     104                wp_enqueue_script('media-upload');
    99105                wp_enqueue_script('custom-background');
    100106                wp_enqueue_style('farbtastic');
    101107        }
     
    246252<input type="hidden" name="action" value="save" />
    247253<?php wp_nonce_field('custom-background-upload', '_wpnonce-custom-background-upload') ?>
    248254<?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
    249 </form>
     255<?php
     256        $image_library_url = get_upload_iframe_src( array( 'type' => 'image', 'tab' => 'library' ) );
     257        $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
     258        $image_library_url = add_query_arg( array( 'context' => 'custom-background', 'TB_iframe' => 1 ), $image_library_url );
     259?>
     260        </form>
     261        <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>
    250262</td>
    251263</tr>
    252264</tbody>
     
    366378                $this->updated = true;
    367379        }
    368380
     381        function attachment_fields_to_edit( $form_fields, $post ) {
     382                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) {
     383                        $form_fields = array( 'image-size' => $form_fields['image-size'] ); // Reset
     384                        $button = get_submit_button( __( 'Use as background image' ), 'button', "send[{$post->ID}]", false );
     385                        $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td>'.$button.'</td></tr>' );
     386                        $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' );
     387                }
     388
     389                return $form_fields;
     390        }
     391
     392        function image_send_to_editor( $html, $id, $size ) {
     393                if ( isset( $_REQUEST['attachments'][$id]['context'] ) && $_REQUEST['attachments'][$id]['context'] == 'custom-background' ) {
     394                        remove_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
     395                        return json_encode( array( 'id' => $id, 'size' => $size['image-size'] ) );
     396                }
     397
     398                return $html;
     399        }
     400
     401        function filter_upload_tabs ( $tabs ){
     402                if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' )
     403                        return array( 'library' => __('Media Library') );
     404
     405                return $tabs;
     406        }
     407
     408        public function wp_set_background_image() {
     409                if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit;
     410                $attachment_id = absint($_POST['attachment_id']);
     411                $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) ));
     412                $size = 'thumbnail';
     413                if ( in_array( $_POST['size'], $sizes ) )
     414                        $size = esc_attr( $_POST['size'] );
     415
     416                update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) );
     417                $url = wp_get_attachment_image_src( $attachment_id, $size );
     418                $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );
     419                set_theme_mod( 'background_image', esc_url( $url[0] ) );
     420                set_theme_mod( 'background_image_thumb', esc_url( $thumbnail[0] ) );
     421                exit;
     422        }
    369423}