From 83db96006c7eae979c0e21414c51319abf6ee981 Mon Sep 17 00:00:00 2001 From: Dominik Schilling Date: Tue, 19 Sep 2017 10:18:57 +0000 Subject: [PATCH] Editor: Prevent adding `javascript:` and `data:` URLs through the inline link dialog. Merge of [41393] to the 4.3 branch. Built from https://develop.svn.wordpress.org/branches/4.3@41405 git-svn-id: http://core.svn.wordpress.org/branches/4.3@41238 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../js/tinymce/plugins/wplink/plugin.js | 2 +- .../js/tinymce/plugins/wplink/plugin.min.js | 2 +- wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 147517 -> 147528 bytes wp-includes/js/wplink.js | 16 +++++++++++++++- wp-includes/js/wplink.min.js | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/wp-includes/js/tinymce/plugins/wplink/plugin.js b/wp-includes/js/tinymce/plugins/wplink/plugin.js index b13c46a935..7ba67eeb21 100644 --- a/wp-includes/js/tinymce/plugins/wplink/plugin.js +++ b/wp-includes/js/tinymce/plugins/wplink/plugin.js @@ -4,7 +4,7 @@ renderHtml: function() { return ( '' ); }, diff --git a/wp-includes/js/tinymce/plugins/wplink/plugin.min.js b/wp-includes/js/tinymce/plugins/wplink/plugin.min.js index 5096e42e80..db833e6e5f 100644 --- a/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wplink/plugin.min.js @@ -1 +1 @@ -!function(a){a.ui.WPLinkPreview=a.ui.Control.extend({url:"#",renderHtml:function(){return'"},setURL:function(b){var c,d;this.url!==b&&(this.url=b,b=window.decodeURIComponent(b),b=b.replace(/^(?:https?:)?\/\/(?:www\.)?/,""),-1!==(c=b.indexOf("?"))&&(b=b.slice(0,c)),-1!==(c=b.indexOf("#"))&&(b=b.slice(0,c)),b=b.replace(/(?:index)?\.html$/,""),"/"===b.charAt(b.length-1)&&(b=b.slice(0,-1)),b.length>40&&-1!==(c=b.indexOf("/"))&&-1!==(d=b.lastIndexOf("/"))&&d!==c&&(c+b.length-d<40&&(d=-(40-(c+1))),b=b.slice(0,c+1)+"\u2026"+b.slice(d)),a.$(this.getEl().firstChild).attr("href",this.url).text(b))}}),a.PluginManager.add("wplink",function(b){var c;b.addCommand("WP_Link",function(){window.wpLink&&window.wpLink.open(b.id)}),b.addShortcut("Alt+Shift+A","","WP_Link"),b.addShortcut("Meta+K","","WP_Link"),b.addButton("link",{icon:"link",tooltip:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]"}),b.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink"}),b.addMenuItem("link",{icon:"link",text:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0}),b.on("pastepreprocess",function(c){var d=c.content,e=/^(?:https?:)?\/\/\S+$/i;b.selection.isCollapsed()||e.test(b.selection.getContent())||(d=d.replace(/<[^>]+>/g,""),d=a.trim(d),e.test(d)&&(b.execCommand("mceInsertLink",!1,{href:b.dom.decode(d)}),c.preventDefault()))}),b.addButton("wp_link_preview",{type:"WPLinkPreview",onPostRender:function(){var a=this;b.on("wptoolbar",function(d){var e,f,g=b.dom.getParent(d.element,"a");g&&(e=b.$(g),f=e.attr("href"),f&&!e.find("img").length&&(a.setURL(f),d.element=g,d.toolbar=c))})}}),b.addButton("wp_link_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",cmd:"WP_Link"}),b.addButton("wp_link_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",cmd:"unlink"}),b.on("preinit",function(){b.wp&&b.wp._createToolbar&&(c=b.wp._createToolbar(["wp_link_preview","wp_link_edit","wp_link_remove"],!0))})})}(window.tinymce); \ No newline at end of file +!function(a){a.ui.WPLinkPreview=a.ui.Control.extend({url:"#",renderHtml:function(){return'"},setURL:function(b){var c,d;this.url!==b&&(this.url=b,b=window.decodeURIComponent(b),b=b.replace(/^(?:https?:)?\/\/(?:www\.)?/,""),-1!==(c=b.indexOf("?"))&&(b=b.slice(0,c)),-1!==(c=b.indexOf("#"))&&(b=b.slice(0,c)),b=b.replace(/(?:index)?\.html$/,""),"/"===b.charAt(b.length-1)&&(b=b.slice(0,-1)),b.length>40&&-1!==(c=b.indexOf("/"))&&-1!==(d=b.lastIndexOf("/"))&&d!==c&&(c+b.length-d<40&&(d=-(40-(c+1))),b=b.slice(0,c+1)+"\u2026"+b.slice(d)),a.$(this.getEl().firstChild).attr("href",this.url).text(b))}}),a.PluginManager.add("wplink",function(b){var c;b.addCommand("WP_Link",function(){window.wpLink&&window.wpLink.open(b.id)}),b.addShortcut("Alt+Shift+A","","WP_Link"),b.addShortcut("Meta+K","","WP_Link"),b.addButton("link",{icon:"link",tooltip:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]"}),b.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink"}),b.addMenuItem("link",{icon:"link",text:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0}),b.on("pastepreprocess",function(c){var d=c.content,e=/^(?:https?:)?\/\/\S+$/i;b.selection.isCollapsed()||e.test(b.selection.getContent())||(d=d.replace(/<[^>]+>/g,""),d=a.trim(d),e.test(d)&&(b.execCommand("mceInsertLink",!1,{href:b.dom.decode(d)}),c.preventDefault()))}),b.addButton("wp_link_preview",{type:"WPLinkPreview",onPostRender:function(){var a=this;b.on("wptoolbar",function(d){var e,f,g=b.dom.getParent(d.element,"a");g&&(e=b.$(g),f=e.attr("href"),f&&!e.find("img").length&&(a.setURL(f),d.element=g,d.toolbar=c))})}}),b.addButton("wp_link_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",cmd:"WP_Link"}),b.addButton("wp_link_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",cmd:"unlink"}),b.on("preinit",function(){b.wp&&b.wp._createToolbar&&(c=b.wp._createToolbar(["wp_link_preview","wp_link_edit","wp_link_remove"],!0))})})}(window.tinymce); \ No newline at end of file diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index 57a42b511517db33cbfc94a25404cd705fc12284..92ab376c44f5ea6ab9b1a7fe8ea6b0c17bd26ce9 100644 GIT binary patch delta 3489 zcmV;S4PNrSfCeK!hy)@At<2NDg z48Oj89W}_Gj&%vpzJ|YrpJf`Rw``gzfYmLB*5By}7%Z2wMK=n%=LdoladmaRA9O|1 z%%RNL;KlF|T@jw59&L@61&uksY0l~N0KV?XPtCJGlma#I4&=B%oQ_lKBeyZxsaHrT z9PFN7pCI;LLq`s{Bk}^Pljd^yqx&+4;1m0QmrgSR9)Dm*((^!c-F7eqJ1DjaJjlLq zp`N&aSpc}Hhyb$jIwqk!Hpt<4BdFkOH>0`QU(N8w+|lK+A%tKRnB#P`Y;&CG_9+A7 zn%XyV{)7-7|7^^pjYOsY*J2ea54F&QcGzMa`c6Kk7LYGF!}wing!j|&PE;fMv1SNt zx1h3Y27j|_>a7)E@2k7I8S;*H5tux@pFUS_b`Gl$CScW&VPlK6Y;o158W!>9Qa*pz zzIRX_Z^ap2uM1($QujWf_02)R7HheU7NEH*j~$Q`Hq8cis%pyRh}tln=g*a~**OZu z&rKkDWsmZePe7gj37TSBV#Gh_{a44?b9R64R(})VL`;Cwt%jvGo`eeS*J$R8%Wz+* z+V1&%h|ddqZ8JE-j)sheg-1~N^Rh6EHg}l2m^$Nrg~l9b%8Ivn0REbxxkIPhs{V`C z^Baq4TOgj4?T*t%yW=cQx7i)L^IjW>dgm`fk$e1YoMkIK_FodeTIFvO!YXNFoYlxJ zVSif}XpM3SM{!K2Uv8f!ySopJSIK)?3&#PSa15pw7~Ck_F=;X5=(0RUsHCuDRg$Tt z>m)~FshK)xtM)3X3D4ewy9vvT^)FNCa7L%nn^(I0QqDi_FL@1b;g9?RM6_)^6lM?=SAW8ZHV##Sh*U@Mu1$pL#v^6DTW%?9zC^b8~#z=^O`?e(3nPkIybIq`H7O%ovZy9QO5w(SHGe z&jOh^9~Wt`1Dh?$&9EDTa2OXhlrMm7OSYf>D^r#!1rfri3xM5FrNFcgFkJdbQBk$$4B1aJ}NRV>^BeGH}%l#}%FksK$n zU9Xb2(#~5~r*4LRx5c8Cbbqz$r7X1Zh)3wL-xOUXyNA)yap~V>dZa~%#^0UC#gq`& zIyPo3ZgFJp*@%zIAdQa(%Pi{nid9cnV*f$ch`!}>u*DSQWDg#!+W{K-G+R;6u>e6* zi0>vYJf~IqhY)ZVPA}=EQLH-}{RTs<8feSihIu{hoK1v^(OekYn13*JR1viTjOxk;yoC6F8VGROFf$?0HDtYw_om6Zv-vwQ6qiPrfw& z^F}}AX1`><);G8n>wky>)+)eYrh((NuWv<4QhPjMVN&yeSVKGs1Sdkrlflki`8b>O zFZtjW`x~~5j9uK?4M|KINrG?RpdUU6EeCWSUf^)#?4c>SEI05okvV&bqpVs=B zcQO4SmT3CPTtkQqAN=ElShVEiJH*CGPU8FbzvF+8zWZ)>_vqmvwZP9$j&^sSJkU=^ zNB8ONgNO9Y_kYYLV5fWGm2K7+{!zC{3_qI`EQI&-qWCQt(YSLQvDm z7e0><$~Q^AF5gV?XF#;3oRu3)QGzc3%E*eYZ|gHo^ZeI|W5dQr?1=7WBgaO-Nr^A( zDZv*hN{m32vFNSHS=0eSG#EwaWSJow!mn`&SJ zN7IyA6Mx+}#ldy$golXG((u*&!HxTgSfyvmk??KHsJr$Kvl^ClM zN83vHgQu4qmv+4#oLs7~&XtWYZ=lVGsod8a$$w$X*Jv|?@@a~X>h2s-hvQT}uzU)I zuf#<*ol;+$H22+fm<_7v8=LcmJ4Xru=I|!C!v{aZ?&$d9RFS)XS}plz`b#R2%4rLc z7ZMJs{`&aNt;t+Cp)B`vOL2b;2;iNbEw2Omfs=rVwE_XD+a<1qT#4uDYoTkC-3u7g z8GjZkpWO;Ww|aKYn((f|HWJ1oGT$&nORD&Pw!71Ey2=I{q5f!y4_(6qHu+Q6Cv}

qcweZVts-u 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'; @@ -303,6 +303,13 @@ var wpLink; attrs = wpLink.getAttrs(); text = inputs.text.val(); + var parser = document.createElement( 'a' ); + parser.href = attrs.href; + + if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line + attrs.href = ''; + } + // If there's no href, return. if ( ! attrs.href ) { return; @@ -359,6 +366,13 @@ var wpLink; editor.selection.moveToBookmark( editor.windowManager.bookmark ); } + var parser = document.createElement( 'a' ); + parser.href = attrs.href; + + if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line + attrs.href = ''; + } + if ( ! attrs.href ) { editor.execCommand( 'unlink' ); return; diff --git a/wp-includes/js/wplink.min.js b/wp-includes/js/wplink.min.js index 2bdd4d5ad6..9cb91a1c7f 100644 --- a/wp-includes/js/wplink.min.js +++ b/wp-includes/js/wplink.min.js @@ -1 +1 @@ -var wpLink;!function(a){function b(){return c.dom.getParent(c.selection.getNode(),"a")}var c,d,e,f,g,h={},i={},j="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){h.wrap=a("#wp-link-wrap"),h.dialog=a("#wp-link"),h.backdrop=a("#wp-link-backdrop"),h.submit=a("#wp-link-submit"),h.close=a("#wp-link-close"),h.text=a("#wp-link-text"),h.url=a("#wp-link-url"),h.nonce=a("#_ajax_linking_nonce"),h.openInNewTab=a("#wp-link-target"),h.search=a("#wp-link-search"),i.search=new e(a("#search-results")),i.recent=new e(a("#most-recent-results")),i.elements=h.dialog.find(".query-results"),h.queryNotice=a("#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(a){a.preventDefault(),wpLink.update()}),h.close.add(h.backdrop).add("#wp-link-cancel a").click(function(a){a.preventDefault(),wpLink.close()}),a("#wp-link-search-toggle").on("click",wpLink.toggleInternalLinking),i.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(){var a=this;window.clearTimeout(d),d=window.setTimeout(function(){wpLink.searchInternalLinks.call(a)},500)}),h.url.on("paste",function(){setTimeout(wpLink.correctURL,0)}),h.url.on("blur",wpLink.correctURL)},correctURL:function(){var b=a.trim(h.url.val());b&&g!==b&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(b)&&(h.url.val("http://"+b),g=b)},open:function(b){var d,e=a(document.body);e.addClass("modal-open"),wpLink.range=null,b&&(window.wpActiveEditor=b),window.wpActiveEditor&&(this.textarea=a("#"+window.wpActiveEditor).get(0),"undefined"!=typeof tinymce&&(e.append(h.backdrop,h.wrap),d=tinymce.get(wpActiveEditor),c=d&&!d.isHidden()?d:null,c&&tinymce.isIE&&(c.windowManager.bookmark=c.selection.getBookmark())),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),h.wrap.show(),h.backdrop.show(),wpLink.refresh(),a(document).trigger("wplink-open",h.wrap))},isMCE:function(){return c&&!c.isHidden()},refresh:function(){var a="";i.search.refresh(),i.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh():(h.wrap.hasClass("has-text-field")||h.wrap.addClass("has-text-field"),document.selection?a=document.selection.createRange().text||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||""),h.text.val(a),wpLink.setDefaultValues()),j?h.url.focus().blur():h.url.focus()[0].select(),i.recent.ul.children().length||i.recent.ajax(),g=h.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(a){var b=c.selection.getContent();if(/]+>[^<]+<\/a>$/.test(b)||-1===b.indexOf("href=")))return!1;if(a){var d,e=a.childNodes;if(0===e.length)return!1;for(d=e.length-1;d>=0;d--)if(3!=e[d].nodeType)return!1}return!0},mceRefresh:function(){var a,b=c.selection.getNode(),d=c.dom.getParent(b,"a[href]"),e=this.hasSelectedText(d);d?(a=d.innerText||d.textContent,h.url.val(c.dom.getAttrib(d,"href")),h.openInNewTab.prop("checked","_blank"===c.dom.getAttrib(d,"target")),h.submit.val(wpLinkL10n.update)):(a=c.selection.getContent({format:"text"}),this.setDefaultValues()),e?(h.text.val(a||""),h.wrap.addClass("has-text-field")):(h.text.val(""),h.wrap.removeClass("has-text-field"))},close:function(){a(document.body).removeClass("modal-open"),wpLink.isMCE()?c.focus():(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select())),h.backdrop.hide(),h.wrap.hide(),g=!1,a(document).trigger("wplink-close",h.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:a.trim(h.url.val()),target:h.openInNewTab.prop("checked")?"_blank":""}},buildHtml:function(a){var b='"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,b,c,d,e,f,g,i=wpLink.textarea;i&&(a=wpLink.getAttrs(),b=h.text.val(),a.href&&(c=wpLink.buildHtml(a),document.selection&&wpLink.range?(i.focus(),wpLink.range.text=c+(b||wpLink.range.text)+"",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof i.selectionStart&&(d=i.selectionStart,e=i.selectionEnd,g=b||i.value.substring(d,e),c=c+g+"",f=d+c.length,d!==e||g||(f-=4),i.value=i.value.substring(0,d)+c+i.value.substring(e,i.value.length),i.selectionStart=i.selectionEnd=f),wpLink.close(),i.focus()))},mceUpdate:function(){var a,d,e=wpLink.getAttrs();return wpLink.close(),c.focus(),tinymce.isIE&&c.selection.moveToBookmark(c.windowManager.bookmark),e.href?(a=b(),h.wrap.hasClass("has-text-field")&&(d=h.text.val()||e.href),a?(d&&("innerText"in a?a.innerText=d:a.textContent=d),c.dom.setAttribs(a,e)):d?c.selection.setNode(c.dom.create("a",e,d)):c.execCommand("mceInsertLink",!1,e),void c.nodeChanged()):void c.execCommand("unlink")},updateFields:function(a,b){h.url.val(b.children(".item-permalink").val())},setDefaultValues:function(){var a,b=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,d=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i;this.isMCE()?a=c.selection.getContent():document.selection&&wpLink.range?a=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)),a&&b.test(a)?h.url.val("mailto:"+a):a&&d.test(a)?h.url.val(a.replace(/&|�?38;/gi,"&")):h.url.val(""),h.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var b,c=a(this),d=c.val();if(d.length>2){if(i.recent.hide(),i.search.show(),wpLink.lastSearch==d)return;wpLink.lastSearch=d,b=c.parent().find(".spinner").addClass("is-active"),i.search.change(d),i.search.ajax(function(){b.removeClass("is-active")})}else i.search.hide(),i.recent.show()},next:function(){i.search.next(),i.recent.next()},prev:function(){i.search.prev(),i.recent.prev()},keydown:function(b){var c,d,e=a.ui.keyCode;e.ESCAPE===b.keyCode?(wpLink.close(),b.stopImmediatePropagation()):e.TAB===b.keyCode&&(d=b.target.id,"wp-link-submit"!==d||b.shiftKey?"wp-link-close"===d&&b.shiftKey&&(h.submit.focus(),b.preventDefault()):(h.close.focus(),b.preventDefault())),(b.keyCode===e.UP||b.keyCode===e.DOWN)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(c=b.keyCode===e.UP?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[c](),wpLink.keyInterval=setInterval(wpLink[c],wpLink.keySensitivity),b.preventDefault())},keyup:function(b){var c=a.ui.keyCode;(b.which===c.UP||b.which===c.DOWN)&&(clearInterval(wpLink.keyInterval),b.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a},toggleInternalLinking:function(a){var b=h.wrap.hasClass("search-panel-visible");h.wrap.toggleClass("search-panel-visible",!b),setUserSetting("wplink",b?"0":"1"),h[b?"url":"search"].focus(),a.preventDefault()}},e=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(e.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(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),0>e?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new f(a),this.element.scrollTop(0))},process:function(b,c){var d="",e=!0,f="",g=1==c.page;b?a.each(b,function(){f=e?"alternate":"",f+=this.title?"":" no-title",d+=f?'

  • ':"
  • ",d+='',d+='',d+=this.title?this.title:wpLinkL10n.noTitle,d+=''+this.info+"
  • ",e=!e}):g&&(d+='
  • '+wpLinkL10n.noMatchesFound+"
  • "),this.ul[g?"html":"append"](d)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c]+>[^<]+<\/a>$/.test(b)||-1===b.indexOf("href=")))return!1;if(a){var d,e=a.childNodes;if(0===e.length)return!1;for(d=e.length-1;d>=0;d--)if(3!=e[d].nodeType)return!1}return!0},mceRefresh:function(){var a,b=c.selection.getNode(),d=c.dom.getParent(b,"a[href]"),e=this.hasSelectedText(d);d?(a=d.innerText||d.textContent,h.url.val(c.dom.getAttrib(d,"href")),h.openInNewTab.prop("checked","_blank"===c.dom.getAttrib(d,"target")),h.submit.val(wpLinkL10n.update)):(a=c.selection.getContent({format:"text"}),this.setDefaultValues()),e?(h.text.val(a||""),h.wrap.addClass("has-text-field")):(h.text.val(""),h.wrap.removeClass("has-text-field"))},close:function(){a(document.body).removeClass("modal-open"),wpLink.isMCE()?c.focus():(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select())),h.backdrop.hide(),h.wrap.hide(),g=!1,a(document).trigger("wplink-close",h.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:a.trim(h.url.val()),target:h.openInNewTab.prop("checked")?"_blank":""}},buildHtml:function(a){var b='"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,b,c,d,e,f,g,i=wpLink.textarea;if(i){a=wpLink.getAttrs(),b=h.text.val();var j=document.createElement("a");j.href=a.href,("javascript:"===j.protocol||"data:"===j.protocol)&&(a.href=""),a.href&&(c=wpLink.buildHtml(a),document.selection&&wpLink.range?(i.focus(),wpLink.range.text=c+(b||wpLink.range.text)+"",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof i.selectionStart&&(d=i.selectionStart,e=i.selectionEnd,g=b||i.value.substring(d,e),c=c+g+"",f=d+c.length,d!==e||g||(f-=4),i.value=i.value.substring(0,d)+c+i.value.substring(e,i.value.length),i.selectionStart=i.selectionEnd=f),wpLink.close(),i.focus())}},mceUpdate:function(){var a,d,e=wpLink.getAttrs();wpLink.close(),c.focus(),tinymce.isIE&&c.selection.moveToBookmark(c.windowManager.bookmark);var f=document.createElement("a");return f.href=e.href,("javascript:"===f.protocol||"data:"===f.protocol)&&(e.href=""),e.href?(a=b(),h.wrap.hasClass("has-text-field")&&(d=h.text.val()||e.href),a?(d&&("innerText"in a?a.innerText=d:a.textContent=d),c.dom.setAttribs(a,e)):d?c.selection.setNode(c.dom.create("a",e,d)):c.execCommand("mceInsertLink",!1,e),void c.nodeChanged()):void c.execCommand("unlink")},updateFields:function(a,b){h.url.val(b.children(".item-permalink").val())},setDefaultValues:function(){var a,b=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,d=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i;this.isMCE()?a=c.selection.getContent():document.selection&&wpLink.range?a=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)),a&&b.test(a)?h.url.val("mailto:"+a):a&&d.test(a)?h.url.val(a.replace(/&|�?38;/gi,"&")):h.url.val(""),h.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var b,c=a(this),d=c.val();if(d.length>2){if(i.recent.hide(),i.search.show(),wpLink.lastSearch==d)return;wpLink.lastSearch=d,b=c.parent().find(".spinner").addClass("is-active"),i.search.change(d),i.search.ajax(function(){b.removeClass("is-active")})}else i.search.hide(),i.recent.show()},next:function(){i.search.next(),i.recent.next()},prev:function(){i.search.prev(),i.recent.prev()},keydown:function(b){var c,d,e=a.ui.keyCode;e.ESCAPE===b.keyCode?(wpLink.close(),b.stopImmediatePropagation()):e.TAB===b.keyCode&&(d=b.target.id,"wp-link-submit"!==d||b.shiftKey?"wp-link-close"===d&&b.shiftKey&&(h.submit.focus(),b.preventDefault()):(h.close.focus(),b.preventDefault())),(b.keyCode===e.UP||b.keyCode===e.DOWN)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(c=b.keyCode===e.UP?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[c](),wpLink.keyInterval=setInterval(wpLink[c],wpLink.keySensitivity),b.preventDefault())},keyup:function(b){var c=a.ui.keyCode;(b.which===c.UP||b.which===c.DOWN)&&(clearInterval(wpLink.keyInterval),b.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a},toggleInternalLinking:function(a){var b=h.wrap.hasClass("search-panel-visible");h.wrap.toggleClass("search-panel-visible",!b),setUserSetting("wplink",b?"0":"1"),h[b?"url":"search"].focus(),a.preventDefault()}},e=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(e.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(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),0>e?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new f(a),this.element.scrollTop(0))},process:function(b,c){var d="",e=!0,f="",g=1==c.page;b?a.each(b,function(){f=e?"alternate":"",f+=this.title?"":" no-title",d+=f?'
  • ':"
  • ",d+='',d+='',d+=this.title?this.title:wpLinkL10n.noTitle,d+=''+this.info+"
  • ",e=!e}):g&&(d+='
  • '+wpLinkL10n.noMatchesFound+"
  • "),this.ul[g?"html":"append"](d)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c