93 lines
2.6 KiB
JavaScript
93 lines
2.6 KiB
JavaScript
|
|
'use strict';
|
|
|
|
define([
|
|
'newsletter_editor/App',
|
|
'backbone.marionette',
|
|
'backbone.supermodel',
|
|
'underscore'
|
|
], function (App, Marionette, SuperModel, _) { // eslint-disable-line func-names
|
|
var Module = {};
|
|
|
|
Module.StylesModel = SuperModel.extend({
|
|
defaults: {
|
|
text: {
|
|
fontColor: '#000000',
|
|
fontFamily: 'Arial',
|
|
fontSize: '16px'
|
|
},
|
|
h1: {
|
|
fontColor: '#111111',
|
|
fontFamily: 'Arial',
|
|
fontSize: '40px'
|
|
},
|
|
h2: {
|
|
fontColor: '#222222',
|
|
fontFamily: 'Tahoma',
|
|
fontSize: '32px'
|
|
},
|
|
h3: {
|
|
fontColor: '#333333',
|
|
fontFamily: 'Verdana',
|
|
fontSize: '24px'
|
|
},
|
|
link: {
|
|
fontColor: '#21759B',
|
|
textDecoration: 'underline'
|
|
},
|
|
wrapper: {
|
|
backgroundColor: '#ffffff'
|
|
},
|
|
body: {
|
|
backgroundColor: '#cccccc'
|
|
}
|
|
},
|
|
initialize: function () { // eslint-disable-line func-names
|
|
this.on('change', function () { App.getChannel().trigger('autoSave'); }); // eslint-disable-line func-names
|
|
}
|
|
});
|
|
|
|
Module.StylesView = Marionette.View.extend({
|
|
getTemplate: function () { return window.templates.styles; }, // eslint-disable-line func-names
|
|
modelEvents: {
|
|
change: 'render'
|
|
},
|
|
serializeData: function () { // eslint-disable-line func-names
|
|
return this.model.toJSON();
|
|
}
|
|
});
|
|
|
|
Module._globalStyles = new SuperModel();
|
|
Module.getGlobalStyles = function () { // eslint-disable-line func-names
|
|
return Module._globalStyles;
|
|
};
|
|
Module.setGlobalStyles = function (options) { // eslint-disable-line func-names
|
|
Module._globalStyles = new Module.StylesModel(options);
|
|
return Module._globalStyles;
|
|
};
|
|
Module.getAvailableStyles = function () { // eslint-disable-line func-names
|
|
return App.getConfig().get('availableStyles');
|
|
};
|
|
|
|
App.on('before:start', function (BeforeStartApp, options) { // eslint-disable-line func-names
|
|
var Application = BeforeStartApp;
|
|
var body;
|
|
var globalStyles;
|
|
// Expose style methods to global application
|
|
Application.getGlobalStyles = Module.getGlobalStyles;
|
|
Application.setGlobalStyles = Module.setGlobalStyles;
|
|
Application.getAvailableStyles = Module.getAvailableStyles;
|
|
|
|
body = options.newsletter.body;
|
|
globalStyles = (_.has(body, 'globalStyles')) ? body.globalStyles : {};
|
|
this.setGlobalStyles(globalStyles);
|
|
});
|
|
|
|
App.on('start', function (StartApp) { // eslint-disable-line func-names
|
|
var stylesView = new Module.StylesView({ model: StartApp.getGlobalStyles() });
|
|
StartApp._appView.showChildView('stylesRegion', stylesView);
|
|
});
|
|
|
|
return Module;
|
|
});
|