diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-15 04:15:42 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-15 04:15:42 +0900 |
| commit | 56d571c0f0f525263ea6257a5d5a2e7a9085e203 (patch) | |
| tree | 69c40b1012f8c632e6601c50be9c7e2fb1a12e5c /src/client/app/admin | |
| parent | [Client] Add missing icon (diff) | |
| download | misskey-56d571c0f0f525263ea6257a5d5a2e7a9085e203.tar.gz misskey-56d571c0f0f525263ea6257a5d5a2e7a9085e203.tar.bz2 misskey-56d571c0f0f525263ea6257a5d5a2e7a9085e203.zip | |
Moderator system
Closes #2357
Diffstat (limited to 'src/client/app/admin')
| -rw-r--r-- | src/client/app/admin/views/index.vue | 9 | ||||
| -rw-r--r-- | src/client/app/admin/views/moderators.vue | 61 |
2 files changed, 68 insertions, 2 deletions
diff --git a/src/client/app/admin/views/index.vue b/src/client/app/admin/views/index.vue index a5ffb2098e..116d794b91 100644 --- a/src/client/app/admin/views/index.vue +++ b/src/client/app/admin/views/index.vue @@ -20,6 +20,7 @@ <ul> <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('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('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li> <li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li> @@ -38,6 +39,7 @@ <main> <div v-if="page == 'dashboard'"><x-dashboard/></div> <div v-if="page == 'instance'"><x-instance/></div> + <div v-if="page == 'moderators'"><x-moderators/></div> <div v-if="page == 'users'"><x-users/></div> <div v-if="page == 'emoji'"><x-emoji/></div> <div v-if="page == 'announcements'"><x-announcements/></div> @@ -54,11 +56,12 @@ import i18n from '../../i18n'; import { version } from '../../config'; import XDashboard from "./dashboard.vue"; import XInstance from "./instance.vue"; +import XModerators from "./moderators.vue"; import XEmoji from "./emoji.vue"; import XAnnouncements from "./announcements.vue"; import XHashtags from "./hashtags.vue"; import XUsers from "./users.vue"; -import { faArrowLeft } from '@fortawesome/free-solid-svg-icons'; +import { faHeadset, faArrowLeft } from '@fortawesome/free-solid-svg-icons'; import { faGrin } from '@fortawesome/free-regular-svg-icons'; // Detect the user agent @@ -70,6 +73,7 @@ export default Vue.extend({ components: { XDashboard, XInstance, + XModerators, XEmoji, XAnnouncements, XHashtags, @@ -85,7 +89,8 @@ export default Vue.extend({ isMobile, navOpend: !isMobile, faGrin, - faArrowLeft + faArrowLeft, + faHeadset }; }, methods: { diff --git a/src/client/app/admin/views/moderators.vue b/src/client/app/admin/views/moderators.vue new file mode 100644 index 0000000000..ebf20c12fd --- /dev/null +++ b/src/client/app/admin/views/moderators.vue @@ -0,0 +1,61 @@ +<template> +<div class="jnhmugbb"> + <ui-card> + <div slot="title"><fa icon="plus"/> {{ $t('add-moderator.title') }}</div> + <section class="fit-top"> + <ui-input v-model="username" type="text"> + <span slot="prefix">@</span> + </ui-input> + <ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button> + </section> + </ui-card> +</div> +</template> + +<script lang="ts"> +import Vue from 'vue'; +import i18n from '../../i18n'; +import parseAcct from "../../../../misc/acct/parse"; + +export default Vue.extend({ + i18n: i18n('admin/views/moderators.vue'), + + data() { + return { + username: '', + adding: false + }; + }, + + methods: { + async add() { + this.adding = true; + + const process = async () => { + const user = await this.$root.api('users/show', parseAcct(this.username)); + await this.$root.api('admin/moderators/add', { userId: user.id }); + this.$root.alert({ + type: 'success', + text: this.$t('add-moderator.added') + }); + }; + + await process().catch(e => { + this.$root.alert({ + type: 'error', + text: e + }); + }); + + this.adding = false; + }, + } +}); +</script> + +<style lang="stylus" scoped> +.jnhmugbb + @media (min-width 500px) + padding 16px + +</style> |