2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.html or http://ckeditor.com/license
6 CKEDITOR
.dialog
.add('link',function(a
){var b
=CKEDITOR
.plugins
.link
,c=function(){var F
=this.getDialog(),G
=F
.getContentElement('target','popupFeatures'),H
=F
.getContentElement('target','linkTargetName'),I
=this.getValue();if(!G
||!H
)return;G
=G
.getElement();G
.hide();H
.setValue('');switch(I
){case 'frame':H
.setLabel(a
.lang
.link
.targetFrameName
);H
.getElement().show();break;case 'popup':G
.show();H
.setLabel(a
.lang
.link
.targetPopupName
);H
.getElement().show();break;default:H
.setValue(I
);H
.getElement().hide();break;}},d=function(){var F
=this.getDialog(),G
=['urlOptions','anchorOptions','emailOptions'],H
=this.getValue(),I
=F
.definition
.getContents('upload'),J
=I
&&I
.hidden
;if(H
=='url'){if(a
.config
.linkShowTargetTab
)F
.showPage('target');if(!J
)F
.showPage('upload');}else{F
.hidePage('target');if(!J
)F
.hidePage('upload');}for(var K
=0;K
<G
.length
;K
++){var L
=F
.getContentElement('info',G
[K
]);if(!L
)continue;L
=L
.getElement().getParent().getParent();if(G
[K
]==H
+'Options')L
.show();else L
.hide();}F
.layout();},e
=/^javascript:/,f
=/^mailto:([^?]+)(?:\?(.+))?$/,g
=/subject=([^;?:@&=$,\/]*)/,h
=/body=([^;?:@&=$,\/]*)/,i
=/^#(.*)$/,j
=/^((?:http|https|ftp|news):\/\/)?(.*)$/,k
=/^(_(?:self|top|parent|blank))$/,l
=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,m
=/^javascript:([^(]+)\(([^)]+)\)$/,n
=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,o
=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,p=function(F
,G
){var H
=G
&&(G
.data('cke-saved-href')||G
.getAttribute('href'))||'',I
,J
,K
,L
,M
={};if(I
=H
.match(e
))if(y
=='encode')H
=H
.replace(l
,function(ae
,af
,ag
){return 'mailto:'+String
.fromCharCode
.apply(String
,af
.split(','))+(ag
&&w(ag
));});else if(y
)H
.replace(m
,function(ae
,af
,ag
){if(af
==z
.name
){M
.type
='email';var ah
=M
.email
={},ai
=/[^,\s]+/g,aj
=/(^')|('$)/g,ak
=ag
.match(ai
),al
=ak
.length
,am
,an
;for(var ao
=0;ao
<al
;ao
++){an
=decodeURIComponent(w(ak
[ao
].replace(aj
,'')));am
=z
.params
[ao
].toLowerCase();ah
[am
]=an
;}ah
.address
=[ah
.name
,ah
.domain
].join('@');}});if(!M
.type
)if(K
=H
.match(i
)){M
.type
='anchor';M
.anchor
={};M
.anchor
.name
=M
.anchor
.id
=K
[1];}else if(J
=H
.match(f
)){var N
=H
.match(g
),O
=H
.match(h
);M
.type
='email';var P
=M
.email
={};P
.address
=J
[1];N
&&(P
.subject
=decodeURIComponent(N
[1]));O
&&(P
.body
=decodeURIComponent(O
[1]));}else if(H
&&(L
=H
.match(j
))){M
.type
='url';M
.url
={};M
.url
.protocol
=L
[1];M
.url
.url
=L
[2];}else M
.type
='url';if(G
){var Q
=G
.getAttribute('target');M
.target
={};M
.adv
={};if(!Q
){var R
=G
.data('cke-pa-onclick')||G
.getAttribute('onclick'),S
=R
&&R
.match(n
);
7 if(S
){M
.target
.type
='popup';M
.target
.name
=S
[1];var T
;while(T
=o
.exec(S
[2])){if((T
[2]=='yes'||T
[2]=='1')&&!(T
[1] in {height
:1,width
:1,top
:1,left
:1}))M
.target
[T
[1]]=true;else if(isFinite(T
[2]))M
.target
[T
[1]]=T
[2];}}}else{var U
=Q
.match(k
);if(U
)M
.target
.type
=M
.target
.name
=Q
;else{M
.target
.type
='frame';M
.target
.name
=Q
;}}var V
=this,W=function(ae
,af
){var ag
=G
.getAttribute(af
);if(ag
!==null)M
.adv
[ae
]=ag
||'';};W('advId','id');W('advLangDir','dir');W('advAccessKey','accessKey');M
.adv
.advName
=G
.data('cke-saved-name')||G
.getAttribute('name')||'';W('advLangCode','lang');W('advTabIndex','tabindex');W('advTitle','title');W('advContentType','type');CKEDITOR
.plugins
.link
.synAnchorSelector
?M
.adv
.advCSSClasses
=C(G
):W('advCSSClasses','class');W('advCharset','charset');W('advStyles','style');W('advRel','rel');}var X
=M
.anchors
=[],Y
;if(CKEDITOR
.plugins
.link
.emptyAnchorFix
){var Z
=F
.document
.getElementsByTag('a');for(i
=0,count
=Z
.count();i
<count
;i
++){Y
=Z
.getItem(i
);if(Y
.data('cke-saved-name')||Y
.hasAttribute('name'))X
.push({name
:Y
.data('cke-saved-name')||Y
.getAttribute('name'),id
:Y
.getAttribute('id')});}}else{var aa
=new CKEDITOR
.dom
.nodeList(F
.document
.$.anchors
);for(var ab
=0,ac
=aa
.count();ab
<ac
;ab
++){Y
=aa
.getItem(ab
);X
[ab
]={name
:Y
.getAttribute('name'),id
:Y
.getAttribute('id')};}}if(CKEDITOR
.plugins
.link
.fakeAnchor
){var ad
=F
.document
.getElementsByTag('img');for(ab
=0,ac
=ad
.count();ab
<ac
;ab
++){if(Y
=CKEDITOR
.plugins
.link
.tryRestoreFakeAnchor(F
,ad
.getItem(ab
)))X
.push({name
:Y
.getAttribute('name'),id
:Y
.getAttribute('id')});}}this._
.selectedElement
=G
;return M
;},q=function(F
,G
){if(G
[F
])this.setValue(G
[F
][this.id
]||'');},r=function(F
){return q
.call(this,'target',F
);},s=function(F
){return q
.call(this,'adv',F
);},t=function(F
,G
){if(!G
[F
])G
[F
]={};G
[F
][this.id
]=this.getValue()||'';},u=function(F
){return t
.call(this,'target',F
);},v=function(F
){return t
.call(this,'adv',F
);};function w(F
){return F
.replace(/\\'/g,"'");};function x(F
){return F
.replace(/'/g,'\\$&');};var y=a.config.emailProtection||'';if(y&&y!='encode'){var z={};y.replace(/^([^(]+)\(([^)]+)\)$/,function(F,G,H){z.name=G;z.params=[];H.replace(/[^,\s
]+/g
,function(I
){z
.params
.push(I
);});});}function A(F
){var G
,H
=z
.name
,I
=z
.params
,J
,K
;G
=[H
,'('];for(var L
=0;L
<I
.length
;L
++){J
=I
[L
].toLowerCase();K
=F
[J
];L
>0&&G
.push(',');G
.push("'",K
?x(encodeURIComponent(F
[J
])):'',"'");}G
.push(')');return G
.join('');};function B(F
){var G
,H
=F
.length
,I
=[];for(var J
=0;J
<H
;J
++){G
=F
.charCodeAt(J
);I
.push(G
);}return 'String.fromCharCode('+I
.join(',')+')';};function C(F
){var G
=F
.getAttribute('class');
8 return G
?G
.replace(/\s*(?:cke_anchor_empty|cke_anchor)(?:\s*$)?/g,''):'';};var D
=a
.lang
.common
,E
=a
.lang
.link
;return{title
:E
.title
,minWidth
:350,minHeight
:230,contents
:[{id
:'info',label
:E
.info
,title
:E
.info
,elements
:[{id
:'linkType',type
:'select',label
:E
.type
,'default':'url',items
:[[E
.toUrl
,'url'],[E
.toAnchor
,'anchor'],[E
.toEmail
,'email']],onChange
:d
,setup:function(F
){if(F
.type
)this.setValue(F
.type
);},commit:function(F
){F
.type
=this.getValue();}},{type
:'vbox',id
:'urlOptions',children
:[{type
:'hbox',widths
:['25%','75%'],children
:[{id
:'protocol',type
:'select',label
:D
.protocol
,'default':'http://',items
:[['http://','http://'],['https://','https://'],['ftp://','ftp://'],['news://','news://'],[E
.other
,'']],setup:function(F
){if(F
.url
)this.setValue(F
.url
.protocol
||'');},commit:function(F
){if(!F
.url
)F
.url
={};F
.url
.protocol
=this.getValue();}},{type
:'text',id
:'url',label
:D
.url
,required
:true,onLoad:function(){this.allowOnChange
=true;},onKeyUp:function(){var K
=this;K
.allowOnChange
=false;var F
=K
.getDialog().getContentElement('info','protocol'),G
=K
.getValue(),H
=/^(http
|https
|ftp
|news
):\/\/(?=.)/i,I
=/^((javascript:)|[#\/\.\?])/i,J
=H
.exec(G
);if(J
){K
.setValue(G
.substr(J
[0].length
));F
.setValue(J
[0].toLowerCase());}else if(I
.test(G
))F
.setValue('');K
.allowOnChange
=true;},onChange:function(){if(this.allowOnChange
)this.onKeyUp();},validate:function(){var F
=this.getDialog();if(F
.getContentElement('info','linkType')&&F
.getValueOf('info','linkType')!='url')return true;if(this.getDialog().fakeObj
)return true;var G
=CKEDITOR
.dialog
.validate
.notEmpty(E
.noUrl
);return G
.apply(this);},setup:function(F
){this.allowOnChange
=false;if(F
.url
)this.setValue(F
.url
.url
);this.allowOnChange
=true;},commit:function(F
){this.onChange();if(!F
.url
)F
.url
={};F
.url
.url
=this.getValue();this.allowOnChange
=false;}}],setup:function(F
){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().show();}},{type
:'button',id
:'browse',hidden
:'true',filebrowser
:'info:url',label
:D
.browseServer
}]},{type
:'vbox',id
:'anchorOptions',width
:260,align
:'center',padding
:0,children
:[{type
:'fieldset',id
:'selectAnchorText',label
:E
.selectAnchor
,setup:function(F
){if(F
.anchors
.length
>0)this.getElement().show();else this.getElement().hide();},children
:[{type
:'hbox',id
:'selectAnchor',children
:[{type
:'select',id
:'anchorName','default':'',label
:E
.anchorName
,style
:'width: 100%;',items
:[['']],setup:function(F
){var I
=this;I
.clear();I
.add('');for(var G
=0;G
<F
.anchors
.length
;G
++){if(F
.anchors
[G
].name
)I
.add(F
.anchors
[G
].name
);}if(F
.anchor
)I
.setValue(F
.anchor
.name
);
9 var H
=I
.getDialog().getContentElement('info','linkType');if(H
&&H
.getValue()=='email')I
.focus();},commit:function(F
){if(!F
.anchor
)F
.anchor
={};F
.anchor
.name
=this.getValue();}},{type
:'select',id
:'anchorId','default':'',label
:E
.anchorId
,style
:'width: 100%;',items
:[['']],setup:function(F
){var H
=this;H
.clear();H
.add('');for(var G
=0;G
<F
.anchors
.length
;G
++){if(F
.anchors
[G
].id
)H
.add(F
.anchors
[G
].id
);}if(F
.anchor
)H
.setValue(F
.anchor
.id
);},commit:function(F
){if(!F
.anchor
)F
.anchor
={};F
.anchor
.id
=this.getValue();}}],setup:function(F
){if(F
.anchors
.length
>0)this.getElement().show();else this.getElement().hide();}}]},{type
:'html',id
:'noAnchors',style
:'text-align: center;',html
:'<div role="label" tabIndex="-1">'+CKEDITOR
.tools
.htmlEncode(E
.noAnchors
)+'</div>',focus
:true,setup:function(F
){if(F
.anchors
.length
<1)this.getElement().show();else this.getElement().hide();}}],setup:function(F
){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}},{type
:'vbox',id
:'emailOptions',padding
:1,children
:[{type
:'text',id
:'emailAddress',label
:E
.emailAddress
,required
:true,validate:function(){var F
=this.getDialog();if(!F
.getContentElement('info','linkType')||F
.getValueOf('info','linkType')!='email')return true;var G
=CKEDITOR
.dialog
.validate
.notEmpty(E
.noEmail
);return G
.apply(this);},setup:function(F
){if(F
.email
)this.setValue(F
.email
.address
);var G
=this.getDialog().getContentElement('info','linkType');if(G
&&G
.getValue()=='email')this.select();},commit:function(F
){if(!F
.email
)F
.email
={};F
.email
.address
=this.getValue();}},{type
:'text',id
:'emailSubject',label
:E
.emailSubject
,setup:function(F
){if(F
.email
)this.setValue(F
.email
.subject
);},commit:function(F
){if(!F
.email
)F
.email
={};F
.email
.subject
=this.getValue();}},{type
:'textarea',id
:'emailBody',label
:E
.emailBody
,rows
:3,'default':'',setup:function(F
){if(F
.email
)this.setValue(F
.email
.body
);},commit:function(F
){if(!F
.email
)F
.email
={};F
.email
.body
=this.getValue();}}],setup:function(F
){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}}]},{id
:'target',label
:E
.target
,title
:E
.target
,elements
:[{type
:'hbox',widths
:['50%','50%'],children
:[{type
:'select',id
:'linkTargetType',label
:D
.target
,'default':'notSet',style
:'width : 100%;',items
:[[D
.notSet
,'notSet'],[E
.targetFrame
,'frame'],[E
.targetPopup
,'popup'],[D
.targetNew
,'_blank'],[D
.targetTop
,'_top'],[D
.targetSelf
,'_self'],[D
.targetParent
,'_parent']],onChange
:c
,setup:function(F
){if(F
.target
)this.setValue(F
.target
.type
||'notSet');c
.call(this);},commit:function(F
){if(!F
.target
)F
.target
={};
10 F
.target
.type
=this.getValue();}},{type
:'text',id
:'linkTargetName',label
:E
.targetFrameName
,'default':'',setup:function(F
){if(F
.target
)this.setValue(F
.target
.name
);},commit:function(F
){if(!F
.target
)F
.target
={};F
.target
.name
=this.getValue().replace(/\W/gi,'');}}]},{type
:'vbox',width
:'100%',align
:'center',padding
:2,id
:'popupFeatures',children
:[{type
:'fieldset',label
:E
.popupFeatures
,children
:[{type
:'hbox',children
:[{type
:'checkbox',id
:'resizable',label
:E
.popupResizable
,setup
:r
,commit
:u
},{type
:'checkbox',id
:'status',label
:E
.popupStatusBar
,setup
:r
,commit
:u
}]},{type
:'hbox',children
:[{type
:'checkbox',id
:'location',label
:E
.popupLocationBar
,setup
:r
,commit
:u
},{type
:'checkbox',id
:'toolbar',label
:E
.popupToolbar
,setup
:r
,commit
:u
}]},{type
:'hbox',children
:[{type
:'checkbox',id
:'menubar',label
:E
.popupMenuBar
,setup
:r
,commit
:u
},{type
:'checkbox',id
:'fullscreen',label
:E
.popupFullScreen
,setup
:r
,commit
:u
}]},{type
:'hbox',children
:[{type
:'checkbox',id
:'scrollbars',label
:E
.popupScrollBars
,setup
:r
,commit
:u
},{type
:'checkbox',id
:'dependent',label
:E
.popupDependent
,setup
:r
,commit
:u
}]},{type
:'hbox',children
:[{type
:'text',widths
:['50%','50%'],labelLayout
:'horizontal',label
:D
.width
,id
:'width',setup
:r
,commit
:u
},{type
:'text',labelLayout
:'horizontal',widths
:['50%','50%'],label
:E
.popupLeft
,id
:'left',setup
:r
,commit
:u
}]},{type
:'hbox',children
:[{type
:'text',labelLayout
:'horizontal',widths
:['50%','50%'],label
:D
.height
,id
:'height',setup
:r
,commit
:u
},{type
:'text',labelLayout
:'horizontal',label
:E
.popupTop
,widths
:['50%','50%'],id
:'top',setup
:r
,commit
:u
}]}]}]}]},{id
:'upload',label
:E
.upload
,title
:E
.upload
,hidden
:true,filebrowser
:'uploadButton',elements
:[{type
:'file',id
:'upload',label
:D
.upload
,style
:'height:40px',size
:29},{type
:'fileButton',id
:'uploadButton',label
:D
.uploadSubmit
,filebrowser
:'info:url','for':['upload','upload']}]},{id
:'advanced',label
:E
.advanced
,title
:E
.advanced
,elements
:[{type
:'vbox',padding
:1,children
:[{type
:'hbox',widths
:['45%','35%','20%'],children
:[{type
:'text',id
:'advId',label
:E
.id
,setup
:s
,commit
:v
},{type
:'select',id
:'advLangDir',label
:E
.langDir
,'default':'',style
:'width:110px',items
:[[D
.notSet
,''],[E
.langDirLTR
,'ltr'],[E
.langDirRTL
,'rtl']],setup
:s
,commit
:v
},{type
:'text',id
:'advAccessKey',width
:'80px',label
:E
.acccessKey
,maxLength
:1,setup
:s
,commit
:v
}]},{type
:'hbox',widths
:['45%','35%','20%'],children
:[{type
:'text',label
:E
.name
,id
:'advName',setup
:s
,commit
:v
},{type
:'text',label
:E
.langCode
,id
:'advLangCode',width
:'110px','default':'',setup
:s
,commit
:v
},{type
:'text',label
:E
.tabIndex
,id
:'advTabIndex',width
:'80px',maxLength
:5,setup
:s
,commit
:v
}]}]},{type
:'vbox',padding
:1,children
:[{type
:'hbox',widths
:['45%','55%'],children
:[{type
:'text',label
:E
.advisoryTitle
,'default':'',id
:'advTitle',setup
:s
,commit
:v
},{type
:'text',label
:E
.advisoryContentType
,'default':'',id
:'advContentType',setup
:s
,commit
:v
}]},{type
:'hbox',widths
:['45%','55%'],children
:[{type
:'text',label
:E
.cssClasses
,'default':'',id
:'advCSSClasses',setup
:s
,commit
:v
},{type
:'text',label
:E
.charset
,'default':'',id
:'advCharset',setup
:s
,commit
:v
}]},{type
:'hbox',widths
:['45%','55%'],children
:[{type
:'text',label
:E
.rel
,'default':'',id
:'advRel',setup
:s
,commit
:v
},{type
:'text',label
:E
.styles
,'default':'',id
:'advStyles',setup
:s
,commit
:v
}]}]}]}],onShow:function(){var F
=this.getParentEditor(),G
=F
.getSelection(),H
=null;
11 if((H
=b
.getSelectedLink(F
))&&H
.hasAttribute('href'))G
.selectElement(H
);else H
=null;this.setupContent(p
.apply(this,[F
,H
]));},onOk:function(){var F
={},G
=[],H
={},I
=this,J
=this.getParentEditor();this.commitContent(H
);switch(H
.type
||'url'){case 'url':var K
=H
.url
&&H
.url
.protocol
!=undefined?H
.url
.protocol
:'http://',L
=H
.url
&&CKEDITOR
.tools
.trim(H
.url
.url
)||'';F
['data-cke-saved-href']=L
.indexOf('/')===0?L
:K
+L
;break;case 'anchor':var M
=H
.anchor
&&H
.anchor
.name
,N
=H
.anchor
&&H
.anchor
.id
;F
['data-cke-saved-href']='#'+(M
||N
||'');break;case 'email':var O
,P
=H
.email
,Q
=P
.address
;switch(y
){case '':case 'encode':var R
=encodeURIComponent(P
.subject
||''),S
=encodeURIComponent(P
.body
||''),T
=[];R
&&T
.push('subject='+R
);S
&&T
.push('body='+S
);T
=T
.length
?'?'+T
.join('&'):'';if(y
=='encode'){O
=["javascript:void(location.href='mailto:'+",B(Q
)];T
&&O
.push("+'",x(T
),"'");O
.push(')');}else O
=['mailto:',Q
,T
];break;default:var U
=Q
.split('@',2);P
.name
=U
[0];P
.domain
=U
[1];O
=['javascript:',A(P
)];}F
['data-cke-saved-href']=O
.join('');break;}if(H
.target
)if(H
.target
.type
=='popup'){var V
=["window.open(this.href, '",H
.target
.name
||'',"', '"],W
=['resizable','status','location','toolbar','menubar','fullscreen','scrollbars','dependent'],X
=W
.length
,Y=function(ai
){if(H
.target
[ai
])W
.push(ai
+'='+H
.target
[ai
]);};for(var Z
=0;Z
<X
;Z
++)W
[Z
]=W
[Z
]+(H
.target
[W
[Z
]]?'=yes':'=no');Y('width');Y('left');Y('height');Y('top');V
.push(W
.join(','),"'); return false;");F
['data-cke-pa-onclick']=V
.join('');G
.push('target');}else{if(H
.target
.type
!='notSet'&&H
.target
.name
)F
.target
=H
.target
.name
;else G
.push('target');G
.push('data-cke-pa-onclick','onclick');}if(H
.adv
){var aa=function(ai
,aj
){var ak
=H
.adv
[ai
];if(ak
)F
[aj
]=ak
;else G
.push(aj
);};aa('advId','id');aa('advLangDir','dir');aa('advAccessKey','accessKey');if(H
.adv
.advName
)F
.name
=F
['data-cke-saved-name']=H
.adv
.advName
;else G
=G
.concat(['data-cke-saved-name','name']);aa('advLangCode','lang');aa('advTabIndex','tabindex');aa('advTitle','title');aa('advContentType','type');aa('advCSSClasses','class');aa('advCharset','charset');aa('advStyles','style');aa('advRel','rel');}F
.href
=F
['data-cke-saved-href'];if(!this._
.selectedElement
){var ab
=J
.getSelection(),ac
=ab
.getRanges(true);if(ac
.length
==1&&ac
[0].collapsed
){var ad
=new CKEDITOR
.dom
.text(H
.type
=='email'?H
.email
.address
:F
['data-cke-saved-href'],J
.document
);ac
[0].insertNode(ad
);ac
[0].selectNodeContents(ad
);ab
.selectRanges(ac
);}var ae
=new CKEDITOR
.style({element
:'a',attributes
:F
});ae
.type
=CKEDITOR
.STYLE_INLINE
;ae
.apply(J
.document
);}else{var af
=this._
.selectedElement
,ag
=af
.data('cke-saved-href'),ah
=af
.getHtml();
12 af
.setAttributes(F
);af
.removeAttributes(G
);if(H
.adv
&&H
.adv
.advName
&&CKEDITOR
.plugins
.link
.synAnchorSelector
)af
.addClass(af
.getChildCount()?'cke_anchor':'cke_anchor_empty');if(ag
==ah
||H
.type
=='email'&&ah
.indexOf('@')!=-1)af
.setHtml(H
.type
=='email'?H
.email
.address
:F
['data-cke-saved-href']);delete this._
.selectedElement
;}},onLoad:function(){if(!a
.config
.linkShowAdvancedTab
)this.hidePage('advanced');if(!a
.config
.linkShowTargetTab
)this.hidePage('target');},onFocus:function(){var F
=this.getContentElement('info','linkType'),G
;if(F
&&F
.getValue()=='url'){G
=this.getContentElement('info','url');G
.select();}}};});