import Modal from 'flarum/components/Modal'; import Button from 'flarum/components/Button'; import GroupBadge from 'flarum/components/GroupBadge'; import Group from 'flarum/models/Group'; import extractText from 'flarum/utils/extractText'; /** * The `EditUserModal` component displays a modal dialog with a login form. */ export default class EditUserModal extends Modal { constructor(...args) { super(...args); const user = this.props.user; this.username = m.prop(user.username() || ''); this.email = m.prop(user.email() || ''); this.setPassword = m.prop(false); this.password = m.prop(user.password() || ''); this.groups = {}; app.store.all('groups') .filter(group => [Group.GUEST_ID, Group.MEMBER_ID].indexOf(group.id()) === -1) .forEach(group => this.groups[group.id()] = m.prop(user.groups().indexOf(group) !== -1)); } className() { return 'EditUserModal Modal--small'; } title() { return 'Edit User'; } content() { return (
{this.setPassword() ? ( ) : ''}
{Object.keys(this.groups) .map(id => app.store.getById('groups', id)) .map(group => ( ))}
{Button.component({ className: 'Button Button--primary', type: 'submit', loading: this.loading, children: app.trans('core.forum.edit_user_submit_button') })}
); } onsubmit(e) { e.preventDefault(); this.loading = true; const groups = Object.keys(this.groups) .filter(id => this.groups[id]()) .map(id => app.store.getById('groups', id)); const data = { username: this.username(), email: this.email(), relationships: {groups} }; if (this.setPassword()) { data.password = this.password(); } this.props.user.save(data).then( () => this.hide(), response => { this.loading = false; this.handleErrors(response); } ); } }