UNPKG

automizy-email-editor

Version:

Design mobile friendly HTML emails in your application.

972 lines (926 loc) 240 kB
(function(){ window.AutomizyEmailEditor = window.$AEE = new function () { var t = this; t.dialogs = {}; t.buttons = {}; t.inputs = {}; t.forms = {}; t.blocks = []; t.settings = {}; t.optione = {}; t.elements = {}; t.d = { version: '1.0.0', defines: {}, values:{}, functions:{}, segments:[], config:{ dir:'.', url:'http://developers.automizy.com/automizyemaileditor' }, status:{ scriptsLength:0, loadedScripts:0, percent:0 } }; t.m = {}; t.default = {}; t.inited = false; t.settingsShowed = false; t.scriptLoaded = function(){}; }(); return $AEE; })(); (function(){ $AEE.runTheFunctions = function(functions, thisParameter, parameters){ var functions = functions || []; var thisParameter = thisParameter || $AEE; var parameters = parameters || []; for(var i = 0; i < functions.length; i++) { functions[i].apply(thisParameter, parameters); } }; })(); (function(){ $AEE.d.functions.readyFunctions = []; $AEE.ready = function(func){ if(typeof func === 'function') { $AEE.d.functions.readyFunctions.push(func); if($AEE.automizyReady){ func.apply($AEE, []); } return $AEE; } $AEE.runTheFunctions($AEE.d.functions.readyFunctions); $AEE.automizyReady = true; }; })(); (function(){ $AEE.ready(function(){ $AEE.settings.systemFieldStart = '[{'; $AEE.settings.systemFieldEnd = '}]'; $AEE.settings.customFieldStart = '{{'; $AEE.settings.customFieldEnd = '}}'; $AEE.settings.fontFamilies = [ ['Arial, Helvetica, sans-serif', 'Arial'], ['Arial Black, Gadget, sans-serif', 'Arial Black'], ['Comic Sans MS, cursive, sans-serif', 'Comic Sans MS'], ['Courier New, Courier, monospace', 'Courier New'], ['Georgia, serif', 'Georgia'], ['Impact, Charcoal, sans-serif', 'Impact'], ['Lucida Console, Monaco, monospace', 'Lucida Console'], ['Lucida Sans Unicode, Lucida Grande, sans-serif', 'Lucida Sans Unicode'], ['Palatino Linotype, Book Antiqua, Palatino, serif', 'Palatino Linotype'], ['Tahoma, Geneva, sans-serif', 'Tahoma'], ['Times New Roman, Times, serif', 'Times New Roman'], ['Trebuchet MS, Helvetica, sans-serif', 'Trebuchet MS'], ['Verdana, Geneva, sans-serif', 'Verdana'] ]; $AEE.settings.niceScroll = { autohidemode: false, cursorcolor: "rgba(0, 0, 0, 0.2)", cursorborder: "none", cursorwidth: "9px" }; $AEE.settings.imgResizable = { ghost: false, aspectRatio: true, start: function (event, ui) { $(this).find("img").css({ opacity: 0.3 }); var $content = ui.element.closest(".aee-block-content-cell"); var maxImgWidth = $content.width(); $(this).resizable("option", "maxWidth", maxImgWidth) }, stop: function (event, ui) { var $content = ui.element.closest(".aee-block-content-cell"); $AEE.setImageSize($content); }, create:function(event, ui){ var $content = $(this).closest(".aee-block-content-cell"); setTimeout(function(){ $AEE.setImageSize($content); }, 10); } }; $AEE.settings.imgGalleryResizable = { ghost: false, aspectRatio: true, start: function (event, ui) { $(this).find("img").css({ opacity: 0.3 }); var $content = ui.element.closest(".aee-block-content-cell"); var maxImgWidth = $content.width(); $(this).resizable("option", "maxWidth", maxImgWidth) }, stop: function (event, ui) { $(this).find("img").css({ opacity: 1 }); } }; tinyMCE.baseURL = $AEE.baseDir() + '/vendor/tinymce';// trailing slash important $AEE.settings.tinymceBlock = { oninit: function (editor) { editor.focus(); }, inline: true, theme: "modern", width: "100%", forced_root_block : "", height: "400px", /*schema: "html5",*/ convert_fonts_to_spans: false, valid_elements: "" + "a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name|rel|rev|shape<circle?default?poly?rect|style|tabindex|title|target|type]," + "abbr[class|dir<ltr?rtl|id|lang|style|title]," + "acronym[class|dir<ltr?rtl|id|id|lang|style|title]," + "address[class|align|dir<ltr?rtl|id|lang|style|title]," + "applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase|height|hspace|id|name|object|style|title|vspace|width]," + "area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref|shape<circle?default?poly?rect|style|tabindex|title|target]," + "b/strong[class|dir<ltr?rtl|id|lang|style|title]," + "base[href|target]," + "basefont[color|face|id|size]," + "bdo[class|dir<ltr?rtl|id|lang|style|title]," + "big[class|dir<ltr?rtl|id|lang|style|title]," + "blockquote[cite|class|dir<ltr?rtl|id|lang|style|title]," + "body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|style|title|text|vlink]," + "br[class|clear<all?left?none?right|id|style|title]," + "button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|style|tabindex|title|type|value]," + "caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|style|title]," + "center[class|dir<ltr?rtl|id|lang|style|title]," + "cite[class|dir<ltr?rtl|id|lang|style|title]," + "code[class|dir<ltr?rtl|id|lang|style|title]," + "col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|style|title|valign<baseline?bottom?middle?top|width]," + "colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|style|title|valign<baseline?bottom?middle?top|width]," + "dd[class|dir<ltr?rtl|id|lang|style|title]," + "del[cite|class|datetime|dir<ltr?rtl|id|lang|style|title]," + "dfn[class|dir<ltr?rtl|id|lang|style|title]," + "dir[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "dl[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "dt[class|dir<ltr?rtl|id|lang|style|title]," //+ "em/i[class|dir<ltr?rtl|id|lang|style|title]," + "fieldset[class|dir<ltr?rtl|id|lang|style|title]," + "font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]," + "form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang|method<get?post|name|style|title|target]," + "frame[class|frameborder|id|longdesc|marginheight|marginwidth|name|noresize<noresize|scrolling<auto?no?yes|src|style|title]," //+ "frameset[class|cols|id|onload|onunload|rows|style|title]," + "h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "head[dir<ltr?rtl|lang|profile]," + "hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|size|style|title|width]," + "html[dir<ltr?rtl|lang|version]," + "i/em[class|dir<ltr?rtl|id|lang|style|title]," //+ "iframe[align<bottom?left?middle?right?top|class|frameborder|height|id|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style|title|width]," + "img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height|hspace|id|ismap<ismap|lang|longdesc|name|src|style|title|usemap|vspace|width]," + "input[accept|accesskey|align<bottom?left?middle?right?top|alt|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang|maxlength|name|readonly<readonly|size|src|style|tabindex|title|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text|usemap|value]," + "ins[cite|class|datetime|dir<ltr?rtl|id|lang|style|title]," + "isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]," + "kbd[class|dir<ltr?rtl|id|lang|style|title]," + "label[accesskey|class|dir<ltr?rtl|for|id|lang|style|title]," + "legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang|style|title]," + "li[class|dir<ltr?rtl|id|lang|style|title|type|value]," + "link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|rel|rev|style|title|target|type]," + "map[class|dir<ltr?rtl|id|lang|name|style|title]," + "menu[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]," + "noframes[class|dir<ltr?rtl|id|lang|style|title]," + "noscript[class|dir<ltr?rtl|id|lang|style|title]," + "object[align<bottom?left?middle?right?top|archive|border|class|classid|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name|standby|style|tabindex|title|type|usemap|vspace|width]," + "ol[class|compact<compact|dir<ltr?rtl|id|lang|start|style|title|type]," + "optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|style|title]," + "option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|selected<selected|style|title|value]," + "p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "param[id|name|type|value|valuetype<DATA?OBJECT?REF]," + "pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|style|title|width]," + "q[cite|class|dir<ltr?rtl|id|lang|style|title]," + "s[class|dir<ltr?rtl|id|lang|onclick|style|title]," + "samp[class|dir<ltr?rtl|id|lang|onclick|style|title]," //+ "script[charset|defer|language|src|type]," + "select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name|size|style|tabindex|title]," + "small[class|dir<ltr?rtl|id|lang|style|title]," + "span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "strike[class|class|dir<ltr?rtl|id|lang|style|title]," //+ "strong/b[class|dir<ltr?rtl|id|lang|style|title]," + "style[dir<ltr?rtl|lang|media|title|type]," + "sub[class|dir<ltr?rtl|id|lang|style|title]," + "sup[class|dir<ltr?rtl|id|lang|style|title]," + "table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class|dir<ltr?rtl|frame|height|id|lang|rules|style|summary|title|width]," + "tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "td[abbr|align<center?char?justify?left?right|axis|background|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|style|title|valign<baseline?bottom?middle?top|width]," + "textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name|readonly<readonly|rows|style|tabindex|title]," + "tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|style|title|valign<baseline?bottom?middle?top|width]," + "thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "title[dir<ltr?rtl|lang]," + "tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class|rowspan|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "tt[class|dir<ltr?rtl|id|lang|style|title]," + "u[class|dir<ltr?rtl|id|lang|style|title]," + "ul[class|compact<compact|dir<ltr?rtl|id|lang|style|title|type]," + "var[class|dir<ltr?rtl|id|lang|style|title]", valid_children: "+body[title|meta],+a[div|span|table|tr|td|th|ul|li|ol|br|a|h1|h2|h3|h4|h5|h6|h7|b|u|i|sup|sub|strong|small]", //skin_url: 'css/tinymce/custom', menubar: false, formats: { bold : {inline : 'b'}, italic : {inline : 'i'}, underline : {inline : 'u'} }, fontsize_formats: "6pt 8pt 10pt 11pt 12pt 13pt 14pt 16pt 18pt 20pt 24pt 28pt 34pt 36pt", plugins: "colorpicker textcolor table link code contextmenu", tools: "inserttable", theme_advanced_text_colors : "FF00FF,FFFF00,00FF00,FF0000,0000FF,000000", link_list: [ { title: $A.translate('Email address'), value: 'mailto:' + $AEE.settings.systemFieldStart + 'emailaddress' + $AEE.settings.systemFieldEnd }, { title: $A.translate('Web version'), value: $AEE.settings.systemFieldStart + 'webversion' + $AEE.settings.systemFieldEnd }, { title: $A.translate('Unsubscribe link'), value: $AEE.settings.systemFieldStart + 'unsubscribelink' + $AEE.settings.systemFieldEnd } ], toolbar: [ "styleselect | undo redo | alignleft aligncenter alignright alignjustify | image | link | customfields systemfields", "bold italic underline | fontselect fontsizeselect | forecolor backcolor | table | code" ], contextmenu: "link inserttable | cell row column deletetable", setup: function (editor) { var hasNodeClass = function(target, className){ return new RegExp('(\\s|^)' + className + '(\\s|$)').test(target.className); }; var getColor = function(e){ var color = '#000000'; for(var i = 0; i < e.parents.length; i++){ if(e.parents[i].style !== 'undefined' && typeof e.parents[i].style.color === 'string' && e.parents[i].style.color.length > 0){ color = e.parents[i].style.color; break; } } return color; }; editor.addButton('jqueryTextColorpicker', { text: 'Text color', icon: 'forecolor', onclick: function() { var color = getColor(editor.selection.getNode()); editor.formatter.apply('jqueryTextColor', {value : 'red'}); } }); editor.addButton('customfields', { type: 'menubutton', text: $A.translate('Custom fields'), icon: false, menu: [ { text: $A.translate('User defined'), menu: $AEE.getTinyMceUserDefinedMenu(editor) }, { text: $A.translate('Built-in'), menu: $AEE.getTinyMceBuiltInMenu(editor) } ] }); editor.on('BeforeSetContent', function(e) { /*fix: link underline*/ if(e.content.substring(0, 3) === '<a '){ if(e.content.indexOf('data-mce-href') < 0){ e.content = $(e.content).attr('style', 'text-decoration:none').wrapInner('<u></u>')[0].outerHTML; } } console.log('BeforeSetContent event', e); }); editor.on('NodeChange', function(e) { console.log('NodeChange event', e); console.log($AEE.rgbStyleToHex(getColor(e))); }); /* editor.on('AddUndo', function(e) { console.log('AddUndo event', e); }); editor.on('BeforeAddUndo', function(e) { console.log('BeforeAddUndo event', e); }); editor.on('BeforeRenderUI', function(e) { console.log('BeforeRenderUI event', e); }); editor.on('GetContent', function(e) { console.log('GetContent event', e); }); editor.on('LoadContent', function(e) { console.log('LoadContent event', e); }); editor.on('NodeChange', function(e) { console.log('NodeChange event', e); }); editor.on('ObjectResizeStart', function(e) { console.log('ObjectResizeStart event', e); }); editor.on('ObjectResized', function(e) { console.log('ObjectResized event', e); }); editor.on('ObjectSelected', function(e) { console.log('ObjectSelected event', e); }); editor.on('PostProcess', function(e) { console.log('PostProcess event', e); }); editor.on('PreInit', function(e) { console.log('PreInit event', e); }); editor.on('PreProcess', function(e) { console.log('PreProcess event', e); }); editor.on('ProgressState', function(e) { console.log('ProgressState event', e); }); editor.on('SaveContent', function(e) { console.log('SaveContent event', e); }); editor.on('SetAttrib', function(e) { console.log('SetAttrib event', e); }); editor.on('activate', function(e) { console.log('activate event', e); }); editor.on('blur', function(e) { console.log('blur event', e); }); editor.on('change', function(e) { console.log('change event', e); }); editor.on('deactivate', function(e) { console.log('deactivate event', e); }); editor.on('focus', function(e) { console.log('focus event', e); }); editor.on('hide', function(e) { console.log('hide event', e); }); editor.on('init', function(e) { console.log('init event', e); }); editor.on('redo', function(e) { console.log('redo event', e); }); editor.on('remove', function(e) { console.log('remove event', e); }); editor.on('hide', function(e) { console.log('hide event', e); }); editor.on('reset', function(e) { console.log('reset event', e); }); editor.on('show', function(e) { console.log('show event', e); }); editor.on('submit', function(e) { console.log('submit event', e); }); editor.on('undo', function(e) { console.log('undo event', e); }); editor.on('ExecCommand', function(e) { console.log('ExecCommand event', e); }); editor.on('BeforeExecCommand', function(e) { console.log('BeforeExecCommand event', e); }); */ } }; $AEE.settings.tinymceHtmlBlock = { oninit: function (editor) { editor.focus(); }, theme: "modern", width: "100%", forced_root_block : "", height: "400px", /*schema: "html5",*/ convert_fonts_to_spans: false, valid_elements: "" + "a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name|rel|rev|shape<circle?default?poly?rect|style|tabindex|title|target|type]," + "abbr[class|dir<ltr?rtl|id|lang|style|title]," + "acronym[class|dir<ltr?rtl|id|id|lang|style|title]," + "address[class|align|dir<ltr?rtl|id|lang|style|title]," + "applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase|height|hspace|id|name|object|style|title|vspace|width]," + "area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref|shape<circle?default?poly?rect|style|tabindex|title|target]," + "b/strong[class|dir<ltr?rtl|id|lang|style|title]," + "base[href|target]," + "basefont[color|face|id|size]," + "bdo[class|dir<ltr?rtl|id|lang|style|title]," + "big[class|dir<ltr?rtl|id|lang|style|title]," + "blockquote[cite|class|dir<ltr?rtl|id|lang|style|title]," + "body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|style|title|text|vlink]," + "br[class|clear<all?left?none?right|id|style|title]," + "button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|style|tabindex|title|type|value]," + "caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|style|title]," + "center[class|dir<ltr?rtl|id|lang|style|title]," + "cite[class|dir<ltr?rtl|id|lang|style|title]," + "code[class|dir<ltr?rtl|id|lang|style|title]," + "col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|style|title|valign<baseline?bottom?middle?top|width]," + "colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|style|title|valign<baseline?bottom?middle?top|width]," + "dd[class|dir<ltr?rtl|id|lang|style|title]," + "del[cite|class|datetime|dir<ltr?rtl|id|lang|style|title]," + "dfn[class|dir<ltr?rtl|id|lang|style|title]," + "dir[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "dl[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "dt[class|dir<ltr?rtl|id|lang|style|title]," //+ "em/i[class|dir<ltr?rtl|id|lang|style|title]," + "fieldset[class|dir<ltr?rtl|id|lang|style|title]," + "font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]," + "form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang|method<get?post|name|style|title|target]," + "frame[class|frameborder|id|longdesc|marginheight|marginwidth|name|noresize<noresize|scrolling<auto?no?yes|src|style|title]," //+ "frameset[class|cols|id|onload|onunload|rows|style|title]," + "h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "head[dir<ltr?rtl|lang|profile]," + "hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|size|style|title|width]," + "html[dir<ltr?rtl|lang|version]," + "i/em[class|dir<ltr?rtl|id|lang|style|title]," //+ "iframe[align<bottom?left?middle?right?top|class|frameborder|height|id|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style|title|width]," + "img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height|hspace|id|ismap<ismap|lang|longdesc|name|src|style|title|usemap|vspace|width]," + "input[accept|accesskey|align<bottom?left?middle?right?top|alt|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang|maxlength|name|readonly<readonly|size|src|style|tabindex|title|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text|usemap|value]," + "ins[cite|class|datetime|dir<ltr?rtl|id|lang|style|title]," + "isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]," + "kbd[class|dir<ltr?rtl|id|lang|style|title]," + "label[accesskey|class|dir<ltr?rtl|for|id|lang|style|title]," + "legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang|style|title]," + "li[class|dir<ltr?rtl|id|lang|style|title|type|value]," + "link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|rel|rev|style|title|target|type]," + "map[class|dir<ltr?rtl|id|lang|name|style|title]," + "menu[class|compact<compact|dir<ltr?rtl|id|lang|style|title]," + "meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]," + "noframes[class|dir<ltr?rtl|id|lang|style|title]," + "noscript[class|dir<ltr?rtl|id|lang|style|title]," + "object[align<bottom?left?middle?right?top|archive|border|class|classid|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name|standby|style|tabindex|title|type|usemap|vspace|width]," + "ol[class|compact<compact|dir<ltr?rtl|id|lang|start|style|title|type]," + "optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|style|title]," + "option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|selected<selected|style|title|value]," + "p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "param[id|name|type|value|valuetype<DATA?OBJECT?REF]," + "pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|style|title|width]," + "q[cite|class|dir<ltr?rtl|id|lang|style|title]," + "s[class|dir<ltr?rtl|id|lang|onclick|style|title]," + "samp[class|dir<ltr?rtl|id|lang|onclick|style|title]," //+ "script[charset|defer|language|src|type]," + "select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name|size|style|tabindex|title]," + "small[class|dir<ltr?rtl|id|lang|style|title]," + "span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|style|title]," + "strike[class|class|dir<ltr?rtl|id|lang|style|title]," //+ "strong/b[class|dir<ltr?rtl|id|lang|style|title]," + "style[dir<ltr?rtl|lang|media|title|type]," + "sub[class|dir<ltr?rtl|id|lang|style|title]," + "sup[class|dir<ltr?rtl|id|lang|style|title]," + "table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class|dir<ltr?rtl|frame|height|id|lang|rules|style|summary|title|width]," + "tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "td[abbr|align<center?char?justify?left?right|axis|background|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|style|title|valign<baseline?bottom?middle?top|width]," + "textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name|readonly<readonly|rows|style|tabindex|title]," + "tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|style|title|valign<baseline?bottom?middle?top|width]," + "thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "title[dir<ltr?rtl|lang]," + "tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class|rowspan|dir<ltr?rtl|id|lang|style|title|valign<baseline?bottom?middle?top]," + "tt[class|dir<ltr?rtl|id|lang|style|title]," + "u[class|dir<ltr?rtl|id|lang|style|title]," + "ul[class|compact<compact|dir<ltr?rtl|id|lang|style|title|type]," + "var[class|dir<ltr?rtl|id|lang|style|title]", valid_children: "+body[title|meta],+a[div|span|table|tr|td|th|ul|li|ol|br|a|h1|h2|h3|h4|h5|h6|h7|b|u|i|sup|sub|strong|small]", //skin_url: 'css/tinymce/custom', menubar: false, formats: { bold : {inline : 'b'}, italic : {inline : 'i'}, underline : {inline : 'u'} }, fontsize_formats: "6pt 8pt 10pt 11pt 12pt 13pt 14pt 16pt 18pt 20pt 24pt 28pt 34pt 36pt", plugins: "colorpicker textcolor table link code contextmenu", tools: "inserttable", theme_advanced_text_colors : "FF00FF,FFFF00,00FF00,FF0000,0000FF,000000", link_list: [ { title: $A.translate('Email address'), value: 'mailto:' + $AEE.settings.systemFieldStart + 'emailaddress' + $AEE.settings.systemFieldEnd }, { title: $A.translate('Web version'), value: $AEE.settings.systemFieldStart + 'webversion' + $AEE.settings.systemFieldEnd }, { title: $A.translate('Unsubscribe link'), value: $AEE.settings.systemFieldStart + 'unsubscribelink' + $AEE.settings.systemFieldEnd } ], toolbar: [ "styleselect | undo redo | alignleft aligncenter alignright alignjustify | image | link | customfields systemfields", "bold italic underline | fontselect fontsizeselect | forecolor backcolor | table | code" ], contextmenu: "link inserttable | cell row column deletetable", setup: function (editor) { var hasNodeClass = function(target, className){ return new RegExp('(\\s|^)' + className + '(\\s|$)').test(target.className); }; var getColor = function(e){ var color = '#000000'; for(var i = 0; i < e.parents.length; i++){ if(e.parents[i].style !== 'undefined' && typeof e.parents[i].style.color === 'string' && e.parents[i].style.color.length > 0){ color = e.parents[i].style.color; break; } } return color; }; editor.addButton('jqueryTextColorpicker', { text: 'Text color', icon: 'forecolor', onclick: function() { var color = getColor(editor.selection.getNode()); editor.formatter.apply('jqueryTextColor', {value : 'red'}); } }); editor.addButton('customfields', { type: 'menubutton', text: $A.translate('Custom fields'), icon: false, menu: [ { text: $A.translate('User defined'), menu: $AEE.getTinyMceUserDefinedMenu(editor) }, { text: $A.translate('Built-in'), menu: $AEE.getTinyMceBuiltInMenu(editor) } ] }); editor.on('BeforeSetContent', function(e) { if(e.content.substring(0, 3) === '<a '){ if(e.content.indexOf('data-mce-href') < 0){ e.content = $(e.content).attr('style', 'text-decoration:none').wrapInner('<u></u>')[0].outerHTML; } } console.log('BeforeSetContent event', e); }); editor.on('NodeChange', function(e) { console.log('NodeChange event', e); console.log($AEE.rgbStyleToHex(getColor(e))); }); } } }) })(); (function(){ $AEE.ready(function(){ $AEE.settings.draggable = { connectToSortable: "#aee-document, .aee-block-drop-zone", cursor: "url(" + $AEE.d.config.dir + "/images/cursors/closedhand.cur), move", cursorAt: {top: -10}, helper: "clone", opacity: "0.5", revert: "invalid", start: function (event, ui) { $AEE.dragging = true; $AEE.elements.$blockListModal.show(); $AEE.elements.$document.css({outline: "2px dashed #98be6d"}).sortable("option", "axis", false); $("<style class='automizy-draggable-stylesheet'>*{ cursor: url(" + $AEE.d.config.dir + "/images/cursors/closedhand.cur), move !important; }</style>").appendTo('body:first'); if($AEE.screenSize()['x'] < 800) { $AEE.settingsShowed = false; $AEE.blocksShowed = false; $AEE.setLayoutByDisplay(); } }, stop: function (event, ui) { $AEE.dragging = false; if(tinymce.activeEditor !== null){ $(tinymce.activeEditor.targetElm).blur(); } $('.automizy-draggable-stylesheet').remove(); $AEE.elements.$document.css({outline: "none"}).sortable("option", "axis", "y"); $AEE.elements.$widget.css("cursor", "auto"); $AEE.elements.$blockListModal.hide(); var $target = $(ui.helper[0]); if ($target.closest('#aee-document').length < 1) { return true; } var $block = $AEE.newBlock(); $AEE.elements.$activeBlock = $block; var blockSettings = $(ui.helper.context).data('block'); $target.replaceWith($block); $AEE.buildBlockListSetDisplay(); $AEE.buildBlockListDoBlock($block, blockSettings); } }; }) })(); (function(){ $AEE.ready(function(){ $AEE.settings.sortable = { handle: '.aee-block-handle', distance: 5, axis: false, cursor: "url(" + $AEE.d.config.dir + "/images/cursors/closedhand.cur), move", cursorAt: {top: -10}, forceHelperSize: true, forcePlaceholderSize: true, opacity: "0.5", placeholder: "aee-ui-state-highlight", tolerance: "pointer", connectWith: "#aee-document, .aee-block-drop-zone", start: function (event, ui) { $AEE.dragging = true; $AEE.elements.$document.sortable("refreshPositions"); $AEE.elements.$blockListModal.show(); console.log('start'); }, stop: function (event, ui) { $AEE.dragging = false; $AEE.elements.$widget.css("cursor", "auto"); $AEE.elements.$blockListModal.hide(); if(ui.item.data('automizy-dropped')) { setTimeout(function () { $AEE.setBlockSettings(ui.item); }, 10); } console.log('stop'); }, deactivate: function (event, ui) { $AEE.elements.$blockListModal.hide(); console.log('deactivate'); }, over: function (event, ui) { console.log('over'); }, receive: function (event, ui) { console.log('receive'); }, activate: function (event, ui) { console.log('activate'); }, beforeStop: function (event, ui) { console.log('beforeStop'); }, change: function (event, ui) { console.log('change'); }, create: function (event, ui) { console.log('create'); }, out: function (event, ui) { console.log('out'); }, remove: function (event, ui) { console.log('remove'); }, sort: function (event, ui) { console.log('sort'); } }; }) })(); (function(){ $AEE.d.functions.layoutReadyFunctions = []; $AEE.layoutReady = function(func){ if(typeof func === 'function') { $AEE.d.functions.layoutReadyFunctions.push(func); if($AEE.automizyLayoutReady){ func.apply($AEE, []); } return $AEE; } $AEE.runTheFunctions($AEE.d.functions.layoutReadyFunctions); $AEE.automizyLayoutReady = true; }; })(); (function(){ $AEE.layoutReady(function(){ var ImagePicker = function (obj) { var t = this; t.d = { $content:$('<div id="automizy-image-picker-content"></div>'), $previewBox:$('<div id="automizy-image-picker-preview-box"></div>'), $previewImageHelper:$('<span id="automizy-image-picker-preview-image-helper"></span>'), $previewImage:$('<img id="automizy-image-picker-preview-image" />'), $controlImageBox:$('<div id="automizy-image-picker-control-box"></div>'), image:false, inputs:{}, buttons:{}, dialogs:{}, forms:{}, img:{ src:'', link:'', alt:'', title:'', align:'center', $elem:false, $img:false }, save:function(){}, delete:function(){} }; t.d.$previewBox.appendTo(t.d.$content); t.d.$previewImageHelper.appendTo(t.d.$previewBox); t.d.$previewImage.appendTo(t.d.$previewBox); t.d.$controlImageBox.appendTo(t.d.$content); t.d.buttons.cancel = $A.newButton({ skin: 'nobox-green', text: $A.translate('Cancel'), float: 'left', click: function () { t.d.dialogs.widget.close(); } }); t.d.buttons.save = $A.newButton({ skin: 'simple-orange', text: $A.translate('Save'), float: 'right', click: function () { t.save(); t.d.dialogs.widget.close(); } }); t.d.buttons.delete = $A.newButton({ text: $A.translate('Delete image'), float: 'right', click: function () { t.delete(); } }); t.d.buttons.cancelGallery = $A.newButton({ skin: 'nobox-green', text: $A.translate('Cancel'), float: 'left', click: function () { t.d.dialogs.gallery.close(); } }); t.d.dialogs.widget = $A.newDialog({ id:'automizy-image-picker', positionY:'30px', content:t.d.$content, buttons:[ t.d.buttons.cancel, t.d.buttons.save, t.d.buttons.delete ] }); t.d.dialogs.gallery = $A.newDialog({ id:'automizy-image-picker-gallery', title:$A.translate('Image gallery'), buttons:[ t.d.buttons.cancelGallery ], open:function(){ $A.ajaxDocumentCover(true); $.ajax({ url: $AA.u.images, type:'GET', dataType: 'json', data:{directory: 'emaileditor'}, headers: {Authorization: 'Bearer ' + $AA.token().get()} }).complete(function(){ $A.ajaxDocumentCover(false); }).done(function(data){ t.d.dialogs.gallery.content().empty(); var $content = $('<div id="automizy-image-picker-gallery-content"></div>'); for(var i = 0; i < data.length; i++){ if(data[i].type !== 'file' || $.inArray(data[i].extension, ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'ico']) <= -1){ continue; } var $box = $('<span class="automizy-image-picker-gallery-element"></span>').data({ src:data[i].url, alt:data[i].alt, title:data[i].title }).click(function(){ var $this = $(this); t.d.img.src = $this.data('src'); t.d.img.alt = $this.data('alt'); t.d.img.title = $this.data('title'); t.d.$previewImage.attr({ src:t.d.img.src }).show(); t.d.inputs.url.val(t.d.img.src); t.d.inputs.alt.val(t.d.img.alt); t.d.inputs.title.val(t.d.img.title); t.d.dialogs.gallery.close(); }); var $helper = $('<span class="automizy-image-picker-gallery-image-helper"></span>'); var $img = $('<img/>').attr({ src:data[i].thumbnailUrl, alt:data[i].alt, title:data[i].title }).data('url', data[i].url).error(function() { var $t = $(this); $t.attr('src', $t.data('url')); }); $box.appendTo($content); $helper.appendTo($box); $img.appendTo($box); } t.d.dialogs.gallery.content($content); }) } }); t.d.inputs.upload = $A.newInput({ type:'file', name:'upload_file', target: t.d.$controlImageBox, accept: ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.ico'], create:function(){ t.d.inputs.upload.data('$automizyTd1').hide(); t.d.inputs.upload.data('automizyButton').width('300px'); } }); t.d.inputs.upload.input().change(function(){ /*if (this.files && this.files[0]) { var reader = new FileReader(); reader.onload = function (e) { t.d.$previewImage.attr('src', e.target.result).show(); }; reader.readAsDataURL(this.files[0]); }*/ }).fileupload({ url: $AA.u.images, dataType: 'json', singleFileUploads: true, formData: {directory: 'emaileditor'}, dropZone: t.d.dialogs.gallery.widget(), beforeSend: function (xhr, data) { var file = data.files[0]; xhr.setRequestHeader('Authorization', 'Bearer ' + $AA.token().get()); t.d.inputs.upload.data('automizyButton').disable(); t.d.inputs.upload.widget().find('input[type="file"]').prop('disabled', true); t.d.inputs.url.disable(); t.d.buttons.gallery.disable(); t.d.buttons.cancel.disable(); t.d.buttons.save.disable(); t.closable(false); }, progressall: function (e, data) { t.d.inputs.upload.data('automizyButton').text(parseInt(data.loaded / data.total * 100, 10) + '%'); }, complete: function () { t.d.inputs.upload.data('automizyButton').enable().text($A.translate('Select an other image from local computer')); t.d.inputs.upload.widget().find('input[type="file"]').prop('disabled', false); t.d.inputs.url.enable(); t.d.buttons.gallery.enable(); t.d.buttons.cancel.enable(); t.d.buttons.save.enable(); t.closable(true); }, error: function () { alert('Something wrong'); }, done: function (e, data) { t.d.img.src = data.result[Object.keys(data.result)[0]].url; t.d.$previewImage.attr({ src:t.d.img.src }).show(); t.d.inputs.url.val(t.d.img.src); } }); t.d.buttons.gallery = $A.newButton({ id:'automizy-image-picker-gallery-button', text:$A.translate('Select image from gallery'), target: t.d.$controlImageBox, width:'300px', click:function(){ t.d.dialogs.gallery.open(); } }); t.d.inputs.url = $A.newInput({ placeholder:$A.translate('Enter the image url here'), target:t.d.$controlImageBox, type:'text', labelWidth: 'auto', breakInput: false, create:function(){ this.input().focus(function(){ var $this = $(this); $this.select(); $this.mouseup(function() { $this.unbind("mouseup"); return false; });