This commit is contained in:
Sacha Greif 2016-07-22 14:44:54 +09:00
commit 189e97f7c4
4 changed files with 17 additions and 8 deletions

View file

@ -62,7 +62,7 @@ class Newsletter extends Component {
renderButton() { renderButton() {
return <Telescope.components.NewsletterButton return <Telescope.components.NewsletterButton
successCallback={() => this.successCallbackSubscription} successCallback={() => this.successCallbackSubscription()}
subscribeText={this.context.intl.formatMessage({id: "newsletter.subscribe"})} subscribeText={this.context.intl.formatMessage({id: "newsletter.subscribe"})}
user={this.context.currentUser} user={this.context.currentUser}
/> />

View file

@ -11,10 +11,10 @@ class NewsletterButton extends Component {
} }
subscriptionAction() { subscriptionAction() {
const action = Users.getSetting(this.context.currentUser, 'newsletter_subscribeToNewsletter', false) ? const action = Users.getSetting(this.props.user, 'newsletter_subscribeToNewsletter', false) ?
'newsletter.removeUser' : 'newsletter.addUser'; 'newsletter.removeUser' : 'newsletter.addUser';
this.context.actions.call(action, this.context.currentUser, (error, result) => { this.context.actions.call(action, this.props.user, (error, result) => {
if (error) { if (error) {
console.log(error); console.log(error);
this.context.messages.flash(error.message, "error"); this.context.messages.flash(error.message, "error");
@ -25,7 +25,7 @@ class NewsletterButton extends Component {
} }
render() { render() {
const isSubscribed = Users.getSetting(this.context.currentUser, 'newsletter_subscribeToNewsletter', false); const isSubscribed = Users.getSetting(this.props.user, 'newsletter_subscribeToNewsletter', false);
return ( return (
<Button <Button
@ -40,7 +40,8 @@ class NewsletterButton extends Component {
} }
NewsletterButton.propTypes = { NewsletterButton.propTypes = {
successCallback: React.PropTypes.func.isRequired successCallback: React.PropTypes.func.isRequired,
user: React.PropTypes.object.isRequired,
}; };
NewsletterButton.contextTypes = { NewsletterButton.contextTypes = {

View file

@ -116,6 +116,11 @@ class NovaForm extends Component{
field.group = fieldSchema.group; field.group = fieldSchema.group;
} }
// add document if the control is a React component (cannot access it through the context)
if (typeof fieldSchema.control === "function") {
field.document = this.getDocument();
}
return field; return field;
}); });

View file

@ -1,16 +1,19 @@
import React, { PropTypes, Component } from 'react'; import React, { PropTypes, Component } from 'react';
import { Messages } from 'meteor/nova:core';
const NewsletterSubscribe = ({props}) => { const NewsletterSubscribe = (props, context) => {
return ( return (
<div className="form-group row"> <div className="form-group row">
<label className="control-label col-sm-3">Newsletter</label> <label className="control-label col-sm-3">Newsletter</label>
<div className="col-sm-9"> <div className="col-sm-9">
<Telescope.components.NewsletterButton successCallback={() => Messages.flash("Newsletter subscription updated", "success")}/> <Telescope.components.NewsletterButton user={props.document} successCallback={() => context.messages.flash("Newsletter subscription updated", "success")}/>
</div> </div>
</div> </div>
) )
} }
NewsletterSubscribe.contextTypes = {
messages: React.PropTypes.object,
};
module.exports = NewsletterSubscribe; module.exports = NewsletterSubscribe;
export default NewsletterSubscribe; export default NewsletterSubscribe;