--- /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('<html>') == -1) {
+ var contentCssLinks = '';
+
+ tinymce.each(editor.contentCSS, function(url) {
+ contentCssLinks += '<link type="text/css" rel="stylesheet" href="' + editor.documentBaseURI.toAbsolute(url) + '">';
+ });
+
+ html = (
+ '<!DOCTYPE html>' +
+ '<html>' +
+ '<head>' +
+ contentCssLinks +
+ '</head>' +
+ '<body>' +
+ html +
+ '</body>' +
+ '</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