diff options
| author | Tusooa Zhu <tusooa@kazv.moe> | 2022-03-17 17:11:53 -0400 |
|---|---|---|
| committer | tusooa <tusooa@kazv.moe> | 2022-11-24 18:27:14 -0500 |
| commit | 89c49b6fb46e607aee07afd5bc436e8f2f605bfe (patch) | |
| tree | 264b78477fa6aeaf4776d959dc1f6f39831ef9f5 /src/components | |
| parent | 0e51e824a29204bb193e2707d6f65b6caaee719d (diff) | |
Allow editing announcements
Diffstat (limited to 'src/components')
4 files changed, 93 insertions, 19 deletions
diff --git a/src/components/announcement/announcement.js b/src/components/announcement/announcement.js index 309eecea..253e2bb2 100644 --- a/src/components/announcement/announcement.js +++ b/src/components/announcement/announcement.js @@ -12,8 +12,10 @@ const Announcement = { newAnnouncement: { content: '', startsAt: undefined, - endsAt: undefined - } + endsAt: undefined, + allDay: undefined + }, + editError: '' } }, props: { @@ -58,6 +60,31 @@ const Announcement = { formatTimeOrDate (time, locale) { const d = new Date(time) return this.announcement['all_day'] ? d.toLocaleDateString(locale) : d.toLocaleString(locale) + }, + enterEditMode () { + this.newAnnouncement.content = this.announcement.pleroma['raw_content'] + this.newAnnouncement.startsAt = this.announcement['starts_at'] + this.newAnnouncement.endsAt = this.announcement['ends_at'] + this.newAnnouncement.allDay = this.announcement['all_day'] + this.editing = true + }, + submitEdit () { + this.$store.dispatch('editAnnouncement', { + id: this.announcement.id, + ...this.newAnnouncement + }) + .then(() => { + this.editing = false + }) + .catch(error => { + this.editError = error.error + }) + }, + cancelEdit () { + this.editing = false + }, + clearError () { + this.editError = undefined } } } diff --git a/src/components/announcement/announcement.vue b/src/components/announcement/announcement.vue index 5ddeebf5..1e4edcca 100644 --- a/src/components/announcement/announcement.vue +++ b/src/components/announcement/announcement.vue @@ -16,7 +16,10 @@ /> </div> <div class="footer"> - <div class="times"> + <div + v-if="!editing" + class="times" + > <span v-if="startsAt"> {{ $t('announcements.start_time_display', { time: startsAt }) }} </span> @@ -24,7 +27,10 @@ {{ $t('announcements.end_time_display', { time: endsAt }) }} </span> </div> - <div class="actions"> + <div + v-if="!editing" + class="actions" + > <button v-if="currentUser" class="btn button-default" @@ -36,11 +42,51 @@ <button v-if="currentUser && currentUser.role === 'admin'" class="btn button-default" + @click="enterEditMode" + > + {{ $t('announcements.edit_action') }} + </button> + <button + v-if="currentUser && currentUser.role === 'admin'" + class="btn button-default" @click="deleteAnnouncement" > {{ $t('announcements.delete_action') }} </button> </div> + <div + v-else + class="actions" + > + <button + class="btn button-default" + @click="submitEdit" + > + {{ $t('announcements.submit_edit_action') }} + </button> + <button + class="btn button-default" + @click="cancelEdit" + > + {{ $t('announcements.cancel_edit_action') }} + </button> + <div + v-if="editing && editError" + class="alert error" + > + {{ $t('announcements.edit_error', { error }) }} + <button + class="button-unstyled" + @click="clearError" + > + <FAIcon + class="fa-scale-110 fa-old-padding" + icon="times" + :title="$t('announcements.close_error')" + /> + </button> + </div> + </div> </div> </div> </template> diff --git a/src/components/announcement_editor/announcement_editor.vue b/src/components/announcement_editor/announcement_editor.vue index e2418b8d..0f29f9f7 100644 --- a/src/components/announcement_editor/announcement_editor.vue +++ b/src/components/announcement_editor/announcement_editor.vue @@ -41,12 +41,20 @@ <script src="./announcement_editor.js"></script> <style lang="scss"> - .announcement-editor { - display: flex; - align-items: stretch; - flex-direction: column; - .announcement-metadata { - margin-top: 0.5em; - } - } +.announcement-editor { + display: flex; + align-items: stretch; + flex-direction: column; + + .announcement-metadata { + margin-top: 0.5em; + } + + .post-textarea { + resize: vertical; + height: 10em; + overflow: none; + box-sizing: content-box; + } +} </style> diff --git a/src/components/announcements_page/announcements_page.vue b/src/components/announcements_page/announcements_page.vue index 54307c4d..b1489dec 100644 --- a/src/components/announcements_page/announcements_page.vue +++ b/src/components/announcements_page/announcements_page.vue @@ -71,13 +71,6 @@ margin-bottom: var(--status-margin, $status-margin); } - .post-textarea { - resize: vertical; - height: 10em; - overflow: none; - box-sizing: content-box; - } - .post-button { min-width: 10em; } |
