plugin.min.js 4.3 KB

1
  1. tinymce.PluginManager.add("link",function(e){function t(t){return function(){var n=e.settings.link_list;if(typeof n=="string"){tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}})}else{t(n)}}}function n(t){var n={},l=e.selection,i=e.dom,a,r,s;var o,u,f,c,d,x,h,v;function g(e){var t=o.find("#text");if(!t.value()||e.lastControl&&t.value()==e.lastControl.text()){t.value(e.control.text())}o.find("#href").value(e.control.value())}function m(){var n=[{text:"None",value:""}];tinymce.each(t,function(t){n.push({text:t.text||t.title,value:e.convertURL(t.value||t.url,"href"),menu:t.menu})});return n}function p(t){tinymce.each(t,function(t){t.textStyle=function(){return e.formatter.getCssText({inline:"a",classes:[t.value]})}});return t}function y(t,l,i){var a,r=[];tinymce.each(e.settings[t]||i,function(e){var t={text:e.text||e.title,value:e.value};r.push(t);if(n[l]===e.value||!a&&e.selected){a=t}});if(a&&!n[l]){n[l]=a.value;a.selected=true}return r}function b(t){var n=[];tinymce.each(e.dom.select("a:not([href])"),function(e){var l=e.name||e.id;if(l){n.push({text:l,value:"#"+l,selected:t.indexOf("#"+l)!=-1})}});if(n.length){n.unshift({text:"None",value:""});return{name:"anchor",type:"listbox",label:"Anchors",values:n,onselect:g}}}function k(){if(c){c.value(e.convertURL(this.value(),"href"))}if(!s&&n.text.length===0&&u){this.parent().parent().find("#text")[0].value(this.value())}}function w(e){var t=l.getContent();if(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||t.indexOf("href=")==-1)){return false}if(e){var n=e.childNodes,i;if(n.length===0){return false}for(i=n.length-1;i>=0;i--){if(n[i].nodeType!=3){return false}}}return true}a=l.getNode();r=i.getParent(a,"a[href]");u=w();n.text=s=r?r.innerText||r.textContent:l.getContent({format:"text"});n.href=r?i.getAttrib(r,"href"):"";n.target=r?i.getAttrib(r,"target"):e.settings.default_link_target||null;n.rel=r?i.getAttrib(r,"rel"):null;n["class"]=r?i.getAttrib(r,"class"):null;n.title=r?i.getAttrib(r,"title"):"";if(u){f={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){n.text=this.value()}}}if(t){c={type:"listbox",label:"Link list",values:m(),onselect:g,value:e.convertURL(n.href,"href"),onPostRender:function(){c=this}}}if(e.settings.target_list!==false){x={name:"target",type:"listbox",label:"Target",values:y("target_list","target",[{text:"None",value:""},{text:"New window",value:"_blank"}])}}if(e.settings.rel_list){d={name:"rel",type:"listbox",label:"Rel",values:y("rel_list","rel",[{text:"None",value:""}])}}if(e.settings.link_class_list){h={name:"class",type:"listbox",label:"Class",values:p(y("link_class_list","class"))}}if(e.settings.link_title!==false){v={name:"title",type:"textbox",label:"Title",value:n.title}}o=e.windowManager.open({title:"Insert link",data:n,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:true,label:"Url",onchange:k,onkeyup:k},f,v,b(n.href),c,d,x,h],onSubmit:function(t){var a;n=tinymce.extend(n,t.data);a=n.href;function o(t,n){var l=e.selection.getRng();window.setTimeout(function(){e.windowManager.confirm(t,function(t){e.selection.setRng(l);n(t)})},0)}function f(){var t={href:a,target:n.target?n.target:null,rel:n.rel?n.rel:null,class:n["class"]?n["class"]:null,title:n.title?n.title:null};if(r){e.focus();if(u&&n.text!=s){if("innerText"in r){r.innerText=n.text}else{r.textContent=n.text}}i.setAttribs(r,t);l.select(r);e.undoManager.add()}else{if(u){e.insertContent(i.createHTML("a",t,i.encode(n.text)))}else{e.execCommand("mceInsertLink",false,t)}}}if(!a){e.execCommand("unlink");return}if(a.indexOf("@")>0&&a.indexOf("//")==-1&&a.indexOf("mailto:")==-1){o("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(e){if(e){a="mailto:"+a}f()});return}if(/^\s*www\./i.test(a)){o("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(e){if(e){a="http://"+a}f()});return}f()}})}e.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Ctrl+K",onclick:t(n),stateSelector:"a[href]"});e.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"});e.addShortcut("Ctrl+K","",t(n));this.showDialog=n;e.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Ctrl+K",onclick:t(n),stateSelector:"a[href]",context:"insert",prependToContext:true})});