WordPress.org

Make WordPress Core

Ticket #32604: 32604.10.patch

File 32604.10.patch, 3.2 KB (added by iseulde, 6 years ago)
  • src/wp-includes/css/editor.css

     
    15991599        }
    16001600}
    16011601
     1602.wp-link-preview {
     1603        float: left;
     1604        margin: 5px;
     1605}
     1606
     1607.wp-link-preview a {
     1608        color: #0073aa;
     1609        text-decoration: underline;
     1610        -webkit-transition-property: border, background, color;
     1611        transition-property: border, background, color;
     1612        -webkit-transition-duration: .05s;
     1613        transition-duration: .05s;
     1614        -webkit-transition-timing-function: ease-in-out;
     1615        transition-timing-function: ease-in-out;
     1616}
     1617
    16021618/* =Overlay Body
    16031619-------------------------------------------------------------- */
    16041620
  • src/wp-includes/js/tinymce/plugins/wplink/plugin.js

     
    11/* global tinymce */
    22tinymce.PluginManager.add( 'wplink', function( editor ) {
     3        var toolbar;
     4
    35        editor.addCommand( 'WP_Link', function() {
    46                window.wpLink && window.wpLink.open( editor.id );
    57        });
     
    4850                        }
    4951                }
    5052        } );
     53
     54        tinymce.ui.WPLinkPreview = tinymce.ui.Control.extend( {
     55                renderHtml: function() {
     56                        return (
     57                                '<div id="' + this._id + '" class="wp-link-preview">' +
     58                                        '<a href="' + this.url + '" target="_blank">' + this.url + '</a>' +
     59                                '</div>'
     60                        );
     61                },
     62                setURL: function( url ) {
     63                        var index, lastIndex;
     64
     65                        if ( this.url !== url && this._rendered ) {
     66                                this.url = url;
     67
     68                                url = url.replace( /^(?:https?:)?\/\/(?:www\.)?/, '' );
     69
     70                                if ( ( index = url.indexOf( '?' ) ) !== -1 ) {
     71                                        url = url.slice( 0, index );
     72                                }
     73
     74                                if ( ( index = url.indexOf( '#' ) ) !== -1 ) {
     75                                        url = url.slice( 0, index );
     76                                }
     77
     78                                url = url.replace( /(?:index)?\.html$/, '' );
     79
     80                                if ( ( lastIndex = url.lastIndexOf( '/' ) ) === url.length - 1 ) {
     81                                        url = url.slice( 0, lastIndex );
     82                                }
     83
     84                                if ( ( index = url.indexOf( '/' ) ) !== -1 && ( lastIndex = url.lastIndexOf( '/' ) ) !== -1 && lastIndex !== index ) {
     85                                        url = url.replace( url.slice( index + 1, lastIndex ), '\u2026' );
     86                                }
     87
     88                                tinymce.$( this.getEl().firstChild ).attr( 'href', this.url ).text( url );
     89                        }
     90                },
     91                postRender: function() {
     92                        var self = this;
     93
     94                        editor.on( 'nodechange', function( event ) {
     95                                if ( event.element.nodeName === 'A' ) {
     96                                        self.setURL( editor.$( event.element ).attr( 'href' ) );
     97                                }
     98                        } );
     99
     100                        self._rendered = true;
     101
     102                        self._super();
     103                }
     104        } );
     105
     106        editor.addButton( 'wp_link_edit', {
     107                tooltip: 'Edit ', // trailing space is needed, used for context
     108                icon: 'dashicon dashicons-edit',
     109                cmd: 'WP_Link'
     110        } );
     111
     112        editor.addButton( 'wp_link_remove', {
     113                tooltip: 'Remove',
     114                icon: 'dashicon dashicons-no',
     115                cmd: 'unlink'
     116        } );
     117
     118        editor.on( 'preinit', function() {
     119                toolbar = editor.wp._createToolbar( [
     120                        'WPLinkPreview',
     121                        'wp_link_edit',
     122                        'wp_link_remove'
     123                ], true );
     124        } );
     125
     126        editor.on( 'wptoolbar', function( event ) {
     127                if ( event.element.nodeName === 'A' ) {
     128                        event.toolbar = toolbar;
     129                }
     130        } );
    51131});