1
0
mirror of https://github.com/flarum/core.git synced 2025-08-09 18:07:02 +02:00

update: forum/components/EditUserModal

This commit is contained in:
Alexander Skvortsov
2020-08-10 00:19:33 -04:00
committed by Franz Liedke
parent 0172dfd79c
commit 3e79c3e3ff

View File

@@ -9,22 +9,22 @@ import ItemList from '../../common/utils/ItemList';
* The `EditUserModal` component displays a modal dialog with a login form. * The `EditUserModal` component displays a modal dialog with a login form.
*/ */
export default class EditUserModal extends Modal { export default class EditUserModal extends Modal {
init() { oninit(vnode) {
super.init(); super.oninit(vnode);
const user = this.props.user; const user = this.attrs.user;
this.username = m.prop(user.username() || ''); this.username = m.stream(user.username() || '');
this.email = m.prop(user.email() || ''); this.email = m.stream(user.email() || '');
this.isEmailConfirmed = m.prop(user.isEmailConfirmed() || false); this.isEmailConfirmed = m.stream(user.isEmailConfirmed() || false);
this.setPassword = m.prop(false); this.setPassword = m.stream(false);
this.password = m.prop(user.password() || ''); this.password = m.stream(user.password() || '');
this.groups = {}; this.groups = {};
app.store app.store
.all('groups') .all('groups')
.filter((group) => [Group.GUEST_ID, Group.MEMBER_ID].indexOf(group.id()) === -1) .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))); .forEach((group) => (this.groups[group.id()] = m.stream(user.groups().indexOf(group) !== -1)));
} }
className() { className() {
@@ -55,7 +55,7 @@ export default class EditUserModal extends Modal {
40 40
); );
if (app.session.user !== this.props.user) { if (app.session.user !== this.attrs.user) {
items.add( items.add(
'email', 'email',
<div className="Form-group"> <div className="Form-group">
@@ -65,12 +65,14 @@ export default class EditUserModal extends Modal {
</div> </div>
{!this.isEmailConfirmed() ? ( {!this.isEmailConfirmed() ? (
<div> <div>
{Button.component({ {Button.component(
className: 'Button Button--block', {
children: app.translator.trans('core.forum.edit_user.activate_button'), className: 'Button Button--block',
loading: this.loading, loading: this.loading,
onclick: this.activate.bind(this), onclick: this.activate.bind(this),
})} },
app.translator.trans('core.forum.edit_user.activate_button')
)}
</div> </div>
) : ( ) : (
'' ''
@@ -89,9 +91,9 @@ export default class EditUserModal extends Modal {
type="checkbox" type="checkbox"
onchange={(e) => { onchange={(e) => {
this.setPassword(e.target.checked); this.setPassword(e.target.checked);
m.redraw(true); m.redraw.sync();
if (e.target.checked) this.$('[name=password]').select(); if (e.target.checked) this.$('[name=password]').select();
m.redraw.strategy('none'); e.redraw = false;
}} }}
/> />
{app.translator.trans('core.forum.edit_user.set_password_label')} {app.translator.trans('core.forum.edit_user.set_password_label')}
@@ -125,7 +127,7 @@ export default class EditUserModal extends Modal {
<input <input
type="checkbox" type="checkbox"
bidi={this.groups[group.id()]} bidi={this.groups[group.id()]}
disabled={this.props.user.id() === '1' && group.id() === Group.ADMINISTRATOR_ID} disabled={this.attrs.user.id() === '1' && group.id() === Group.ADMINISTRATOR_ID}
/> />
{GroupBadge.component({ group, label: '' })} {group.nameSingular()} {GroupBadge.component({ group, label: '' })} {group.nameSingular()}
</label> </label>
@@ -138,12 +140,14 @@ export default class EditUserModal extends Modal {
items.add( items.add(
'submit', 'submit',
<div className="Form-group"> <div className="Form-group">
{Button.component({ {Button.component(
className: 'Button Button--primary', {
type: 'submit', className: 'Button Button--primary',
loading: this.loading, type: 'submit',
children: app.translator.trans('core.forum.edit_user.submit_button'), loading: this.loading,
})} },
app.translator.trans('core.forum.edit_user.submit_button')
)}
</div>, </div>,
-10 -10
); );
@@ -157,7 +161,7 @@ export default class EditUserModal extends Modal {
username: this.username(), username: this.username(),
isEmailConfirmed: true, isEmailConfirmed: true,
}; };
this.props.user this.attrs.user
.save(data, { errorHandler: this.onerror.bind(this) }) .save(data, { errorHandler: this.onerror.bind(this) })
.then(() => { .then(() => {
this.isEmailConfirmed(true); this.isEmailConfirmed(true);
@@ -180,7 +184,7 @@ export default class EditUserModal extends Modal {
relationships: { groups }, relationships: { groups },
}; };
if (app.session.user !== this.props.user) { if (app.session.user !== this.attrs.user) {
data.email = this.email(); data.email = this.email();
} }
@@ -196,7 +200,7 @@ export default class EditUserModal extends Modal {
this.loading = true; this.loading = true;
this.props.user this.attrs.user
.save(this.data(), { errorHandler: this.onerror.bind(this) }) .save(this.data(), { errorHandler: this.onerror.bind(this) })
.then(this.hide.bind(this)) .then(this.hide.bind(this))
.catch(() => { .catch(() => {