WordPress.org

Plugin Directory

Changeset 1645358


Ignore:
Timestamp:
04/25/17 23:44:00 (7 months ago)
Author:
ffsantos92
Message:

Compatible with WP 4.7

Location:
rel-nofollow-checkbox/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • rel-nofollow-checkbox/trunk/readme.txt

    r1147598 r1645358  
    22Contributors: ffsantos92 
    33Tags: nofollow,checkbox,option,title attribute,rel attribute,seo,title,rel 
    4 Requires at least: 4.2 
    5 Tested up to: 4.2.1 
    6 Stable tag: 1.1.4 
     4Requires at least: 4.7 
     5Tested up to: 4.7.4 
     6Stable tag: 1.1.5 
    77License: GPLv2 
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    3434== Changelog == 
    3535 
     36= 1.1.5 = 
     37* Compatible with WordPress 4.7 (credits: Daniel Liljeberg) 
     38 
    3639= 1.1.4 = 
    3740* Remove option for the link title attribute 
  • rel-nofollow-checkbox/trunk/rel-nofollow-checkbox.php

    r1147598 r1645358  
    44 * Plugin URI:  https://github.com/ffsantos92/rel-nofollow-checkbox 
    55 * Description: This plugin adds a simple checkbox in the insert/edit link popup for including nofollow attribute. 
    6  * Version:     1.1.4 
     6 * Version:     1.1.5 
    77 * Author:      Fabio Santos 
    8  * Author URI:  http://www.fabiosantos.me. 
     8 * Author URI:  http://www.fabiosantos.me 
    99 */ 
    1010function overwrite_wplink() 
  • rel-nofollow-checkbox/trunk/wplink.js

    r1147598 r1645358  
    1 /* rel-nofollow-checkbox v1.1.4 | GPLv2 License | by fabiosantos.me */ 
     1/* rel-nofollow-checkbox v1.1.5 | GPLv2 License | by fabiosantos.me */ 
    22/* global ajaxurl, tinymce, wpLinkL10n, setUserSetting, wpActiveEditor */ 
     3 
    34var wpLink; 
    45 
    5 (function($) { 
    6     var editor, searchTimer, River, Query, correctedURL, 
     6( function( $, wpLinkL10n, wp ) { 
     7    var editor, searchTimer, River, Query, correctedURL, linkNode, 
     8        emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}$/i, 
     9        urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,63}[^ "]*$/i, 
    710        inputs = {}, 
    811        rivers = {}, 
    9         isTouch = ('ontouchend' in document); 
     12        isTouch = ( 'ontouchend' in document ); 
    1013 
    1114    function getLink() { 
    12         return editor.dom.getParent(editor.selection.getNode(), 'a'); 
     15        return linkNode || editor.dom.getParent( editor.selection.getNode(), 'a[href]' ); 
    1316    } 
    1417 
     
    2023        lastSearch: '', 
    2124        textarea: '', 
     25        modalOpen: false, 
    2226 
    2327        init: function() { 
    24             var fsRelHtml = '<div><label><span> </span><input type="checkbox" id="rel-nofollow-checkbox" /><strong> rel="nofollow"</strong></label></div>'; 
    25             $(fsRelHtml) 
    26                 .insertAfter('#wp-link .link-target'); 
    27             $('.query-results') 
    28                 .css('top', '230px'); 
    29  
     28            // Add custom checkbox 
     29            var relCheckbox = '<div><label><span> </span><input type="checkbox" id="rel-nofollow-checkbox" /><strong> rel="nofollow"</strong></label></div>'; 
     30            $(relCheckbox).insertAfter( '#wp-link .link-target' ); 
     31             
    3032            inputs.wrap = $('#wp-link-wrap'); 
    31             inputs.dialog = $('#wp-link'); 
    32             inputs.backdrop = $('#wp-link-backdrop'); 
    33             inputs.submit = $('#wp-link-submit'); 
    34             inputs.close = $('#wp-link-close'); 
     33            inputs.dialog = $( '#wp-link' ); 
     34            inputs.backdrop = $( '#wp-link-backdrop' ); 
     35            inputs.submit = $( '#wp-link-submit' ); 
     36            inputs.close = $( '#wp-link-close' ); 
    3537 
    3638            // Input 
    37             inputs.text = $('#wp-link-text'); 
    38             inputs.url = $('#wp-link-url'); 
    39             inputs.nonce = $('#_ajax_linking_nonce'); 
    40             inputs.fsRelNofollow = $('#rel-nofollow-checkbox'); 
    41             inputs.openInNewTab = $('#wp-link-target'); 
    42             inputs.search = $('#wp-link-search'); 
     39            inputs.text = $( '#wp-link-text' ); 
     40            inputs.url = $( '#wp-link-url' ); 
     41            inputs.nonce = $( '#_ajax_linking_nonce' ); 
     42            inputs.openInNewTab = $( '#wp-link-target' ); 
     43            inputs.noFollow = $( '#rel-nofollow-checkbox' ); 
     44            inputs.search = $( '#wp-link-search' ); 
    4345 
    4446            // Build Rivers 
    45             rivers.search = new River($('#search-results')); 
    46             rivers.recent = new River($('#most-recent-results')); 
    47             rivers.elements = inputs.dialog.find('.query-results'); 
     47            rivers.search = new River( $( '#search-results' ) ); 
     48            rivers.recent = new River( $( '#most-recent-results' ) ); 
     49            rivers.elements = inputs.dialog.find( '.query-results' ); 
    4850 
    4951            // Get search notice text 
    50             inputs.queryNotice = $('#query-notice-message'); 
    51             inputs.queryNoticeTextDefault = inputs.queryNotice.find('.query-notice-default'); 
    52             inputs.queryNoticeTextHint = inputs.queryNotice.find('.query-notice-hint'); 
     52            inputs.queryNotice = $( '#query-notice-message' ); 
     53            inputs.queryNoticeTextDefault = inputs.queryNotice.find( '.query-notice-default' ); 
     54            inputs.queryNoticeTextHint = inputs.queryNotice.find( '.query-notice-hint' ); 
    5355 
    5456            // Bind event handlers 
    55             inputs.dialog.keydown(wpLink.keydown); 
    56             inputs.dialog.keyup(wpLink.keyup); 
    57             inputs.submit.click(function(event) { 
     57            inputs.dialog.keydown( wpLink.keydown ); 
     58            inputs.dialog.keyup( wpLink.keyup ); 
     59            inputs.submit.click( function( event ) { 
    5860                event.preventDefault(); 
    5961                wpLink.update(); 
    6062            }); 
    61             inputs.close.add(inputs.backdrop) 
    62                 .add('#wp-link-cancel a') 
    63                 .click(function(event) { 
    64                     event.preventDefault(); 
    65                     wpLink.close(); 
    66                 }); 
    67  
    68             $('#wp-link-search-toggle') 
    69                 .on('click', wpLink.toggleInternalLinking); 
    70  
    71             rivers.elements.on('river-select', wpLink.updateFields); 
     63 
     64            inputs.close.add( inputs.backdrop ).add( '#wp-link-cancel button' ).click( function( event ) { 
     65                event.preventDefault(); 
     66                wpLink.close(); 
     67            }); 
     68 
     69            rivers.elements.on( 'river-select', wpLink.updateFields ); 
    7270 
    7371            // Display 'hint' message when search field or 'query-results' box are focused 
    74             inputs.search.on('focus.wplink', function() { 
    75                     inputs.queryNoticeTextDefault.hide(); 
    76                     inputs.queryNoticeTextHint.removeClass('screen-reader-text') 
    77                         .show(); 
    78                 }) 
    79                 .on('blur.wplink', function() { 
    80                     inputs.queryNoticeTextDefault.show(); 
    81                     inputs.queryNoticeTextHint.addClass('screen-reader-text') 
    82                         .hide(); 
    83                 }); 
    84  
    85             inputs.search.keyup(function() { 
    86                 var self = this; 
    87  
    88                 window.clearTimeout(searchTimer); 
    89                 searchTimer = window.setTimeout(function() { 
    90                     wpLink.searchInternalLinks.call(self); 
    91                 }, 500); 
     72            inputs.search.on( 'focus.wplink', function() { 
     73                inputs.queryNoticeTextDefault.hide(); 
     74                inputs.queryNoticeTextHint.removeClass( 'screen-reader-text' ).show(); 
     75            } ).on( 'blur.wplink', function() { 
     76                inputs.queryNoticeTextDefault.show(); 
     77                inputs.queryNoticeTextHint.addClass( 'screen-reader-text' ).hide(); 
     78            } ); 
     79 
     80            inputs.search.on( 'keyup input', function() { 
     81                window.clearTimeout( searchTimer ); 
     82                searchTimer = window.setTimeout( function() { 
     83                    wpLink.searchInternalLinks(); 
     84                }, 500 ); 
    9285            }); 
    9386 
    94             function correctURL() { 
    95                 var url = $.trim(inputs.url.val()); 
    96  
    97                 if (url && correctedURL !== url && !/^(?:[a-z]+:|#|\?|\.|\/)/.test(url)) { 
    98                     inputs.url.val('http://' + url); 
    99                     correctedURL = url; 
    100                 } 
    101             } 
    102  
    103             inputs.url.on('paste', function() { 
    104                 setTimeout(correctURL, 0); 
    105             }); 
    106  
    107             inputs.url.on('blur', correctURL); 
    108         }, 
    109  
    110         open: function(editorId) { 
    111             var ed; 
    112  
    113             $(document.body) 
    114                 .addClass('modal-open'); 
     87            inputs.url.on( 'paste', function() { 
     88                setTimeout( wpLink.correctURL, 0 ); 
     89            } ); 
     90 
     91            inputs.url.on( 'blur', wpLink.correctURL ); 
     92        }, 
     93 
     94        // If URL wasn't corrected last time and doesn't start with http:, https:, ? # or /, prepend http:// 
     95        correctURL: function () { 
     96            var url = $.trim( inputs.url.val() ); 
     97 
     98            if ( url && correctedURL !== url && ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( url ) ) { 
     99                inputs.url.val( 'http://' + url ); 
     100                correctedURL = url; 
     101            } 
     102        }, 
     103 
     104        open: function( editorId, url, text, node ) { 
     105            var ed, 
     106                $body = $( document.body ); 
     107 
     108            $body.addClass( 'modal-open' ); 
     109            wpLink.modalOpen = true; 
     110            linkNode = node; 
    115111 
    116112            wpLink.range = null; 
    117113 
    118             if (editorId) { 
     114            if ( editorId ) { 
    119115                window.wpActiveEditor = editorId; 
    120116            } 
    121117 
    122             if (!window.wpActiveEditor) { 
    123                 return; 
    124             } 
    125  
    126             this.textarea = $('#' + window.wpActiveEditor) 
    127                 .get(0); 
    128  
    129             if (typeof tinymce !== 'undefined') { 
    130                 ed = tinymce.get(wpActiveEditor); 
    131  
    132                 if (ed && !ed.isHidden()) { 
     118            if ( ! window.wpActiveEditor ) { 
     119                return; 
     120            } 
     121 
     122            this.textarea = $( '#' + window.wpActiveEditor ).get( 0 ); 
     123 
     124            if ( typeof window.tinymce !== 'undefined' ) { 
     125                // Make sure the link wrapper is the last element in the body, 
     126                // or the inline editor toolbar may show above the backdrop. 
     127                $body.append( inputs.backdrop, inputs.wrap ); 
     128 
     129                ed = window.tinymce.get( window.wpActiveEditor ); 
     130 
     131                if ( ed && ! ed.isHidden() ) { 
    133132                    editor = ed; 
    134133                } else { 
    135134                    editor = null; 
    136135                } 
    137  
    138                 if (editor && tinymce.isIE) { 
    139                     editor.windowManager.bookmark = editor.selection.getBookmark(); 
    140                 } 
    141             } 
    142  
    143             if (!wpLink.isMCE() && document.selection) { 
     136            } 
     137 
     138            if ( ! wpLink.isMCE() && document.selection ) { 
    144139                this.textarea.focus(); 
    145140                this.range = document.selection.createRange(); 
     
    149144            inputs.backdrop.show(); 
    150145 
    151             wpLink.refresh(); 
    152  
    153             $(document) 
    154                 .trigger('wplink-open', inputs.wrap); 
     146            wpLink.refresh( url, text ); 
     147 
     148            $( document ).trigger( 'wplink-open', inputs.wrap ); 
    155149        }, 
    156150 
    157151        isMCE: function() { 
    158             return editor && !editor.isHidden(); 
    159         }, 
    160  
    161         refresh: function() { 
    162             var text = ''; 
     152            return editor && ! editor.isHidden(); 
     153        }, 
     154 
     155        refresh: function( url, text ) { 
     156            var linkText = ''; 
    163157 
    164158            // Refresh rivers (clear links, check visibility) 
     
    166160            rivers.recent.refresh(); 
    167161 
    168             if (wpLink.isMCE()) { 
    169                 wpLink.mceRefresh(); 
     162            if ( wpLink.isMCE() ) { 
     163                wpLink.mceRefresh( url, text ); 
    170164            } else { 
    171165                // For the Text editor the "Link text" field is always shown 
    172                 if (!inputs.wrap.hasClass('has-text-field')) { 
    173                     inputs.wrap.addClass('has-text-field'); 
    174                 } 
    175  
    176                 if (document.selection) { 
     166                if ( ! inputs.wrap.hasClass( 'has-text-field' ) ) { 
     167                    inputs.wrap.addClass( 'has-text-field' ); 
     168                } 
     169 
     170                if ( document.selection ) { 
    177171                    // Old IE 
    178                     text = document.selection.createRange() 
    179                         .text || ''; 
    180                 } else if (typeof this.textarea.selectionStart !== 'undefined' && 
    181                     (this.textarea.selectionStart !== this.textarea.selectionEnd)) { 
     172                    linkText = document.selection.createRange().text || text || ''; 
     173                } else if ( typeof this.textarea.selectionStart !== 'undefined' && 
     174                    ( this.textarea.selectionStart !== this.textarea.selectionEnd ) ) { 
    182175                    // W3C 
    183                     text = this.textarea.value.substring(this.textarea.selectionStart, this.textarea.selectionEnd) || ''; 
    184                 } 
    185  
    186                 inputs.text.val(text); 
     176                    text = this.textarea.value.substring( this.textarea.selectionStart, this.textarea.selectionEnd ) || text || ''; 
     177                } 
     178 
     179                inputs.text.val( text ); 
    187180                wpLink.setDefaultValues(); 
    188181            } 
    189182 
    190             if (isTouch) { 
     183            if ( isTouch ) { 
    191184                // Close the onscreen keyboard 
    192                 inputs.url.focus() 
    193                     .blur(); 
     185                inputs.url.focus().blur(); 
    194186            } else { 
    195187                // Focus the URL field and highlight its contents. 
    196188                // If this is moved above the selection changes, 
    197189                // IE will show a flashing cursor over the dialog. 
    198                 inputs.url.focus()[0].select(); 
     190                window.setTimeout( function() { 
     191                    inputs.url[0].select(); 
     192                    inputs.url.focus(); 
     193                } ); 
    199194            } 
    200195 
    201196            // Load the most recent results if this is the first time opening the panel. 
    202             if (!rivers.recent.ul.children() 
    203                 .length) { 
     197            if ( ! rivers.recent.ul.children().length ) { 
    204198                rivers.recent.ajax(); 
    205199            } 
    206200 
    207             correctedURL = inputs.url.val() 
    208                 .replace(/^http:\/\//, ''); 
    209         }, 
    210  
    211         hasSelectedText: function(linkNode) { 
    212             var html = editor.selection.getContent(); 
     201            correctedURL = inputs.url.val().replace( /^http:\/\//, '' ); 
     202        }, 
     203 
     204        hasSelectedText: function( linkNode ) { 
     205            var node, nodes, i, html = editor.selection.getContent(); 
    213206 
    214207            // Partial html and not a fully selected anchor element 
    215             if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) { 
     208            if ( /</.test( html ) && ( ! /^<a [^>]+>[^<]+<\/a>$/.test( html ) || html.indexOf('href=') === -1 ) ) { 
    216209                return false; 
    217210            } 
    218211 
    219             if (linkNode) { 
    220                 var nodes = linkNode.childNodes, 
    221                     i; 
    222  
    223                 if (nodes.length === 0) { 
     212            if ( linkNode ) { 
     213                nodes = linkNode.childNodes; 
     214 
     215                if ( nodes.length === 0 ) { 
    224216                    return false; 
    225217                } 
    226218 
    227                 for (i = nodes.length - 1; i >= 0; i--) { 
    228                     if (nodes[i].nodeType != 3) { 
     219                for ( i = nodes.length - 1; i >= 0; i-- ) { 
     220                    node = nodes[i]; 
     221 
     222                    if ( node.nodeType != 3 && ! window.tinymce.dom.BookmarkManager.isBookmarkNode( node ) ) { 
    229223                        return false; 
    230224                    } 
     
    235229        }, 
    236230 
    237         mceRefresh: function() { 
    238             var text, 
    239                 selectedNode = editor.selection.getNode(), 
    240                 linkNode = editor.dom.getParent(selectedNode, 'a[href]'), 
    241                 onlyText = this.hasSelectedText(linkNode); 
    242  
    243             if (linkNode) { 
    244                 text = linkNode.innerText || linkNode.textContent; 
    245                 inputs.url.val(editor.dom.getAttrib(linkNode, 'href')); 
    246                 inputs.openInNewTab.prop('checked', '_blank' === editor.dom.getAttrib(linkNode, 'target')); 
    247                 inputs.fsRelNofollow.prop('checked', 'nofollow' === editor.dom.getAttrib(linkNode, 'rel')); 
    248                 inputs.submit.val(wpLinkL10n.update); 
     231        mceRefresh: function( searchStr, text ) { 
     232            var linkText, href, 
     233                linkNode = getLink(), 
     234                onlyText = this.hasSelectedText( linkNode ); 
     235 
     236            if ( linkNode ) { 
     237                linkText = linkNode.textContent || linkNode.innerText; 
     238                href = editor.dom.getAttrib( linkNode, 'href' ); 
     239 
     240                if ( ! $.trim( linkText ) ) { 
     241                    linkText = text || ''; 
     242                } 
     243 
     244                if ( searchStr && ( urlRegexp.test( searchStr ) || emailRegexp.test( searchStr ) ) ) { 
     245                    href = searchStr; 
     246                } 
     247 
     248                if ( href !== '_wp_link_placeholder' ) { 
     249                    inputs.url.val( href ); 
     250                    inputs.openInNewTab.prop( 'checked', '_blank' === editor.dom.getAttrib( linkNode, 'target' ) ); 
     251                    inputs.noFollow.prop( 'checked', editor.dom.getAttrib( linkNode, 'rel' ).indexOf('nofollow') !== -1 ); 
     252                    inputs.submit.val( wpLinkL10n.update ); 
     253                } else { 
     254                    this.setDefaultValues( linkText ); 
     255                } 
     256 
     257                if ( searchStr && searchStr !== href ) { 
     258                    // The user has typed something in the inline dialog. Trigger a search with it. 
     259                    inputs.search.val( searchStr ); 
     260                } else { 
     261                    inputs.search.val( '' ); 
     262                } 
     263 
     264                // Always reset the search 
     265                window.setTimeout( function() { 
     266                    wpLink.searchInternalLinks(); 
     267                } ); 
    249268            } else { 
    250                 text = editor.selection.getContent({ 
    251                     format: 'text' 
    252                 }); 
    253                 this.setDefaultValues(); 
    254             } 
    255  
    256             if (onlyText) { 
    257                 inputs.text.val(text || ''); 
    258                 inputs.wrap.addClass('has-text-field'); 
     269                linkText = editor.selection.getContent({ format: 'text' }) || text || ''; 
     270                this.setDefaultValues( linkText ); 
     271            } 
     272 
     273            if ( onlyText ) { 
     274                inputs.text.val( linkText ); 
     275                inputs.wrap.addClass( 'has-text-field' ); 
    259276            } else { 
    260                 inputs.text.val(''); 
    261                 inputs.wrap.removeClass('has-text-field'); 
    262             } 
    263         }, 
    264  
    265         close: function() { 
    266             $(document.body) 
    267                 .removeClass('modal-open'); 
    268  
    269             if (!wpLink.isMCE()) { 
    270                 wpLink.textarea.focus(); 
    271  
    272                 if (wpLink.range) { 
    273                     wpLink.range.moveToBookmark(wpLink.range.getBookmark()); 
    274                     wpLink.range.select(); 
    275                 } 
    276             } else { 
    277                 editor.focus(); 
     277                inputs.text.val( '' ); 
     278                inputs.wrap.removeClass( 'has-text-field' ); 
     279            } 
     280        }, 
     281 
     282        close: function( reset ) { 
     283            $( document.body ).removeClass( 'modal-open' ); 
     284            wpLink.modalOpen = false; 
     285 
     286            if ( reset !== 'noReset' ) { 
     287                if ( ! wpLink.isMCE() ) { 
     288                    wpLink.textarea.focus(); 
     289 
     290                    if ( wpLink.range ) { 
     291                        wpLink.range.moveToBookmark( wpLink.range.getBookmark() ); 
     292                        wpLink.range.select(); 
     293                    } 
     294                } else { 
     295                    if ( editor.plugins.wplink ) { 
     296                        editor.plugins.wplink.close(); 
     297                    } 
     298 
     299                    editor.focus(); 
     300                } 
    278301            } 
    279302 
     
    283306            correctedURL = false; 
    284307 
    285             $(document) 
    286                 .trigger('wplink-close', inputs.wrap); 
     308            $( document ).trigger( 'wplink-close', inputs.wrap ); 
    287309        }, 
    288310 
    289311        getAttrs: function() { 
     312            wpLink.correctURL(); 
     313 
    290314            return { 
    291                 href: $.trim(inputs.url.val()), 
    292                 target: inputs.openInNewTab.prop('checked') ? '_blank' : '', 
    293                 rel: inputs.fsRelNofollow.prop('checked') ? 'nofollow' : '', 
     315                href: $.trim( inputs.url.val() ), 
     316                target: inputs.openInNewTab.prop( 'checked' ) ? '_blank' : null, 
     317                rel: inputs.noFollow.prop("checked") ? "nofollow" : "" 
    294318            }; 
    295319        }, 
    296320 
     321        buildHtml: function(attrs) { 
     322            var html = '<a href="' + attrs.href + '"'; 
     323 
     324            if ( attrs.target ) { 
     325                html += ' target="' + attrs.target + '"'; 
     326            } 
     327             
     328            if ( attrs.rel ) { 
     329                html += ' rel="' + attrs.rel + '"'; 
     330            } 
     331 
     332            return html + '>'; 
     333        }, 
     334 
    297335        update: function() { 
    298             if (wpLink.isMCE()) { 
     336            if ( wpLink.isMCE() ) { 
    299337                wpLink.mceUpdate(); 
    300338            } else { 
     
    307345                textarea = wpLink.textarea; 
    308346 
    309             if (!textarea) { 
     347            if ( ! textarea ) { 
    310348                return; 
    311349            } 
     
    315353 
    316354            // If there's no href, return. 
    317             if (!attrs.href) { 
    318                 return; 
    319             } 
    320  
    321             // Build HTML 
    322             html = '<a href="' + attrs.href + '"'; 
    323  
    324             if (attrs.target) { 
    325                 html += ' target="' + attrs.target + '"'; 
    326             } 
    327  
    328             if (attrs.rel) { 
    329                 html += ' rel="nofollow"'; 
    330             } 
    331  
    332             html += '>'; 
     355            if ( ! attrs.href ) { 
     356                return; 
     357            } 
     358 
     359            html = wpLink.buildHtml(attrs); 
    333360 
    334361            // Insert HTML 
    335             if (document.selection && wpLink.range) { 
     362            if ( document.selection && wpLink.range ) { 
    336363                // IE 
    337364                // Note: If no text is selected, IE will not place the cursor 
    338365                //       inside the closing tag. 
    339366                textarea.focus(); 
    340                 wpLink.range.text = html + (text || wpLink.range.text) + '</a>'; 
    341                 wpLink.range.moveToBookmark(wpLink.range.getBookmark()); 
     367                wpLink.range.text = html + ( text || wpLink.range.text ) + '</a>'; 
     368                wpLink.range.moveToBookmark( wpLink.range.getBookmark() ); 
    342369                wpLink.range.select(); 
    343370 
    344371                wpLink.range = null; 
    345             } else if (typeof textarea.selectionStart !== 'undefined') { 
     372            } else if ( typeof textarea.selectionStart !== 'undefined' ) { 
    346373                // W3C 
    347374                begin = textarea.selectionStart; 
    348375                end = textarea.selectionEnd; 
    349                 selection = text || textarea.value.substring(begin, end); 
     376                selection = text || textarea.value.substring( begin, end ); 
    350377                html = html + selection + '</a>'; 
    351378                cursor = begin + html.length; 
    352379 
    353380                // If no text is selected, place the cursor inside the closing tag. 
    354                 if (begin === end && !selection) { 
     381                if ( begin === end && ! selection ) { 
    355382                    cursor -= 4; 
    356383                } 
    357384 
    358385                textarea.value = ( 
    359                     textarea.value.substring(0, begin) + 
     386                    textarea.value.substring( 0, begin ) + 
    360387                    html + 
    361                     textarea.value.substring(end, textarea.value.length) 
     388                    textarea.value.substring( end, textarea.value.length ) 
    362389                ); 
    363390 
     
    368395            wpLink.close(); 
    369396            textarea.focus(); 
     397 
     398            // Audible confirmation message when a link has been inserted in the Editor. 
     399            wp.a11y.speak( wpLinkL10n.linkInserted ); 
    370400        }, 
    371401 
    372402        mceUpdate: function() { 
    373403            var attrs = wpLink.getAttrs(), 
    374                 link, text; 
    375  
    376             wpLink.close(); 
     404                $link, text, hasText, $mceCaret; 
     405 
     406            if ( ! attrs.href ) { 
     407                editor.execCommand( 'unlink' ); 
     408                wpLink.close(); 
     409                return; 
     410            } 
     411 
     412            $link = editor.$( getLink() ); 
     413 
     414            editor.undoManager.transact( function() { 
     415                if ( ! $link.length ) { 
     416                    editor.execCommand( 'mceInsertLink', false, { href: '_wp_link_placeholder', 'data-wp-temp-link': 1 } ); 
     417                    $link = editor.$( 'a[data-wp-temp-link="1"]' ).removeAttr( 'data-wp-temp-link' ); 
     418                    hasText = $.trim( $link.text() ); 
     419                } 
     420 
     421                if ( ! $link.length ) { 
     422                    editor.execCommand( 'unlink' ); 
     423                } else { 
     424                    if ( inputs.wrap.hasClass( 'has-text-field' ) ) { 
     425                        text = inputs.text.val(); 
     426 
     427                        if ( text ) { 
     428                            $link.text( text ); 
     429                        } else if ( ! hasText ) { 
     430                            $link.text( attrs.href ); 
     431                        } 
     432                    } 
     433 
     434                    attrs['data-wplink-edit'] = null; 
     435                    attrs['data-mce-href'] = null; // attrs.href 
     436                    $link.attr( attrs ); 
     437                } 
     438            } ); 
     439 
     440            wpLink.close( 'noReset' ); 
    377441            editor.focus(); 
    378442 
    379             if (tinymce.isIE) { 
    380                 editor.selection.moveToBookmark(editor.windowManager.bookmark); 
    381             } 
    382  
    383             if (!attrs.href) { 
    384                 editor.execCommand('unlink'); 
    385                 return; 
    386             } 
    387  
    388             link = getLink(); 
    389             text = inputs.text.val(); 
    390  
    391             if (link) { 
    392                 if (text) { 
    393                     if ('innerText' in link) { 
    394                         link.innerText = text; 
    395                     } else { 
    396                         link.textContent = text; 
    397                     } 
    398                 } 
    399  
    400                 editor.dom.setAttribs(link, attrs); 
    401             } else { 
    402                 if (text) { 
    403                     editor.selection.setNode(editor.dom.create('a', attrs, text)); 
    404                 } else { 
    405                     editor.execCommand('mceInsertLink', false, attrs); 
    406                 } 
    407             } 
    408         }, 
    409  
    410         updateFields: function(e, li) { 
    411             inputs.url.val(li.children('.item-permalink') 
    412                 .val()); 
    413         }, 
    414  
    415         setDefaultValues: function() { 
    416             var selection, 
    417                 emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i, 
    418                 urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i; 
    419  
    420             if (this.isMCE()) { 
    421                 selection = editor.selection.getContent(); 
    422             } else if (document.selection && wpLink.range) { 
    423                 selection = wpLink.range.text; 
    424             } else if (typeof this.textarea.selectionStart !== 'undefined') { 
    425                 selection = this.textarea.value.substring(this.textarea.selectionStart, this.textarea.selectionEnd); 
    426             } 
    427  
    428             if (selection && emailRegexp.test(selection)) { 
     443            if ( $link.length ) { 
     444                $mceCaret = $link.parent( '#_mce_caret' ); 
     445 
     446                if ( $mceCaret.length ) { 
     447                    $mceCaret.before( $link.removeAttr( 'data-mce-bogus' ) ); 
     448                } 
     449 
     450                editor.selection.select( $link[0] ); 
     451                editor.selection.collapse(); 
     452 
     453                if ( editor.plugins.wplink ) { 
     454                    editor.plugins.wplink.checkLink( $link[0] ); 
     455                } 
     456            } 
     457 
     458            editor.nodeChanged(); 
     459 
     460            // Audible confirmation message when a link has been inserted in the Editor. 
     461            wp.a11y.speak( wpLinkL10n.linkInserted ); 
     462        }, 
     463 
     464        updateFields: function( e, li ) { 
     465            inputs.url.val( li.children( '.item-permalink' ).val() ); 
     466        }, 
     467 
     468        getUrlFromSelection: function( selection ) { 
     469            if ( ! selection ) { 
     470                if ( this.isMCE() ) { 
     471                    selection = editor.selection.getContent({ format: 'text' }); 
     472                } else if ( document.selection && wpLink.range ) { 
     473                    selection = wpLink.range.text; 
     474                } else if ( typeof this.textarea.selectionStart !== 'undefined' ) { 
     475                    selection = this.textarea.value.substring( this.textarea.selectionStart, this.textarea.selectionEnd ); 
     476                } 
     477            } 
     478 
     479            selection = $.trim( selection ); 
     480 
     481            if ( selection && emailRegexp.test( selection ) ) { 
    429482                // Selection is email address 
    430                 inputs.url.val('mailto:' + selection); 
    431             } else if (selection && urlRegexp.test(selection)) { 
     483                return 'mailto:' + selection; 
     484            } else if ( selection && urlRegexp.test( selection ) ) { 
    432485                // Selection is URL 
    433                 inputs.url.val(selection.replace(/&amp;|&#0?38;/gi, '&')); 
    434             } else { 
    435                 // Set URL to default. 
    436                 inputs.url.val(''); 
    437             } 
     486                return selection.replace( /&amp;|&#0?38;/gi, '&' ); 
     487            } 
     488 
     489            return ''; 
     490        }, 
     491 
     492        setDefaultValues: function( selection ) { 
     493            inputs.url.val( this.getUrlFromSelection( selection ) ); 
     494 
     495            // Empty the search field and swap the "rivers". 
     496            inputs.search.val(''); 
     497            wpLink.searchInternalLinks(); 
    438498 
    439499            // Update save prompt. 
    440             inputs.submit.val(wpLinkL10n.save); 
     500            inputs.submit.val( wpLinkL10n.save ); 
    441501        }, 
    442502 
    443503        searchInternalLinks: function() { 
    444             var t = $(this), 
    445                 waiting, 
    446                 search = t.val(); 
    447  
    448             if (search.length > 2) { 
     504            var waiting, 
     505                search = inputs.search.val() || ''; 
     506 
     507            if ( search.length > 2 ) { 
    449508                rivers.recent.hide(); 
    450509                rivers.search.show(); 
    451510 
    452511                // Don't search if the keypress didn't change the title. 
    453                 if (wpLink.lastSearch == search) 
     512                if ( wpLink.lastSearch == search ) 
    454513                    return; 
    455514 
    456515                wpLink.lastSearch = search; 
    457                 waiting = t.parent() 
    458                     .find('.spinner') 
    459                     .addClass('is-active'); 
    460  
    461                 rivers.search.change(search); 
    462                 rivers.search.ajax(function() { 
    463                     waiting.removeClass('is-active'); 
     516                waiting = inputs.search.parent().find( '.spinner' ).addClass( 'is-active' ); 
     517 
     518                rivers.search.change( search ); 
     519                rivers.search.ajax( function() { 
     520                    waiting.removeClass( 'is-active' ); 
    464521                }); 
    465522            } else { 
     
    479536        }, 
    480537 
    481         keydown: function(event) { 
    482             var fn, id, 
    483                 key = $.ui.keyCode; 
    484  
    485             if (key.ESCAPE === event.keyCode) { 
     538        keydown: function( event ) { 
     539            var fn, id; 
     540 
     541            // Escape key. 
     542            if ( 27 === event.keyCode ) { 
    486543                wpLink.close(); 
    487544                event.stopImmediatePropagation(); 
    488             } else if (key.TAB === event.keyCode) { 
     545            // Tab key. 
     546            } else if ( 9 === event.keyCode ) { 
    489547                id = event.target.id; 
    490548 
    491549                // wp-link-submit must always be the last focusable element in the dialog. 
    492550                // following focusable elements will be skipped on keyboard navigation. 
    493                 if (id === 'wp-link-submit' && !event.shiftKey) { 
     551                if ( id === 'wp-link-submit' && ! event.shiftKey ) { 
    494552                    inputs.close.focus(); 
    495553                    event.preventDefault(); 
    496                 } else if (id === 'wp-link-close' && event.shiftKey) { 
     554                } else if ( id === 'wp-link-close' && event.shiftKey ) { 
    497555                    inputs.submit.focus(); 
    498556                    event.preventDefault(); 
     
    500558            } 
    501559 
    502             if (event.keyCode !== key.UP && event.keyCode !== key.DOWN) { 
    503                 return; 
    504             } 
    505  
    506             if (document.activeElement && 
    507                 (document.activeElement.id === 'link-title-field' || document.activeElement.id === 'url-field')) { 
    508                 return; 
    509             } 
    510  
    511             fn = event.keyCode === key.UP ? 'prev' : 'next'; 
    512             clearInterval(wpLink.keyInterval); 
    513             wpLink[fn](); 
    514             wpLink.keyInterval = setInterval(wpLink[fn], wpLink.keySensitivity); 
     560            // Up Arrow and Down Arrow keys. 
     561            if ( 38 !== event.keyCode && 40 !== event.keyCode ) { 
     562                return; 
     563            } 
     564 
     565            if ( document.activeElement && 
     566                ( document.activeElement.id === 'link-title-field' || document.activeElement.id === 'url-field' ) ) { 
     567                return; 
     568            } 
     569 
     570            // Up Arrow key. 
     571            fn = 38 === event.keyCode ? 'prev' : 'next'; 
     572            clearInterval( wpLink.keyInterval ); 
     573            wpLink[ fn ](); 
     574            wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity ); 
    515575            event.preventDefault(); 
    516576        }, 
    517577 
    518         keyup: function(event) { 
    519             var key = $.ui.keyCode; 
    520  
    521             if (event.which === key.UP || event.which === key.DOWN) { 
    522                 clearInterval(wpLink.keyInterval); 
     578        keyup: function( event ) { 
     579            // Up Arrow and Down Arrow keys. 
     580            if ( 38 === event.keyCode || 40 === event.keyCode ) { 
     581                clearInterval( wpLink.keyInterval ); 
    523582                event.preventDefault(); 
    524583            } 
    525584        }, 
    526585 
    527         delayedCallback: function(func, delay) { 
     586        delayedCallback: function( func, delay ) { 
    528587            var timeoutTriggered, funcTriggered, funcArgs, funcContext; 
    529588 
    530             if (!delay) 
     589            if ( ! delay ) 
    531590                return func; 
    532591 
    533             setTimeout(function() { 
    534                 if (funcTriggered) 
    535                     return func.apply(funcContext, funcArgs); 
     592            setTimeout( function() { 
     593                if ( funcTriggered ) 
     594                    return func.apply( funcContext, funcArgs ); 
    536595                // Otherwise, wait. 
    537596                timeoutTriggered = true; 
    538             }, delay); 
     597            }, delay ); 
    539598 
    540599            return function() { 
    541                 if (timeoutTriggered) 
    542                     return func.apply(this, arguments); 
     600                if ( timeoutTriggered ) 
     601                    return func.apply( this, arguments ); 
    543602                // Otherwise, wait. 
    544603                funcArgs = arguments; 
     
    546605                funcTriggered = true; 
    547606            }; 
    548         }, 
    549  
    550         toggleInternalLinking: function(event) { 
    551             var visible = inputs.wrap.hasClass('search-panel-visible'); 
    552  
    553             inputs.wrap.toggleClass('search-panel-visible', !visible); 
    554             setUserSetting('wplink', visible ? '0' : '1'); 
    555             inputs[!visible ? 'search' : 'url'].focus(); 
    556             event.preventDefault(); 
    557607        } 
    558608    }; 
    559609 
    560     River = function(element, search) { 
     610    River = function( element, search ) { 
    561611        var self = this; 
    562612        this.element = element; 
    563         this.ul = element.children('ul'); 
    564         this.contentHeight = element.children('#link-selector-height'); 
     613        this.ul = element.children( 'ul' ); 
     614        this.contentHeight = element.children( '#link-selector-height' ); 
    565615        this.waiting = element.find('.river-waiting'); 
    566616 
    567         this.change(search); 
     617        this.change( search ); 
    568618        this.refresh(); 
    569619 
    570         $('#wp-link .query-results, #wp-link #link-selector') 
    571             .scroll(function() { 
    572                 self.maybeLoad(); 
    573             }); 
    574         element.on('click', 'li', function(event) { 
    575             self.select($(this), event); 
     620        $( '#wp-link .query-results, #wp-link #link-selector' ).scroll( function() { 
     621            self.maybeLoad(); 
     622        }); 
     623        element.on( 'click', 'li', function( event ) { 
     624            self.select( $( this ), event ); 
    576625        }); 
    577626    }; 
    578627 
    579     $.extend(River.prototype, { 
     628    $.extend( River.prototype, { 
    580629        refresh: function() { 
    581630            this.deselect(); 
    582             this.visible = this.element.is(':visible'); 
     631            this.visible = this.element.is( ':visible' ); 
    583632        }, 
    584633        show: function() { 
    585             if (!this.visible) { 
     634            if ( ! this.visible ) { 
    586635                this.deselect(); 
    587636                this.element.show(); 
     
    594643        }, 
    595644        // Selects a list item and triggers the river-select event. 
    596         select: function(li, event) { 
     645        select: function( li, event ) { 
    597646            var liHeight, elHeight, liTop, elTop; 
    598647 
    599             if (li.hasClass('unselectable') || li == this.selected) 
     648            if ( li.hasClass( 'unselectable' ) || li == this.selected ) 
    600649                return; 
    601650 
    602651            this.deselect(); 
    603             this.selected = li.addClass('selected'); 
     652            this.selected = li.addClass( 'selected' ); 
    604653            // Make sure the element is visible 
    605654            liHeight = li.outerHeight(); 
    606655            elHeight = this.element.height(); 
    607             liTop = li.position() 
    608                 .top; 
     656            liTop = li.position().top; 
    609657            elTop = this.element.scrollTop(); 
    610658 
    611             if (liTop < 0) // Make first visible element 
    612                 this.element.scrollTop(elTop + liTop); 
    613             else if (liTop + liHeight > elHeight) // Make last visible element 
    614                 this.element.scrollTop(elTop + liTop - elHeight + liHeight); 
     659            if ( liTop < 0 ) // Make first visible element 
     660                this.element.scrollTop( elTop + liTop ); 
     661            else if ( liTop + liHeight > elHeight ) // Make last visible element 
     662                this.element.scrollTop( elTop + liTop - elHeight + liHeight ); 
    615663 
    616664            // Trigger the river-select event 
    617             this.element.trigger('river-select', [li, event, this]); 
     665            this.element.trigger( 'river-select', [ li, event, this ] ); 
    618666        }, 
    619667        deselect: function() { 
    620             if (this.selected) 
    621                 this.selected.removeClass('selected'); 
     668            if ( this.selected ) 
     669                this.selected.removeClass( 'selected' ); 
    622670            this.selected = false; 
    623671        }, 
    624672        prev: function() { 
    625             if (!this.visible) 
     673            if ( ! this.visible ) 
    626674                return; 
    627675 
    628676            var to; 
    629             if (this.selected) { 
    630                 to = this.selected.prev('li'); 
    631                 if (to.length) 
    632                     this.select(to); 
     677            if ( this.selected ) { 
     678                to = this.selected.prev( 'li' ); 
     679                if ( to.length ) 
     680                    this.select( to ); 
    633681            } 
    634682        }, 
    635683        next: function() { 
    636             if (!this.visible) 
    637                 return; 
    638  
    639             var to = this.selected ? this.selected.next('li') : $('li:not(.unselectable):first', this.element); 
    640             if (to.length) 
    641                 this.select(to); 
    642         }, 
    643         ajax: function(callback) { 
     684            if ( ! this.visible ) 
     685                return; 
     686 
     687            var to = this.selected ? this.selected.next( 'li' ) : $( 'li:not(.unselectable):first', this.element ); 
     688            if ( to.length ) 
     689                this.select( to ); 
     690        }, 
     691        ajax: function( callback ) { 
    644692            var self = this, 
    645693                delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration, 
    646                 response = wpLink.delayedCallback(function(results, params) { 
    647                     self.process(results, params); 
    648                     if (callback) 
    649                         callback(results, params); 
    650                 }, delay); 
    651  
    652             this.query.ajax(response); 
    653         }, 
    654         change: function(search) { 
    655             if (this.query && this._search == search) 
     694                response = wpLink.delayedCallback( function( results, params ) { 
     695                    self.process( results, params ); 
     696                    if ( callback ) 
     697                        callback( results, params ); 
     698                }, delay ); 
     699 
     700            this.query.ajax( response ); 
     701        }, 
     702        change: function( search ) { 
     703            if ( this.query && this._search == search ) 
    656704                return; 
    657705 
    658706            this._search = search; 
    659             this.query = new Query(search); 
    660             this.element.scrollTop(0); 
    661         }, 
    662         process: function(results, params) { 
    663             var list = '', 
    664                 alt = true, 
    665                 classes = '', 
     707            this.query = new Query( search ); 
     708            this.element.scrollTop( 0 ); 
     709        }, 
     710        process: function( results, params ) { 
     711            var list = '', alt = true, classes = '', 
    666712                firstPage = params.page == 1; 
    667713 
    668             if (!results) { 
    669                 if (firstPage) { 
     714            if ( ! results ) { 
     715                if ( firstPage ) { 
    670716                    list += '<li class="unselectable no-matches-found"><span class="item-title"><em>' + 
    671717                        wpLinkL10n.noMatchesFound + '</em></span></li>'; 
    672718                } 
    673719            } else { 
    674                 $.each(results, function() { 
     720                $.each( results, function() { 
    675721                    classes = alt ? 'alternate' : ''; 
    676722                    classes += this.title ? '' : ' no-title'; 
     
    680726                    list += this.title ? this.title : wpLinkL10n.noTitle; 
    681727                    list += '</span><span class="item-info">' + this.info + '</span></li>'; 
    682                     alt = !alt; 
     728                    alt = ! alt; 
    683729                }); 
    684730            } 
    685731 
    686             this.ul[firstPage ? 'html' : 'append'](list); 
     732            this.ul[ firstPage ? 'html' : 'append' ]( list ); 
    687733        }, 
    688734        maybeLoad: function() { 
     
    691737                bottom = el.scrollTop() + el.height(); 
    692738 
    693             if (!this.query.ready() || bottom < this.contentHeight.height() - wpLink.riverBottomThreshold) 
     739            if ( ! this.query.ready() || bottom < this.contentHeight.height() - wpLink.riverBottomThreshold ) 
    694740                return; 
    695741 
     
    698744                    newBottom = newTop + el.height(); 
    699745 
    700                 if (!self.query.ready() || newBottom < self.contentHeight.height() - wpLink.riverBottomThreshold) 
     746                if ( ! self.query.ready() || newBottom < self.contentHeight.height() - wpLink.riverBottomThreshold ) 
    701747                    return; 
    702748 
    703                 self.waiting.addClass('is-active'); 
    704                 el.scrollTop(newTop + self.waiting.outerHeight()); 
    705  
    706                 self.ajax(function() { 
    707                     self.waiting.removeClass('is-active'); 
     749                self.waiting.addClass( 'is-active' ); 
     750                el.scrollTop( newTop + self.waiting.outerHeight() ); 
     751 
     752                self.ajax( function() { 
     753                    self.waiting.removeClass( 'is-active' ); 
    708754                }); 
    709             }, wpLink.timeToTriggerRiver); 
     755            }, wpLink.timeToTriggerRiver ); 
    710756        } 
    711757    }); 
    712758 
    713     Query = function(search) { 
     759    Query = function( search ) { 
    714760        this.page = 1; 
    715761        this.allLoaded = false; 
     
    718764    }; 
    719765 
    720     $.extend(Query.prototype, { 
     766    $.extend( Query.prototype, { 
    721767        ready: function() { 
    722             return !(this.querying || this.allLoaded); 
    723         }, 
    724         ajax: function(callback) { 
     768            return ! ( this.querying || this.allLoaded ); 
     769        }, 
     770        ajax: function( callback ) { 
    725771            var self = this, 
    726772                query = { 
    727                     action: 'wp-link-ajax', 
    728                     page: this.page, 
    729                     '_ajax_linking_nonce': inputs.nonce.val() 
     773                    action : 'wp-link-ajax', 
     774                    page : this.page, 
     775                    '_ajax_linking_nonce' : inputs.nonce.val() 
    730776                }; 
    731777 
    732             if (this.search) 
     778            if ( this.search ) 
    733779                query.search = this.search; 
    734780 
    735781            this.querying = true; 
    736782 
    737             $.post(ajaxurl, query, function(r) { 
     783            $.post( window.ajaxurl, query, function( r ) { 
    738784                self.page++; 
    739785                self.querying = false; 
    740                 self.allLoaded = !r; 
    741                 callback(r, query); 
    742             }, 'json'); 
     786                self.allLoaded = ! r; 
     787                callback( r, query ); 
     788            }, 'json' ); 
    743789        } 
    744790    }); 
    745791 
    746     $(document) 
    747         .ready(wpLink.init); 
    748 })(jQuery); 
     792    $( document ).ready( wpLink.init ); 
     793})( jQuery, window.wpLinkL10n, window.wp ); 
  • rel-nofollow-checkbox/trunk/wplink.min.js

    r1147598 r1645358  
    1 /* rel-nofollow-checkbox v1.1.4 | GPLv2 License | by fabiosantos.me */ 
     1/* rel-nofollow-checkbox v1.1.5 | GPLv2 License | by fabiosantos.me */ 
    22/* global ajaxurl, tinymce, wpLinkL10n, setUserSetting, wpActiveEditor */ 
    3 var wpLink;!function(e){function t(){return n.dom.getParent(n.selection.getNode(),"a")}var n,i,s,a,r,l={},o={},c="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){function t(){var t=e.trim(l.url.val());t&&r!==t&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(t)&&(l.url.val("http://"+t),r=t)}var n='<div><label><span> </span><input type="checkbox" id="rel-nofollow-checkbox" /><strong> rel="nofollow"</strong></label></div>';e(n).insertAfter("#wp-link .link-target"),e(".query-results").css("top","230px"),l.wrap=e("#wp-link-wrap"),l.dialog=e("#wp-link"),l.backdrop=e("#wp-link-backdrop"),l.submit=e("#wp-link-submit"),l.close=e("#wp-link-close"),l.text=e("#wp-link-text"),l.url=e("#wp-link-url"),l.nonce=e("#_ajax_linking_nonce"),l.fsRelNofollow=e("#rel-nofollow-checkbox"),l.openInNewTab=e("#wp-link-target"),l.search=e("#wp-link-search"),o.search=new s(e("#search-results")),o.recent=new s(e("#most-recent-results")),o.elements=l.dialog.find(".query-results"),l.queryNotice=e("#query-notice-message"),l.queryNoticeTextDefault=l.queryNotice.find(".query-notice-default"),l.queryNoticeTextHint=l.queryNotice.find(".query-notice-hint"),l.dialog.keydown(wpLink.keydown),l.dialog.keyup(wpLink.keyup),l.submit.click(function(e){e.preventDefault(),wpLink.update()}),l.close.add(l.backdrop).add("#wp-link-cancel a").click(function(e){e.preventDefault(),wpLink.close()}),e("#wp-link-search-toggle").on("click",wpLink.toggleInternalLinking),o.elements.on("river-select",wpLink.updateFields),l.search.on("focus.wplink",function(){l.queryNoticeTextDefault.hide(),l.queryNoticeTextHint.removeClass("screen-reader-text").show()}).on("blur.wplink",function(){l.queryNoticeTextDefault.show(),l.queryNoticeTextHint.addClass("screen-reader-text").hide()}),l.search.keyup(function(){var e=this;window.clearTimeout(i),i=window.setTimeout(function(){wpLink.searchInternalLinks.call(e)},500)}),l.url.on("paste",function(){setTimeout(t,0)}),l.url.on("blur",t)},open:function(t){var i;e(document.body).addClass("modal-open"),wpLink.range=null,t&&(window.wpActiveEditor=t),window.wpActiveEditor&&(this.textarea=e("#"+window.wpActiveEditor).get(0),"undefined"!=typeof tinymce&&(i=tinymce.get(wpActiveEditor),n=i&&!i.isHidden()?i:null,n&&tinymce.isIE&&(n.windowManager.bookmark=n.selection.getBookmark())),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),l.wrap.show(),l.backdrop.show(),wpLink.refresh(),e(document).trigger("wplink-open",l.wrap))},isMCE:function(){return n&&!n.isHidden()},refresh:function(){var e="";o.search.refresh(),o.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh():(l.wrap.hasClass("has-text-field")||l.wrap.addClass("has-text-field"),document.selection?e=document.selection.createRange().text||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(e=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||""),l.text.val(e),wpLink.setDefaultValues()),c?l.url.focus().blur():l.url.focus()[0].select(),o.recent.ul.children().length||o.recent.ajax(),r=l.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(e){var t=n.selection.getContent();if(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))return!1;if(e){var i,s=e.childNodes;if(0===s.length)return!1;for(i=s.length-1;i>=0;i--)if(3!=s[i].nodeType)return!1}return!0},mceRefresh:function(){var e,t=n.selection.getNode(),i=n.dom.getParent(t,"a[href]"),s=this.hasSelectedText(i);i?(e=i.innerText||i.textContent,l.url.val(n.dom.getAttrib(i,"href")),l.openInNewTab.prop("checked","_blank"===n.dom.getAttrib(i,"target")),l.fsRelNofollow.prop("checked","nofollow"===n.dom.getAttrib(i,"rel")),l.submit.val(wpLinkL10n.update)):(e=n.selection.getContent({format:"text"}),this.setDefaultValues()),s?(l.text.val(e||""),l.wrap.addClass("has-text-field")):(l.text.val(""),l.wrap.removeClass("has-text-field"))},close:function(){e(document.body).removeClass("modal-open"),wpLink.isMCE()?n.focus():(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select())),l.backdrop.hide(),l.wrap.hide(),r=!1,e(document).trigger("wplink-close",l.wrap)},getAttrs:function(){return{href:e.trim(l.url.val()),target:l.openInNewTab.prop("checked")?"_blank":"",rel:l.fsRelNofollow.prop("checked")?"nofollow":""}},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var e,t,n,i,s,a,r,o=wpLink.textarea;o&&(e=wpLink.getAttrs(),t=l.text.val(),e.href&&(n='<a href="'+e.href+'"',e.target&&(n+=' target="'+e.target+'"'),e.rel&&(n+=' rel="nofollow"'),n+=">",document.selection&&wpLink.range?(o.focus(),wpLink.range.text=n+(t||wpLink.range.text)+"</a>",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof o.selectionStart&&(i=o.selectionStart,s=o.selectionEnd,r=t||o.value.substring(i,s),n=n+r+"</a>",a=i+n.length,i!==s||r||(a-=4),o.value=o.value.substring(0,i)+n+o.value.substring(s,o.value.length),o.selectionStart=o.selectionEnd=a),wpLink.close(),o.focus()))},mceUpdate:function(){var e,i,s=wpLink.getAttrs();return wpLink.close(),n.focus(),tinymce.isIE&&n.selection.moveToBookmark(n.windowManager.bookmark),s.href?(e=t(),i=l.text.val(),void(e?(i&&("innerText"in e?e.innerText=i:e.textContent=i),n.dom.setAttribs(e,s)):i?n.selection.setNode(n.dom.create("a",s,i)):n.execCommand("mceInsertLink",!1,s))):void n.execCommand("unlink")},updateFields:function(e,t){l.url.val(t.children(".item-permalink").val())},setDefaultValues:function(){var e,t=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,i=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i;this.isMCE()?e=n.selection.getContent():document.selection&&wpLink.range?e=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(e=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)),l.url.val(e&&t.test(e)?"mailto:"+e:e&&i.test(e)?e.replace(/&amp;|&#0?38;/gi,"&"):""),l.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var t,n=e(this),i=n.val();if(i.length>2){if(o.recent.hide(),o.search.show(),wpLink.lastSearch==i)return;wpLink.lastSearch=i,t=n.parent().find(".spinner").addClass("is-active"),o.search.change(i),o.search.ajax(function(){t.removeClass("is-active")})}else o.search.hide(),o.recent.show()},next:function(){o.search.next(),o.recent.next()},prev:function(){o.search.prev(),o.recent.prev()},keydown:function(t){var n,i,s=e.ui.keyCode;s.ESCAPE===t.keyCode?(wpLink.close(),t.stopImmediatePropagation()):s.TAB===t.keyCode&&(i=t.target.id,"wp-link-submit"!==i||t.shiftKey?"wp-link-close"===i&&t.shiftKey&&(l.submit.focus(),t.preventDefault()):(l.close.focus(),t.preventDefault())),(t.keyCode===s.UP||t.keyCode===s.DOWN)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(n=t.keyCode===s.UP?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[n](),wpLink.keyInterval=setInterval(wpLink[n],wpLink.keySensitivity),t.preventDefault())},keyup:function(t){var n=e.ui.keyCode;(t.which===n.UP||t.which===n.DOWN)&&(clearInterval(wpLink.keyInterval),t.preventDefault())},delayedCallback:function(e,t){var n,i,s,a;return t?(setTimeout(function(){return i?e.apply(a,s):void(n=!0)},t),function(){return n?e.apply(this,arguments):(s=arguments,a=this,void(i=!0))}):e},toggleInternalLinking:function(e){var t=l.wrap.hasClass("search-panel-visible");l.wrap.toggleClass("search-panel-visible",!t),setUserSetting("wplink",t?"0":"1"),l[t?"url":"search"].focus(),e.preventDefault()}},s=function(t,n){var i=this;this.element=t,this.ul=t.children("ul"),this.contentHeight=t.children("#link-selector-height"),this.waiting=t.find(".river-waiting"),this.change(n),this.refresh(),e("#wp-link .query-results, #wp-link #link-selector").scroll(function(){i.maybeLoad()}),t.on("click","li",function(t){i.select(e(this),t)})},e.extend(s.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(e,t){var n,i,s,a;e.hasClass("unselectable")||e==this.selected||(this.deselect(),this.selected=e.addClass("selected"),n=e.outerHeight(),i=this.element.height(),s=e.position().top,a=this.element.scrollTop(),0>s?this.element.scrollTop(a+s):s+n>i&&this.element.scrollTop(a+s-i+n),this.element.trigger("river-select",[e,t,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var e;this.selected&&(e=this.selected.prev("li"),e.length&&this.select(e))}},next:function(){if(this.visible){var t=this.selected?this.selected.next("li"):e("li:not(.unselectable):first",this.element);t.length&&this.select(t)}},ajax:function(e){var t=this,n=1==this.query.page?0:wpLink.minRiverAJAXDuration,i=wpLink.delayedCallback(function(n,i){t.process(n,i),e&&e(n,i)},n);this.query.ajax(i)},change:function(e){this.query&&this._search==e||(this._search=e,this.query=new a(e),this.element.scrollTop(0))},process:function(t,n){var i="",s=!0,a="",r=1==n.page;t?e.each(t,function(){a=s?"alternate":"",a+=this.title?"":" no-title",i+=a?'<li class="'+a+'">':"<li>",i+='<input type="hidden" class="item-permalink" value="'+this.permalink+'" />',i+='<span class="item-title">',i+=this.title?this.title:wpLinkL10n.noTitle,i+='</span><span class="item-info">'+this.info+"</span></li>",s=!s}):r&&(i+='<li class="unselectable no-matches-found"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"),this.ul[r?"html":"append"](i)},maybeLoad:function(){var e=this,t=this.element,n=t.scrollTop()+t.height();!this.query.ready()||n<this.contentHeight.height()-wpLink.riverBottomThreshold||setTimeout(function(){var n=t.scrollTop(),i=n+t.height();!e.query.ready()||i<e.contentHeight.height()-wpLink.riverBottomThreshold||(e.waiting.addClass("is-active"),t.scrollTop(n+e.waiting.outerHeight()),e.ajax(function(){e.waiting.removeClass("is-active")}))},wpLink.timeToTriggerRiver)}}),a=function(e){this.page=1,this.allLoaded=!1,this.querying=!1,this.search=e},e.extend(a.prototype,{ready:function(){return!(this.querying||this.allLoaded)},ajax:function(t){var n=this,i={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:l.nonce.val()};this.search&&(i.search=this.search),this.querying=!0,e.post(ajaxurl,i,function(e){n.page++,n.querying=!1,n.allLoaded=!e,t(e,i)},"json")}}),e(document).ready(wpLink.init)}(jQuery); 
     3var wpLink;!function(e,t,n){function i(){return c||a.dom.getParent(a.selection.getNode(),"a[href]")}var a,r,s,l,o,c,u=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}$/i,p=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,63}[^ "]*$/i,h={},d={},w="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",modalOpen:!1,init:function(){var t='<div><label><span> </span><input type="checkbox" id="rel-nofollow-checkbox" /><strong> rel="nofollow"</strong></label></div>';e(t).insertAfter("#wp-link .link-target"),h.wrap=e("#wp-link-wrap"),h.dialog=e("#wp-link"),h.backdrop=e("#wp-link-backdrop"),h.submit=e("#wp-link-submit"),h.close=e("#wp-link-close"),h.text=e("#wp-link-text"),h.url=e("#wp-link-url"),h.nonce=e("#_ajax_linking_nonce"),h.openInNewTab=e("#wp-link-target"),h.noFollow=e("#rel-nofollow-checkbox"),h.search=e("#wp-link-search"),d.search=new s(e("#search-results")),d.recent=new s(e("#most-recent-results")),d.elements=h.dialog.find(".query-results"),h.queryNotice=e("#query-notice-message"),h.queryNoticeTextDefault=h.queryNotice.find(".query-notice-default"),h.queryNoticeTextHint=h.queryNotice.find(".query-notice-hint"),h.dialog.keydown(wpLink.keydown),h.dialog.keyup(wpLink.keyup),h.submit.click(function(e){e.preventDefault(),wpLink.update()}),h.close.add(h.backdrop).add("#wp-link-cancel button").click(function(e){e.preventDefault(),wpLink.close()}),d.elements.on("river-select",wpLink.updateFields),h.search.on("focus.wplink",function(){h.queryNoticeTextDefault.hide(),h.queryNoticeTextHint.removeClass("screen-reader-text").show()}).on("blur.wplink",function(){h.queryNoticeTextDefault.show(),h.queryNoticeTextHint.addClass("screen-reader-text").hide()}),h.search.on("keyup input",function(){window.clearTimeout(r),r=window.setTimeout(function(){wpLink.searchInternalLinks()},500)}),h.url.on("paste",function(){setTimeout(wpLink.correctURL,0)}),h.url.on("blur",wpLink.correctURL)},correctURL:function(){var t=e.trim(h.url.val());t&&o!==t&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(t)&&(h.url.val("http://"+t),o=t)},open:function(t,n,i,r){var s,l=e(document.body);l.addClass("modal-open"),wpLink.modalOpen=!0,c=r,wpLink.range=null,t&&(window.wpActiveEditor=t),window.wpActiveEditor&&(this.textarea=e("#"+window.wpActiveEditor).get(0),"undefined"!=typeof window.tinymce&&(l.append(h.backdrop,h.wrap),s=window.tinymce.get(window.wpActiveEditor),a=s&&!s.isHidden()?s:null),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),h.wrap.show(),h.backdrop.show(),wpLink.refresh(n,i),e(document).trigger("wplink-open",h.wrap))},isMCE:function(){return a&&!a.isHidden()},refresh:function(e,t){var n="";d.search.refresh(),d.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh(e,t):(h.wrap.hasClass("has-text-field")||h.wrap.addClass("has-text-field"),document.selection?n=document.selection.createRange().text||t||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(t=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||t||""),h.text.val(t),wpLink.setDefaultValues()),w?h.url.focus().blur():window.setTimeout(function(){h.url[0].select(),h.url.focus()}),d.recent.ul.children().length||d.recent.ajax(),o=h.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(e){var t,n,i,r=a.selection.getContent();if(/</.test(r)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(r)||-1===r.indexOf("href=")))return!1;if(e){if(n=e.childNodes,0===n.length)return!1;for(i=n.length-1;i>=0;i--)if(t=n[i],3!=t.nodeType&&!window.tinymce.dom.BookmarkManager.isBookmarkNode(t))return!1}return!0},mceRefresh:function(n,r){var s,l,o=i(),c=this.hasSelectedText(o);o?(s=o.textContent||o.innerText,l=a.dom.getAttrib(o,"href"),e.trim(s)||(s=r||""),n&&(p.test(n)||u.test(n))&&(l=n),"_wp_link_placeholder"!==l?(h.url.val(l),h.openInNewTab.prop("checked","_blank"===a.dom.getAttrib(o,"target")),h.noFollow.prop("checked",-1!==a.dom.getAttrib(o,"rel").indexOf("nofollow")),h.submit.val(t.update)):this.setDefaultValues(s),n&&n!==l?h.search.val(n):h.search.val(""),window.setTimeout(function(){wpLink.searchInternalLinks()})):(s=a.selection.getContent({format:"text"})||r||"",this.setDefaultValues(s)),c?(h.text.val(s),h.wrap.addClass("has-text-field")):(h.text.val(""),h.wrap.removeClass("has-text-field"))},close:function(t){e(document.body).removeClass("modal-open"),wpLink.modalOpen=!1,"noReset"!==t&&(wpLink.isMCE()?(a.plugins.wplink&&a.plugins.wplink.close(),a.focus()):(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select()))),h.backdrop.hide(),h.wrap.hide(),o=!1,e(document).trigger("wplink-close",h.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:e.trim(h.url.val()),target:h.openInNewTab.prop("checked")?"_blank":null,rel:h.noFollow.prop("checked")?"nofollow":""}},buildHtml:function(e){var t='<a href="'+e.href+'"';return e.target&&(t+=' target="'+e.target+'"'),e.rel&&(t+=' rel="'+e.rel+'"'),t+">"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var e,i,a,r,s,l,o,c=wpLink.textarea;c&&(e=wpLink.getAttrs(),i=h.text.val(),e.href&&(a=wpLink.buildHtml(e),document.selection&&wpLink.range?(c.focus(),wpLink.range.text=a+(i||wpLink.range.text)+"</a>",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof c.selectionStart&&(r=c.selectionStart,s=c.selectionEnd,o=i||c.value.substring(r,s),a=a+o+"</a>",l=r+a.length,r!==s||o||(l-=4),c.value=c.value.substring(0,r)+a+c.value.substring(s,c.value.length),c.selectionStart=c.selectionEnd=l),wpLink.close(),c.focus(),n.a11y.speak(t.linkInserted)))},mceUpdate:function(){var r,s,l,o,c=wpLink.getAttrs();return c.href?(r=a.$(i()),a.undoManager.transact(function(){r.length||(a.execCommand("mceInsertLink",!1,{href:"_wp_link_placeholder","data-wp-temp-link":1}),r=a.$('a[data-wp-temp-link="1"]').removeAttr("data-wp-temp-link"),l=e.trim(r.text())),r.length?(h.wrap.hasClass("has-text-field")&&(s=h.text.val(),s?r.text(s):l||r.text(c.href)),c["data-wplink-edit"]=null,c["data-mce-href"]=null,r.attr(c)):a.execCommand("unlink")}),wpLink.close("noReset"),a.focus(),r.length&&(o=r.parent("#_mce_caret"),o.length&&o.before(r.removeAttr("data-mce-bogus")),a.selection.select(r[0]),a.selection.collapse(),a.plugins.wplink&&a.plugins.wplink.checkLink(r[0])),a.nodeChanged(),void n.a11y.speak(t.linkInserted)):(a.execCommand("unlink"),void wpLink.close())},updateFields:function(e,t){h.url.val(t.children(".item-permalink").val())},getUrlFromSelection:function(t){return t||(this.isMCE()?t=a.selection.getContent({format:"text"}):document.selection&&wpLink.range?t=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(t=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd))),t=e.trim(t),t&&u.test(t)?"mailto:"+t:t&&p.test(t)?t.replace(/&amp;|&#0?38;/gi,"&"):""},setDefaultValues:function(e){h.url.val(this.getUrlFromSelection(e)),h.search.val(""),wpLink.searchInternalLinks(),h.submit.val(t.save)},searchInternalLinks:function(){var e,t=h.search.val()||"";if(t.length>2){if(d.recent.hide(),d.search.show(),wpLink.lastSearch==t)return;wpLink.lastSearch=t,e=h.search.parent().find(".spinner").addClass("is-active"),d.search.change(t),d.search.ajax(function(){e.removeClass("is-active")})}else d.search.hide(),d.recent.show()},next:function(){d.search.next(),d.recent.next()},prev:function(){d.search.prev(),d.recent.prev()},keydown:function(e){var t,n;27===e.keyCode?(wpLink.close(),e.stopImmediatePropagation()):9===e.keyCode&&(n=e.target.id,"wp-link-submit"!==n||e.shiftKey?"wp-link-close"===n&&e.shiftKey&&(h.submit.focus(),e.preventDefault()):(h.close.focus(),e.preventDefault())),(38===e.keyCode||40===e.keyCode)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(t=38===e.keyCode?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[t](),wpLink.keyInterval=setInterval(wpLink[t],wpLink.keySensitivity),e.preventDefault())},keyup:function(e){(38===e.keyCode||40===e.keyCode)&&(clearInterval(wpLink.keyInterval),e.preventDefault())},delayedCallback:function(e,t){var n,i,a,r;return t?(setTimeout(function(){return i?e.apply(r,a):void(n=!0)},t),function(){return n?e.apply(this,arguments):(a=arguments,r=this,void(i=!0))}):e}},s=function(t,n){var i=this;this.element=t,this.ul=t.children("ul"),this.contentHeight=t.children("#link-selector-height"),this.waiting=t.find(".river-waiting"),this.change(n),this.refresh(),e("#wp-link .query-results, #wp-link #link-selector").scroll(function(){i.maybeLoad()}),t.on("click","li",function(t){i.select(e(this),t)})},e.extend(s.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(e,t){var n,i,a,r;e.hasClass("unselectable")||e==this.selected||(this.deselect(),this.selected=e.addClass("selected"),n=e.outerHeight(),i=this.element.height(),a=e.position().top,r=this.element.scrollTop(),0>a?this.element.scrollTop(r+a):a+n>i&&this.element.scrollTop(r+a-i+n),this.element.trigger("river-select",[e,t,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var e;this.selected&&(e=this.selected.prev("li"),e.length&&this.select(e))}},next:function(){if(this.visible){var t=this.selected?this.selected.next("li"):e("li:not(.unselectable):first",this.element);t.length&&this.select(t)}},ajax:function(e){var t=this,n=1==this.query.page?0:wpLink.minRiverAJAXDuration,i=wpLink.delayedCallback(function(n,i){t.process(n,i),e&&e(n,i)},n);this.query.ajax(i)},change:function(e){this.query&&this._search==e||(this._search=e,this.query=new l(e),this.element.scrollTop(0))},process:function(n,i){var a="",r=!0,s="",l=1==i.page;n?e.each(n,function(){s=r?"alternate":"",s+=this.title?"":" no-title",a+=s?'<li class="'+s+'">':"<li>",a+='<input type="hidden" class="item-permalink" value="'+this.permalink+'" />',a+='<span class="item-title">',a+=this.title?this.title:t.noTitle,a+='</span><span class="item-info">'+this.info+"</span></li>",r=!r}):l&&(a+='<li class="unselectable no-matches-found"><span class="item-title"><em>'+t.noMatchesFound+"</em></span></li>"),this.ul[l?"html":"append"](a)},maybeLoad:function(){var e=this,t=this.element,n=t.scrollTop()+t.height();!this.query.ready()||n<this.contentHeight.height()-wpLink.riverBottomThreshold||setTimeout(function(){var n=t.scrollTop(),i=n+t.height();!e.query.ready()||i<e.contentHeight.height()-wpLink.riverBottomThreshold||(e.waiting.addClass("is-active"),t.scrollTop(n+e.waiting.outerHeight()),e.ajax(function(){e.waiting.removeClass("is-active")}))},wpLink.timeToTriggerRiver)}}),l=function(e){this.page=1,this.allLoaded=!1,this.querying=!1,this.search=e},e.extend(l.prototype,{ready:function(){return!(this.querying||this.allLoaded)},ajax:function(t){var n=this,i={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:h.nonce.val()};this.search&&(i.search=this.search),this.querying=!0,e.post(window.ajaxurl,i,function(e){n.page++,n.querying=!1,n.allLoaded=!e,t(e,i)},"json")}}),e(document).ready(wpLink.init)}(jQuery,window.wpLinkL10n,window.wp); 
Note: See TracChangeset for help on using the changeset viewer.