Vulcan/packages/nova-base-components/lib/users/UsersMenu.jsx

78 lines
2.6 KiB
React
Raw Normal View History

2016-03-25 12:42:25 +09:00
import React, { PropTypes, Component } from 'react';
2016-06-09 17:42:20 +09:00
import { FormattedMessage } from 'react-intl';
2016-04-02 17:03:03 +02:00
import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/std:accounts-ui';
2016-04-15 11:11:13 +09:00
import { Modal, Dropdown, MenuItem } from 'react-bootstrap';
2016-05-22 15:23:30 +09:00
import { ContextPasser } from "meteor/nova:core";
2016-06-14 10:01:44 +09:00
import { LinkContainer } from 'react-router-bootstrap';
2016-04-15 11:11:13 +09:00
class UsersMenu extends Component {
2016-04-15 11:11:13 +09:00
constructor() {
super();
this.openModal = this.openModal.bind(this);
this.closeModal = this.closeModal.bind(this);
this.state = {modalOpen: false};
}
openModal() {
this.setState({modalOpen: true});
}
closeModal() {
this.setState({modalOpen: false});
}
renderSettingsModal() {
const SettingsEditForm = Telescope.components.SettingsEditForm;
return (
<Modal show={this.state.modalOpen} onHide={this.closeModal}>
<Modal.Header closeButton>
2016-06-09 17:42:20 +09:00
<Modal.Title><FormattedMessage id="settings.edit"/></Modal.Title>
2016-04-15 11:11:13 +09:00
</Modal.Header>
<Modal.Body>
<ContextPasser currentUser={this.props.user} closeCallback={this.closeModal}>
<SettingsEditForm/>
</ContextPasser>
</Modal.Body>
</Modal>
)
}
render() {
const user = this.props.user;
return (
<div className="users-menu">
<Dropdown id="user-dropdown">
2016-04-15 11:11:13 +09:00
<Dropdown.Toggle>
<Telescope.components.UsersAvatar size="small" user={user} link={false} />
2016-04-15 11:11:13 +09:00
<div>{Users.getDisplayName(user)}</div>
</Dropdown.Toggle>
<Dropdown.Menu>
2016-06-14 10:01:44 +09:00
<LinkContainer to={`/users/${user.telescope.slug}`} /*to={{name: "users.single", params: {slug: user.telescope.slug}}}*/>
<MenuItem className="dropdown-item" eventKey="1"><FormattedMessage id="users.profile"/></MenuItem>
</LinkContainer>
<LinkContainer to={`/account`} /*to={{name: "account"}}*/>
<MenuItem className="dropdown-item" eventKey="2"><FormattedMessage id="users.edit_account"/></MenuItem>
</LinkContainer>
2016-06-09 17:42:20 +09:00
{Users.is.admin(user) ? <MenuItem className="dropdown-item" eventKey="3" onClick={this.openModal}><FormattedMessage id="settings"/></MenuItem> : null}
<MenuItem className="dropdown-item" eventKey="4" onClick={() => Meteor.logout(Accounts.ui._options.onSignedOutHook())}><FormattedMessage id="users.log_out"/></MenuItem>
2016-04-15 11:11:13 +09:00
</Dropdown.Menu>
</Dropdown>
{this.renderSettingsModal()}
</div>
)
}
}
UsersMenu.propTypes = {
2016-04-15 11:11:13 +09:00
user: React.PropTypes.object
2016-03-25 12:42:25 +09:00
}
module.exports = UsersMenu;
export default UsersMenu;