summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-10-02 23:42:46 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-10-02 23:42:46 +0900
commit7d11c8b767a43837d336099790e89e7b550554a4 (patch)
tree0119a29e6405990eea3ef8ad3e01a3067cf98c86 /src
parentUpdate README.md [AUTOGEN] (#2801) (diff)
downloadsharkey-7d11c8b767a43837d336099790e89e7b550554a4.tar.gz
sharkey-7d11c8b767a43837d336099790e89e7b550554a4.tar.bz2
sharkey-7d11c8b767a43837d336099790e89e7b550554a4.zip
Improve admin UI (#2802)
Diffstat (limited to 'src')
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.announcements.vue17
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.dashboard.vue8
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.hashtags.vue4
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.suspend-user.vue22
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.unsuspend-user.vue21
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.unverify-user.vue22
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.verify-user.vue22
-rw-r--r--src/client/app/desktop/views/pages/admin/admin.vue12
8 files changed, 91 insertions, 37 deletions
diff --git a/src/client/app/desktop/views/pages/admin/admin.announcements.vue b/src/client/app/desktop/views/pages/admin/admin.announcements.vue
index 272016b3f9..722fa227cf 100644
--- a/src/client/app/desktop/views/pages/admin/admin.announcements.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.announcements.vue
@@ -1,7 +1,7 @@
<template>
<div class="qldxjjsrseehkusjuoooapmsprvfrxyl mk-admin-card">
<header>%i18n:@announcements%</header>
- <textarea v-model="broadcasts"></textarea>
+ <textarea v-model="broadcasts" placeholder='[ { "title": "Title1", "text": "Text1" }, { "title": "Title2", "text": "Text2" } ]'></textarea>
<button class="ui" @click="save">%i18n:@save%</button>
</div>
</template>
@@ -22,8 +22,21 @@ export default Vue.extend({
},
methods: {
save() {
+ let json;
+
+ try {
+ json = JSON.parse(this.broadcasts);
+ } catch (e) {
+ (this as any).os.apis.dialog({ text: `Failed: ${e}` });
+ return;
+ }
+
(this as any).api('admin/update-meta', {
- broadcasts: JSON.parse(this.broadcasts)
+ broadcasts: json
+ }).then(() => {
+ (this as any).os.apis.dialog({ text: `Saved` });
+ }.catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
});
}
}
diff --git a/src/client/app/desktop/views/pages/admin/admin.dashboard.vue b/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
index f5734012bd..1b0c5f8125 100644
--- a/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
@@ -13,7 +13,7 @@
<x-cpu-memory :connection="connection"/>
</div>
- <div class="form">
+ <div v-if="this.$store.state.i && this.$store.state.i.isAdmin" class="form">
<div>
<label>
<p>%i18n:@banner-url%</p>
@@ -81,6 +81,8 @@ export default Vue.extend({
invite() {
(this as any).api('admin/invite').then(x => {
this.inviteCode = x.code;
+ }).catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
});
},
updateMeta() {
@@ -88,6 +90,10 @@ export default Vue.extend({
disableRegistration: this.disableRegistration,
disableLocalTimeline: this.disableLocalTimeline,
bannerUrl: this.bannerUrl
+ }).then(() => {
+ (this as any).os.apis.dialog({ text: `Saved` });
+ }).catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
});
}
}
diff --git a/src/client/app/desktop/views/pages/admin/admin.hashtags.vue b/src/client/app/desktop/views/pages/admin/admin.hashtags.vue
index f491b85959..10bab1cbd7 100644
--- a/src/client/app/desktop/views/pages/admin/admin.hashtags.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.hashtags.vue
@@ -24,6 +24,10 @@ export default Vue.extend({
save() {
(this as any).api('admin/update-meta', {
hidedTags: this.hidedTags.split('\n')
+ }).then(() => {
+ (this as any).os.apis.dialog({ text: `Saved` });
+ }).catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
});
}
}
diff --git a/src/client/app/desktop/views/pages/admin/admin.suspend-user.vue b/src/client/app/desktop/views/pages/admin/admin.suspend-user.vue
index 32295e3795..a8ff937bbe 100644
--- a/src/client/app/desktop/views/pages/admin/admin.suspend-user.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.suspend-user.vue
@@ -21,18 +21,24 @@ export default Vue.extend({
async suspendUser() {
this.suspending = true;
- const user = await (this as any).os.api(
- "users/show",
- parseAcct(this.username)
- );
+ const process = async () => {
+ const user = await (this as any).os.api(
+ "users/show",
+ parseAcct(this.username)
+ );
- await (this as any).os.api("admin/suspend-user", {
- userId: user.id
+ await (this as any).os.api("admin/suspend-user", {
+ userId: user.id
+ });
+
+ (this as any).os.apis.dialog({ text: "%i18n:@suspended%" });
+ };
+
+ await process().catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed: ${e}` });
});
this.suspending = false;
-
- (this as any).os.apis.dialog({ text: "%i18n:@suspended%" });
}
}
});
diff --git a/src/client/app/desktop/views/pages/admin/admin.unsuspend-user.vue b/src/client/app/desktop/views/pages/admin/admin.unsuspend-user.vue
index d6905fe9c0..146f5a41d4 100644
--- a/src/client/app/desktop/views/pages/admin/admin.unsuspend-user.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.unsuspend-user.vue
@@ -21,18 +21,25 @@ export default Vue.extend({
async unsuspendUser() {
this.unsuspending = true;
- const user = await (this as any).os.api(
- "users/show",
- parseAcct(this.username)
- );
+ const process = async () => {
+ const user = await (this as any).os.api(
+ "users/show",
+ parseAcct(this.username)
+ );
- await (this as any).os.api("admin/unsuspend-user", {
- userId: user.id
+ await (this as any).os.api("admin/unsuspend-user", {
+ userId: user.id
+ });
+
+ (this as any).os.apis.dialog({ text: "%i18n:@unsuspended%" });
+ };
+
+ await process().catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed: ${e}` });
});
this.unsuspending = false;
- (this as any).os.apis.dialog({ text: "%i18n:@unsuspended%" });
}
}
});
diff --git a/src/client/app/desktop/views/pages/admin/admin.unverify-user.vue b/src/client/app/desktop/views/pages/admin/admin.unverify-user.vue
index d0cf635a98..5e0fdae5c1 100644
--- a/src/client/app/desktop/views/pages/admin/admin.unverify-user.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.unverify-user.vue
@@ -21,18 +21,24 @@ export default Vue.extend({
async unverifyUser() {
this.unverifying = true;
- const user = await (this as any).os.api(
- "users/show",
- parseAcct(this.username)
- );
+ const process = async () => {
+ const user = await (this as any).os.api(
+ "users/show",
+ parseAcct(this.username)
+ );
- await (this as any).os.api("admin/unverify-user", {
- userId: user.id
+ await (this as any).os.api("admin/unverify-user", {
+ userId: user.id
+ });
+
+ (this as any).os.apis.dialog({ text: "%i18n:@unverified%" });
+ };
+
+ await process().catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed: ${e}` });
});
this.unverifying = false;
-
- (this as any).os.apis.dialog({ text: "%i18n:@unverified%" });
}
}
});
diff --git a/src/client/app/desktop/views/pages/admin/admin.verify-user.vue b/src/client/app/desktop/views/pages/admin/admin.verify-user.vue
index 9c0b0209b7..d237a5f9c1 100644
--- a/src/client/app/desktop/views/pages/admin/admin.verify-user.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.verify-user.vue
@@ -21,18 +21,24 @@ export default Vue.extend({
async verifyUser() {
this.verifying = true;
- const user = await (this as any).os.api(
- "users/show",
- parseAcct(this.username)
- );
+ const process = async () => {
+ const user = await (this as any).os.api(
+ "users/show",
+ parseAcct(this.username)
+ );
- await (this as any).os.api("admin/verify-user", {
- userId: user.id
+ await (this as any).os.api("admin/verify-user", {
+ userId: user.id
+ });
+
+ (this as any).os.apis.dialog({ text: "%i18n:@verified%" });
+ };
+
+ await process().catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed: ${e}` });
});
this.verifying = false;
-
- (this as any).os.apis.dialog({ text: "%i18n:@verified%" });
}
}
});
diff --git a/src/client/app/desktop/views/pages/admin/admin.vue b/src/client/app/desktop/views/pages/admin/admin.vue
index b874915f05..ad417e5121 100644
--- a/src/client/app/desktop/views/pages/admin/admin.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.vue
@@ -3,9 +3,15 @@
<nav>
<ul>
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }">%fa:chalkboard .fw%%i18n:@dashboard%</li>
- <li @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
- <li @click="nav('announcements')" :class="{ active: page == 'announcements' }">%fa:broadcast-tower .fw%%i18n:@announcements%</li>
- <li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }">%fa:hashtag .fw%%i18n:@hashtags%</li>
+
+ <li v-if="this.$store.state.i && this.$store.state.i.isAdmin"
+ @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
+
+ <li v-if="this.$store.state.i && this.$store.state.i.isAdmin"
+ @click="nav('announcements')" :class="{ active: page == 'announcements' }">%fa:broadcast-tower .fw%%i18n:@announcements%</li>
+
+ <li v-if="this.$store.state.i && this.$store.state.i.isAdmin"
+ @click="nav('hashtags')" :class="{ active: page == 'hashtags' }">%fa:hashtag .fw%%i18n:@hashtags%</li>
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }">%fa:cloud .fw%%i18n:@drive%</li> -->
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> -->