1
0
forked from mirror/misskey
This commit is contained in:
syuilo 2019-02-06 15:24:59 +09:00
parent 71ba72e796
commit 20ee57931f
No known key found for this signature in database
GPG Key ID: BDC4C49D06AB9D69
5 changed files with 76 additions and 2 deletions

View File

@ -1129,6 +1129,7 @@ admin/views/index.vue:
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
abuse: "スパム報告" abuse: "スパム報告"
queue: "ジョブキュー"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue: admin/views/dashboard.vue:
@ -1140,6 +1141,10 @@ admin/views/dashboard.vue:
this-instance: "このインスタンス" this-instance: "このインスタンス"
federated: "連合" federated: "連合"
admin/views/queue.vue:
operation: "操作"
remove-all-jobs: "すべてのジョブをクリア"
admin/views/abuse.vue: admin/views/abuse.vue:
title: "スパム報告" title: "スパム報告"
target: "対象" target: "対象"

View File

@ -20,6 +20,7 @@
<ul> <ul>
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li> <li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li> <li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
<li @click="nav('queue')" :class="{ active: page == 'queue' }"><fa :icon="faTasks" fixed-width/>{{ $t('queue') }}</li>
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li> <li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li> <li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
<li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li>
@ -40,6 +41,7 @@
<div class="page"> <div class="page">
<div v-if="page == 'dashboard'"><x-dashboard/></div> <div v-if="page == 'dashboard'"><x-dashboard/></div>
<div v-if="page == 'instance'"><x-instance/></div> <div v-if="page == 'instance'"><x-instance/></div>
<div v-if="page == 'queue'"><x-queue/></div>
<div v-if="page == 'moderators'"><x-moderators/></div> <div v-if="page == 'moderators'"><x-moderators/></div>
<div v-if="page == 'users'"><x-users/></div> <div v-if="page == 'users'"><x-users/></div>
<div v-if="page == 'emoji'"><x-emoji/></div> <div v-if="page == 'emoji'"><x-emoji/></div>
@ -58,6 +60,7 @@ import i18n from '../../i18n';
import { version } from '../../config'; import { version } from '../../config';
import XDashboard from "./dashboard.vue"; import XDashboard from "./dashboard.vue";
import XInstance from "./instance.vue"; import XInstance from "./instance.vue";
import XQueue from "./queue.vue";
import XModerators from "./moderators.vue"; import XModerators from "./moderators.vue";
import XEmoji from "./emoji.vue"; import XEmoji from "./emoji.vue";
import XAnnouncements from "./announcements.vue"; import XAnnouncements from "./announcements.vue";
@ -65,7 +68,7 @@ import XHashtags from "./hashtags.vue";
import XUsers from "./users.vue"; import XUsers from "./users.vue";
import XDrive from "./drive.vue"; import XDrive from "./drive.vue";
import XAbuse from "./abuse.vue"; import XAbuse from "./abuse.vue";
import { faHeadset, faArrowLeft, faShareAlt, faExclamationCircle } from '@fortawesome/free-solid-svg-icons'; import { faHeadset, faArrowLeft, faShareAlt, faExclamationCircle, faTasks } from '@fortawesome/free-solid-svg-icons';
import { faGrin } from '@fortawesome/free-regular-svg-icons'; import { faGrin } from '@fortawesome/free-regular-svg-icons';
// Detect the user agent // Detect the user agent
@ -77,6 +80,7 @@ export default Vue.extend({
components: { components: {
XDashboard, XDashboard,
XInstance, XInstance,
XQueue,
XModerators, XModerators,
XEmoji, XEmoji,
XAnnouncements, XAnnouncements,
@ -98,7 +102,8 @@ export default Vue.extend({
faArrowLeft, faArrowLeft,
faHeadset, faHeadset,
faShareAlt, faShareAlt,
faExclamationCircle faExclamationCircle,
faTasks
}; };
}, },
methods: { methods: {

View File

@ -0,0 +1,43 @@
<template>
<div>
<ui-card>
<div slot="title">{{ $t('operation') }}</div>
<section>
<ui-button @click="removeAllJobs">{{ $t('remove-all-jobs') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
export default Vue.extend({
i18n: i18n('admin/views/queue.vue'),
data() {
return {
};
},
methods: {
async removeAllJobs() {
const process = async () => {
await this.$root.api('admin/queue/clear');
this.$root.dialog({
type: 'success',
splash: true
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
},
}
});
</script>

View File

@ -87,3 +87,9 @@ export default function() {
return queue; return queue;
} }
export function destroy() {
queue.destroy().then(n => {
queueLogger.succ(`All job removed (${n} jobs)`);
});
}

View File

@ -0,0 +1,15 @@
import define from '../../../define';
import { destroy } from '../../../../../queue';
export const meta = {
requireCredential: true,
requireModerator: true,
params: {}
};
export default define(meta, (ps) => new Promise(async (res, rej) => {
destroy();
res();
}));