mirror of
https://github.com/flarum/core.git
synced 2025-07-27 11:40:24 +02:00
Perform general repo maintenance (#37)
* Perform general repo maintenance - Bump deps - Add Prettier - Add `flarum-tsconfig` for typings support * Move webpack config to devDeps * Use organisation Prettier * Add setup for https://github.com/flarum/flarum-tsconfig/pull/2
This commit is contained in:
7175
extensions/suspend/js/package-lock.json
generated
7175
extensions/suspend/js/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,20 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "@flarum/suspend",
|
"name": "@flarum/suspend",
|
||||||
|
"prettier": "@flarum/prettier-config",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"flarum-webpack-config": "0.1.0-beta.10",
|
"webpack": "^4.46.0",
|
||||||
"webpack": "^4.43.0",
|
"webpack-cli": "^4.7.2"
|
||||||
"webpack-cli": "^3.3.11"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "webpack --mode development --watch",
|
"dev": "webpack --mode development --watch",
|
||||||
"build": "webpack --mode production"
|
"build": "webpack --mode production",
|
||||||
|
"format": "prettier --write src"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@flarum/prettier-config": "^1.0.0",
|
||||||
|
"flarum-tsconfig": "^1.0.0",
|
||||||
|
"flarum-webpack-config": "1.0.0",
|
||||||
|
"prettier": "^2.3.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,12 @@
|
|||||||
import app from 'flarum/app';
|
import app from 'flarum/app';
|
||||||
|
|
||||||
app.initializers.add('flarum-suspend', () => {
|
app.initializers.add('flarum-suspend', () => {
|
||||||
app.extensionData
|
app.extensionData.for('flarum-suspend').registerPermission(
|
||||||
.for('flarum-suspend')
|
{
|
||||||
.registerPermission({
|
|
||||||
icon: 'fas fa-ban',
|
icon: 'fas fa-ban',
|
||||||
label: app.translator.trans('flarum-suspend.admin.permissions.suspend_users_label'),
|
label: app.translator.trans('flarum-suspend.admin.permissions.suspend_users_label'),
|
||||||
permission: 'user.suspend'
|
permission: 'user.suspend',
|
||||||
}, 'moderate');
|
},
|
||||||
|
'moderate'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
@@ -27,7 +27,7 @@ export default class SuspendUserModal extends Modal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
title() {
|
title() {
|
||||||
return app.translator.trans('flarum-suspend.forum.suspend_user.title', {user: this.attrs.user});
|
return app.translator.trans('flarum-suspend.forum.suspend_user.title', { user: this.attrs.user });
|
||||||
}
|
}
|
||||||
|
|
||||||
content() {
|
content() {
|
||||||
@@ -38,33 +38,49 @@ export default class SuspendUserModal extends Modal {
|
|||||||
<label>{app.translator.trans('flarum-suspend.forum.suspend_user.status_heading')}</label>
|
<label>{app.translator.trans('flarum-suspend.forum.suspend_user.status_heading')}</label>
|
||||||
<div>
|
<div>
|
||||||
<label className="checkbox">
|
<label className="checkbox">
|
||||||
<input type="radio" name="status" checked={!this.status()} value="" onclick={withAttr('value', this.status)}/>
|
<input type="radio" name="status" checked={!this.status()} value="" onclick={withAttr('value', this.status)} />
|
||||||
{app.translator.trans('flarum-suspend.forum.suspend_user.not_suspended_label')}
|
{app.translator.trans('flarum-suspend.forum.suspend_user.not_suspended_label')}
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label className="checkbox">
|
<label className="checkbox">
|
||||||
<input type="radio" name="status" checked={this.status() === 'indefinitely'} value='indefinitely' onclick={withAttr('value', this.status)}/>
|
<input
|
||||||
|
type="radio"
|
||||||
|
name="status"
|
||||||
|
checked={this.status() === 'indefinitely'}
|
||||||
|
value="indefinitely"
|
||||||
|
onclick={withAttr('value', this.status)}
|
||||||
|
/>
|
||||||
{app.translator.trans('flarum-suspend.forum.suspend_user.indefinitely_label')}
|
{app.translator.trans('flarum-suspend.forum.suspend_user.indefinitely_label')}
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label className="checkbox SuspendUserModal-days">
|
<label className="checkbox SuspendUserModal-days">
|
||||||
<input type="radio" name="status" checked={this.status() === 'limited'} value='limited' onclick={e => {
|
<input
|
||||||
|
type="radio"
|
||||||
|
name="status"
|
||||||
|
checked={this.status() === 'limited'}
|
||||||
|
value="limited"
|
||||||
|
onclick={(e) => {
|
||||||
this.status(e.target.value);
|
this.status(e.target.value);
|
||||||
m.redraw.sync();
|
m.redraw.sync();
|
||||||
this.$('.SuspendUserModal-days-input input').select();
|
this.$('.SuspendUserModal-days-input input').select();
|
||||||
e.redraw = false;
|
e.redraw = false;
|
||||||
}}/>
|
}}
|
||||||
|
/>
|
||||||
{app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_label')}
|
{app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_label')}
|
||||||
{this.status() === 'limited' ? (
|
{this.status() === 'limited' ? (
|
||||||
<div className="SuspendUserModal-days-input">
|
<div className="SuspendUserModal-days-input">
|
||||||
<input type="number"
|
<input
|
||||||
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
value={this.daysRemaining()}
|
value={this.daysRemaining()}
|
||||||
oninput={withAttr('value', this.daysRemaining)}
|
oninput={withAttr('value', this.daysRemaining)}
|
||||||
className="FormControl"/>
|
className="FormControl"
|
||||||
|
/>
|
||||||
{app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_days_text')}
|
{app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_days_text')}
|
||||||
</div>
|
</div>
|
||||||
) : ''}
|
) : (
|
||||||
|
''
|
||||||
|
)}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -98,9 +114,6 @@ export default class SuspendUserModal extends Modal {
|
|||||||
// no default
|
// no default
|
||||||
}
|
}
|
||||||
|
|
||||||
this.attrs.user.save({suspendedUntil}).then(
|
this.attrs.user.save({ suspendedUntil }).then(() => this.hide(), this.loaded.bind(this));
|
||||||
() => this.hide(),
|
|
||||||
this.loaded.bind(this)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,22 +19,31 @@ app.initializers.add('flarum-suspend', () => {
|
|||||||
|
|
||||||
extend(UserControls, 'moderationControls', (items, user) => {
|
extend(UserControls, 'moderationControls', (items, user) => {
|
||||||
if (user.canSuspend()) {
|
if (user.canSuspend()) {
|
||||||
items.add('suspend', Button.component({
|
items.add(
|
||||||
|
'suspend',
|
||||||
|
Button.component(
|
||||||
|
{
|
||||||
icon: 'fas fa-ban',
|
icon: 'fas fa-ban',
|
||||||
onclick: () => app.modal.show(SuspendUserModal, {user})
|
onclick: () => app.modal.show(SuspendUserModal, { user }),
|
||||||
}, app.translator.trans('flarum-suspend.forum.user_controls.suspend_button')));
|
},
|
||||||
|
app.translator.trans('flarum-suspend.forum.user_controls.suspend_button')
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
extend(User.prototype, 'badges', function(items) {
|
extend(User.prototype, 'badges', function (items) {
|
||||||
const until = this.suspendedUntil();
|
const until = this.suspendedUntil();
|
||||||
|
|
||||||
if (new Date() < until) {
|
if (new Date() < until) {
|
||||||
items.add('suspended', Badge.component({
|
items.add(
|
||||||
|
'suspended',
|
||||||
|
Badge.component({
|
||||||
icon: 'fas fa-ban',
|
icon: 'fas fa-ban',
|
||||||
type: 'suspended',
|
type: 'suspended',
|
||||||
label: app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip')
|
label: app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip'),
|
||||||
}));
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
16
extensions/suspend/js/tsconfig.json
Normal file
16
extensions/suspend/js/tsconfig.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
// Use Flarum's tsconfig as a starting point
|
||||||
|
"extends": "flarum-tsconfig",
|
||||||
|
// This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder
|
||||||
|
// and also tells your Typescript server to read core's global typings for
|
||||||
|
// access to `dayjs` and `$` in the global namespace.
|
||||||
|
"include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"],
|
||||||
|
"compilerOptions": {
|
||||||
|
// This will output typings to `dist-typings`
|
||||||
|
"declarationDir": "./dist-typings",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"flarum/*": ["../vendor/flarum/core/js/dist-typings/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user