WordPress.org

Make WordPress Core

Changeset 22537


Ignore:
Timestamp:
11/10/2012 08:36:46 PM (7 years ago)
Author:
koopersmith
Message:

Media: Add custom URL as an option to attachment display properties. see #21390, #22206.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/js/media-upload.js

    r22518 r22537  
    124124                        detail = detail.toJSON();
    125125
     126                    // Reset the attachment details.
     127                    delete details[ attachment.cid ];
     128
    126129                    if ( 'image' === attachment.get('type') )
    127130                        return wp.media.string.image( attachment, detail ) + ' ';
    128131                    else
    129                         return wp.media.string.link( attachment ) + ' ';
     132                        return wp.media.string.link( attachment, detail ) + ' ';
    130133                }).join('') );
    131134            }, this );
  • trunk/wp-includes/css/media-views.css

    r22534 r22537  
    204204    min-width: 30%;
    205205    min-height: 24px;
    206     margin-right: 7px;
     206    margin-right: 4%;
    207207    padding-top: 8px;
    208208    line-height: 16px;
  • trunk/wp-includes/js/mce-view.js

    r22530 r22537  
    421421// ---------------------
    422422(function($){
    423     var mceview = wp.mce.view;
     423    var mceview = wp.mce.view,
     424        linkToUrl;
     425
     426    linkToUrl = function( attachment, props ) {
     427        var link = props.link,
     428            url;
     429
     430        if ( 'file' === link )
     431            url = attachment.get('url');
     432        else if ( 'post' === link )
     433            url = attachment.get('link');
     434        else if ( 'custom' === link )
     435            url = props.linkUrl;
     436
     437        return url || '';
     438    };
    424439
    425440    wp.media.string = {};
    426441
    427     wp.media.string.link = function( attachment ) {
     442    wp.media.string.link = function( attachment, props ) {
    428443        var linkTo  = getUserSetting( 'urlbutton', 'post' ),
    429444            options = {
     
    435450            };
    436451
    437         // Attachments can be linked to attachment post pages or to the direct
    438         // URL. `none` is not a valid option.
    439         options.attrs.href = ( linkTo === 'file' ) ? attachment.get('url') : attachment.get('link');
     452        options.attrs.href = linkToUrl( attachment, props );
    440453
    441454        return wp.html.string( options );
     
    444457    wp.media.string.image = function( attachment, props ) {
    445458        var classes, img, options, size;
    446 
    447         attachment = attachment.toJSON();
    448459
    449460        props = _.defaults( props || {}, {
     
    454465        });
    455466
     467        props.linkUrl = linkToUrl( attachment, props );
     468
     469        attachment = attachment.toJSON();
     470
    456471        img     = _.clone( props.img );
    457472        classes = img['class'] ? img['class'].split(/\s+/) : [];
     
    486501
    487502        // Generate the `href` based on the `link` property.
    488         if ( props.link && 'none' !== props.link ) {
     503        if ( props.linkUrl ) {
    489504            props.anchor = props.anchor || {};
    490 
    491             if ( 'post' === props.link )
    492                 props.anchor.href = attachment.link;
    493             else if ( 'file' === props.link )
    494                 props.anchor.href = attachment.url;
     505            props.anchor.href = props.linkUrl;
    495506        }
    496507
  • trunk/wp-includes/js/media-views.js

    r22535 r22537  
    25142514        },
    25152515
     2516        destroy: function() {
     2517            this.model.off( null, null, this );
     2518        },
     2519
    25162520        render: function() {
    25172521            this.$el.html( this.template( _.defaults({
     
    25832587            });
    25842588            media.view.Settings.prototype.initialize.apply( this, arguments );
     2589            this.model.on( 'change:link', this.updateCustomLink, this );
     2590        },
     2591
     2592        render: function() {
     2593            media.view.Settings.prototype.render.call( this );
     2594            this.updateCustomLink();
     2595            return this;
     2596        },
     2597
     2598        updateCustomLink: function() {
     2599            var isCustom = 'custom' === this.model.get('link'),
     2600                $input = this.$('.link-to-custom');
     2601
     2602            if ( ! isCustom ) {
     2603                $input.hide();
     2604                return;
     2605            }
     2606
     2607            $input.show();
     2608            if ( ! this.model.get('linkUrl') )
     2609                $input.val('http://');
     2610
     2611            // If the input is visible, focus and select its contents.
     2612            if ( $input.is(':visible') )
     2613                $input.focus()[0].select();
    25852614        }
    25862615    });
  • trunk/wp-includes/media.php

    r22532 r22537  
    15371537        </label>
    15381538
    1539         <label class="setting">
    1540             <span><?php _e('Link To'); ?></span>
    1541             <select class="link-to"
    1542                 data-setting="link"
    1543                 <# if ( userSettings ) { #>
    1544                     data-user-setting="urlbutton"
    1545                 <# } #>>
    1546 
    1547                 <option value="post" selected>
    1548                     <?php esc_attr_e('Attachment Page'); ?>
    1549                 </option>
    1550                 <option value="file">
    1551                     <?php esc_attr_e('Media File'); ?>
    1552                 </option>
    1553                 <option value="none">
    1554                     <?php esc_attr_e('None'); ?>
    1555                 </option>
    1556             </select>
    1557         </label>
     1539        <div class="setting">
     1540            <label>
     1541                <span><?php _e('Link To'); ?></span>
     1542                <select class="link-to"
     1543                    data-setting="link"
     1544                    <# if ( userSettings ) { #>
     1545                        data-user-setting="urlbutton"
     1546                    <# } #>>
     1547
     1548                    <option value="custom">
     1549                        <?php esc_attr_e('Custom URL'); ?>
     1550                    </option>
     1551                    <option value="post" selected>
     1552                        <?php esc_attr_e('Attachment Page'); ?>
     1553                    </option>
     1554                    <option value="file">
     1555                        <?php esc_attr_e('Media File'); ?>
     1556                    </option>
     1557                    <option value="none">
     1558                        <?php esc_attr_e('None'); ?>
     1559                    </option>
     1560                </select>
     1561            </label>
     1562            <input type="text" class="link-to-custom" data-setting="linkUrl" />
     1563        </div>
    15581564
    15591565        <# if ( ! _.isUndefined( sizes ) ) { #>
Note: See TracChangeset for help on using the changeset viewer.