Base for template import
This commit is contained in:
@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user