Hook up editor call to save as template

This commit is contained in:
Tautvidas Sipavičius
2015-09-30 16:06:31 +03:00
parent 2e3b565e8a
commit 4889598387
3 changed files with 49 additions and 4 deletions

View File

@ -43,12 +43,16 @@ define([
}
};
Module.toJSON = function() {
return _.extend({
body: JSON.stringify({
Module.getBody = function() {
return JSON.stringify({
content: App._contentContainer.toJSON(),
globalStyles: App.getGlobalStyles().toJSON(),
}),
});
};
Module.toJSON = function() {
return _.extend({
body: Module.getBody(),
}, App.getNewsletter().toJSON());
};
@ -62,6 +66,7 @@ define([
App.getBlockTypeModel = Module.getBlockTypeModel;
App.getBlockTypeView = Module.getBlockTypeView;
App.toJSON = Module.toJSON;
App.getBody = Module.getBody;
App.getNewsletter = Module.getNewsletter;
Module.newsletter = new Module.NewsletterModel(_.omit(_.clone(options.newsletter), ['body']));

View File

@ -42,6 +42,16 @@ define([
});
};
Module.saveTemplate = function(options) {
return MailPoet.Ajax.post({
endpoint: 'newsletterTemplates',
action: 'save',
data: _.extend(options || {}, {
body: App.getBody(),
}),
});
};
Module.SaveView = Marionette.LayoutView.extend({
getTemplate: function() { return templates.save; },
events: {
@ -94,6 +104,15 @@ define([
templateDescription = this.$('.mailpoet_save_as_template_description').val();
console.log('Saving template with ', templateName, templateDescription);
Module.saveTemplate({
name: templateName,
description: templateDescription,
}).done(function() {
console.log('Template saved', arguments);
}).fail(function() {
// TODO: Handle error messages
console.log('Template save failed', arguments);
});
this.hideOptionContents();
},

View File

@ -94,6 +94,27 @@ define([
view.$('.mailpoet_save_show_options').click();
expect(view.$('.mailpoet_save_options')).to.not.have.$class('mailpoet_hidden');
});
it('triggers template saving when clicked on save as template button', function() {
var mock = sinon.mock({ post: function() {} }).expects('post').once().returns(jQuery.Deferred());
EditorApplication.getBody = sinon.stub();
var module = SaveInjector({
'mailpoet': {
Ajax: {
post: mock,
}
},
'newsletter_editor/App': EditorApplication,
});
var view = new (module.SaveView)();
view.render();
view.$('.mailpoet_save_as_template_name').val('A sample template');
view.$('.mailpoet_save_as_template_description').val('Sample template description');
view.$('.mailpoet_save_as_template').click();
mock.verify();
});
});
});
});