/*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function () {
//SRDN
var str = ''; var res = str.split('|');
var str_names = ''; var res_names = str_names.split('|');
CKEDITOR.dialog.add("link", function (g) {
var l = CKEDITOR.plugins.link,
m = function () {
var a = this.getDialog(),
b = a.getContentElement("target", "popupFeatures"),
a = a.getContentElement("target", "linkTargetName"),
k = this.getValue();
if (b && a) switch (b = b.getElement(), b.hide(), a.setValue(""), k) {
case "frame":
a.setLabel(g.lang.link.targetFrameName);
a.getElement().show();
break;
case "popup":
b.show();
a.setLabel(g.lang.link.targetPopupName);
a.getElement().show();
break;
default:
a.setValue(k),
a.getElement().hide()
}
},
f = function (a) {
a.target && this.setValue(a.target[this.id] || "")
},
h = function (a) {
a.advanced && this.setValue(a.advanced[this.id] || "")
},
i = function (a) {
a.target || (a.target = {});
a.target[this.id] = this.getValue() || ""
},
j = function (a) {
a.advanced || (a.advanced = {});
a.advanced[this.id] = this.getValue() || ""
},
c = g.lang.common,
b = g.lang.link,
d;
return {
title: b.title,
minWidth: 350,
minHeight: 230,
contents: [{
id: "info",
label: b.info,
title: b.info,
elements: [{
id: "linkType",
type: "select",
label: b.type,
"default": "url",
items: [[b.toUrl, "url"], [b.toAnchor, "anchor"], [b.toEmail, "email"]],
onChange: function () {
var a = this.getDialog(),
b = ["urlOptions", "anchorOptions", "emailOptions"], // srdn added a value
k = this.getValue(),
e = a.definition.getContents("upload"),
e = e && e.hidden;
"url" == k || "article" == k ? (g.config.linkShowTargetTab && a.showPage("target"), e || a.showPage("upload")) : (a.hidePage("target"), e || a.hidePage("upload"));
for (e = 0; e < b.length; e++) {
var c = a.getContentElement("info", b[e]);
c && (c = c.getElement().getParent().getParent(), b[e] == k + "Options" ? c.show() : c.hide())
}
a.layout()
},
setup: function (a) {
this.setValue(a.type || "url")
},
commit: function (a) {
a.type = this.getValue()
}
},
{
type: "vbox",
id: "urlOptions",
children: [{
type: "vbox",
widths: ["25%", "75%"],
children: [{
id: "article_protocol",
type: "select",
label: " ",
items: [
['-- Choose From articles --', ''],
],
onChange: function () { // srdn
var a = this.getDialog(),
k = this.getValue(),
e = a.definition.getContents("upload"),
e = e && e.hidden;
// a.layout()
},
setup: function (a) {
a.url && this.setValue(a.url.article_protocol || "")
this.elemId = this.getInputElement().getAttribute('id'); // SRDN // Getting the id of the select box
var srdn = this.elemId; // SRDN = assigning it to a global variable
$('#'+this.elemId).multiselect({ // srdn the multiselect plugin
onChange: function(element, checked) {
var selected = $('#'+srdn+' option:selected').val();
$('.cke_dialog_ui_input_text').val(selected);
}
});
},
commit: function (a) {
a.url || (a.url = {});
a.url.article_protocol = this.getValue()
}
},{
id: "protocol",
type: "select",
label: c.protocol,
"default": "http://",
items: [["http://", "http://"], ["https://", "https://"], ["ftp://", "ftp://"], ["news://", "news://"], [b.other, ""]],
setup: function (a) {
a.url && this.setValue(a.url.protocol || "")
},
commit: function (a) {
a.url || (a.url = {});
a.url.protocol = this.getValue()
}
},
{
type: "text",
id: "url",
label: c.url,
required: !0,
onLoad: function () {
this.allowOnChange = !0
},
onKeyUp: function () {
this.allowOnChange = !1;
var a = this.getDialog().getContentElement("info", "protocol"),
b = this.getValue(),
k = /^((javascript:)|[#\/\.\?])/i,
c = /^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
c ? (this.setValue(b.substr(c[0].length)), a.setValue(c[0].toLowerCase())) : k.test(b) && a.setValue("");
this.allowOnChange = !0
},
onChange: function () {
if (this.allowOnChange) this.onKeyUp()
},
validate: function () {
var a = this.getDialog();
return a.getContentElement("info", "linkType") && "url" != a.getValueOf("info", "linkType") ? !0 : !g.config.linkJavaScriptLinksAllowed && /javascript\:/.test(this.getValue()) ? (alert(c.invalidValue), !1) : this.getDialog().fakeObj ? !0 : CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)
},
setup: function (a) {
this.allowOnChange = !1;
a.url && this.setValue(a.url.url);
this.allowOnChange = !0
this.srdn_url_id = this.getInputElement().getAttribute('id'); // SRDN Getting the id of the url text field
},
commit: function (a) {
this.onChange();
a.url || (a.url = {});
a.url.url = this.getValue();
this.allowOnChange = !1
}
}],
setup: function () {
this.getDialog().getContentElement("info", "linkType") || this.getElement().show()
}
},
{
type: "button",
id: "browse",
hidden: "true",
filebrowser: "info:url",
label: c.browseServer
}]
},
{
type: "vbox",
id: "anchorOptions",
width: 260,
align: "center",
padding: 0,
children: [{
type: "fieldset",
id: "selectAnchorText",
label: b.selectAnchor,
setup: function () {
d = l.getEditorAnchors(g);
this.getElement()[d && d.length ? "show": "hide"]()
},
children: [{
type: "hbox",
id: "selectAnchor",
children: [{
type: "select",
id: "anchorName",
"default": "",
label: b.anchorName,
style: "width: 100%;",
items: [[""]],
setup: function (a) {
this.clear();
this.add("");
if (d) for (var b = 0; b < d.length; b++) d[b].name && this.add(d[b].name);
a.anchor && this.setValue(a.anchor.name);
(a = this.getDialog().getContentElement("info", "linkType")) && "email" == a.getValue() && this.focus()
},
commit: function (a) {
a.anchor || (a.anchor = {});
a.anchor.name = this.getValue()
}
},
{
type: "select",
id: "anchorId",
"default": "",
label: b.anchorId,
style: "width: 100%;",
items: [[""]],
setup: function (a) {
this.clear();
this.add("");
if (d) for (var b = 0; b < d.length; b++) d[b].id && this.add(d[b].id);
a.anchor && this.setValue(a.anchor.id)
},
commit: function (a) {
a.anchor || (a.anchor = {});
a.anchor.id = this.getValue()
}
}],
setup: function () {
this.getElement()[d && d.length ? "show": "hide"]()
}
}]
},
{
type: "html",
id: "noAnchors",
style: "text-align: center;",
html: '
' + CKEDITOR.tools.htmlEncode(b.noAnchors) + "
",
focus: !0,
setup: function () {
this.getElement()[d && d.length ? "hide": "show"]()
}
}],
setup: function () {
this.getDialog().getContentElement("info", "linkType") || this.getElement().hide()
}
},
{
type: "vbox",
id: "emailOptions",
padding: 1,
children: [{
type: "text",
id: "emailAddress",
label: b.emailAddress,
required: !0,
validate: function () {
var a = this.getDialog();
return ! a.getContentElement("info", "linkType") || "email" != a.getValueOf("info", "linkType") ? !0 : CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)
},
setup: function (a) {
a.email && this.setValue(a.email.address);
(a = this.getDialog().getContentElement("info", "linkType")) && "email" == a.getValue() && this.select()
},
commit: function (a) {
a.email || (a.email = {});
a.email.address = this.getValue()
}
},
{
type: "text",
id: "emailSubject",
label: b.emailSubject,
setup: function (a) {
a.email && this.setValue(a.email.subject)
},
commit: function (a) {
a.email || (a.email = {});
a.email.subject = this.getValue()
}
},
{
type: "textarea",
id: "emailBody",
label: b.emailBody,
rows: 3,
"default": "",
setup: function (a) {
a.email && this.setValue(a.email.body)
},
commit: function (a) {
a.email || (a.email = {});
a.email.body = this.getValue()
}
}],
setup: function () {
this.getDialog().getContentElement("info", "linkType") || this.getElement().hide()
}
}]
},
{
id: "target",
requiredContent: "a[target]",
label: b.target,
title: b.target,
elements: [{
type: "hbox",
widths: ["50%", "50%"],
children: [{
type: "select",
id: "linkTargetType",
label: c.target,
"default": "notSet",
style: "width : 100%;",
items: [[c.notSet, "notSet"], [b.targetFrame, "frame"], [b.targetPopup, "popup"], [c.targetNew, "_blank"], [c.targetTop, "_top"], [c.targetSelf, "_self"], [c.targetParent, "_parent"]],
onChange: m,
setup: function (a) {
a.target && this.setValue(a.target.type || "notSet");
m.call(this)
},
commit: function (a) {
a.target || (a.target = {});
a.target.type = this.getValue()
}
},
{
type: "text",
id: "linkTargetName",
label: b.targetFrameName,
"default": "",
setup: function (a) {
a.target && this.setValue(a.target.name)
},
commit: function (a) {
a.target || (a.target = {});
a.target.name = this.getValue().replace(/\W/gi, "")
}
}]
},
{
type: "vbox",
width: "100%",
align: "center",
padding: 2,
id: "popupFeatures",
children: [{
type: "fieldset",
label: b.popupFeatures,
children: [{
type: "hbox",
children: [{
type: "checkbox",
id: "resizable",
label: b.popupResizable,
setup: f,
commit: i
},
{
type: "checkbox",
id: "status",
label: b.popupStatusBar,
setup: f,
commit: i
}]
},
{
type: "hbox",
children: [{
type: "checkbox",
id: "location",
label: b.popupLocationBar,
setup: f,
commit: i
},
{
type: "checkbox",
id: "toolbar",
label: b.popupToolbar,
setup: f,
commit: i
}]
},
{
type: "hbox",
children: [{
type: "checkbox",
id: "menubar",
label: b.popupMenuBar,
setup: f,
commit: i
},
{
type: "checkbox",
id: "fullscreen",
label: b.popupFullScreen,
setup: f,
commit: i
}]
},
{
type: "hbox",
children: [{
type: "checkbox",
id: "scrollbars",
label: b.popupScrollBars,
setup: f,
commit: i
},
{
type: "checkbox",
id: "dependent",
label: b.popupDependent,
setup: f,
commit: i
}]
},
{
type: "hbox",
children: [{
type: "text",
widths: ["50%", "50%"],
labelLayout: "horizontal",
label: c.width,
id: "width",
setup: f,
commit: i
},
{
type: "text",
labelLayout: "horizontal",
widths: ["50%", "50%"],
label: b.popupLeft,
id: "left",
setup: f,
commit: i
}]
},
{
type: "hbox",
children: [{
type: "text",
labelLayout: "horizontal",
widths: ["50%", "50%"],
label: c.height,
id: "height",
setup: f,
commit: i
},
{
type: "text",
labelLayout: "horizontal",
label: b.popupTop,
widths: ["50%", "50%"],
id: "top",
setup: f,
commit: i
}]
}]
}]
}]
},
{
id: "upload",
label: b.upload,
title: b.upload,
hidden: !0,
filebrowser: "uploadButton",
elements: [{
type: "file",
id: "upload",
label: c.upload,
style: "height:40px",
size: 29
},
{
type: "fileButton",
id: "uploadButton",
label: c.uploadSubmit,
filebrowser: "info:url",
"for": ["upload", "upload"]
}]
},
{
id: "advanced",
label: b.advanced,
title: b.advanced,
elements: [{
type: "vbox",
padding: 1,
children: [{
type: "hbox",
widths: ["45%", "35%", "20%"],
children: [{
type: "text",
id: "advId",
requiredContent: "a[id]",
label: b.id,
setup: h,
commit: j
},
{
type: "select",
id: "advLangDir",
requiredContent: "a[dir]",
label: b.langDir,
"default": "",
style: "width:110px",
items: [[c.notSet, ""], [b.langDirLTR, "ltr"], [b.langDirRTL, "rtl"]],
setup: h,
commit: j
},
{
type: "text",
id: "advAccessKey",
requiredContent: "a[accesskey]",
width: "80px",
label: b.acccessKey,
maxLength: 1,
setup: h,
commit: j
}]
},
{
type: "hbox",
widths: ["45%", "35%", "20%"],
children: [{
type: "text",
label: b.name,
id: "advName",
requiredContent: "a[name]",
setup: h,
commit: j
},
{
type: "text",
label: b.langCode,
id: "advLangCode",
requiredContent: "a[lang]",
width: "110px",
"default": "",
setup: h,
commit: j
},
{
type: "text",
label: b.tabIndex,
id: "advTabIndex",
requiredContent: "a[tabindex]",
width: "80px",
maxLength: 5,
setup: h,
commit: j
}]
}]
},
{
type: "vbox",
padding: 1,
children: [{
type: "hbox",
widths: ["45%", "55%"],
children: [{
type: "text",
label: b.advisoryTitle,
requiredContent: "a[title]",
"default": "",
id: "advTitle",
setup: h,
commit: j
},
{
type: "text",
label: b.advisoryContentType,
requiredContent: "a[type]",
"default": "",
id: "advContentType",
setup: h,
commit: j
}]
},
{
type: "hbox",
widths: ["45%", "55%"],
children: [{
type: "text",
label: b.cssClasses,
requiredContent: "a(cke-xyz)",
"default": "",
id: "advCSSClasses",
setup: h,
commit: j
},
{
type: "text",
label: b.charset,
requiredContent: "a[charset]",
"default": "",
id: "advCharset",
setup: h,
commit: j
}]
},
{
type: "hbox",
widths: ["45%", "55%"],
children: [{
type: "text",
label: b.rel,
requiredContent: "a[rel]",
"default": "",
id: "advRel",
setup: h,
commit: j
},
{
type: "text",
label: b.styles,
requiredContent: "a{cke-xyz}",
"default": "",
id: "advStyles",
validate: CKEDITOR.dialog.validate.inlineStyle(g.lang.common.invalidInlineStyle),
setup: h,
commit: j
}]
}]
}]
}],
onShow: function () {
var a = this.getParentEditor(),
b = a.getSelection(),
c = null;
(c = l.getSelectedLink(a)) && c.hasAttribute("href") ? b.getSelectedElement() || b.selectElement(c) : c = null;
a = l.parseLinkAttributes(a, c);
this._.selectedElement = c;
this.setupContent(a)
},
onOk: function () {
var a = {};
this.commitContent(a);
var b = g.getSelection(),
c = l.getLinkAttributes(g, a);
if (this._.selectedElement) {
var e = this._.selectedElement,
d = e.data("cke-saved-href"),
f = e.getHtml();
e.setAttributes(c.set);
e.removeAttributes(c.removed);
if (d == f || "email" == a.type && -1 != f.indexOf("@")) e.setHtml("email" == a.type ? a.email.address: c.set["data-cke-saved-href"]),
b.selectElement(e);
delete this._.selectedElement
} else b = b.getRanges()[0],
b.collapsed && (a = new CKEDITOR.dom.text("email" == a.type ? a.email.address: c.set["data-cke-saved-href"], g.document), b.insertNode(a), b.selectNodeContents(a)),
c = new CKEDITOR.style({
element: "a",
attributes: c.set
}),
c.type = CKEDITOR.STYLE_INLINE,
c.applyToRange(b, g),
b.select()
},
onLoad: function () {
g.config.linkShowAdvancedTab || this.hidePage("advanced");
g.config.linkShowTargetTab || this.hidePage("target")
},
onFocus: function () {
var a = this.getContentElement("info", "linkType");
a && "url" == a.getValue() && (a = this.getContentElement("info", "url"), a.select())
}
}
})
})();