diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-03 23:57:14 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-03 23:57:14 +0900 |
| commit | e3a24e9215116d7c1678d1cb97fbf96d161bc671 (patch) | |
| tree | 6ae9cfd1720ed7f8920d4c19f02b8c8bf03ba7e9 /src/client/app/admin | |
| parent | Improve API documentation (diff) | |
| download | sharkey-e3a24e9215116d7c1678d1cb97fbf96d161bc671.tar.gz sharkey-e3a24e9215116d7c1678d1cb97fbf96d161bc671.tar.bz2 sharkey-e3a24e9215116d7c1678d1cb97fbf96d161bc671.zip | |
[Client] Improve admin panel
Diffstat (limited to 'src/client/app/admin')
| -rw-r--r-- | src/client/app/admin/views/announcements.vue | 53 |
1 files changed, 31 insertions, 22 deletions
diff --git a/src/client/app/admin/views/announcements.vue b/src/client/app/admin/views/announcements.vue index 049a8d5721..347c94c6ea 100644 --- a/src/client/app/admin/views/announcements.vue +++ b/src/client/app/admin/views/announcements.vue @@ -1,10 +1,21 @@ <template> <div> <ui-card> - <div slot="title">%i18n:@announcements%</div> + <div slot="title">%fa:broadcast-tower% %i18n:@announcements%</div> + <section v-for="(announcement, i) in announcements" class="fit-top"> + <ui-input v-model="announcement.title" @change="save"> + <span>%i18n:@title%</span> + </ui-input> + <ui-textarea v-model="announcement.text"> + <span>%i18n:@text%</span> + </ui-textarea> + <ui-button-group> + <ui-button inline @click="save">%fa:save R% %i18n:@save%</ui-button> + <ui-button inline @click="remove(i)">%fa:trash-alt R% %i18n:@remove%</ui-button> + </ui-button-group> + </section> <section> - <textarea class="qldxjjsrseehkusjuoooapmsprvfrxyl" v-model="broadcasts" placeholder='[ { "title": "Title1", "text": "Text1" }, { "title": "Title2", "text": "Text2" } ]'></textarea> - <ui-button @click="save">%i18n:@save%</ui-button> + <ui-button @click="add">%fa:plus% %i18n:@add%</ui-button> </section> </ui-card> </div> @@ -16,40 +27,38 @@ import Vue from "vue"; export default Vue.extend({ data() { return { - broadcasts: '', + announcements: [], }; }, + created() { (this as any).os.getMeta().then(meta => { - this.broadcasts = JSON.stringify(meta.broadcasts, null, ' '); + this.announcements = meta.broadcasts; }); }, + methods: { - save() { - let json; + add() { + this.announcements.push({ + title: '', + text: '' + }); + }, - try { - json = JSON.parse(this.broadcasts); - } catch (e) { - (this as any).os.apis.dialog({ text: `Failed: ${e}` }); - return; - } + remove(i) { + this.announcements = this.announcements.filter((_, j) => j !== i); + this.save(); + }, + save() { (this as any).api('admin/update-meta', { - broadcasts: json + broadcasts: this.announcements }).then(() => { (this as any).os.apis.dialog({ text: `Saved` }); - }.catch(e => { + }).catch(e => { (this as any).os.apis.dialog({ text: `Failed ${e}` }); }); } } }); </script> - -<style lang="stylus" scoped> -.qldxjjsrseehkusjuoooapmsprvfrxyl - width 100% - min-height 300px - -</style> |