/*
Plugin : Bootstrap Tab
Author : Michael Janea (michaeljanea.com)
Version : 1.5.1
*/
function bootstrapTab_in_array(bootstrapTab_needle, bootstrapTab_haystack) {
for (var i in bootstrapTab_haystack) {
if (bootstrapTab_haystack[i] == bootstrapTab_needle) return true
}
return false
}
function bootstrapTab_escapeHtml(bootstrapTab_text, bootstrapTab_allow_html) {
bootstrapTab_allow_html = bootstrapTab_allow_html || false
var map = {
"<": "<",
">": ">",
"'": "'",
"\r\n": "
",
"\n": "
",
"\r": "
",
}
var bootstrapTab_el = document.createElement("div")
bootstrapTab_el.innerHTML = bootstrapTab_text
for (
var bootstrapTab_i = 0;
bootstrapTab_i < bootstrapTab_el.getElementsByTagName("pre").length;
bootstrapTab_i++
) {
bootstrapTab_el.getElementsByTagName("pre")[bootstrapTab_i].innerHTML =
bootstrapTab_el
.getElementsByTagName("pre")
[bootstrapTab_i].innerHTML.replace(/(\r\n|\n|\r)/gm, "
")
}
bootstrapTab_text = bootstrapTab_el.innerHTML
return bootstrapTab_text
return bootstrapTab_allow_html
? bootstrapTab_text.replace(/[']/g, function (m) {
return map[m]
})
: bootstrapTab_text.replace(/[<'>]/g, function (m) {
return map[m]
})
}
CKEDITOR.plugins.add("bootstrapTab", {
lang: [
"en",
"af",
"sq",
"ar",
"eu",
"bn",
"bs",
"bg",
"ca",
"zh-cn",
"zh",
"hr",
"cs",
"da",
"nl",
"en-au",
"en-ca",
"en-gb",
"eo",
"et",
"fo",
"fi",
"fr",
"fr-ca",
"gl",
"ka",
"de",
"el",
"gu",
"he",
"hi",
"hu",
"is",
"id",
"it",
"ja",
"km",
"ko",
"ku",
"lv",
"lt",
"mk",
"ms",
"mn",
"no",
"nb",
"fa",
"pl",
"pt-br",
"pt",
"ro",
"ru",
"sr",
"sr-latn",
"si",
"sk",
"sl",
"es",
"sv",
"tt",
"th",
"tr",
"ug",
"uk",
"vi",
"cy",
],
requires: "widget",
icons: "bootstrapTab",
init: function (editor) {
editor.widgets.add("BootstrapTab", {
button: editor.lang.bootstrapTab.plugin,
template:
'
",
mask: true,
allowedContent: "div(*)[*];ul(*)[*];li(*)[*];a(*)[*]",
dialog: "bootstrapTabDialog",
upcast: function (element) {
return element.name == "div" && element.attributes.role == "tabpanel"
},
init: function () {
var bootstrapTab_total = 0
for (
var bootstrapTab_i = 0;
bootstrapTab_i < this.element.$.children[0].children.length;
bootstrapTab_i++
) {
for (
var bootstrapTab_j = 0;
bootstrapTab_j <
this.element.$.children[0].children[bootstrapTab_i].childNodes
.length;
bootstrapTab_j++
) {
switch (
this.element.$.children[0].children[bootstrapTab_i].childNodes[
bootstrapTab_j
].nodeName.toLowerCase()
) {
case "li":
if (
this.element.$.children[0].children[
bootstrapTab_i
].childNodes[
bootstrapTab_j
].children[0].nodeName.toLowerCase() == "a"
) {
eval(
"this.setData('bootstrapTab_item" +
bootstrapTab_j +
"', '" +
bootstrapTab_escapeHtml(
this.element.$.children[0].children[bootstrapTab_i]
.childNodes[bootstrapTab_j].firstChild.innerHTML,
false
) +
"')"
)
var bootstrapTab_itemClass = bootstrapTab_in_array(
"active",
this.element.$.children[0].children[
bootstrapTab_i
].childNodes[bootstrapTab_j].className.split(" ")
)
? "bootstrapTab active"
: "bootstrapTab"
bootstrapTab_itemClass =
bootstrapTab_itemClass != null
? bootstrapTab_itemClass
: "bootstrapTab"
eval(
"this.setData('bootstrapTab_itemClass" +
bootstrapTab_j +
"', '" +
bootstrapTab_itemClass +
"')"
)
}
break
case "div":
if (
bootstrapTab_in_array(
"tab-pane",
this.element.$.children[0].children[
bootstrapTab_i
].childNodes[bootstrapTab_j].className.split(" ")
)
) {
eval(
"this.setData('bootstrapTab_content" +
bootstrapTab_j +
"', '" +
bootstrapTab_escapeHtml(
this.element.$.children[0].children[bootstrapTab_i]
.childNodes[bootstrapTab_j].innerHTML,
editor.config.mj_variables_allow_html
) +
"')"
)
var bootstrapTab_contentClass = bootstrapTab_in_array(
"active",
this.element.$.children[0].children[
bootstrapTab_i
].childNodes[bootstrapTab_j].className.split(" ")
)
? "tab-pane active"
: "tab-pane"
eval(
"this.setData('bootstrapTab_contentClass" +
bootstrapTab_j +
"', '" +
bootstrapTab_contentClass +
"')"
)
}
break
}
bootstrapTab_total++
}
}
this.setData("bootstrapTab_total", bootstrapTab_total)
},
data: function () {
var bootstrapTab_d = new Date()
var bootstrapTab_id = bootstrapTab_d.getTime()
var bootstrapTab_item = (bootstrapTab_contents = "")
for (
var bootstrapTab_i = 0;
bootstrapTab_i <= this.data.bootstrapTab_total;
bootstrapTab_i++
) {
eval(
"bootstrapTab_title = this.data.bootstrapTab_item" + bootstrapTab_i
)
bootstrapTab_title =
bootstrapTab_title != undefined ? bootstrapTab_title : ""
eval(
"bootstrapTab_content = this.data.bootstrapTab_content" +
bootstrapTab_i
)
bootstrapTab_content =
bootstrapTab_content != undefined ? bootstrapTab_content : ""
eval(
"bootstrapTab_itemClass = this.data.bootstrapTab_itemClass" +
bootstrapTab_i
)
bootstrapTab_itemClass =
bootstrapTab_itemClass != undefined ? bootstrapTab_itemClass : ""
eval(
"bootstrapTab_contentClass = this.data.bootstrapTab_contentClass" +
bootstrapTab_i
)
bootstrapTab_contentClass =
bootstrapTab_contentClass != undefined
? bootstrapTab_contentClass
: ""
if (bootstrapTab_title) {
if (bootstrapTab_i == 0) var a_class = "active"
else var a_class = ""
bootstrapTab_item +=
' ' +
bootstrapTab_escapeHtml(bootstrapTab_title, false) +
" "
bootstrapTab_contents +=
' ' +
bootstrapTab_escapeHtml(
bootstrapTab_content,
editor.config.mj_variables_allow_html
) +
"
"
}
}
this.element.setAttribute("id", "collapse" + bootstrapTab_id)
this.element.$.innerHTML =
' ' +
bootstrapTab_item +
'
' +
bootstrapTab_contents +
"
"
},
})
CKEDITOR.dialog.add(
"bootstrapTabDialog",
CKEDITOR.plugins.getPath("bootstrapTab") + "dialogs/bootstrapTab.js"
)
CKEDITOR.document.appendStyleSheet(
CKEDITOR.plugins.getPath("bootstrapTab") + "css/style.css"
)
},
})
for (var i in CKEDITOR.instances) {
CKEDITOR.instances[i].ui.addButton("BootstrapTab", {
command: "bootstrapTab",
icon: this.path + "icons/bootstrapTab.png",
})
}