summaryrefslogtreecommitdiff
path: root/src/client/app
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-04 03:18:57 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-04 03:18:57 +0900
commitdfce5bc0af6eb62aca2f5b41400e41898a6c778d (patch)
treea67786a2fb344ba81f050b7e26cb365c4ee6f8b6 /src/client/app
parent[API] Implement some Emoji APIs (diff)
downloadsharkey-dfce5bc0af6eb62aca2f5b41400e41898a6c778d.tar.gz
sharkey-dfce5bc0af6eb62aca2f5b41400e41898a6c778d.tar.bz2
sharkey-dfce5bc0af6eb62aca2f5b41400e41898a6c778d.zip
[Client] Improve Emoji management page of admin panel
Diffstat (limited to 'src/client/app')
-rw-r--r--src/client/app/admin/views/emoji.vue62
1 files changed, 61 insertions, 1 deletions
diff --git a/src/client/app/admin/views/emoji.vue b/src/client/app/admin/views/emoji.vue
index 1446cc1a91..f7db106a4b 100644
--- a/src/client/app/admin/views/emoji.vue
+++ b/src/client/app/admin/views/emoji.vue
@@ -17,6 +17,28 @@
<ui-button @click="add">%i18n:@add-emoji.add%</ui-button>
</section>
</ui-card>
+
+ <ui-card>
+ <div slot="title">%fa:grin R% %i18n:@emojis.title%</div>
+ <section v-for="emoji in emojis">
+ <img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
+ <ui-input v-model="emoji.name">
+ <span>%i18n:@add-emoji.name%</span>
+ <span slot="text">%i18n:@add-emoji.name-desc%</span>
+ </ui-input>
+ <ui-input v-model="emoji.aliases">
+ <span>%i18n:@add-emoji.aliases%</span>
+ <span slot="text">%i18n:@add-emoji.aliases-desc%</span>
+ </ui-input>
+ <ui-input v-model="emoji.url">
+ <span>%i18n:@add-emoji.url%</span>
+ </ui-input>
+ <ui-button-group>
+ <ui-button inline @click="updateEmoji(emoji)">%fa:save R% %i18n:@emojis.update%</ui-button>
+ <ui-button inline @click="removeEmoji(emoji)">%fa:trash-alt R% %i18n:@emojis.remove%</ui-button>
+ </ui-button-group>
+ </section>
+ </ui-card>
</div>
</template>
@@ -29,16 +51,54 @@ export default Vue.extend({
name: '',
url: '',
aliases: '',
+ emojis: []
};
},
+
+ mounted() {
+ this.fetchEmojis();
+ },
+
methods: {
add() {
- (this as any).api('admin/add-emoji', {
+ (this as any).api('admin/emoji/add', {
name: this.name,
url: this.url,
aliases: this.aliases.split(' ')
}).then(() => {
(this as any).os.apis.dialog({ text: `Added` });
+ this.fetchEmojis();
+ }).catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
+ });
+ },
+
+ fetchEmojis() {
+ (this as any).api('admin/emoji/list').then(emojis => {
+ emojis.forEach(e => e.aliases = (e.aliases || []).join(' '));
+ this.emojis = emojis;
+ });
+ },
+
+ updateEmoji(emoji) {
+ (this as any).api('admin/emoji/update', {
+ id: emoji.id,
+ name: emoji.name,
+ url: emoji.url,
+ aliases: emoji.aliases.split(' ')
+ }).then(() => {
+ (this as any).os.apis.dialog({ text: `Updated` });
+ }).catch(e => {
+ (this as any).os.apis.dialog({ text: `Failed ${e}` });
+ });
+ },
+
+ removeEmoji(emoji) {
+ (this as any).api('admin/emoji/remove', {
+ id: emoji.id
+ }).then(() => {
+ (this as any).os.apis.dialog({ text: `Removed` });
+ this.fetchEmojis();
}).catch(e => {
(this as any).os.apis.dialog({ text: `Failed ${e}` });
});