WordPress.org

Make WordPress Core

Ticket #16631: 16631.diff

File 16631.diff, 15.8 KB (added by koopersmith, 7 years ago)
  • wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js

     
    99                riverBottomThreshold: 5,
    1010                keySensitivity: 100,
    1111                lastSearch: '',
     12                textarea: edCanvas,
     13
    1214                init : function() {
    1315                        inputs.dialog = $('#wp-link');
    1416                        inputs.submit = $('#wp-link-submit');
     
    3133                                wpLink.update();
    3234                                e.preventDefault();
    3335                        });
    34                         $('#wp-link-cancel').click( wpLink.cancel );
     36                        $('#wp-link-cancel').click( wpLink.close );
    3537                        $('#internal-toggle').click( wpLink.toggleInternalLinking );
    3638
    3739                        rivers.elements.bind('river-select', wpLink.updateFields );
     
    3941                        inputs.search.keyup( wpLink.searchInternalLinks );
    4042
    4143                        inputs.dialog.bind('wpdialogrefresh', wpLink.refresh);
     44                        inputs.dialog.bind('wpdialogbeforeopen', wpLink.beforeOpen);
     45                        inputs.dialog.bind('wpdialogclose', wpLink.onClose);
    4246                },
    4347
     48                beforeOpen : function() {
     49                        wpLink.range = null;
     50
     51                        if ( ! wpLink.isMCE() && document.selection ) {
     52                                wpLink.textarea.focus();
     53                                wpLink.range = document.selection.createRange();
     54                        }
     55                },
     56
     57                open : function() {
     58                        // Initialize the dialog if necessary (html mode).
     59                        if ( ! inputs.dialog.data('wpdialog') ) {
     60                                inputs.dialog.wpdialog({
     61                                        title: wpLinkL10n.title,
     62                                        width: 480,
     63                                        height: 'auto',
     64                                        modal: true,
     65                                        dialogClass: 'wp-dialog',
     66                                        zIndex: 300000
     67                                });
     68                        }
     69
     70                        inputs.dialog.wpdialog('open');
     71                },
     72
     73                isMCE : function() {
     74                        return tinyMCEPopup && ( ed = tinyMCEPopup.editor ) && ! ed.isHidden();
     75                },
     76
    4477                refresh : function() {
    45                         var e;
    46                         ed = tinyMCEPopup.editor;
    47 
    4878                        // Refresh rivers (clear links, check visibility)
    4979                        rivers.search.refresh();
    5080                        rivers.recent.refresh();
    5181
     82                        if ( wpLink.isMCE() )
     83                                wpLink.mceRefresh();
     84                        else
     85                                wpLink.setDefaultValues();
     86
     87                        // Focus the URL field and highlight its contents.
     88                        //     If this is moved above the selection changes,
     89                        //     IE will show a flashing cursor over the dialog.
     90                        inputs.url.focus()[0].select();
     91                        // Load the most recent results if this is the first time opening the panel.
     92                        if ( ! rivers.recent.ul.children().length )
     93                                rivers.recent.ajax();
     94                },
     95
     96                mceRefresh : function() {
     97                        var e;
     98                        ed = tinyMCEPopup.editor;
     99
    52100                        tinyMCEPopup.restoreSelection();
    53101
    54102                        // If link exists, select proper values.
     
    65113                        // If there's no link, set the default values.
    66114                        } else {
    67115                                wpLink.setDefaultValues();
    68                                 // Update save prompt.
    69                                 inputs.submit.val( wpLinkL10n.save );
    70116                        }
    71117
    72118                        tinyMCEPopup.storeSelection();
    73                         // Focus the URL field and highlight its contents.
    74                         //     If this is moved above the selection changes,
    75                         //     IE will show a flashing cursor over the dialog.
    76                         inputs.url.focus()[0].select();
    77                         // Load the most recent results if this is the first time opening the panel.
    78                         if ( ! rivers.recent.ul.children().length )
    79                                 rivers.recent.ajax();
    80119                },
    81120
    82                 cancel : function() {
    83                         tinyMCEPopup.close();
     121                close : function() {
     122                        if ( wpLink.isMCE() )
     123                                tinyMCEPopup.close();
     124                        else
     125                                inputs.dialog.wpdialog('close');
    84126                },
    85127
     128                onClose: function() {
     129                        if ( ! wpLink.isMCE() ) {
     130                                wpLink.textarea.focus();
     131                                if ( wpLink.range ) {
     132                                        wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
     133                                        wpLink.range.select();
     134                                }
     135                        }
     136                },
     137
     138                getAttrs : function() {
     139                        return {
     140                                href : inputs.url.val(),
     141                                title : inputs.title.val(),
     142                                target : inputs.openInNewTab.attr('checked') ? '_blank' : ''
     143                        };
     144                },
     145
    86146                update : function() {
     147                        if ( wpLink.isMCE() )
     148                                wpLink.mceUpdate();
     149                        else
     150                                wpLink.htmlUpdate();
     151                },
     152
     153                htmlUpdate : function() {
     154                        var attrs, html, start, end, cursor,
     155                                textarea = wpLink.textarea;
     156
     157                        if ( ! textarea )
     158                                return;
     159
     160                        attrs = wpLink.getAttrs();
     161
     162                        // If there's no href, return.
     163                        if ( ! attrs.href || attrs.href == 'http://' )
     164                                return;
     165
     166                        // Build HTML
     167                        html = '<a href="' + attrs.href + '"';
     168
     169                        if ( attrs.title )
     170                                html += ' title="' + attrs.title + '"';
     171                        if ( attrs.target )
     172                                html += ' target="' + attrs.target + '"';
     173
     174                        html += '>';
     175
     176                        // Insert HTML
     177                        // W3C
     178                        if ( typeof textarea.selectionStart !== 'undefined' ) {
     179                                start       = textarea.selectionStart;
     180                                end         = textarea.selectionEnd;
     181                                selection   = textarea.value.substring( start, end );
     182                                html        = html + selection + '</a>';
     183                                cursor      = start + html.length;
     184
     185                                // If no next is selected, place the cursor inside the closing tag.
     186                                if ( start == end )
     187                                        cursor -= '</a>'.length;
     188
     189                                textarea.value = textarea.value.substring( 0, start )
     190                                               + html
     191                                               + textarea.value.substring( end, textarea.value.length );
     192
     193                                // Update cursor position
     194                                textarea.selectionStart = textarea.selectionEnd = cursor;
     195
     196                        // IE
     197                        // Note: If no text is selected, IE will not place the cursor
     198                        //       inside the closing tag.
     199                        } else if ( document.selection && wpLink.range ) {
     200                                textarea.focus();
     201                                wpLink.range.text = html + wpLink.range.text + '</a>';
     202                                wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
     203                                wpLink.range.select();
     204
     205                                wpLink.range = null;
     206                        }
     207
     208                        wpLink.close();
     209                        textarea.focus();
     210                },
     211
     212                mceUpdate : function() {
    87213                        var ed = tinyMCEPopup.editor,
    88                                 attrs = {
    89                                         href : inputs.url.val(),
    90                                         title : inputs.title.val(),
    91                                         target : inputs.openInNewTab.attr('checked') ? '_blank' : ''
    92                                 }, e, b;
     214                                attrs = wpLink.getAttrs(),
     215                                e, b;
    93216
    94217                        tinyMCEPopup.restoreSelection();
    95218                        e = ed.dom.getParent(ed.selection.getNode(), 'A');
     
    102225                                        ed.dom.remove(e, 1);
    103226                                        ed.selection.moveToBookmark(b);
    104227                                        tinyMCEPopup.execCommand("mceEndUndoLevel");
    105                                         tinyMCEPopup.close();
     228                                        wpLink.close();
    106229                                }
    107230                                return;
    108231                        }
     
    140263                        }
    141264
    142265                        tinyMCEPopup.execCommand("mceEndUndoLevel");
    143                         tinyMCEPopup.close();
     266                        wpLink.close();
    144267                },
    145268
    146269                updateFields : function( e, li, originalEvent ) {
     
    154277                        // Leave the new tab setting as-is.
    155278                        inputs.url.val('http://');
    156279                        inputs.title.val('');
     280
     281                        // Update save prompt.
     282                        inputs.submit.val( wpLinkL10n.save );
    157283                },
    158284
    159285                searchInternalLinks : function() {
     
    210336
    211337                        switch( event.which ) {
    212338                                case key.ESCAPE:
    213                                         wpLink.cancel();
     339                                        wpLink.close();
    214340                                        break;
    215341                                case key.UP:
    216342                                case key.DOWN:
  • wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.js

     
    1 (function(b){var a=function(c){return function(){if(this.features.wpDialog){return c.apply(this,arguments)}else{return this.parent.apply(this,arguments)}}};tinymce.create("tinymce.plugins.WPDialogs",{init:function(c,d){c.onBeforeRenderUI.add(function(){c.windowManager=new tinymce.WPWindowManager(c)})},getInfo:function(){return{longname:"WPDialogs",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"0.1"}}});b(document).ready(function(){b.widget("wp.wpdialog",b.ui.dialog,{open:function(){if(tinyMCEPopup){tinyMCEPopup.init()}b.ui.dialog.prototype.open.apply(this,arguments);this.element.focus();this._trigger("refresh")}})});tinymce.create("tinymce.WPWindowManager:tinymce.InlineWindowManager",{WPWindowManager:function(c){this.parent(c)},open:function(e,g){var d=this,c;if(!e.wpDialog){return this.parent(e,g)}else{if(!e.id){return}}c=b("#"+e.id);if(!c.length){return}d.features=e;d.params=g;d.onOpen.dispatch(d,e,g);d.element=d.windows[e.id]=c;d.bookmark=d.editor.selection.getBookmark(1);c.wpdialog({title:e.title,width:e.width,height:e.height,modal:true,dialogClass:"wp-dialog",zIndex:300000})},close:a(function(){this.element.wpdialog("close")})});tinymce.PluginManager.add("wpdialogs",tinymce.plugins.WPDialogs)})(jQuery);
    2  No newline at end of file
     1(function(){tinymce.create("tinymce.plugins.WPDialogs",{init:function(a,b){tinymce.create("tinymce.WPWindowManager:tinymce.InlineWindowManager",{WPWindowManager:function(c){this.parent(c)},open:function(e,g){var d=this,c;if(!e.wpDialog){return this.parent(e,g)}else{if(!e.id){return}}c=jQuery("#"+e.id);if(!c.length){return}d.features=e;d.params=g;d.onOpen.dispatch(d,e,g);d.element=d.windows[e.id]=c;d.bookmark=d.editor.selection.getBookmark(1);if(!c.data("wpdialog")){c.wpdialog({title:e.title,width:e.width,height:e.height,modal:true,dialogClass:"wp-dialog",zIndex:300000})}c.wpdialog("open")},close:function(){if(!this.features.wpDialog){return this.parent.apply(this,arguments)}this.element.wpdialog("close")}});a.onBeforeRenderUI.add(function(){a.windowManager=new tinymce.WPWindowManager(a)})},getInfo:function(){return{longname:"WPDialogs",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"0.1"}}});tinymce.PluginManager.add("wpdialogs",tinymce.plugins.WPDialogs)})();
     2 No newline at end of file
  • wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js

     
     1(function($){
     2        $.widget("wp.wpdialog", $.ui.dialog, {
     3                open: function() {
     4                        // Initialize tinyMCEPopup if it exists and is the editor is active.
     5                        if ( tinyMCEPopup && typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) {
     6                                tinyMCEPopup.init();
     7                        }
     8
     9                        // Add beforeOpen event.
     10                        if ( this._isOpen || false === this._trigger('beforeOpen') ) {
     11                                return;
     12                        }
     13
     14                        // Open the dialog.
     15                        $.ui.dialog.prototype.open.apply( this, arguments );
     16                        // WebKit leaves focus in the TinyMCE editor unless we shift focus.
     17                        this.element.focus();
     18                        this._trigger('refresh');
     19                }
     20        });
     21})(jQuery);
     22 No newline at end of file
  • wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js

     
    88 * Contributing: http://tinymce.moxiecode.com/contributing
    99 */
    1010
    11 (function($) {
    12         var wpDialogFn = function( fn ) {
    13                 return function() {
    14                         if ( this.features.wpDialog )
    15                                 return fn.apply( this, arguments );
    16                         else
    17                                 return this.parent.apply( this, arguments );
    18                 };
    19         };
    20 
     11(function() {
    2112        tinymce.create('tinymce.plugins.WPDialogs', {
    2213                init : function(ed, url) {
     14                        tinymce.create('tinymce.WPWindowManager:tinymce.InlineWindowManager', {
     15                                WPWindowManager : function(ed) {
     16                                        this.parent(ed);
     17                                },
     18
     19                                open : function(f, p) {
     20                                        var t = this, element;
     21
     22                                        if ( ! f.wpDialog )
     23                                                return this.parent( f, p );
     24                                        else if ( ! f.id )
     25                                                return;
     26
     27                                        element = jQuery('#' + f.id);
     28                                        if ( ! element.length )
     29                                                return;
     30
     31                                        t.features = f;
     32                                        t.params = p;
     33                                        t.onOpen.dispatch(t, f, p);
     34                                        t.element = t.windows[ f.id ] = element;
     35
     36                                        // Store selection
     37                                        t.bookmark = t.editor.selection.getBookmark(1);
     38
     39                                        // Create the dialog if necessary
     40                                        if ( ! element.data('wpdialog') ) {
     41                                                element.wpdialog({
     42                                                        title: f.title,
     43                                                        width: f.width,
     44                                                        height: f.height,
     45                                                        modal: true,
     46                                                        dialogClass: 'wp-dialog',
     47                                                        zIndex: 300000
     48                                                });
     49                                        }
     50
     51                                        element.wpdialog('open');
     52                                },
     53                                close : function() {
     54                                        if ( ! this.features.wpDialog )
     55                                                return this.parent.apply( this, arguments );
     56
     57                                        this.element.wpdialog('close');
     58                                }
     59                        });
     60
    2361                        // Replace window manager
    2462                        ed.onBeforeRenderUI.add(function() {
    2563                                ed.windowManager = new tinymce.WPWindowManager(ed);
     
    3674                        };
    3775                }
    3876        });
    39        
    40         $(document).ready(function() {
    41                 $.widget("wp.wpdialog", $.ui.dialog, {
    42                         open: function() {
    43                                 // Initialize tinyMCEPopup if it exists.
    44                                 if ( tinyMCEPopup )
    45                                         tinyMCEPopup.init();
    46                                 // Open the dialog.
    47                                 $.ui.dialog.prototype.open.apply( this, arguments );
    48                                 // WebKit leaves focus in the TinyMCE editor unless we shift focus.
    49                                 this.element.focus();
    50                                 this._trigger('refresh');
    51                         }
    52                 });
    53         });
    5477
    55         tinymce.create('tinymce.WPWindowManager:tinymce.InlineWindowManager', {
    56                 WPWindowManager : function(ed) {
    57                         this.parent(ed);
    58                 },
    59 
    60                 open : function(f, p) {
    61                         var t = this, element;
    62                         // Can't use wpDialogFn here; this.features isn't set yet.
    63                         if ( ! f.wpDialog )
    64                                 return this.parent( f, p );
    65                         else if ( ! f.id )
    66                                 return;
    67                        
    68                         element = $('#' + f.id);
    69                         if ( ! element.length )
    70                                 return;
    71                        
    72                         t.features = f;
    73                         t.params = p;
    74                         t.onOpen.dispatch(t, f, p);
    75                         t.element = t.windows[ f.id ] = element;
    76                        
    77                         // Store selection
    78                         t.bookmark = t.editor.selection.getBookmark(1);
    79                        
    80                         element.wpdialog({
    81                                 title: f.title,
    82                                 width: f.width,
    83                                 height: f.height,
    84                                 modal: true,
    85                                 dialogClass: 'wp-dialog',
    86                                 zIndex: 300000
    87                         });
    88                 },
    89                 close : wpDialogFn(function() {
    90                         this.element.wpdialog('close');
    91                 })
    92         });
    93 
    9478        // Register plugin
    9579        tinymce.PluginManager.add('wpdialogs', tinymce.plugins.WPDialogs);
    96 })(jQuery);
    97 
     80})();
  • wp-includes/js/quicktags.dev.js

     
    157157                document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
    158158        }
    159159        else if (button.id == 'ed_link') {
    160                 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
     160                document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="wpLink.open();" value="' + button.display + '" />');
    161161        }
    162162        else {
    163163                document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '"  />');
  • wp-includes/script-loader.php

     
    267267        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20110131' );
    268268        $scripts->add_data( 'admin-bar', 'group', 1 );
    269269
    270         $scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array('jquery'), '20110111' );
     270        $scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), '20110421' );
    271271        $scripts->localize( 'wplink', 'wpLinkL10n', array(
     272                'title' => __('Insert/edit link'),
    272273                'update' => __('Update'),
    273274                'save' => __('Add Link'),
    274275                'noTitle' => __('(no title)'),
     
    276277                'l10n_print_after' => 'try{convertEntities(wpLinkL10n);}catch(e){};',
    277278        ) );
    278279
    279         $scripts->add( 'wpdialogs-popup', "/wp-includes/js/tinymce/plugins/wpdialogs/js/popup$suffix.js", array( 'jquery-ui-dialog' ), '20101119' );
     280        $scripts->add( 'wpdialogs', "/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog$suffix.js", array( 'jquery-ui-dialog' ), '20110421' );
     281        $scripts->add( 'wpdialogs-popup', "/wp-includes/js/tinymce/plugins/wpdialogs/js/popup$suffix.js", array( 'wpdialogs' ), '20110421' );
    280282
    281283        if ( is_admin() ) {
    282284                $scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ), '20090102' );