diff -r 000000000000 -r bca7a7e058a3 src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.js Thu Feb 13 11:43:31 2020 +0100 @@ -0,0 +1,262 @@ +/** + * plugin.js + * + * Copyright, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/*global tinymce:true */ + +tinymce.PluginManager.add('template', function(editor) { + var each = tinymce.each; + + function createTemplateList(callback) { + return function() { + var templateList = editor.settings.templates; + + if (typeof templateList == "string") { + tinymce.util.XHR.send({ + url: templateList, + success: function(text) { + callback(tinymce.util.JSON.parse(text)); + } + }); + } else { + callback(templateList); + } + }; + } + + function showDialog(templateList) { + var win, values = [], templateHtml; + + if (!templateList || templateList.length === 0) { + editor.windowManager.alert('No templates defined'); + return; + } + + tinymce.each(templateList, function(template) { + values.push({ + selected: !values.length, + text: template.title, + value: { + url: template.url, + content: template.content, + description: template.description + } + }); + }); + + function onSelectTemplate(e) { + var value = e.control.value(); + + function insertIframeHtml(html) { + if (html.indexOf('') == -1) { + var contentCssLinks = ''; + + tinymce.each(editor.contentCSS, function(url) { + contentCssLinks += ''; + }); + + html = ( + '' + + '' + + '' + + contentCssLinks + + '' + + '' + + html + + '' + + '' + ); + } + + html = replaceTemplateValues(html, 'template_preview_replace_values'); + + var doc = win.find('iframe')[0].getEl().contentWindow.document; + doc.open(); + doc.write(html); + doc.close(); + } + + if (value.url) { + tinymce.util.XHR.send({ + url: value.url, + success: function(html) { + templateHtml = html; + insertIframeHtml(templateHtml); + } + }); + } else { + templateHtml = value.content; + insertIframeHtml(templateHtml); + } + + win.find('#description')[0].text(e.control.value().description); + } + + win = editor.windowManager.open({ + title: 'Insert template', + layout: 'flex', + direction: 'column', + align: 'stretch', + padding: 15, + spacing: 10, + + items: [ + {type: 'form', flex: 0, padding: 0, items: [ + {type: 'container', label: 'Templates', items: { + type: 'listbox', label: 'Templates', name: 'template', values: values, onselect: onSelectTemplate + }} + ]}, + {type: 'label', name: 'description', label: 'Description', text: '\u00a0'}, + {type: 'iframe', flex: 1, border: 1} + ], + + onsubmit: function() { + insertTemplate(false, templateHtml); + }, + + width: editor.getParam('template_popup_width', 600), + height: editor.getParam('template_popup_height', 500) + }); + + win.find('listbox')[0].fire('select'); + } + + function getDateTime(fmt, date) { + var daysShort = "Sun Mon Tue Wed Thu Fri Sat Sun".split(' '); + var daysLong = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(' '); + var monthsShort = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(' '); + var monthsLong = "January February March April May June July August September October November December".split(' '); + + function addZeros(value, len) { + value = "" + value; + + if (value.length < len) { + for (var i = 0; i < (len - value.length); i++) { + value = "0" + value; + } + } + + return value; + } + + date = date || new Date(); + + fmt = fmt.replace("%D", "%m/%d/%Y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + date.getFullYear()); + fmt = fmt.replace("%y", "" + date.getYear()); + fmt = fmt.replace("%m", addZeros(date.getMonth() + 1, 2)); + fmt = fmt.replace("%d", addZeros(date.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(date.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(date.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(date.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((date.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (date.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + editor.translate(monthsLong[date.getMonth()])); + fmt = fmt.replace("%b", "" + editor.translate(monthsShort[date.getMonth()])); + fmt = fmt.replace("%A", "" + editor.translate(daysLong[date.getDay()])); + fmt = fmt.replace("%a", "" + editor.translate(daysShort[date.getDay()])); + fmt = fmt.replace("%%", "%"); + + return fmt; + } + + function replaceVals(e) { + var dom = editor.dom, vl = editor.getParam('template_replace_values'); + + each(dom.select('*', e), function(e) { + each(vl, function(v, k) { + if (dom.hasClass(e, k)) { + if (typeof vl[k] == 'function') { + vl[k](e); + } + } + }); + }); + } + + function replaceTemplateValues(html, templateValuesOptionName) { + each(editor.getParam(templateValuesOptionName), function(v, k) { + if (typeof v != 'function') { + html = html.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v); + } + }); + + return html; + } + + function insertTemplate(ui, html) { + var el, n, dom = editor.dom, sel = editor.selection.getContent(); + + html = replaceTemplateValues(html, 'template_replace_values'); + el = dom.create('div', null, html); + + // Find template element within div + n = dom.select('.mceTmpl', el); + if (n && n.length > 0) { + el = dom.create('div', null); + el.appendChild(n[0].cloneNode(true)); + } + + function hasClass(n, c) { + return new RegExp('\\b' + c + '\\b', 'g').test(n.className); + } + + each(dom.select('*', el), function(n) { + // Replace cdate + if (hasClass(n, editor.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) { + n.innerHTML = getDateTime(editor.getParam("template_cdate_format", editor.getLang("template.cdate_format"))); + } + + // Replace mdate + if (hasClass(n, editor.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) { + n.innerHTML = getDateTime(editor.getParam("template_mdate_format", editor.getLang("template.mdate_format"))); + } + + // Replace selection + if (hasClass(n, editor.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) { + n.innerHTML = sel; + } + }); + + replaceVals(el); + + editor.execCommand('mceInsertContent', false, el.innerHTML); + editor.addVisual(); + } + + editor.addCommand('mceInsertTemplate', insertTemplate); + + editor.addButton('template', { + title: 'Insert template', + onclick: createTemplateList(showDialog) + }); + + editor.addMenuItem('template', { + text: 'Insert template', + onclick: createTemplateList(showDialog), + context: 'insert' + }); + + editor.on('PreProcess', function(o) { + var dom = editor.dom; + + each(dom.select('div', o.node), function(e) { + if (dom.hasClass(e, 'mceTmpl')) { + each(dom.select('*', e), function(e) { + if (dom.hasClass(e, editor.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) { + e.innerHTML = getDateTime(editor.getParam("template_mdate_format", editor.getLang("template.mdate_format"))); + } + }); + + replaceVals(e); + } + }); + }); +}); \ No newline at end of file