WordPress.org

Make WordPress Core

Ticket #19570: 19570.4.diff

File 19570.4.diff, 11.6 KB (added by helen, 5 years ago)
  • wp-includes/post.php

     
    18991899}
    19001900
    19011901/**
     1902 * Retrieve metadata for current post format
     1903 *
     1904 * @since 3.6.0
     1905 *
     1906 * @param int $post_id
     1907 * @return null
     1908 */
     1909function get_post_format_meta( $post_id = 0 ) {
     1910        $keys = get_post_custom( $post_id );
     1911        if ( empty( $keys ) )
     1912                return null;
     1913
     1914        $values = array();
     1915        foreach ( $keys as $key => $value ) {
     1916                if ( 0 === strpos( $key, '_wp_format_' ) ) {
     1917                        $slug = str_replace( '_wp_format_', '', $key );
     1918                        $values[$slug] = $value[0];
     1919                }
     1920        }
     1921
     1922        return $values;
     1923}
     1924
     1925/**
    19021926 * Check if post is sticky.
    19031927 *
    19041928 * Sticky posts should remain at the top of The Loop. If the post ID is not
  • wp-includes/script-loader.php

     
    399399                        'comma' => _x( ',', 'tag delimiter' ),
    400400                ) );
    401401
     402                $scripts->add( 'post-formats', "/wp-admin/js/post-formats$suffix.js", array( 'media-models' ), false, 1 );
     403
    402404                $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 );
    403405
    404406                $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array( 'jquery', 'postbox' ) );
  • wp-admin/includes/post.php

     
    192192        }
    193193
    194194        // Post Formats
     195        // @TODO: be able to delete
    195196        if ( isset( $post_data['post_format'] ) ) {
    196                 if ( current_theme_supports( 'post-formats', $post_data['post_format'] ) )
    197                         set_post_format( $post_ID, $post_data['post_format'] );
    198                 elseif ( '0' == $post_data['post_format'] )
    199                         set_post_format( $post_ID, false );
     197                set_post_format( $post_ID, $post_data['post_format'] );
    200198        }
    201199
     200        if ( isset( $post_data[ '_wp_format_url' ] ) ) {
     201                update_post_meta( $post_ID, '_wp_format_url', addslashes( esc_url_raw( stripslashes( $post_data['_wp_format_url'] ) ) ) );
     202        }
     203
     204        $format_keys = array( 'quote', 'quote_source', 'image', 'gallery', 'media' );
     205
     206        foreach ( $format_keys as $key ) {
     207                 if ( isset( $post_data[ '_wp_format_' . $key ] ) )
     208                        update_post_meta( $post_ID, '_wp_format_' . $key, wp_filter_post_kses( $post_data[ '_wp_format_' . $key ] ) );
     209        }
     210
    202211        // Meta Stuff
    203212        if ( isset($post_data['meta']) && $post_data['meta'] ) {
    204213                foreach ( $post_data['meta'] as $key => $value ) {
  • wp-admin/js/post-formats.js

     
     1window.wp = window.wp || {};
     2
     3(function($){
     4        var frame;
     5
     6        // Post formats selection
     7        $('.post-format-select a').on( 'click', function(e){
     8                e.preventDefault();
     9                var $this = $(this),
     10                        format = $this.data('wpFormat');
     11                $('.post-format-select a.nav-tab-active').removeClass('nav-tab-active');
     12                $this.addClass('nav-tab-active').blur();
     13                $('#post_format').val(format);
     14                $('#post-body-content').attr('class', 'wp-format-' + format );
     15        });
     16
     17        // Image selection
     18        $('#wp-format-image-select').click( function( event ) {
     19                var $el = $(this),
     20                        $holder = $('#wp-format-image-holder'),
     21                        $field = $('#wp_format_image');
     22                event.preventDefault();
     23
     24                // If the media frame already exists, reopen it.
     25                if ( frame ) {
     26                        frame.open();
     27                        return;
     28                }
     29
     30                // Create the media frame.
     31                frame = wp.media.frames.formatImage = wp.media({
     32                        // Set the title of the modal.
     33                        title: $el.data('choose'),
     34
     35                        // Tell the modal to show only images.
     36                        library: {
     37                                type: 'image'
     38                        },
     39
     40                        // Customize the submit button.
     41                        button: {
     42                                // Set the text of the button.
     43                                text: $el.data('update')
     44                        }
     45                });
     46
     47                // When an image is selected, run a callback.
     48                frame.on( 'select', function() {
     49                        // Grab the selected attachment.
     50                        var attachment = frame.state().get('selection').first(),
     51                                imageUrl = attachment.get('url');
     52
     53                        // set the hidden input's value
     54                        $field.attr('value', attachment.id);
     55
     56                        // Show the image in the placeholder
     57                        $el.html('<img src="' + imageUrl + '" />');
     58                        $holder.removeClass('empty');
     59                });
     60
     61                frame.open();
     62        });
     63})(jQuery);
  • wp-admin/edit-form-advanced.php

     
    112112        add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core' );
    113113}
    114114
    115 if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) )
    116         add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' );
    117 
    118115// all taxonomies
    119116foreach ( get_object_taxonomies( $post ) as $tax_name ) {
    120117        $taxonomy = get_taxonomy($tax_name);
     
    129126                add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
    130127}
    131128
     129// post format
     130if ( post_type_supports( $post_type, 'post-formats' ) ) {
     131        wp_enqueue_script( 'post-formats' );
     132        $post_format = get_post_format();
     133        $format_class = '';
     134        if ( ! $post_format )
     135                $post_format = 'standard';
     136
     137        $format_class = " class='wp-format-{$post_format}'";
     138}
     139
    132140if ( post_type_supports($post_type, 'page-attributes') )
    133141        add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', null, 'side', 'core');
    134142
     
    321329
    322330<div id="poststuff">
    323331
     332<?php
     333if ( post_type_supports( $post_type, 'post-formats' ) ) {
     334        $all_post_formats = get_post_format_strings();
     335
     336        echo '<h2 class="nav-tab-wrapper post-format-select">';
     337
     338        foreach ( $all_post_formats as $slug => $label ) {
     339                if ( $post_format == $slug )
     340                        $class = 'nav-tab nav-tab-active';
     341                else
     342                        $class = 'nav-tab';
     343
     344                echo '<a class="' . $class . '" href="?format=' . $slug . '" data-wp-format="' . $slug . '">' . $label . '</a>';
     345        }
     346
     347        echo '</h2>';
     348}
     349?>
     350
    324351<div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
    325 <div id="post-body-content">
     352<div id="post-body-content"<?php echo $format_class; ?>>
     353
    326354<?php if ( post_type_supports($post_type, 'title') ) { ?>
    327355<div id="titlediv">
    328356<div id="titlewrap">
     
    356384
    357385do_action( 'edit_form_after_title' );
    358386
     387// post format fields
     388if ( post_type_supports( $post_type, 'post-formats' ) ) {
     389        $format_meta = get_post_format_meta( $post_ID );
     390
     391if ( isset( $format_meta['image'] ) )
     392        $image = is_numeric( $format_meta['image'] ) ? wp_get_attachment_url( $format_meta['image'] ) : $format_meta['image'];
     393else
     394        $image = false;
     395?>
     396<div class="post-formats-fields">
     397
     398<input type="hidden" name="post_format" id="post_format" value="<?php echo esc_attr( $post_format ); ?>" />
     399
     400<div class="field wp-format-quote">
     401        <label for="_wp_format_quote" class="screen-reader-text"><?php _e( 'Quote' ); ?>:</label>
     402        <textarea name="_wp_format_quote" placeholder="<?php _e( 'Quote' ); ?>" class="widefat"><?php echo esc_textarea( $format_meta['quote'] ); ?></textarea>
     403</div>
     404
     405<div class="field wp-format-quote">
     406        <label for="_wp_format_quote_source" class="screen-reader-text"><?php _e( 'Quote source' ); ?>:</label>
     407        <input type="text" name="_wp_format_quote_source" value="<?php echo esc_attr( $format_meta['quote_source'] ); ?>" placeholder="<?php _e( 'Quote source' ); ?>" class="widefat" />
     408</div>
     409
     410<div class="field wp-format-image">
     411        <div id="wp-format-image-holder" class="hide-if-no-js<?php if ( ! $image ) echo ' empty'; ?>">
     412                <a href="#" id="wp-format-image-select"
     413                        data-choose="<?php esc_attr_e( 'Choose an Image' ); ?>"
     414                        data-update="<?php esc_attr_e( 'Select Image' ); ?>">
     415                        <?php
     416                                if ( $image )
     417                                        echo "<img src='{$image}' />";
     418                                else
     419                                        _e( 'Select Image' );
     420                        ?>
     421                </a>
     422        </div>
     423        <label for="_wp_format_image" class="screen-reader-text"><?php _e( 'Image ID or URL' ); ?>:</label>
     424        <input type="text" name="_wp_format_image" id="wp_format_image" value="<?php echo esc_attr( $format_meta['image'] ); ?>" placeholder="<?php _e( 'Image ID or URL' ); ?>" class="widefat hide-if-js" />
     425</div>
     426
     427<div class="field wp-format-link wp-format-quote wp-format-image">
     428        <label for="_wp_format_url" class="screen-reader-text"><?php _e( 'Link URL' ); ?>:</label>
     429        <input type="text" name="_wp_format_url" value="<?php echo esc_url( $format_meta['url'] ); ?>" placeholder="<?php _e( 'Link URL' ); ?>" class="widefat" />
     430</div>
     431
     432<div class="field wp-format-gallery">
     433        <label for="_wp_format_gallery" class="screen-reader-text"><?php _e( 'Gallery shortcode' ); ?>:</label>
     434        <input type="text" name="_wp_format_gallery" value="<?php echo esc_attr( $format_meta['gallery'] ); ?>" placeholder="<?php _e( 'Gallery shortcode' ); ?>" class="widefat" />
     435</div>
     436
     437<div class="field wp-format-audio wp-format-video">
     438        <label for="_wp_format_media" class="screen-reader-text"><?php _e( 'Embed code or URL' ); ?>:</label>
     439        <textarea name="_wp_format_media" placeholder="<?php _e( 'Embed code or URL' ); ?>" class="widefat"><?php echo esc_textarea( $format_meta['media'] ); ?></textarea>
     440</div>
     441
     442</div>
     443<?php
     444}
     445
    359446if ( post_type_supports($post_type, 'editor') ) {
    360447?>
    361448<div id="postdivrich" class="postarea">
  • wp-admin/css/wp-admin.css

     
    750750        background-color: #eee;
    751751}
    752752
    753 :-moz-placeholder {
     753:-moz-placeholder,
     754.wp-core-ui :-moz-placeholder {
    754755   color: #a9a9a9;
    755756}
    756757
     
    30893090        margin: 2px 0 2px -2px;
    30903091}
    30913092
    3092 #post-status-select, #post-format {
     3093#post-status-select {
    30933094        line-height: 2.5em;
    30943095        margin-top: 3px;
    30953096}
    30963097
     3098/* Post formats form */
     3099#poststuff .post-format-select {
     3100        margin-top: 0;
     3101        padding-bottom: 0;
     3102}
     3103
     3104.post-formats-fields {
     3105        margin-bottom: 20px;
     3106}
     3107
     3108.wp-format-standard .post-formats-fields,
     3109.wp-format-aside .post-formats-fields,
     3110.wp-format-chat .post-formats-fields,
     3111.wp-format-status .post-formats-fields {
     3112        display: none;
     3113}
     3114
     3115.post-formats-fields .field {
     3116        display: none;
     3117        margin-bottom: 10px;
     3118}
     3119
     3120.post-formats-fields input,
     3121.post-formats-fields textarea {
     3122        padding: 5px;
     3123        font-size: 1.2em;
     3124}
     3125
     3126.wp-format-chat .field.wp-format-chat,
     3127.wp-format-gallery .field.wp-format-gallery,
     3128.wp-format-link .field.wp-format-link,
     3129.wp-format-image .field.wp-format-image,
     3130.wp-format-quote .field.wp-format-quote,
     3131.wp-format-video .field.wp-format-video,
     3132.wp-format-audio .field.wp-format-audio {
     3133        display: block;
     3134}
     3135
     3136/*.wp-format-image .post-formats-fields,
     3137.wp-format-video .post-formats-fields,
     3138.wp-format-audio .post-formats-fields {
     3139        width: 30%;
     3140        float: left;
     3141}
     3142
     3143.wp-format-image #postdivrich,
     3144.wp-format-video #postdivrich,
     3145.wp-format-audio #postdivrich {
     3146        width: 69%;
     3147        float: right;
     3148}*/
     3149
     3150#wp-format-image-holder {
     3151        overflow: hidden;
     3152        width: 300px;
     3153        height: 200px;
     3154        background: #f5f5f5;
     3155        box-shadow:
     3156                inset 0 0 15px rgba( 0, 0, 0, 0.1 ),
     3157                inset 0 0 0 1px rgba( 0, 0, 0, 0.05 );
     3158}
     3159
     3160#wp-format-image-holder:hover {
     3161        background-color: #eee;
     3162}
     3163
     3164#wp-format-image-select {
     3165        display: block;
     3166        height: 200px;
     3167        text-align: center;
     3168}
     3169
     3170#wp-format-image-select img {
     3171        max-width: 100%;
     3172        max-height: 100%;
     3173}
     3174
     3175.empty #wp-format-image-select {
     3176        padding-top: 120px;
     3177        height: 80px;
     3178        background: url(../images/media-button-2x.png) no-repeat center;
     3179}
     3180
    30973181/* Post Screen */
    30983182#post-body #normal-sortables {
    30993183        min-height: 50px;