Compare commits
No commits in common. "8de919cbab749d4eb35e7b6558f8cabd23643ed4" and "662f36b3e2c19a34ec3a4eab2a115ad949713845" have entirely different histories.
8de919cbab
...
662f36b3e2
146 changed files with 527 additions and 633 deletions
src
components
Footer.vueHeader.vue
admin
club
calendar
member
CreateMemberModal.vueMemberAwardCreateModal.vueMemberAwardEditModal.vueMemberCommunicationCreateModal.vueMemberExecutivePositionCreateModal.vueMemberExecutivePositionEditModal.vueMemberQualificationCreateModal.vueMemberQualificationDeleteModal.vueMemberQualificationEditModal.vueMembershipCreateModal.vueMembershipEditModal.vue
settings
award
calendarType
communicationType
executivePosition
membershipStatus
newsletterConfig
qualification
queryStore
salutation
template
templateUsage
user
backup
role
user
webapi
queryBuilder
router
stores/admin
club
navigation.tssettings
award.tscalendarType.tscommunicationType.tsexecutivePosition.tsmembershipStatus.tsnewsletterConfig.tsqualification.tsqueryStore.tssalutation.tstemplate.tstemplateUsage.ts
user
types
viewmodels/admin
club
settings
|
@ -12,10 +12,8 @@
|
||||||
:disableSubLink="true"
|
:disableSubLink="true"
|
||||||
/>
|
/>
|
||||||
<TopLevelLink
|
<TopLevelLink
|
||||||
v-else-if="
|
v-else-if="routeName == 'account' || routeName.includes('account-') || routeName == 'docs' || routeName.includes('docs-')"
|
||||||
routeName == 'account' || routeName.includes('account-') || routeName == 'docs' || routeName.includes('docs-')
|
:link="{ key: 'club', title: 'Zur Verwaltung', levelDefault: '' }"
|
||||||
"
|
|
||||||
:link="{ key: 'club', title: 'Zur Admin Oberfläche', levelDefault: '' }"
|
|
||||||
:disableSubLink="true"
|
:disableSubLink="true"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
<header class="flex flex-row h-16 min-h-16 justify-between p-3 md:px-5 bg-white shadow-sm">
|
<header class="flex flex-row h-16 min-h-16 justify-between p-3 md:px-5 bg-white shadow-sm">
|
||||||
<RouterLink to="/" class="flex flex-row gap-2 align-bottom w-fit h-full">
|
<RouterLink to="/" class="flex flex-row gap-2 align-bottom w-fit h-full">
|
||||||
<img src="/Logo.png" alt="LOGO" class="h-full w-auto" />
|
<img src="/Logo.png" alt="LOGO" class="h-full w-auto" />
|
||||||
<h1 v-if="false" class="font-bold text-3xl w-fit whitespace-nowrap">
|
<h1 v-if="false" class="font-bold text-3xl w-fit whitespace-nowrap">{{config.app_name_overwrite || "FF Admin"}}</h1>
|
||||||
{{ config.app_name_overwrite || "FF Admin" }}
|
|
||||||
</h1>
|
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div class="flex flex-row gap-2 items-center">
|
<div class="flex flex-row gap-2 items-center">
|
||||||
<div v-if="authCheck" class="hidden md:flex flex-row gap-2 h-full align-middle">
|
<div v-if="authCheck" class="hidden md:flex flex-row gap-2 h-full align-middle">
|
||||||
|
@ -15,13 +13,8 @@
|
||||||
:link="item"
|
:link="item"
|
||||||
/>
|
/>
|
||||||
<TopLevelLink
|
<TopLevelLink
|
||||||
v-else-if="
|
v-else-if="routeName == 'account' || routeName.includes('account-') || routeName == 'docs' || routeName.includes('docs-')"
|
||||||
routeName == 'account' ||
|
:link="{ key: 'club', title: 'Zur Verwaltung', levelDefault: '' }"
|
||||||
routeName.includes('account-') ||
|
|
||||||
routeName == 'docs' ||
|
|
||||||
routeName.includes('docs-')
|
|
||||||
"
|
|
||||||
:link="{ key: 'club', title: 'Zur Admin Oberfläche', levelDefault: '' }"
|
|
||||||
:disable-sub-link="true"
|
:disable-sub-link="true"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -37,7 +30,7 @@ import { useAuthStore } from "@/stores/auth";
|
||||||
import { useNavigationStore } from "@/stores/admin/navigation";
|
import { useNavigationStore } from "@/stores/admin/navigation";
|
||||||
import TopLevelLink from "./admin/TopLevelLink.vue";
|
import TopLevelLink from "./admin/TopLevelLink.vue";
|
||||||
import UserMenu from "./UserMenu.vue";
|
import UserMenu from "./UserMenu.vue";
|
||||||
import { config } from "@/config";
|
import { config } from "@/config"
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
|
@ -73,7 +73,11 @@
|
||||||
<br />
|
<br />
|
||||||
<TextCopy :copyText="generatedLink" />
|
<TextCopy :copyText="generatedLink" />
|
||||||
<div v-if="selectedTypes.length != 0" class="flex flex-row gap-2 items-center">
|
<div v-if="selectedTypes.length != 0" class="flex flex-row gap-2 items-center">
|
||||||
<input type="checkbox" id="nscdr" v-model="provideNSCDR" />
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
id="nscdr"
|
||||||
|
v-model="provideNSCDR"
|
||||||
|
/>
|
||||||
<label for="nscdr">Standard-Typen trotz Auswahl ausliefern</label>
|
<label for="nscdr">Standard-Typen trotz Auswahl ausliefern</label>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
@ -101,8 +105,8 @@ import { defineComponent } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import TextCopy from "@/components/TextCopy.vue";
|
import TextCopy from "@/components/TextCopy.vue";
|
||||||
|
@ -115,7 +119,7 @@ export default defineComponent({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selectedTypes: [] as Array<CalendarTypeViewModel>,
|
selectedTypes: [] as Array<CalendarTypeViewModel>,
|
||||||
provideNSCDR: false as boolean,
|
provideNSCDR: false as boolean
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -129,7 +133,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
generatedLink() {
|
generatedLink() {
|
||||||
let extend = this.selectedTypes.map((t) => [t.type, t.passphrase].filter((at) => at).join(":"));
|
let extend = this.selectedTypes.map((t) => [t.type, t.passphrase].filter((at) => at).join(":"));
|
||||||
return `webcal://${host || window.location.host}/api/public/calendar${extend.length == 0 ? "" : "?types=" + extend.join("&types=")}${this.provideNSCDR && extend.length != 0 ? "&nscdr=true" : ""}`;
|
return `webcal://${host || window.location.host}/api/public/calendar${extend.length == 0 ? "" : "?types=" + extend.join("&types=")}${this.provideNSCDR && extend.length != 0 ? '&nscdr=true':''}`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
|
@ -166,8 +166,8 @@ import { useCalendarStore } from "@/stores/admin/club/calendar";
|
||||||
import type { CreateCalendarViewModel } from "@/viewmodels/admin/club/calendar.models";
|
import type { CreateCalendarViewModel } from "@/viewmodels/admin/club/calendar.models";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
|
@ -189,8 +189,8 @@ import type {
|
||||||
} from "@/viewmodels/admin/club/calendar.models";
|
} from "@/viewmodels/admin/club/calendar.models";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon, TrashIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon, TrashIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
import cloneDeep from "lodash.clonedeep";
|
import cloneDeep from "lodash.clonedeep";
|
||||||
import isEqual from "lodash.isequal";
|
import isEqual from "lodash.isequal";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
|
|
|
@ -101,8 +101,8 @@ import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } f
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMemberStore } from "@/stores/admin/club/member/member";
|
import { useMemberStore } from "@/stores/admin/club/member/member";
|
||||||
import type { CreateMemberViewModel } from "@/viewmodels/admin/club/member/member.models";
|
import type { CreateMemberViewModel } from "@/viewmodels/admin/club/member/member.models";
|
||||||
import { useSalutationStore } from "../../../../stores/admin/configuration/salutation";
|
import { useSalutationStore } from "../../../../stores/admin/settings/salutation";
|
||||||
import type { SalutationViewModel } from "../../../../viewmodels/admin/configuration/salutation.models";
|
import type { SalutationViewModel } from "../../../../viewmodels/admin/settings/salutation.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
|
@ -97,12 +97,12 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type { MembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
||||||
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
||||||
import { useAwardStore } from "@/stores/admin/configuration/award";
|
import { useAwardStore } from "@/stores/admin/settings/award";
|
||||||
import type { AwardViewModel } from "@/viewmodels/admin/configuration/award.models";
|
import type { AwardViewModel } from "@/viewmodels/admin/settings/award.models";
|
||||||
import type { CreateMemberAwardViewModel } from "@/viewmodels/admin/club/member/memberAward.models";
|
import type { CreateMemberAwardViewModel } from "@/viewmodels/admin/club/member/memberAward.models";
|
||||||
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward";
|
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -100,7 +100,7 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useAwardStore } from "@/stores/admin/configuration/award";
|
import { useAwardStore } from "@/stores/admin/settings/award";
|
||||||
import type {
|
import type {
|
||||||
CreateMemberAwardViewModel,
|
CreateMemberAwardViewModel,
|
||||||
MemberAwardViewModel,
|
MemberAwardViewModel,
|
||||||
|
|
|
@ -131,8 +131,8 @@ import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } f
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useCommunicationStore } from "@/stores/admin/club/member/communication";
|
import { useCommunicationStore } from "@/stores/admin/club/member/communication";
|
||||||
import type { CreateCommunicationViewModel } from "@/viewmodels/admin/club/member/communication.models";
|
import type { CreateCommunicationViewModel } from "@/viewmodels/admin/club/member/communication.models";
|
||||||
import { useCommunicationTypeStore } from "@/stores/admin/configuration/communicationType";
|
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType";
|
||||||
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/configuration/communicationType.models";
|
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
|
@ -99,12 +99,12 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type { MembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
||||||
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
||||||
import { useExecutivePositionStore } from "@/stores/admin/configuration/executivePosition";
|
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition";
|
||||||
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/configuration/executivePosition.models";
|
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models";
|
||||||
import type { CreateMemberExecutivePositionViewModel } from "@/viewmodels/admin/club/member/memberExecutivePosition.models";
|
import type { CreateMemberExecutivePositionViewModel } from "@/viewmodels/admin/club/member/memberExecutivePosition.models";
|
||||||
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition";
|
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -106,7 +106,7 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useExecutivePositionStore } from "@/stores/admin/configuration/executivePosition";
|
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition";
|
||||||
import type {
|
import type {
|
||||||
CreateMemberExecutivePositionViewModel,
|
CreateMemberExecutivePositionViewModel,
|
||||||
MemberExecutivePositionViewModel,
|
MemberExecutivePositionViewModel,
|
||||||
|
|
|
@ -106,12 +106,12 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type { MembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
||||||
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
||||||
import { useQualificationStore } from "@/stores/admin/configuration/qualification";
|
import { useQualificationStore } from "@/stores/admin/settings/qualification";
|
||||||
import type { QualificationViewModel } from "@/viewmodels/admin/configuration/qualification.models";
|
import type { QualificationViewModel } from "@/viewmodels/admin/settings/qualification.models";
|
||||||
import type { CreateMemberQualificationViewModel } from "@/viewmodels/admin/club/member/memberQualification.models";
|
import type { CreateMemberQualificationViewModel } from "@/viewmodels/admin/club/member/memberQualification.models";
|
||||||
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification";
|
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -41,7 +41,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQualificationStore } from "@/stores/admin/configuration/qualification";
|
import { useQualificationStore } from "@/stores/admin/settings/qualification";
|
||||||
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification";
|
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useQualificationStore } from "@/stores/admin/configuration/qualification";
|
import { useQualificationStore } from "@/stores/admin/settings/qualification";
|
||||||
import type {
|
import type {
|
||||||
CreateMemberQualificationViewModel,
|
CreateMemberQualificationViewModel,
|
||||||
MemberQualificationViewModel,
|
MemberQualificationViewModel,
|
||||||
|
|
|
@ -94,8 +94,8 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type { MembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models";
|
||||||
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
import { useMembershipStore } from "@/stores/admin/club/member/membership";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -103,7 +103,7 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type {
|
import type {
|
||||||
CreateMembershipViewModel,
|
CreateMembershipViewModel,
|
||||||
MembershipViewModel,
|
MembershipViewModel,
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ award.award }}</p>
|
<p>{{ award.award }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'award')"
|
v-if="can('update', 'settings', 'award')"
|
||||||
:to="{ name: 'admin-configuration-award-edit', params: { id: award.id } }"
|
:to="{ name: 'admin-settings-award-edit', params: { id: award.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'award')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'award')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { AwardViewModel } from "@/viewmodels/admin/configuration/award.models";
|
import type { AwardViewModel } from "@/viewmodels/admin/settings/award.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -38,7 +38,7 @@ export default defineComponent({
|
||||||
...mapActions(useModalStore, ["openModal"]),
|
...mapActions(useModalStore, ["openModal"]),
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/configuration/award/DeleteAwardModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/award/DeleteAwardModal.vue"))),
|
||||||
this.award.id
|
this.award.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -34,8 +34,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useAwardStore } from "@/stores/admin/configuration/award";
|
import { useAwardStore } from "@/stores/admin/settings/award";
|
||||||
import type { CreateAwardViewModel } from "@/viewmodels/admin/configuration/award.models";
|
import type { CreateAwardViewModel } from "@/viewmodels/admin/settings/award.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
import { useAwardStore } from "@/stores/admin/configuration/award";
|
import { useAwardStore } from "@/stores/admin/settings/award";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -11,12 +11,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'calendar_type')"
|
v-if="can('update', 'settings', 'calendar_type')"
|
||||||
:to="{ name: 'admin-configuration-calendar_type-edit', params: { id: calendarType.id } }"
|
:to="{ name: 'admin-settings-calendar_type-edit', params: { id: calendarType.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'calendar_type')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'calendar_type')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,7 +30,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon, EyeIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon, EyeIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -46,9 +46,7 @@ export default defineComponent({
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(
|
defineAsyncComponent(() => import("@/components/admin/settings/calendarType/DeleteCalendarTypeModal.vue"))
|
||||||
() => import("@/components/admin/configuration/calendarType/DeleteCalendarTypeModal.vue")
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
this.calendarType.id
|
this.calendarType.id
|
||||||
);
|
);
|
|
@ -47,8 +47,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
import type { CreateCalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CreateCalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ communicationType.type }}</p>
|
<p>{{ communicationType.type }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'communication_type')"
|
v-if="can('update', 'settings', 'communication_type')"
|
||||||
:to="{ name: 'admin-configuration-communication_type-edit', params: { id: communicationType.id } }"
|
:to="{ name: 'admin-settings-communication_type-edit', params: { id: communicationType.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'communication_type')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'communication_type')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -33,7 +33,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/configuration/communicationType.models";
|
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -50,7 +50,7 @@ export default defineComponent({
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(
|
defineAsyncComponent(
|
||||||
() => import("@/components/admin/configuration/communicationType/DeleteCommunicationTypeModal.vue")
|
() => import("@/components/admin/settings/communicationType/DeleteCommunicationTypeModal.vue")
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
this.communicationType.id
|
this.communicationType.id
|
|
@ -80,8 +80,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useCommunicationTypeStore } from "@/stores/admin/configuration/communicationType";
|
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType";
|
||||||
import type { CreateCommunicationTypeViewModel } from "@/viewmodels/admin/configuration/communicationType.models";
|
import type { CreateCommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import type { CommunicationFieldType } from "@/types/fieldTypes";
|
import type { CommunicationFieldType } from "@/types/fieldTypes";
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useCommunicationTypeStore } from "@/stores/admin/configuration/communicationType";
|
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -34,8 +34,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useExecutivePositionStore } from "@/stores/admin/configuration/executivePosition";
|
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition";
|
||||||
import type { CreateExecutivePositionViewModel } from "@/viewmodels/admin/configuration/executivePosition.models";
|
import type { CreateExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
import { useExecutivePositionStore } from "@/stores/admin/configuration/executivePosition";
|
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ executivePosition.position }}</p>
|
<p>{{ executivePosition.position }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'executive_position')"
|
v-if="can('update', 'settings', 'executive_position')"
|
||||||
:to="{ name: 'admin-configuration-executive_position-edit', params: { id: executivePosition.id } }"
|
:to="{ name: 'admin-settings-executive_position-edit', params: { id: executivePosition.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'executive_position')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'executive_position')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/configuration/executivePosition.models";
|
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -40,7 +40,7 @@ export default defineComponent({
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(
|
defineAsyncComponent(
|
||||||
() => import("@/components/admin/configuration/executivePosition/DeleteExecutivePositionModal.vue")
|
() => import("@/components/admin/settings/executivePosition/DeleteExecutivePositionModal.vue")
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
this.executivePosition.id
|
this.executivePosition.id
|
|
@ -34,8 +34,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
import type { CreateMembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { CreateMembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
import { useMembershipStatusStore } from "@/stores/admin/configuration/membershipStatus";
|
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ membershipStatus.status }}</p>
|
<p>{{ membershipStatus.status }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'membership_status')"
|
v-if="can('update', 'settings', 'membership_status')"
|
||||||
:to="{ name: 'admin-configuration-membership_status-edit', params: { id: membershipStatus.id } }"
|
:to="{ name: 'admin-settings-membership_status-edit', params: { id: membershipStatus.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'membership_status')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'membership_status')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { MembershipStatusViewModel } from "@/viewmodels/admin/configuration/membershipStatus.models";
|
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -40,7 +40,7 @@ export default defineComponent({
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(
|
defineAsyncComponent(
|
||||||
() => import("@/components/admin/configuration/membershipStatus/DeleteMembershipStatusModal.vue")
|
() => import("@/components/admin/settings/membershipStatus/DeleteMembershipStatusModal.vue")
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
this.membershipStatus.id
|
this.membershipStatus.id
|
|
@ -2,7 +2,7 @@
|
||||||
<form ref="form" class="flex flex-col h-fit w-full border border-primary rounded-md" @submit.prevent="updateUsage">
|
<form ref="form" class="flex flex-col h-fit w-full border border-primary rounded-md" @submit.prevent="updateUsage">
|
||||||
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
||||||
<p>Newsletter bei Type "{{ comType.type }}" versenden/exportieren als</p>
|
<p>Newsletter bei Type "{{ comType.type }}" versenden/exportieren als</p>
|
||||||
<div v-if="can('create', 'configuration', 'newsletter_config')" class="flex flex-row justify-end w-16">
|
<div v-if="can('create','settings','newsletter_config')" class="flex flex-row justify-end w-16">
|
||||||
<button v-if="status == null" type="submit" class="!p-0 !h-fit !w-fit" title="speichern">
|
<button v-if="status == null" type="submit" class="!p-0 !h-fit !w-fit" title="speichern">
|
||||||
<ArchiveBoxArrowDownIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
<ArchiveBoxArrowDownIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
||||||
</button>
|
</button>
|
||||||
|
@ -18,9 +18,7 @@
|
||||||
<div class="flex flex-row gap-2 items-center">
|
<div class="flex flex-row gap-2 items-center">
|
||||||
<select ref="config" id="config" :value="newsletterConfig?.config ?? 'def'">
|
<select ref="config" id="config" :value="newsletterConfig?.config ?? 'def'">
|
||||||
<option value="def">Standard (pdf nur mit Name)</option>
|
<option value="def">Standard (pdf nur mit Name)</option>
|
||||||
<option v-for="config in configs" :key="config" :value="config">
|
<option v-for="config in configs" :key="config" :value="config">{{ config == "pdf" ? "pdf mit Adresse":config }}</option>
|
||||||
{{ config == "pdf" ? "pdf mit Adresse" : config }}
|
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,14 +29,14 @@
|
||||||
import { defineComponent, type PropType } from "vue";
|
import { defineComponent, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/vue/24/outline";
|
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useNewsletterConfigStore } from "@/stores/admin/configuration/newsletterConfig";
|
import { useNewsletterConfigStore } from "@/stores/admin/settings/newsletterConfig";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import { NewsletterConfigType } from "@/enums/newsletterConfigType";
|
import { NewsletterConfigType } from "@/enums/newsletterConfigType";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/configuration/communicationType.models";
|
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -58,8 +56,8 @@ export default defineComponent({
|
||||||
...mapState(useNewsletterConfigStore, ["config"]),
|
...mapState(useNewsletterConfigStore, ["config"]),
|
||||||
...mapState(useAbilityStore, ["can"]),
|
...mapState(useAbilityStore, ["can"]),
|
||||||
newsletterConfig() {
|
newsletterConfig() {
|
||||||
return this.config.find((c) => c.comTypeId == this.comType.id);
|
return this.config.find(c => c.comTypeId == this.comType.id)
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.configs = Object.values(NewsletterConfigType);
|
this.configs = Object.values(NewsletterConfigType);
|
||||||
|
@ -76,18 +74,17 @@ export default defineComponent({
|
||||||
const fromData = e.target.elements;
|
const fromData = e.target.elements;
|
||||||
const config = fromData.config.value === "def" ? null : fromData.config.value;
|
const config = fromData.config.value === "def" ? null : fromData.config.value;
|
||||||
|
|
||||||
this.status = "loading";
|
this.status = "loading"
|
||||||
let request: Promise<AxiosResponse<any, any>>;
|
let request: Promise<AxiosResponse<any, any>>
|
||||||
if(config){
|
if(config){
|
||||||
request = this.setNewsletterConfig({
|
request = this.setNewsletterConfig({
|
||||||
comTypeId: this.comType.id,
|
comTypeId: this.comType.id,
|
||||||
config: config,
|
config: config
|
||||||
});
|
})
|
||||||
} else {
|
} else {
|
||||||
request = this.deleteNewsletterConfig(this.comType.id);
|
request = this.deleteNewsletterConfig(this.comType.id)
|
||||||
}
|
}
|
||||||
request
|
request.then(() => {
|
||||||
.then(() => {
|
|
||||||
this.status = { status: "success" };
|
this.status = { status: "success" };
|
||||||
this.timeout = setTimeout(() => {
|
this.timeout = setTimeout(() => {
|
||||||
this.status = null;
|
this.status = null;
|
|
@ -38,8 +38,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQualificationStore } from "@/stores/admin/configuration/qualification";
|
import { useQualificationStore } from "@/stores/admin/settings/qualification";
|
||||||
import type { CreateQualificationViewModel } from "@/viewmodels/admin/configuration/qualification.models";
|
import type { CreateQualificationViewModel } from "@/viewmodels/admin/settings/qualification.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
import { useQualificationStore } from "@/stores/admin/configuration/qualification";
|
import { useQualificationStore } from "@/stores/admin/settings/qualification";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ qualification.qualification }}</p>
|
<p>{{ qualification.qualification }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'qualification')"
|
v-if="can('update', 'settings', 'qualification')"
|
||||||
:to="{ name: 'admin-configuration-qualification-edit', params: { id: qualification.id } }"
|
:to="{ name: 'admin-settings-qualification-edit', params: { id: qualification.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'qualification')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'qualification')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,7 +29,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { QualificationViewModel } from "@/viewmodels/admin/configuration/qualification.models";
|
import type { QualificationViewModel } from "@/viewmodels/admin/settings/qualification.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -45,9 +45,7 @@ export default defineComponent({
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(
|
defineAsyncComponent(() => import("@/components/admin/settings/qualification/DeleteQualificationModal.vue"))
|
||||||
() => import("@/components/admin/configuration/qualification/DeleteQualificationModal.vue")
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
this.qualification.id
|
this.qualification.id
|
||||||
);
|
);
|
|
@ -34,8 +34,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQueryStoreStore } from "@/stores/admin/configuration/queryStore";
|
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore";
|
||||||
import type { CreateQueryViewModel } from "@/viewmodels/admin/configuration/query.models";
|
import type { CreateQueryViewModel } from "@/viewmodels/admin/settings/query.models";
|
||||||
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQueryStoreStore } from "@/stores/admin/configuration/queryStore";
|
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -6,10 +6,10 @@
|
||||||
<div @click="loadUpdate">
|
<div @click="loadUpdate">
|
||||||
<EyeIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<EyeIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="can('update', 'configuration', 'query_store')" @click="loadUpdate">
|
<div v-if="can('update', 'settings', 'query_store')" @click="loadUpdate">
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="can('delete', 'configuration', 'query_store')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'query_store')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,7 +23,7 @@ import { mapState, mapActions, mapWritableState } from "pinia";
|
||||||
import { EyeIcon, PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { EyeIcon, PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { QueryViewModel } from "@/viewmodels/admin/configuration/query.models";
|
import type { QueryViewModel } from "@/viewmodels/admin/settings/query.models";
|
||||||
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -45,9 +45,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/queryStore/DeleteQueryStoreModal.vue"))),
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/queryStore/DeleteQueryStoreModal.vue"))
|
|
||||||
),
|
|
||||||
this.queryItem.id
|
this.queryItem.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -36,8 +36,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQueryStoreStore } from "@/stores/admin/configuration/queryStore";
|
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore";
|
||||||
import type { CreateQueryViewModel, UpdateQueryViewModel } from "@/viewmodels/admin/configuration/query.models";
|
import type { CreateQueryViewModel, UpdateQueryViewModel } from "@/viewmodels/admin/settings/query.models";
|
||||||
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -67,9 +67,7 @@ export default defineComponent({
|
||||||
...mapActions(useQueryStoreStore, ["updateActiveQueryStore"]),
|
...mapActions(useQueryStoreStore, ["updateActiveQueryStore"]),
|
||||||
changeToCreate() {
|
changeToCreate() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/queryStore/CreateQueryStoreModal.vue")))
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/queryStore/CreateQueryStoreModal.vue"))
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
triggerUpdate() {
|
triggerUpdate() {
|
|
@ -34,8 +34,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useSalutationStore } from "@/stores/admin/configuration/salutation";
|
import { useSalutationStore } from "@/stores/admin/settings/salutation";
|
||||||
import type { CreateSalutationViewModel } from "@/viewmodels/admin/configuration/salutation.models";
|
import type { CreateSalutationViewModel } from "@/viewmodels/admin/settings/salutation.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
import { useSalutationStore } from "@/stores/admin/configuration/salutation";
|
import { useSalutationStore } from "@/stores/admin/settings/salutation";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,12 +4,12 @@
|
||||||
<p>{{ salutation.salutation }}</p>
|
<p>{{ salutation.salutation }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'salutation')"
|
v-if="can('update', 'settings', 'salutation')"
|
||||||
:to="{ name: 'admin-configuration-salutation-edit', params: { id: salutation.id } }"
|
:to="{ name: 'admin-settings-salutation-edit', params: { id: salutation.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'configuration', 'salutation')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'salutation')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { SalutationViewModel } from "@/viewmodels/admin/configuration/salutation.models";
|
import type { SalutationViewModel } from "@/viewmodels/admin/settings/salutation.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -38,9 +38,7 @@ export default defineComponent({
|
||||||
...mapActions(useModalStore, ["openModal"]),
|
...mapActions(useModalStore, ["openModal"]),
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/salutation/DeleteSalutationModal.vue"))),
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/salutation/DeleteSalutationModal.vue"))
|
|
||||||
),
|
|
||||||
this.salutation.id
|
this.salutation.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -38,8 +38,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useTemplateStore } from "@/stores/admin/configuration/template";
|
import { useTemplateStore } from "@/stores/admin/settings/template";
|
||||||
import type { CreateTemplateViewModel } from "@/viewmodels/admin/configuration/template.models";
|
import type { CreateTemplateViewModel } from "@/viewmodels/admin/settings/template.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -70,7 +70,7 @@ export default defineComponent({
|
||||||
this.status = { status: "success" };
|
this.status = { status: "success" };
|
||||||
this.timeout = setTimeout(() => {
|
this.timeout = setTimeout(() => {
|
||||||
this.closeModal();
|
this.closeModal();
|
||||||
this.$router.push({ name: "admin-configuration-template-edit", params: { id: res.data } });
|
this.$router.push({ name: "admin-settings-template-edit", params: { id: res.data } });
|
||||||
}, 1500);
|
}, 1500);
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
|
@ -31,8 +31,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useQueryStoreStore } from "@/stores/admin/configuration/queryStore";
|
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore";
|
||||||
import { useTemplateStore } from "@/stores/admin/configuration/template";
|
import { useTemplateStore } from "@/stores/admin/settings/template";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,8 +4,8 @@
|
||||||
<p>{{ template.template }}</p>
|
<p>{{ template.template }}</p>
|
||||||
<div class="flex flex-row justify-end w-24">
|
<div class="flex flex-row justify-end w-24">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'configuration', 'template')"
|
v-if="can('update', 'settings', 'template')"
|
||||||
:to="{ name: 'admin-configuration-template-edit', params: { id: template.id } }"
|
:to="{ name: 'admin-settings-template-edit', params: { id: template.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<Spinner v-else-if="status == 'loading'" class="my-auto" />
|
<Spinner v-else-if="status == 'loading'" class="my-auto" />
|
||||||
<SuccessCheckmark v-else-if="status?.status == 'success'" />
|
<SuccessCheckmark v-else-if="status?.status == 'success'" />
|
||||||
<FailureXMark v-else-if="status?.status == 'failed'" />
|
<FailureXMark v-else-if="status?.status == 'failed'" />
|
||||||
<div v-if="can('delete', 'configuration', 'template')" @click="openDeleteModal">
|
<div v-if="can('delete', 'settings', 'template')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,8 +35,8 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import type { TemplateViewModel } from "@/viewmodels/admin/configuration/template.models";
|
import type { TemplateViewModel } from "@/viewmodels/admin/settings/template.models";
|
||||||
import { useTemplateStore } from "@/stores/admin/configuration/template";
|
import { useTemplateStore } from "@/stores/admin/settings/template";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
|
@ -66,9 +66,7 @@ export default defineComponent({
|
||||||
...mapActions(useTemplateStore,["cloneTemplate"]),
|
...mapActions(useTemplateStore,["cloneTemplate"]),
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/template/DeleteTemplateModal.vue"))),
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/template/DeleteTemplateModal.vue"))
|
|
||||||
),
|
|
||||||
this.template.id
|
this.template.id
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -78,13 +76,13 @@ export default defineComponent({
|
||||||
this.status = { status: "success" };
|
this.status = { status: "success" };
|
||||||
this.timeout = setTimeout(() => {
|
this.timeout = setTimeout(() => {
|
||||||
this.status = null;
|
this.status = null;
|
||||||
this.$router.push({ name: "admin-configuration-template-edit", params: { id: res.data } });
|
this.$router.push({ name: "admin-settings-template-edit", params: { id: res.data } });
|
||||||
}, 2000);
|
}, 2000);
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.status = { status: "failed" };
|
this.status = { status: "failed" };
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -14,7 +14,7 @@ import { defineComponent } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import { useTemplateUsageStore } from "@/stores/admin/configuration/templateUsage";
|
import { useTemplateUsageStore } from "@/stores/admin/settings/templateUsage";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -22,7 +22,7 @@ export default defineComponent({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
status: null as null | "loading" | { status: "success" | "failed"; reason?: string },
|
status: null as null | "loading" | { status: "success" | "failed"; reason?: string },
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(useModalStore, ["data"]),
|
...mapState(useModalStore, ["data"]),
|
||||||
|
@ -34,7 +34,7 @@ export default defineComponent({
|
||||||
...mapActions(useModalStore, ["closeModal"]),
|
...mapActions(useModalStore, ["closeModal"]),
|
||||||
...mapActions(useTemplateUsageStore, ["previewTemplateUsage"]),
|
...mapActions(useTemplateUsageStore, ["previewTemplateUsage"]),
|
||||||
fetchItem() {
|
fetchItem() {
|
||||||
this.status = "loading";
|
this.status = "loading"
|
||||||
this.previewTemplateUsage(this.data)
|
this.previewTemplateUsage(this.data)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.status = { status: "success" };
|
this.status = { status: "success" };
|
|
@ -6,24 +6,13 @@
|
||||||
<button type="button" class="!p-0 !h-fit !w-fit" title="Vorschau erzeugen" @click="previewUsage">
|
<button type="button" class="!p-0 !h-fit !w-fit" title="Vorschau erzeugen" @click="previewUsage">
|
||||||
<EyeIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
<EyeIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button v-if="status == null && can('create','settings','newsletter_config')" type="submit" class="!p-0 !h-fit !w-fit" title="speichern">
|
||||||
v-if="status == null && can('create', 'configuration', 'newsletter_config')"
|
|
||||||
type="submit"
|
|
||||||
class="!p-0 !h-fit !w-fit"
|
|
||||||
title="speichern"
|
|
||||||
>
|
|
||||||
<ArchiveBoxArrowDownIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
<ArchiveBoxArrowDownIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
||||||
</button>
|
</button>
|
||||||
<Spinner v-else-if="status == 'loading'" class="my-auto" />
|
<Spinner v-else-if="status == 'loading'" class="my-auto" />
|
||||||
<SuccessCheckmark v-else-if="status?.status == 'success'" />
|
<SuccessCheckmark v-else-if="status?.status == 'success'" />
|
||||||
<FailureXMark v-else-if="status?.status == 'failed'" />
|
<FailureXMark v-else-if="status?.status == 'failed'" />
|
||||||
<button
|
<button type="button" v-if="can('create','settings','newsletter_config')" class="!p-0 !h-fit !w-fit" title="zurücksetzen" @click="resetForm">
|
||||||
type="button"
|
|
||||||
v-if="can('create', 'configuration', 'newsletter_config')"
|
|
||||||
class="!p-0 !h-fit !w-fit"
|
|
||||||
title="zurücksetzen"
|
|
||||||
@click="resetForm"
|
|
||||||
>
|
|
||||||
<ArchiveBoxXMarkIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
<ArchiveBoxXMarkIcon class="w-5 h-5 p-1 box-content pointer-events-none" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,21 +23,12 @@
|
||||||
<p class="min-w-16">Kopfzeile:</p>
|
<p class="min-w-16">Kopfzeile:</p>
|
||||||
<select ref="header" id="header" :value="templateUsage.header?.id ?? 'def'">
|
<select ref="header" id="header" :value="templateUsage.header?.id ?? 'def'">
|
||||||
<option value="def">Standard-Vorlage verwenden</option>
|
<option value="def">Standard-Vorlage verwenden</option>
|
||||||
<option v-for="template in templates" :key="template.id" :value="template.id">
|
<option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option>
|
||||||
{{ template.template }}
|
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row gap-2 items-center">
|
<div class="flex flex-row gap-2 items-center">
|
||||||
<p class="whitespace-nowrap">Höhe [mm]:</p>
|
<p class="whitespace-nowrap">Höhe [mm]:</p>
|
||||||
<input
|
<input id="headerHeight" type="number" :min="15" v-model="templateUsage.headerHeight" class="!w-24" placeholder="15">
|
||||||
id="headerHeight"
|
|
||||||
type="number"
|
|
||||||
:min="15"
|
|
||||||
v-model="templateUsage.headerHeight"
|
|
||||||
class="!w-24"
|
|
||||||
placeholder="15"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row gap-2 items-center">
|
<div class="flex flex-row gap-2 items-center">
|
||||||
|
@ -63,21 +43,12 @@
|
||||||
<p class="min-w-16">Fußzeile:</p>
|
<p class="min-w-16">Fußzeile:</p>
|
||||||
<select ref="footer" id="footer" :value="templateUsage.footer?.id ?? 'def'">
|
<select ref="footer" id="footer" :value="templateUsage.footer?.id ?? 'def'">
|
||||||
<option value="def">Standard-Vorlage verwenden</option>
|
<option value="def">Standard-Vorlage verwenden</option>
|
||||||
<option v-for="template in templates" :key="template.id" :value="template.id">
|
<option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option>
|
||||||
{{ template.template }}
|
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row gap-2 items-center">
|
<div class="flex flex-row gap-2 items-center">
|
||||||
<p class="whitespace-nowrap">Höhe [mm]:</p>
|
<p class="whitespace-nowrap">Höhe [mm]:</p>
|
||||||
<input
|
<input id="footerHeight" type="number" :min="15" v-model="templateUsage.footerHeight" class="!w-24" placeholder="15">
|
||||||
id="footerHeight"
|
|
||||||
type="number"
|
|
||||||
:min="15"
|
|
||||||
v-model="templateUsage.footerHeight"
|
|
||||||
class="!w-24"
|
|
||||||
placeholder="15"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -88,9 +59,9 @@
|
||||||
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
|
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon, EyeIcon } from "@heroicons/vue/24/outline";
|
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon, EyeIcon } from "@heroicons/vue/24/outline";
|
||||||
import type { TemplateUsageViewModel } from "@/viewmodels/admin/configuration/templateUsage.models";
|
import type { TemplateUsageViewModel } from "@/viewmodels/admin/settings/templateUsage.models";
|
||||||
import { useTemplateStore } from "@/stores/admin/configuration/template";
|
import { useTemplateStore } from "@/stores/admin/settings/template";
|
||||||
import { useTemplateUsageStore } from "@/stores/admin/configuration/templateUsage";
|
import { useTemplateUsageStore } from "@/stores/admin/settings/templateUsage";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
|
@ -123,11 +94,9 @@ export default defineComponent({
|
||||||
...mapActions(useTemplateUsageStore, ["updateTemplateUsage"]),
|
...mapActions(useTemplateUsageStore, ["updateTemplateUsage"]),
|
||||||
previewUsage() {
|
previewUsage() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(
|
markRaw(defineAsyncComponent(() => import("@/components/admin/settings/templateUsage/TemplatePreviewModal.vue"))),
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/templateUsage/TemplatePreviewModal.vue"))
|
|
||||||
),
|
|
||||||
this.templateUsage.scope
|
this.templateUsage.scope
|
||||||
);
|
)
|
||||||
},
|
},
|
||||||
updateUsage(e: any) {
|
updateUsage(e: any) {
|
||||||
const fromData = e.target.elements;
|
const fromData = e.target.elements;
|
||||||
|
@ -137,14 +106,14 @@ export default defineComponent({
|
||||||
const headerHeight = fromData.footer.value === "" ? null : parseInt(fromData.headerHeight.value);
|
const headerHeight = fromData.footer.value === "" ? null : parseInt(fromData.headerHeight.value);
|
||||||
const footerHeight = fromData.footer.value === "" ? null : parseInt(fromData.footerHeight.value);
|
const footerHeight = fromData.footer.value === "" ? null : parseInt(fromData.footerHeight.value);
|
||||||
|
|
||||||
this.status = "loading";
|
this.status = "loading"
|
||||||
this.updateTemplateUsage({
|
this.updateTemplateUsage({
|
||||||
scope: this.templateUsage.scope,
|
scope: this.templateUsage.scope,
|
||||||
headerId: headerId,
|
headerId: headerId,
|
||||||
bodyId: bodyId,
|
bodyId: bodyId,
|
||||||
footerId: footerId,
|
footerId: footerId,
|
||||||
headerHeight:headerHeight,
|
headerHeight:headerHeight,
|
||||||
footerHeight: footerHeight,
|
footerHeight: footerHeight
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.status = { status: "success" };
|
this.status = { status: "success" };
|
|
@ -6,7 +6,7 @@
|
||||||
<div @click="downloadBackup">
|
<div @click="downloadBackup">
|
||||||
<ArrowDownTrayIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<ArrowDownTrayIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="can('admin', 'management', 'backup')" @click="openRestoreModal">
|
<div v-if="can('admin', 'user', 'backup')" @click="openRestoreModal">
|
||||||
<BarsArrowUpIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<BarsArrowUpIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -20,7 +20,7 @@ import { mapState, mapActions } from "pinia";
|
||||||
import { ArchiveBoxArrowDownIcon, ArrowDownTrayIcon, BarsArrowUpIcon } from "@heroicons/vue/24/outline";
|
import { ArchiveBoxArrowDownIcon, ArrowDownTrayIcon, BarsArrowUpIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import { useBackupStore } from "../../../../stores/admin/management/backup";
|
import { useBackupStore } from "../../../../stores/admin/user/backup";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -36,7 +36,7 @@ export default defineComponent({
|
||||||
...mapActions(useBackupStore, ["fetchBackupById"]),
|
...mapActions(useBackupStore, ["fetchBackupById"]),
|
||||||
openRestoreModal() {
|
openRestoreModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/management/backup/RestoreBackupModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/user/backup/RestoreBackupModal.vue"))),
|
||||||
this.backup
|
this.backup
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -30,7 +30,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useBackupStore } from "@/stores/admin/management/backup";
|
import { useBackupStore } from "@/stores/admin/user/backup";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -56,8 +56,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useBackupStore } from "@/stores/admin/management/backup";
|
import { useBackupStore } from "@/stores/admin/user/backup";
|
||||||
import type { BackupRestoreViewModel } from "../../../../viewmodels/admin/management/backup.models";
|
import type { BackupRestoreViewModel } from "../../../../viewmodels/admin/user/backup.models";
|
||||||
import { InformationCircleIcon } from "@heroicons/vue/24/outline";
|
import { InformationCircleIcon } from "@heroicons/vue/24/outline";
|
||||||
import { backupSections, type BackupSection } from "../../../../types/backupTypes";
|
import { backupSections, type BackupSection } from "../../../../types/backupTypes";
|
||||||
</script>
|
</script>
|
|
@ -51,7 +51,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useBackupStore } from "@/stores/admin/management/backup";
|
import { useBackupStore } from "@/stores/admin/user/backup";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
@ -75,6 +75,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
fileDrop(event: DragEvent) {
|
fileDrop(event: DragEvent) {
|
||||||
const file = event.dataTransfer?.files[0];
|
const file = event.dataTransfer?.files[0];
|
||||||
|
console.log("hi", file);
|
||||||
if (file?.type.toLocaleLowerCase() != "application/json") return;
|
if (file?.type.toLocaleLowerCase() != "application/json") return;
|
||||||
this.uploadFile(file);
|
this.uploadFile(file);
|
||||||
},
|
},
|
|
@ -34,7 +34,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useRoleStore } from "@/stores/admin/management/role";
|
import { useRoleStore } from "@/stores/admin/user/role";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -4,18 +4,18 @@
|
||||||
<p>{{ role.role }} <small v-if="role.permissions.admin">(Admin)</small></p>
|
<p>{{ role.role }} <small v-if="role.permissions.admin">(Admin)</small></p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('admin', 'management', 'role')"
|
v-if="can('admin', 'user', 'role')"
|
||||||
:to="{ name: 'admin-management-role-permission', params: { id: role.id } }"
|
:to="{ name: 'admin-user-role-permission', params: { id: role.id } }"
|
||||||
>
|
>
|
||||||
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'management', 'role')"
|
v-if="can('update', 'user', 'role')"
|
||||||
:to="{ name: 'admin-management-role-edit', params: { id: role.id } }"
|
:to="{ name: 'admin-user-role-edit', params: { id: role.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'management', 'role')" @click="openDeleteModal">
|
<div v-if="can('delete', 'user', 'role')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import type { RoleViewModel } from "@/viewmodels/admin/management/role.models";
|
import type { RoleViewModel } from "@/viewmodels/admin/user/role.models";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
|
@ -45,7 +45,7 @@ export default defineComponent({
|
||||||
...mapActions(useModalStore, ["openModal"]),
|
...mapActions(useModalStore, ["openModal"]),
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/management/role/DeleteRoleModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/user/role/DeleteRoleModal.vue"))),
|
||||||
this.role.id
|
this.role.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useUserStore } from "@/stores/admin/management/user";
|
import { useUserStore } from "@/stores/admin/user/user";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
||||||
<p>{{ invite.firstname }} {{ invite.lastname }}</p>
|
<p>{{ invite.firstname }} {{ invite.lastname }}</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<div v-if="can('delete', 'management', 'user')" @click="triggerDeleteInvite">
|
<div v-if="can('delete', 'user', 'user')" @click="triggerDeleteInvite">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,10 +24,10 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineComponent, type PropType } from "vue";
|
import { defineComponent, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import type { InviteViewModel } from "@/viewmodels/admin/management/invite.models";
|
import type { InviteViewModel } from "@/viewmodels/admin/user/invite.models";
|
||||||
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useInviteStore } from "@/stores/admin/management/invite";
|
import { useInviteStore } from "@/stores/admin/user/invite";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -47,8 +47,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useInviteStore } from "@/stores/admin/management/invite";
|
import { useInviteStore } from "@/stores/admin/user/invite";
|
||||||
import type { CreateInviteViewModel } from "@/viewmodels/admin/management/invite.models";
|
import type { CreateInviteViewModel } from "@/viewmodels/admin/user/invite.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -7,25 +7,25 @@
|
||||||
</p>
|
</p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('admin', 'management', 'user')"
|
v-if="can('admin', 'user', 'user')"
|
||||||
:to="{ name: 'admin-management-user-roles', params: { id: user.id } }"
|
:to="{ name: 'admin-user-user-roles', params: { id: user.id } }"
|
||||||
>
|
>
|
||||||
<UserGroupIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<UserGroupIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('admin', 'management', 'user')"
|
v-if="can('admin', 'user', 'user')"
|
||||||
:to="{ name: 'admin-management-user-permission', params: { id: user.id } }"
|
:to="{ name: 'admin-user-user-permission', params: { id: user.id } }"
|
||||||
>
|
>
|
||||||
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'management', 'user')"
|
v-if="can('update', 'user', 'user')"
|
||||||
:to="{ name: 'admin-management-user-edit', params: { id: user.id } }"
|
:to="{ name: 'admin-user-user-edit', params: { id: user.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div
|
<div
|
||||||
v-if="can('delete', 'management', 'user')"
|
v-if="can('delete', 'user', 'user')"
|
||||||
:class="user.isOwner ? 'opacity-75 pointer-events-none' : ''"
|
:class="user.isOwner ? 'opacity-75 pointer-events-none' : ''"
|
||||||
@click="openDeleteModal"
|
@click="openDeleteModal"
|
||||||
>
|
>
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import type { UserViewModel } from "@/viewmodels/admin/management/user.models";
|
import type { UserViewModel } from "@/viewmodels/admin/user/user.models";
|
||||||
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
|
@ -76,7 +76,7 @@ export default defineComponent({
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
if (this.user.isOwner) return;
|
if (this.user.isOwner) return;
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/management/user/DeleteUserModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/user/user/DeleteUserModal.vue"))),
|
||||||
this.user.id
|
this.user.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -38,8 +38,8 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useWebapiStore } from "@/stores/admin/management/webapi";
|
import { useWebapiStore } from "@/stores/admin/user/webapi";
|
||||||
import type { CreateWebapiViewModel } from "../../../../viewmodels/admin/management/webapi.models";
|
import type { CreateWebapiViewModel } from "../../../../viewmodels/admin/user/webapi.models";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -31,7 +31,7 @@ import { useModalStore } from "@/stores/modal";
|
||||||
import Spinner from "@/components/Spinner.vue";
|
import Spinner from "@/components/Spinner.vue";
|
||||||
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
|
||||||
import FailureXMark from "@/components/FailureXMark.vue";
|
import FailureXMark from "@/components/FailureXMark.vue";
|
||||||
import { useWebapiStore } from "@/stores/admin/management/webapi";
|
import { useWebapiStore } from "@/stores/admin/user/webapi";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -3,22 +3,22 @@
|
||||||
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
|
||||||
<p>{{ webapi.title }} <small v-if="webapi.permissions.admin">(Admin)</small></p>
|
<p>{{ webapi.title }} <small v-if="webapi.permissions.admin">(Admin)</small></p>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<div v-if="can('admin', 'management', 'webapi')" @click="openTokenViewModal">
|
<div v-if="can('admin', 'user', 'webapi')" @click="openTokenViewModal">
|
||||||
<FingerPrintIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<FingerPrintIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('admin', 'management', 'webapi')"
|
v-if="can('admin', 'user', 'webapi')"
|
||||||
:to="{ name: 'admin-management-webapi-permission', params: { id: webapi.id } }"
|
:to="{ name: 'admin-user-webapi-permission', params: { id: webapi.id } }"
|
||||||
>
|
>
|
||||||
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<WrenchScrewdriverIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
v-if="can('update', 'management', 'webapi')"
|
v-if="can('update', 'user', 'webapi')"
|
||||||
:to="{ name: 'admin-management-webapi-edit', params: { id: webapi.id } }"
|
:to="{ name: 'admin-user-webapi-edit', params: { id: webapi.id } }"
|
||||||
>
|
>
|
||||||
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<div v-if="can('delete', 'management', 'webapi')" @click="openDeleteModal">
|
<div v-if="can('delete', 'user', 'webapi')" @click="openDeleteModal">
|
||||||
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { PencilIcon, WrenchScrewdriverIcon, TrashIcon, FingerPrintIcon } from "@heroicons/vue/24/outline";
|
import { PencilIcon, WrenchScrewdriverIcon, TrashIcon, FingerPrintIcon } from "@heroicons/vue/24/outline";
|
||||||
import type { WebapiViewModel } from "@/viewmodels/admin/management/webapi.models";
|
import type { WebapiViewModel } from "@/viewmodels/admin/user/webapi.models";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
|
@ -92,13 +92,13 @@ export default defineComponent({
|
||||||
...mapActions(useModalStore, ["openModal"]),
|
...mapActions(useModalStore, ["openModal"]),
|
||||||
openTokenViewModal() {
|
openTokenViewModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/management/webapi/WebapiTokenModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/user/webapi/WebapiTokenModal.vue"))),
|
||||||
this.webapi.id
|
this.webapi.id
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
openDeleteModal() {
|
openDeleteModal() {
|
||||||
this.openModal(
|
this.openModal(
|
||||||
markRaw(defineAsyncComponent(() => import("@/components/admin/management/webapi/DeleteWebapiModal.vue"))),
|
markRaw(defineAsyncComponent(() => import("@/components/admin/user/webapi/DeleteWebapiModal.vue"))),
|
||||||
this.webapi.id
|
this.webapi.id
|
||||||
);
|
);
|
||||||
},
|
},
|
|
@ -21,14 +21,14 @@ import { defineComponent } from "vue";
|
||||||
import { mapState, mapActions } from "pinia";
|
import { mapState, mapActions } from "pinia";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import { useCalendarTypeStore } from "@/stores/admin/configuration/calendarType";
|
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType";
|
||||||
import type { CalendarTypeViewModel } from "@/viewmodels/admin/configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
|
||||||
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
|
||||||
import TextCopy from "@/components/TextCopy.vue";
|
import TextCopy from "@/components/TextCopy.vue";
|
||||||
import { CalendarDaysIcon, InformationCircleIcon } from "@heroicons/vue/24/outline";
|
import { CalendarDaysIcon, InformationCircleIcon } from "@heroicons/vue/24/outline";
|
||||||
import { host } from "@/serverCom";
|
import { host } from "@/serverCom";
|
||||||
import { useWebapiStore } from "../../../../stores/admin/management/webapi";
|
import { useWebapiStore } from "../../../../stores/admin/user/webapi";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
|
@ -27,7 +27,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="grow"></div>
|
<div class="grow"></div>
|
||||||
<div
|
<div
|
||||||
v-if="allowPredefinedSelect && can('read', 'configuration', 'query_store')"
|
v-if="allowPredefinedSelect && can('read', 'settings', 'query_store')"
|
||||||
class="flex flex-row gap-2 max-lg:w-full max-lg:order-10"
|
class="flex flex-row gap-2 max-lg:w-full max-lg:order-10"
|
||||||
>
|
>
|
||||||
<select v-model="activeQueryId" class="max-h-[34px] !py-0">
|
<select v-model="activeQueryId" class="max-h-[34px] !py-0">
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
<div
|
<div
|
||||||
v-if="can('create', 'configuration', 'query_store')"
|
v-if="can('create', 'settings', 'query_store')"
|
||||||
class="p-1 border border-gray-400 bg-gray-100 rounded-md"
|
class="p-1 border border-gray-400 bg-gray-100 rounded-md"
|
||||||
title="Abfrage speichern"
|
title="Abfrage speichern"
|
||||||
@click="$emit('query:save')"
|
@click="$emit('query:save')"
|
||||||
|
@ -93,7 +93,7 @@ import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder";
|
||||||
import { useModalStore } from "@/stores/modal";
|
import { useModalStore } from "@/stores/modal";
|
||||||
import Table from "./Table.vue";
|
import Table from "./Table.vue";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import { useQueryStoreStore } from "@/stores/admin/configuration/queryStore";
|
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
|
@ -7,15 +7,15 @@ export async function abilityAndNavUpdate(to: any, from: any, next: any) {
|
||||||
const ability = useAbilityStore();
|
const ability = useAbilityStore();
|
||||||
const navigation = useNavigationStore();
|
const navigation = useNavigationStore();
|
||||||
|
|
||||||
let admin = to.meta.admin || false;
|
|
||||||
let type = to.meta.type;
|
let type = to.meta.type;
|
||||||
let section = to.meta.section;
|
let section = to.meta.section;
|
||||||
let module = to.meta.module;
|
let module = to.meta.module;
|
||||||
|
|
||||||
if ((admin && ability.isAdmin()) || ability.can(type, section, module)) {
|
|
||||||
NProgress.done();
|
|
||||||
navigation.activeNavigation = to.name.split("-")[1];
|
navigation.activeNavigation = to.name.split("-")[1];
|
||||||
navigation.activeLink = to.name.split("-")[2];
|
navigation.activeLink = to.name.split("-")[2];
|
||||||
|
|
||||||
|
if (ability.can(type, section, module)) {
|
||||||
|
NProgress.done();
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
NProgress.done();
|
NProgress.done();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useBackupStore } from "../stores/admin/management/backup";
|
import { useBackupStore } from "../stores/admin/user/backup";
|
||||||
|
|
||||||
export async function setBackupPage(to: any, from: any, next: any) {
|
export async function setBackupPage(to: any, from: any, next: any) {
|
||||||
const backup = useBackupStore();
|
const backup = useBackupStore();
|
||||||
|
|
|
@ -298,36 +298,36 @@ const router = createRouter({
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "configuration",
|
path: "settings",
|
||||||
name: "admin-configuration",
|
name: "admin-settings",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration" },
|
meta: { type: "read", section: "settings" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-default",
|
name: "admin-settings-default",
|
||||||
component: () => import("@/views/admin/ViewSelect.vue"),
|
component: () => import("@/views/admin/ViewSelect.vue"),
|
||||||
meta: { type: "read", section: "configuration" },
|
meta: { type: "read", section: "settings" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "qualification",
|
path: "qualification",
|
||||||
name: "admin-configuration-qualification-route",
|
name: "admin-settings-qualification-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "qualification" },
|
meta: { type: "read", section: "settings", module: "qualification" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-qualification",
|
name: "admin-settings-qualification",
|
||||||
component: () => import("@/views/admin/configuration/qualification/Qualification.vue"),
|
component: () => import("@/views/admin/settings/qualification/Qualification.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-qualification-edit",
|
name: "admin-settings-qualification-edit",
|
||||||
component: () => import("@/views/admin/configuration/qualification/QualificationEdit.vue"),
|
component: () => import("@/views/admin/settings/qualification/QualificationEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "qualification" },
|
meta: { type: "update", section: "settings", module: "qualification" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -335,21 +335,21 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "award",
|
path: "award",
|
||||||
name: "admin-configuration-award-route",
|
name: "admin-settings-award-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "award" },
|
meta: { type: "read", section: "settings", module: "award" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-award",
|
name: "admin-settings-award",
|
||||||
component: () => import("@/views/admin/configuration/award/Award.vue"),
|
component: () => import("@/views/admin/settings/award/Award.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-award-edit",
|
name: "admin-settings-award-edit",
|
||||||
component: () => import("@/views/admin/configuration/award/AwardEdit.vue"),
|
component: () => import("@/views/admin/settings/award/AwardEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "award" },
|
meta: { type: "update", section: "settings", module: "award" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -357,23 +357,23 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "executive-position",
|
path: "executive-position",
|
||||||
name: "admin-configuration-executive_position-route",
|
name: "admin-settings-executive_position-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "executive_position" },
|
meta: { type: "read", section: "settings", module: "executive_position" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-executive_position",
|
name: "admin-settings-executive_position",
|
||||||
component: () => import("@/views/admin/configuration/executivePosition/ExecutivePosition.vue"),
|
component: () => import("@/views/admin/settings/executivePosition/ExecutivePosition.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "executive_position" },
|
meta: { type: "read", section: "settings", module: "executive_position" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-executive_position-edit",
|
name: "admin-settings-executive_position-edit",
|
||||||
component: () => import("@/views/admin/configuration/executivePosition/ExecutivePositionEdit.vue"),
|
component: () => import("@/views/admin/settings/executivePosition/ExecutivePositionEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "executive_position" },
|
meta: { type: "update", section: "settings", module: "executive_position" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -381,21 +381,21 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "communication-type",
|
path: "communication-type",
|
||||||
name: "admin-configuration-communication_type-route",
|
name: "admin-settings-communication_type-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "communication_type" },
|
meta: { type: "read", section: "settings", module: "communication_type" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-communication_type",
|
name: "admin-settings-communication_type",
|
||||||
component: () => import("@/views/admin/configuration/communicationType/CommunicationType.vue"),
|
component: () => import("@/views/admin/settings/communicationType/CommunicationType.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-communication_type-edit",
|
name: "admin-settings-communication_type-edit",
|
||||||
component: () => import("@/views/admin/configuration/communicationType/CommunicationTypeEdit.vue"),
|
component: () => import("@/views/admin/settings/communicationType/CommunicationTypeEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "communication_type" },
|
meta: { type: "update", section: "settings", module: "communication_type" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -403,21 +403,21 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "status",
|
path: "status",
|
||||||
name: "admin-configuration-membership_status-route",
|
name: "admin-settings-membership_status-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "membership_status" },
|
meta: { type: "read", section: "settings", module: "membership_status" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-membership_status",
|
name: "admin-settings-membership_status",
|
||||||
component: () => import("@/views/admin/configuration/membershipStatus/MembershipStatus.vue"),
|
component: () => import("@/views/admin/settings/membershipStatus/MembershipStatus.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-membership_status-edit",
|
name: "admin-settings-membership_status-edit",
|
||||||
component: () => import("@/views/admin/configuration/membershipStatus/MembershipStatusEdit.vue"),
|
component: () => import("@/views/admin/settings/membershipStatus/MembershipStatusEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "membership_status" },
|
meta: { type: "update", section: "settings", module: "membership_status" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -425,21 +425,21 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "salutation",
|
path: "salutation",
|
||||||
name: "admin-configuration-salutation-route",
|
name: "admin-settings-salutation-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "salutation" },
|
meta: { type: "read", section: "settings", module: "salutation" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-salutation",
|
name: "admin-settings-salutation",
|
||||||
component: () => import("@/views/admin/configuration/salutation/Salutation.vue"),
|
component: () => import("@/views/admin/settings/salutation/Salutation.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-salutation-edit",
|
name: "admin-settings-salutation-edit",
|
||||||
component: () => import("@/views/admin/configuration/salutation/SalutationEdit.vue"),
|
component: () => import("@/views/admin/settings/salutation/SalutationEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "salutation" },
|
meta: { type: "update", section: "settings", module: "salutation" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -447,21 +447,21 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "calendar-type",
|
path: "calendar-type",
|
||||||
name: "admin-configuration-calendar_type-route",
|
name: "admin-settings-calendar_type-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "calendar_type" },
|
meta: { type: "read", section: "settings", module: "calendar_type" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-calendar_type",
|
name: "admin-settings-calendar_type",
|
||||||
component: () => import("@/views/admin/configuration/calendarType/CalendarType.vue"),
|
component: () => import("@/views/admin/settings/calendarType/CalendarType.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-calendar_type-edit",
|
name: "admin-settings-calendar_type-edit",
|
||||||
component: () => import("@/views/admin/configuration/calendarType/CalendarTypeEdit.vue"),
|
component: () => import("@/views/admin/settings/calendarType/CalendarTypeEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "calendar_type" },
|
meta: { type: "update", section: "settings", module: "calendar_type" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -469,34 +469,34 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "query-store",
|
path: "query-store",
|
||||||
name: "admin-configuration-query_store",
|
name: "admin-settings-query_store",
|
||||||
component: () => import("@/views/admin/configuration/queryStore/QueryStore.vue"),
|
component: () => import("@/views/admin/settings/queryStore/QueryStore.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "query_store" },
|
meta: { type: "read", section: "settings", module: "query_store" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "template",
|
path: "template",
|
||||||
name: "admin-configuration-template-route",
|
name: "admin-settings-template-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "template" },
|
meta: { type: "read", section: "settings", module: "template" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-configuration-template",
|
name: "admin-settings-template",
|
||||||
component: () => import("@/views/admin/configuration/template/Template.vue"),
|
component: () => import("@/views/admin/settings/template/Template.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "info",
|
path: "info",
|
||||||
name: "admin-configuration-template-info",
|
name: "admin-settings-template-info",
|
||||||
component: () => import("@/views/admin/configuration/template/UsageInfo.vue"),
|
component: () => import("@/views/admin/settings/template/UsageInfo.vue"),
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-configuration-template-edit",
|
name: "admin-settings-template-edit",
|
||||||
component: () => import("@/views/admin/configuration/template/TemplateEdit.vue"),
|
component: () => import("@/views/admin/settings/template/TemplateEdit.vue"),
|
||||||
meta: { type: "update", section: "configuration", module: "template" },
|
meta: { type: "update", section: "settings", module: "template" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -504,72 +504,72 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "template-usage",
|
path: "template-usage",
|
||||||
name: "admin-configuration-template_usage",
|
name: "admin-settings-template_usage",
|
||||||
component: () => import("@/views/admin/configuration/templateUsage/TemplateUsage.vue"),
|
component: () => import("@/views/admin/settings/templateUsage/TemplateUsage.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "template_usage" },
|
meta: { type: "read", section: "settings", module: "template_usage" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "newsletter-config",
|
path: "newsletter-config",
|
||||||
name: "admin-configuration-newsletter_config",
|
name: "admin-settings-newsletter_config",
|
||||||
component: () => import("@/views/admin/configuration/newsletterConfig/NewsletterConfig.vue"),
|
component: () => import("@/views/admin/settings/newsletterConfig/NewsletterConfig.vue"),
|
||||||
meta: { type: "read", section: "configuration", module: "newsletter_config" },
|
meta: { type: "read", section: "settings", module: "newsletter_config" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "management",
|
path: "user",
|
||||||
name: "admin-management",
|
name: "admin-user",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "management" },
|
meta: { type: "read", section: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-management-default",
|
name: "admin-user-default",
|
||||||
component: () => import("@/views/admin/ViewSelect.vue"),
|
component: () => import("@/views/admin/ViewSelect.vue"),
|
||||||
meta: { type: "read", section: "management" },
|
meta: { type: "read", section: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "user",
|
path: "user",
|
||||||
name: "admin-management-user-route",
|
name: "admin-user-user-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "management", module: "user" },
|
meta: { type: "read", section: "user", module: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-management-user",
|
name: "admin-user-user",
|
||||||
component: () => import("@/views/admin/management/user/User.vue"),
|
component: () => import("@/views/admin/user/user/User.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "invites",
|
path: "invites",
|
||||||
name: "admin-management-user-invites",
|
name: "admin-user-user-invites",
|
||||||
component: () => import("@/views/admin/management/user/Invite.vue"),
|
component: () => import("@/views/admin/user/user/Invite.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-management-user-edit",
|
name: "admin-user-user-edit",
|
||||||
component: () => import("@/views/admin/management/user/UserEdit.vue"),
|
component: () => import("@/views/admin/user/user/UserEdit.vue"),
|
||||||
meta: { type: "update", section: "management", module: "user" },
|
meta: { type: "update", section: "user", module: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/permission",
|
path: ":id/permission",
|
||||||
name: "admin-management-user-permission",
|
name: "admin-user-user-permission",
|
||||||
component: () => import("@/views/admin/management/user/UserEditPermission.vue"),
|
component: () => import("@/views/admin/user/user/UserEditPermission.vue"),
|
||||||
meta: { type: "update", section: "management", module: "user" },
|
meta: { type: "update", section: "user", module: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/roles",
|
path: ":id/roles",
|
||||||
name: "admin-management-user-roles",
|
name: "admin-user-user-roles",
|
||||||
component: () => import("@/views/admin/management/user/UserEditRoles.vue"),
|
component: () => import("@/views/admin/user/user/UserEditRoles.vue"),
|
||||||
meta: { type: "update", section: "management", module: "user" },
|
meta: { type: "update", section: "user", module: "user" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -577,29 +577,29 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "role",
|
path: "role",
|
||||||
name: "admin-management-role-route",
|
name: "admin-user-role-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "management", module: "role" },
|
meta: { type: "read", section: "user", module: "role" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-management-role",
|
name: "admin-user-role",
|
||||||
component: () => import("@/views/admin/management/role/Role.vue"),
|
component: () => import("@/views/admin/user/role/Role.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-management-role-edit",
|
name: "admin-user-role-edit",
|
||||||
component: () => import("@/views/admin/management/role/RoleEdit.vue"),
|
component: () => import("@/views/admin/user/role/RoleEdit.vue"),
|
||||||
meta: { type: "update", section: "management", module: "role" },
|
meta: { type: "update", section: "user", module: "role" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/permission",
|
path: ":id/permission",
|
||||||
name: "admin-management-role-permission",
|
name: "admin-user-role-permission",
|
||||||
component: () => import("@/views/admin/management/role/RoleEditPermission.vue"),
|
component: () => import("@/views/admin/user/role/RoleEditPermission.vue"),
|
||||||
meta: { type: "update", section: "management", module: "role" },
|
meta: { type: "update", section: "user", module: "role" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -607,29 +607,29 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "webapi",
|
path: "webapi",
|
||||||
name: "admin-management-webapi-route",
|
name: "admin-user-webapi-route",
|
||||||
component: () => import("@/views/RouterView.vue"),
|
component: () => import("@/views/RouterView.vue"),
|
||||||
meta: { type: "read", section: "management", module: "webapi" },
|
meta: { type: "read", section: "user", module: "webapi" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-management-webapi",
|
name: "admin-user-webapi",
|
||||||
component: () => import("@/views/admin/management/webapi/Webapi.vue"),
|
component: () => import("@/views/admin/user/webapi/Webapi.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/edit",
|
path: ":id/edit",
|
||||||
name: "admin-management-webapi-edit",
|
name: "admin-user-webapi-edit",
|
||||||
component: () => import("@/views/admin/management/webapi/WebapiEdit.vue"),
|
component: () => import("@/views/admin/user/webapi/WebapiEdit.vue"),
|
||||||
meta: { type: "update", section: "management", module: "webapi" },
|
meta: { type: "update", section: "user", module: "webapi" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ":id/permission",
|
path: ":id/permission",
|
||||||
name: "admin-management-webapi-permission",
|
name: "admin-user-webapi-permission",
|
||||||
component: () => import("@/views/admin/management/webapi/WebapiEditPermission.vue"),
|
component: () => import("@/views/admin/user/webapi/WebapiEditPermission.vue"),
|
||||||
meta: { type: "update", section: "management", module: "webapi" },
|
meta: { type: "update", section: "user", module: "webapi" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
|
@ -637,36 +637,34 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "backup",
|
path: "backup",
|
||||||
name: "admin-management-backup-route",
|
name: "admin-user-backup-route",
|
||||||
component: () => import("@/views/admin/management/backup/BackupRouting.vue"),
|
component: () => import("@/views/admin/user/backup/BackupRouting.vue"),
|
||||||
meta: { type: "read", section: "management", module: "backup" },
|
meta: { type: "read", section: "user", module: "backup" },
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
beforeEnter: [abilityAndNavUpdate],
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "admin-management-backup",
|
name: "admin-user-backup",
|
||||||
redirect: { name: "admin-management-backup-generated" },
|
redirect: { name: "admin-user-backup-generated" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "generated",
|
path: "generated",
|
||||||
name: "admin-management-backup-generated",
|
name: "admin-user-backup-generated",
|
||||||
component: () => import("@/views/admin/management/backup/GeneratedBackup.vue"),
|
component: () => import("@/views/admin/user/backup/GeneratedBackup.vue"),
|
||||||
beforeEnter: [setBackupPage],
|
beforeEnter: [setBackupPage],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "uploads",
|
path: "uploads",
|
||||||
name: "admin-management-backup-uploaded",
|
name: "admin-user-backup-uploaded",
|
||||||
component: () => import("@/views/admin/management/backup/UploadedBackup.vue"),
|
component: () => import("@/views/admin/user/backup/UploadedBackup.vue"),
|
||||||
beforeEnter: [setBackupPage],
|
beforeEnter: [setBackupPage],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "version",
|
path: "version",
|
||||||
name: "admin-management-version",
|
name: "admin-user-version",
|
||||||
component: () => import("@/views/admin/management/version/VersionDisplay.vue"),
|
component: () => import("@/views/admin/user/version/VersionDisplay.vue"),
|
||||||
meta: { admin: true },
|
|
||||||
beforeEnter: [abilityAndNavUpdate],
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -778,7 +776,6 @@ export default router;
|
||||||
|
|
||||||
declare module "vue-router" {
|
declare module "vue-router" {
|
||||||
interface RouteMeta {
|
interface RouteMeta {
|
||||||
admin?: boolean;
|
|
||||||
type?: PermissionType | "admin";
|
type?: PermissionType | "admin";
|
||||||
section?: PermissionSection;
|
section?: PermissionSection;
|
||||||
module?: PermissionModule;
|
module?: PermissionModule;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { TableMeta } from "@/viewmodels/admin/configuration/query.models";
|
import type { TableMeta } from "@/viewmodels/admin/settings/query.models";
|
||||||
import type { DynamicQueryStructure, FieldType } from "@/types/dynamicQueries";
|
import type { DynamicQueryStructure, FieldType } from "@/types/dynamicQueries";
|
||||||
|
|
||||||
export const useQueryBuilderStore = defineStore("queryBuilder", {
|
export const useQueryBuilderStore = defineStore("queryBuilder", {
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { useAbilityStore } from "@/stores/ability";
|
import { useAbilityStore } from "@/stores/ability";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
import type { PermissionSection } from "../../types/permissionTypes";
|
|
||||||
|
|
||||||
export type navigationModel = {
|
export interface navigationModel {
|
||||||
[key in topLevelNavigationType]: navigationSplitModel;
|
club: navigationSplitModel;
|
||||||
};
|
settings: navigationSplitModel;
|
||||||
|
user: navigationSplitModel;
|
||||||
|
}
|
||||||
|
|
||||||
export interface navigationSplitModel {
|
export interface navigationSplitModel {
|
||||||
topTitle?: string;
|
topTitle?: string;
|
||||||
|
@ -14,7 +15,7 @@ export interface navigationSplitModel {
|
||||||
main: Array<navigationLinkModel>;
|
main: Array<navigationLinkModel>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type topLevelNavigationType = PermissionSection;
|
export type topLevelNavigationType = "club" | "settings" | "user";
|
||||||
|
|
||||||
export interface topLevelNavigationModel {
|
export interface topLevelNavigationModel {
|
||||||
key: topLevelNavigationType;
|
key: topLevelNavigationType;
|
||||||
|
@ -57,20 +58,20 @@ export const useNavigationStore = defineStore("navigation", {
|
||||||
} as topLevelNavigationModel,
|
} as topLevelNavigationModel,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.canSection("read", "configuration")
|
...(abilityStore.canSection("read", "settings")
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
key: "configuration",
|
key: "settings",
|
||||||
title: "Konfiguration",
|
title: "Einstellungen",
|
||||||
levelDefault: "salutation",
|
levelDefault: "salutation",
|
||||||
} as topLevelNavigationModel,
|
} as topLevelNavigationModel,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.canSection("read", "management")
|
...(abilityStore.canSection("read", "user")
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
key: "management",
|
key: "user",
|
||||||
title: "Verwaltung",
|
title: "Benutzer",
|
||||||
levelDefault: "user",
|
levelDefault: "user",
|
||||||
} as topLevelNavigationModel,
|
} as topLevelNavigationModel,
|
||||||
]
|
]
|
||||||
|
@ -94,49 +95,45 @@ export const useNavigationStore = defineStore("navigation", {
|
||||||
...(abilityStore.can("read", "club", "query") ? [{ key: "query_builder", title: "Query Builder" }] : []),
|
...(abilityStore.can("read", "club", "query") ? [{ key: "query_builder", title: "Query Builder" }] : []),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
configuration: {
|
settings: {
|
||||||
mainTitle: "Einstellungen",
|
mainTitle: "Einstellungen",
|
||||||
main: [
|
main: [
|
||||||
{ key: "divider1", title: "Mitgliederdaten" },
|
{ key: "divider1", title: "Mitgliederdaten" },
|
||||||
...(abilityStore.can("read", "configuration", "salutation")
|
...(abilityStore.can("read", "settings", "salutation") ? [{ key: "salutation", title: "Anrede" }] : []),
|
||||||
? [{ key: "salutation", title: "Anrede" }]
|
...(abilityStore.can("read", "settings", "award") ? [{ key: "award", title: "Auszeichnungen" }] : []),
|
||||||
: []),
|
...(abilityStore.can("read", "settings", "communication_type")
|
||||||
...(abilityStore.can("read", "configuration", "award") ? [{ key: "award", title: "Auszeichnungen" }] : []),
|
|
||||||
...(abilityStore.can("read", "configuration", "communication_type")
|
|
||||||
? [{ key: "communication_type", title: "Kommunikationsarten" }]
|
? [{ key: "communication_type", title: "Kommunikationsarten" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "membership_status")
|
...(abilityStore.can("read", "settings", "membership_status")
|
||||||
? [{ key: "membership_status", title: "Mitgliedsstatus" }]
|
? [{ key: "membership_status", title: "Mitgliedsstatus" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "qualification")
|
...(abilityStore.can("read", "settings", "qualification")
|
||||||
? [{ key: "qualification", title: "Qualifikationen" }]
|
? [{ key: "qualification", title: "Qualifikationen" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "executive_position")
|
...(abilityStore.can("read", "settings", "executive_position")
|
||||||
? [{ key: "executive_position", title: "Vereinsämter" }]
|
? [{ key: "executive_position", title: "Vereinsämter" }]
|
||||||
: []),
|
: []),
|
||||||
{ key: "divider2", title: "Einstellungen" },
|
{ key: "divider2", title: "Einstellungen" },
|
||||||
...(abilityStore.can("read", "configuration", "newsletter_config")
|
...(abilityStore.can("read", "settings", "newsletter_config")
|
||||||
? [{ key: "newsletter_config", title: "Newsletter Konfiguration" }]
|
? [{ key: "newsletter_config", title: "Newsletter Konfiguration" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "template") ? [{ key: "template", title: "Templates" }] : []),
|
...(abilityStore.can("read", "settings", "template") ? [{ key: "template", title: "Templates" }] : []),
|
||||||
...(abilityStore.can("read", "configuration", "template_usage")
|
...(abilityStore.can("read", "settings", "template_usage")
|
||||||
? [{ key: "template_usage", title: "Template-Verwendung" }]
|
? [{ key: "template_usage", title: "Template-Verwendung" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "calendar_type")
|
...(abilityStore.can("read", "settings", "calendar_type")
|
||||||
? [{ key: "calendar_type", title: "Terminarten" }]
|
? [{ key: "calendar_type", title: "Terminarten" }]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.can("read", "configuration", "query")
|
...(abilityStore.can("read", "settings", "query") ? [{ key: "query_store", title: "Query Store" }] : []),
|
||||||
? [{ key: "query_store", title: "Query Store" }]
|
|
||||||
: []),
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
management: {
|
user: {
|
||||||
mainTitle: "Benutzer",
|
mainTitle: "Benutzer",
|
||||||
main: [
|
main: [
|
||||||
...(abilityStore.can("read", "management", "user") ? [{ key: "user", title: "Benutzer" }] : []),
|
...(abilityStore.can("read", "user", "user") ? [{ key: "user", title: "Benutzer" }] : []),
|
||||||
...(abilityStore.can("read", "management", "role") ? [{ key: "role", title: "Rollen" }] : []),
|
...(abilityStore.can("read", "user", "role") ? [{ key: "role", title: "Rollen" }] : []),
|
||||||
...(abilityStore.can("read", "management", "webapi") ? [{ key: "webapi", title: "Webapi-Token" }] : []),
|
...(abilityStore.can("read", "user", "webapi") ? [{ key: "webapi", title: "Webapi-Token" }] : []),
|
||||||
...(abilityStore.can("read", "management", "backup") ? [{ key: "backup", title: "Backups" }] : []),
|
...(abilityStore.can("read", "user", "backup") ? [{ key: "backup", title: "Backups" }] : []),
|
||||||
...(abilityStore.isAdmin() ? [{ key: "version", title: "Version" }] : []),
|
...(abilityStore.isAdmin() ? [{ key: "version", title: "Version" }] : []),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type {
|
import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "@/viewmodels/admin/settings/award.models";
|
||||||
CreateAwardViewModel,
|
|
||||||
UpdateAwardViewModel,
|
|
||||||
AwardViewModel,
|
|
||||||
} from "@/viewmodels/admin/configuration/award.models";
|
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateCalendarTypeViewModel,
|
CreateCalendarTypeViewModel,
|
||||||
UpdateCalendarTypeViewModel,
|
UpdateCalendarTypeViewModel,
|
||||||
CalendarTypeViewModel,
|
CalendarTypeViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/calendarType.models";
|
} from "@/viewmodels/admin/settings/calendarType.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateCommunicationTypeViewModel,
|
CreateCommunicationTypeViewModel,
|
||||||
UpdateCommunicationTypeViewModel,
|
UpdateCommunicationTypeViewModel,
|
||||||
CommunicationTypeViewModel,
|
CommunicationTypeViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/communicationType.models";
|
} from "@/viewmodels/admin/settings/communicationType.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import type { CommunicationFieldType } from "@/types/fieldTypes";
|
import type { CommunicationFieldType } from "@/types/fieldTypes";
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateExecutivePositionViewModel,
|
CreateExecutivePositionViewModel,
|
||||||
UpdateExecutivePositionViewModel,
|
UpdateExecutivePositionViewModel,
|
||||||
ExecutivePositionViewModel,
|
ExecutivePositionViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/executivePosition.models";
|
} from "@/viewmodels/admin/settings/executivePosition.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateMembershipStatusViewModel,
|
CreateMembershipStatusViewModel,
|
||||||
UpdateMembershipStatusViewModel,
|
UpdateMembershipStatusViewModel,
|
||||||
MembershipStatusViewModel,
|
MembershipStatusViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/membershipStatus.models";
|
} from "@/viewmodels/admin/settings/membershipStatus.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { defineStore } from "pinia";
|
||||||
import type {
|
import type {
|
||||||
SetNewsletterConfigViewModel,
|
SetNewsletterConfigViewModel,
|
||||||
NewsletterConfigViewModel,
|
NewsletterConfigViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/newsletterConfig.models";
|
} from "@/viewmodels/admin/settings/newsletterConfig.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateQualificationViewModel,
|
CreateQualificationViewModel,
|
||||||
UpdateQualificationViewModel,
|
UpdateQualificationViewModel,
|
||||||
QualificationViewModel,
|
QualificationViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/qualification.models";
|
} from "@/viewmodels/admin/settings/qualification.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type {
|
import type { CreateQueryViewModel, QueryViewModel, UpdateQueryViewModel } from "@/viewmodels/admin/settings/query.models";
|
||||||
CreateQueryViewModel,
|
|
||||||
QueryViewModel,
|
|
||||||
UpdateQueryViewModel,
|
|
||||||
} from "@/viewmodels/admin/configuration/query.models";
|
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import { useQueryBuilderStore } from "../club/queryBuilder";
|
import { useQueryBuilderStore } from "../club/queryBuilder";
|
||||||
|
@ -38,17 +34,17 @@ export const useQueryStoreStore = defineStore("queryStore", {
|
||||||
const queryBuilderStore = useQueryBuilderStore();
|
const queryBuilderStore = useQueryBuilderStore();
|
||||||
const modalStore = useModalStore();
|
const modalStore = useModalStore();
|
||||||
const abilityStore = useAbilityStore();
|
const abilityStore = useAbilityStore();
|
||||||
if (queryBuilderStore.activeQueryId != undefined && abilityStore.can("update", "configuration", "query_store")) {
|
if (queryBuilderStore.activeQueryId != undefined && abilityStore.can("update", "settings", "query_store")) {
|
||||||
modalStore.openModal(
|
modalStore.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/queryStore/UpdateQueryStoreModal.vue"))
|
defineAsyncComponent(() => import("@/components/admin/settings/queryStore/UpdateQueryStoreModal.vue"))
|
||||||
),
|
),
|
||||||
queryBuilderStore.activeQueryId
|
queryBuilderStore.activeQueryId
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
modalStore.openModal(
|
modalStore.openModal(
|
||||||
markRaw(
|
markRaw(
|
||||||
defineAsyncComponent(() => import("@/components/admin/configuration/queryStore/CreateQueryStoreModal.vue"))
|
defineAsyncComponent(() => import("@/components/admin/settings/queryStore/CreateQueryStoreModal.vue"))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateSalutationViewModel,
|
CreateSalutationViewModel,
|
||||||
UpdateSalutationViewModel,
|
UpdateSalutationViewModel,
|
||||||
SalutationViewModel,
|
SalutationViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/salutation.models";
|
} from "@/viewmodels/admin/settings/salutation.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
CreateTemplateViewModel,
|
CreateTemplateViewModel,
|
||||||
TemplateViewModel,
|
TemplateViewModel,
|
||||||
UpdateTemplateViewModel,
|
UpdateTemplateViewModel,
|
||||||
} from "@/viewmodels/admin/configuration/template.models";
|
} from "@/viewmodels/admin/settings/template.models";
|
||||||
|
|
||||||
export const useTemplateStore = defineStore("template", {
|
export const useTemplateStore = defineStore("template", {
|
||||||
state: () => {
|
state: () => {
|
|
@ -1,14 +1,8 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import type {
|
import type { CreateTemplateViewModel, UpdateTemplateViewModel } from "@/viewmodels/admin/settings/template.models";
|
||||||
CreateTemplateViewModel,
|
import type { TemplateUsageViewModel, UpdateTemplateUsageViewModel } from "@/viewmodels/admin/settings/templateUsage.models";
|
||||||
UpdateTemplateViewModel,
|
|
||||||
} from "@/viewmodels/admin/configuration/template.models";
|
|
||||||
import type {
|
|
||||||
TemplateUsageViewModel,
|
|
||||||
UpdateTemplateUsageViewModel,
|
|
||||||
} from "@/viewmodels/admin/configuration/templateUsage.models";
|
|
||||||
import type { PermissionModule } from "@/types/permissionTypes";
|
import type { PermissionModule } from "@/types/permissionTypes";
|
||||||
|
|
||||||
export const useTemplateUsageStore = defineStore("templateUsage", {
|
export const useTemplateUsageStore = defineStore("templateUsage", {
|
|
@ -1,7 +1,7 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse, AxiosProgressEvent } from "axios";
|
import type { AxiosResponse, AxiosProgressEvent } from "axios";
|
||||||
import type { BackupRestoreViewModel } from "../../../viewmodels/admin/management/backup.models";
|
import type { BackupRestoreViewModel } from "../../../viewmodels/admin/user/backup.models";
|
||||||
|
|
||||||
export const useBackupStore = defineStore("backup", {
|
export const useBackupStore = defineStore("backup", {
|
||||||
state: () => {
|
state: () => {
|
|
@ -1,5 +1,5 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type { CreateInviteViewModel, InviteViewModel } from "@/viewmodels/admin/management/invite.models";
|
import type { CreateInviteViewModel, InviteViewModel } from "@/viewmodels/admin/user/invite.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { PermissionObject } from "@/types/permissionTypes";
|
import type { PermissionObject } from "@/types/permissionTypes";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
|
@ -1,5 +1,5 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type { RoleViewModel } from "@/viewmodels/admin/management/role.models";
|
import type { RoleViewModel } from "@/viewmodels/admin/user/role.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { PermissionObject } from "@/types/permissionTypes";
|
import type { PermissionObject } from "@/types/permissionTypes";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
|
@ -1,5 +1,5 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type { UpdateUserViewModel, UserViewModel } from "@/viewmodels/admin/management/user.models";
|
import type { UpdateUserViewModel, UserViewModel } from "@/viewmodels/admin/user/user.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { PermissionObject } from "@/types/permissionTypes";
|
import type { PermissionObject } from "@/types/permissionTypes";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
|
@ -3,7 +3,7 @@ import type {
|
||||||
CreateWebapiViewModel,
|
CreateWebapiViewModel,
|
||||||
UpdateWebapiViewModel,
|
UpdateWebapiViewModel,
|
||||||
WebapiViewModel,
|
WebapiViewModel,
|
||||||
} from "@/viewmodels/admin/management/webapi.models";
|
} from "@/viewmodels/admin/user/webapi.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { PermissionObject } from "@/types/permissionTypes";
|
import type { PermissionObject } from "@/types/permissionTypes";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
|
@ -1,4 +1,4 @@
|
||||||
export type PermissionSection = "club" | "configuration" | "management";
|
export type PermissionSection = "club" | "settings" | "user";
|
||||||
|
|
||||||
export type PermissionModule =
|
export type PermissionModule =
|
||||||
| "member"
|
| "member"
|
||||||
|
@ -43,7 +43,7 @@ export type SectionsAndModulesObject = {
|
||||||
[section in PermissionSection]: Array<PermissionModule>;
|
[section in PermissionSection]: Array<PermissionModule>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const permissionSections: Array<PermissionSection> = ["club", "configuration", "management"];
|
export const permissionSections: Array<PermissionSection> = ["club", "settings", "user"];
|
||||||
export const permissionModules: Array<PermissionModule> = [
|
export const permissionModules: Array<PermissionModule> = [
|
||||||
"member",
|
"member",
|
||||||
"calendar",
|
"calendar",
|
||||||
|
@ -69,7 +69,7 @@ export const permissionModules: Array<PermissionModule> = [
|
||||||
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
|
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
|
||||||
export const sectionsAndModules: SectionsAndModulesObject = {
|
export const sectionsAndModules: SectionsAndModulesObject = {
|
||||||
club: ["member", "calendar", "newsletter", "protocol", "query"],
|
club: ["member", "calendar", "newsletter", "protocol", "query"],
|
||||||
configuration: [
|
settings: [
|
||||||
"qualification",
|
"qualification",
|
||||||
"award",
|
"award",
|
||||||
"executive_position",
|
"executive_position",
|
||||||
|
@ -82,5 +82,5 @@ export const sectionsAndModules: SectionsAndModulesObject = {
|
||||||
"template_usage",
|
"template_usage",
|
||||||
"newsletter_config",
|
"newsletter_config",
|
||||||
],
|
],
|
||||||
management: ["user", "role", "webapi", "backup"],
|
user: ["user", "role", "webapi", "backup"],
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { CalendarTypeViewModel } from "../configuration/calendarType.models";
|
import type { CalendarTypeViewModel } from "../settings/calendarType.models";
|
||||||
|
|
||||||
export interface CalendarViewModel {
|
export interface CalendarViewModel {
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { CommunicationTypeViewModel } from "../../configuration/communicationType.models";
|
import type { CommunicationTypeViewModel } from "../../settings/communicationType.models";
|
||||||
|
|
||||||
export interface CommunicationViewModel {
|
export interface CommunicationViewModel {
|
||||||
id: number;
|
id: number;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import type { CommunicationViewModel } from "./communication.models";
|
import type { CommunicationViewModel } from "./communication.models";
|
||||||
import type { MembershipViewModel } from "./membership.models";
|
import type { MembershipViewModel } from "./membership.models";
|
||||||
import type { SalutationViewModel } from "../../configuration/salutation.models";
|
import type { SalutationViewModel } from "../../settings/salutation.models";
|
||||||
|
|
||||||
export interface MemberViewModel {
|
export interface MemberViewModel {
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { QueryViewModel } from "../../configuration/query.models";
|
import type { QueryViewModel } from "../../settings/query.models";
|
||||||
|
|
||||||
export interface NewsletterViewModel {
|
export interface NewsletterViewModel {
|
||||||
id: number;
|
id: number;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue