diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-04 03:18:57 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-04 03:18:57 +0900 |
| commit | dfce5bc0af6eb62aca2f5b41400e41898a6c778d (patch) | |
| tree | a67786a2fb344ba81f050b7e26cb365c4ee6f8b6 /src/client/app | |
| parent | [API] Implement some Emoji APIs (diff) | |
| download | sharkey-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.vue | 62 |
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}` }); }); |