automizy-email-editor
Version:
Design mobile friendly HTML emails in your application.
972 lines (926 loc) • 240 kB
JavaScript
(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;
});