Files
17168ERP/web/admin/ckeditor/plugins/EzTemplates/dialogs/EzTemplates.js
2025-08-29 01:27:25 +08:00

147 lines
6.1 KiB
JavaScript

/*
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
modified by eztrust, yiming
*/
(function () {
function setHtml(a) {
var r, h;
if (a.id) {
r = "<link href=\"" + a.css + "\" rel=\"stylesheet\" />";
h = "";
$.ajax({
async: false,
dataType: "text",
url: a.htmlsrc,
data: {},
success: function (data) {
h = data;
}
});
r += h;
} else {
r = a.html;
}
return r;
}
CKEDITOR.dialog.add("EzTemplatesDialog", function (c) {
function o(a, b) {
var k = CKEDITOR.dom.element.createFromHtml('<a href="javascript:void(0)" tabIndex="-1" role="option" ><div class="cke_tpl_item"></div></a>'), d = '<table style="width:100%;" class="cke_tpl_preview" role="presentation"><tr>';
a.image && b && (d += '<td class="cke_tpl_preview_img"><img src="' + CKEDITOR.getUrl(b + a.image) + '"' + (CKEDITOR.env.ie6Compat ? ' onload="this.width=this.width"' : "") + ' alt="" title=""></td>');
d += '<td style="white-space:normal;"><span class="cke_tpl_title">' +
a.title + "</span><br/>";
a.description && (d += "<span>" + a.description + "</span>");
k.getFirst().setHtml(d + "</td></tr></table>");
k.on("click", function () {
//ez:get html src
a.html = setHtml(a);
p(a.html);
});
return k
}
function p(a) {
var b = CKEDITOR.dialog.getCurrent();
var element = c.document.createElement('div');
element.setHtml(a);
b.getValueOf("selectTpl", "chkInsertOpt") ? (c.fire("saveSnapshot"), c.setData(a, function () {
b.hide();
var a = c.createRange();
a.moveToElementEditStart(c.editable());
a.select();
setTimeout(function () {
c.fire("saveSnapshot")
}, 0)
})) : (c.insertElement(element), b.hide())
}
function i(a) {
var b = a.data.getTarget(),
c = g.equals(b);
if (c || g.contains(b)) {
var d = a.data.getKeystroke(), f = g.getElementsByTag("a"), e;
if (f) {
if (c)
e = f.getItem(0);
else
switch (d) {
case 40:
e = b.getNext();
break;
case 38:
e = b.getPrevious();
break;
case 13:
case 32:
b.fire("click")
}
e && (e.focus(), a.data.preventDefault())
}
}
}
var h = CKEDITOR.plugins.get("EzTemplates");
CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(h.path + "dialogs/templates.css"));
var g, h = "cke_tpl_list_label_" + CKEDITOR.tools.getNextNumber(), f = c.lang.templates, l = c.config;
return {
title: c.lang.templates.title,
width: 800,
minwidth: CKEDITOR.env.ie ? 440 : 400,
minHeight: 340,
contents:
[{
id: "selectTpl",
label: f.title,
elements: [{
type: "vbox",
padding: 5,
children: [
{
type: 'html',
id: 'kind',
attributes: { 'class': 'my_style' },
onChange: function () {
$.setList($.getList($("#templatesKind option:selected").val()));
loadTemplates();
},
html: '<div class="ck_kindBox">範本分類<select id="templatesKind">' + $.setKinds($.getKind()) + '</select>' + f.selectPromptMsg + '</div>'
},
{ id: "templatesList", type: "html", focus: !0, html: '<div class="cke_tpl_list" tabIndex="-1" role="listbox" aria-labelledby="' + h + '"><div class="cke_tpl_loading"><span></span></div></div><span class="cke_voice_label" id="' + h + '">' + f.options + "</span>" },
{ id: "chkInsertOpt", type: "checkbox", label: f.insertOption, "default": l.templates_replaceContent}
]
}]
}],
buttons: [CKEDITOR.dialog.cancelButton],
onShow: function () {
loadTemplates();
},
onHide: function () {
this._.element.removeListener("keydown", i)
}
}
function loadTemplates() {
var a = CKEDITOR.dialog.getCurrent().getContentElement("selectTpl", "templatesList");
g = a.getElement();
CKEDITOR.loadTemplates(l.templates_files, function () {
var b = (l.templates || "default").split(",");
if (b.length) {
var c = g;
c.setHtml("");
for (var d = 0, h = b.length; d < h; d++)
for (var e = CKEDITOR.getTemplates(b[d]), i = e.imagesPath, e = e.templates, n = e.length, j = 0; j < n; j++) {
var m = o(e[j], i);
m.setAttribute("aria-posinset", j + 1);
m.setAttribute("aria-setsize",
n);
c.append(m)
}
a.focus()
} else
g.setHtml('<div class="cke_tpl_empty"><span>' + f.emptyListMsg + "</span></div>")
});
CKEDITOR.dialog.getCurrent()._.element.on("keydown", i)
}
})
})();