summaryrefslogtreecommitdiff
path: root/packages/client/src/pages/admin/announcements.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/client/src/pages/admin/announcements.vue')
-rw-r--r--packages/client/src/pages/admin/announcements.vue112
1 files changed, 0 insertions, 112 deletions
diff --git a/packages/client/src/pages/admin/announcements.vue b/packages/client/src/pages/admin/announcements.vue
deleted file mode 100644
index 607ad8aa02..0000000000
--- a/packages/client/src/pages/admin/announcements.vue
+++ /dev/null
@@ -1,112 +0,0 @@
-<template>
-<MkStickyContainer>
- <template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
- <MkSpacer :content-max="900">
- <div class="ztgjmzrw">
- <section v-for="announcement in announcements" class="_card _gap announcements">
- <div class="_content announcement">
- <MkInput v-model="announcement.title">
- <template #label>{{ i18n.ts.title }}</template>
- </MkInput>
- <MkTextarea v-model="announcement.text">
- <template #label>{{ i18n.ts.text }}</template>
- </MkTextarea>
- <MkInput v-model="announcement.imageUrl">
- <template #label>{{ i18n.ts.imageUrl }}</template>
- </MkInput>
- <p v-if="announcement.reads">{{ i18n.t('nUsersRead', { n: announcement.reads }) }}</p>
- <div class="buttons">
- <MkButton class="button" inline primary @click="save(announcement)"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
- <MkButton class="button" inline @click="remove(announcement)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>
- </div>
- </div>
- </section>
- </div>
- </MkSpacer>
-</MkStickyContainer>
-</template>
-
-<script lang="ts" setup>
-import { } from 'vue';
-import XHeader from './_header_.vue';
-import MkButton from '@/components/MkButton.vue';
-import MkInput from '@/components/form/input.vue';
-import MkTextarea from '@/components/form/textarea.vue';
-import * as os from '@/os';
-import { i18n } from '@/i18n';
-import { definePageMetadata } from '@/scripts/page-metadata';
-
-let announcements: any[] = $ref([]);
-
-os.api('admin/announcements/list').then(announcementResponse => {
- announcements = announcementResponse;
-});
-
-function add() {
- announcements.unshift({
- id: null,
- title: '',
- text: '',
- imageUrl: null,
- });
-}
-
-function remove(announcement) {
- os.confirm({
- type: 'warning',
- text: i18n.t('removeAreYouSure', { x: announcement.title }),
- }).then(({ canceled }) => {
- if (canceled) return;
- announcements = announcements.filter(x => x !== announcement);
- os.api('admin/announcements/delete', announcement);
- });
-}
-
-function save(announcement) {
- if (announcement.id == null) {
- os.api('admin/announcements/create', announcement).then(() => {
- os.alert({
- type: 'success',
- text: i18n.ts.saved,
- });
- }).catch(err => {
- os.alert({
- type: 'error',
- text: err,
- });
- });
- } else {
- os.api('admin/announcements/update', announcement).then(() => {
- os.alert({
- type: 'success',
- text: i18n.ts.saved,
- });
- }).catch(err => {
- os.alert({
- type: 'error',
- text: err,
- });
- });
- }
-}
-
-const headerActions = $computed(() => [{
- asFullButton: true,
- icon: 'ti ti-plus',
- text: i18n.ts.add,
- handler: add,
-}]);
-
-const headerTabs = $computed(() => []);
-
-definePageMetadata({
- title: i18n.ts.announcements,
- icon: 'ti ti-speakerphone',
-});
-</script>
-
-<style lang="scss" scoped>
-.ztgjmzrw {
- margin: var(--margin);
-}
-</style>