Base for template import

This commit is contained in:
Tautvidas Sipavičius
2015-11-03 16:33:13 +02:00
parent d85f51e9fc
commit f750d2359f

View File

@ -13,6 +13,52 @@ define(
classNames, classNames,
Breadcrumb Breadcrumb
) { ) {
var ImportTemplate = React.createClass({
saveTemplate: function(template) {
MailPoet.Ajax.post({
endpoint: 'newsletterTemplates',
action: 'save',
data: template
}).done(function(response) {
if(response === true) {
this.props.onImport(template);
} else {
response.map(function(error) {
MailPoet.Notice.error(error);
});
}
}.bind(this));
},
handleSubmit: function(e) {
e.preventDefault();
var reader = new FileReader(),
saveTemplate = this.saveTemplate;
reader.onload = function(e) {
saveTemplate(JSON.parse(e.target.result));
}.bind(this);
reader.readAsText(this.refs.templateFile.files[0]);
},
render: function() {
return (
<div>
<h2>Import a template</h2>
<form onSubmit={this.handleSubmit}>
<input type="file" placeholder="Select a .json file to upload" ref="templateFile" />
<p className="submit">
<input
className="button button-primary"
type="submit"
value="Upload" />
</p>
</form>
</div>
);
},
});
var NewsletterTemplates = React.createClass({ var NewsletterTemplates = React.createClass({
mixins: [ mixins: [
Router.History Router.History
@ -93,6 +139,9 @@ define(
this.setState({ loading: false }); this.setState({ loading: false });
} }
}, },
handleTemplateImport: function() {
this.getTemplates();
},
render: function() { render: function() {
var templates = this.state.templates.map(function(template, index) { var templates = this.state.templates.map(function(template, index) {
var deleteLink = ( var deleteLink = (
@ -152,6 +201,8 @@ define(
<ul className={ boxClasses }> <ul className={ boxClasses }>
{ templates } { templates }
</ul> </ul>
<ImportTemplate onImport={this.handleTemplateImport} />
</div> </div>
); );
} }