import Page from 'flarum/components/Page'; import FieldSet from 'flarum/components/FieldSet'; import Button from 'flarum/components/Button'; import Alert from 'flarum/components/Alert'; import saveSettings from 'flarum/utils/saveSettings'; export default class MailPage extends Page { init() { super.init(); this.loading = false; this.fields = [ 'mail_driver', 'mail_host', 'mail_from', 'mail_port', 'mail_username', 'mail_password', 'mail_encryption' ]; this.values = {}; const settings = app.settings; this.fields.forEach(key => this.values[key] = m.prop(settings[key])); this.localeOptions = {}; const locales = app.locales; for (const i in locales) { this.localeOptions[i] = `${locales[i]} (${i})`; } } view() { return (
{FieldSet.component({ label: app.translator.trans('core.admin.email.heading'), className: 'MailPage-MailSettings', children: [
{app.translator.trans('core.admin.email.text')}
,
] })} {Button.component({ type: 'submit', className: 'Button Button--primary', children: app.translator.trans('core.admin.email.submit_button'), loading: this.loading, disabled: !this.changed() })}
); } changed() { return this.fields.some(key => this.values[key]() !== app.settings[key]); } onsubmit(e) { e.preventDefault(); if (this.loading) return; this.loading = true; app.alerts.dismiss(this.successAlert); const settings = {}; this.fields.forEach(key => settings[key] = this.values[key]()); saveSettings(settings) .then(() => { app.alerts.show(this.successAlert = new Alert({type: 'success', children: app.translator.trans('core.admin.basics.saved_message')})); }) .catch(() => {}) .then(() => { this.loading = false; m.redraw(); }); } }