Rename "Media Center" to "Media Library"

This commit is contained in:
Daniel Egger 2022-09-30 17:55:35 +02:00
parent 827e7a0fc0
commit 9d1eff5a42
13 changed files with 83 additions and 84 deletions

View File

@ -170,9 +170,9 @@ const profileDropdownData = [
Shop Shop
</router-link> </router-link>
<router-link <router-link
to="/mediacenter/versicherungsvermittlerin-media/overview" to="/media/versicherungsvermittlerin-media/overview"
class="nav-item" class="nav-item"
:class="{ 'nav-item--active': isInRoutePath(['/mediacenter']) }" :class="{ 'nav-item--active': isInRoutePath(['/media']) }"
> >
Mediathek Mediathek
</router-link> </router-link>

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import MediaLink from "@/components/mediaCenter/MediaLink.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
export interface Props { export interface Props {
title: string; title: string;

View File

@ -25,13 +25,13 @@ const router = createRouter({
component: () => import("@/views/ShopView.vue"), component: () => import("@/views/ShopView.vue"),
}, },
{ {
path: "/mediacenter/:mediaCenterPageSlug", path: "/media/:mediaLibraryPageSlug",
props: true, props: true,
component: () => import("@/views/MediaCenterView.vue"), component: () => import("@/views/MediaLibraryView.vue"),
children: [ children: [
{ {
path: "overview", path: "overview",
component: () => import("@/views/MediaCenterMainView.vue"), component: () => import("@/views/MediaLibraryMainView.vue"),
}, },
{ {
path: "handlungsfelder/:mediaCategorySlug", path: "handlungsfelder/:mediaCategorySlug",
@ -40,7 +40,7 @@ const router = createRouter({
}, },
{ {
path: "handlungsfelder", path: "handlungsfelder",
component: () => import("@/views/MediaCenterCategoryOverview.vue"), component: () => import("@/views/MediaLibraryCategoryOverview.vue"),
}, },
{ {
path: "handlungsfeldlist", path: "handlungsfeldlist",

View File

@ -1,39 +0,0 @@
import { itGet } from "@/fetchHelpers";
import type { MediaLibraryPage } from "@/types";
import { defineStore } from "pinia";
export type MediaCenterStoreState = {
mediaCenterPage: MediaLibraryPage | undefined;
selectedLearningPath: { id: number; name: string };
availableLearningPaths: { id: number; name: string }[];
};
export const useMediaCenterStore = defineStore({
id: "mediaCenter",
state: () => {
return {
mediaCenterPage: undefined,
selectedLearningPath: { id: 1, name: "Alle Lehrgänge" },
availableLearningPaths: [
{ id: 1, name: "Alle Lehrgänge" },
{ id: 2, name: "Versicherungsvermittler/in" },
],
} as MediaCenterStoreState;
},
getters: {},
actions: {
async loadMediaCenterPage(slug: string, reload = false) {
if (this.mediaCenterPage && !reload) {
return this.mediaCenterPage;
}
const mediaCenterPageData = await itGet(`/api/course/page/${slug}/`);
if (!mediaCenterPageData) {
throw `No mediaCenterPageData found with: ${slug}`;
}
this.mediaCenterPage = mediaCenterPageData;
return this.mediaCenterPage;
},
},
});

View File

@ -0,0 +1,39 @@
import { itGet } from "@/fetchHelpers";
import type { MediaLibraryPage } from "@/types";
import { defineStore } from "pinia";
export type MediaLibraryStoreState = {
mediaLibraryPage: MediaLibraryPage | undefined;
selectedLearningPath: { id: number; name: string };
availableLearningPaths: { id: number; name: string }[];
};
export const useMediaLibraryStore = defineStore({
id: "mediaLibrary",
state: () => {
return {
mediaLibraryPage: undefined,
selectedLearningPath: { id: 1, name: "Alle Lehrgänge" },
availableLearningPaths: [
{ id: 1, name: "Alle Lehrgänge" },
{ id: 2, name: "Versicherungsvermittler/in" },
],
} as MediaLibraryStoreState;
},
getters: {},
actions: {
async loadMediaLibraryPage(slug: string, reload = false) {
if (this.mediaLibraryPage && !reload) {
return this.mediaLibraryPage;
}
const mediaLibraryPageData = await itGet(`/api/course/page/${slug}/`);
if (!mediaLibraryPageData) {
throw `No mediaLibraryPageData found with: ${slug}`;
}
this.mediaLibraryPage = mediaLibraryPageData;
return this.mediaLibraryPage;
},
},
});

View File

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import LinkCard from "@/components/mediaCenter/LinkCard.vue"; import LinkCard from "@/components/mediaLibrary/LinkCard.vue";
import MediaLink from "@/components/mediaCenter/MediaLink.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
import { useMediaCenterStore } from "@/stores/mediaCenter"; import { useMediaLibraryStore } from "@/stores/mediaLibrary";
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue"; import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue";
import * as log from "loglevel"; import * as log from "loglevel";
import { computed } from "vue"; import { computed } from "vue";
@ -140,7 +140,7 @@ const field = {
description: description:
"Lernmedium: Verkehrsrechtsschutz Buch «Sach- und Vermögensversicherungen/Kapitel 12.3»", "Lernmedium: Verkehrsrechtsschutz Buch «Sach- und Vermögensversicherungen/Kapitel 12.3»",
linkText: "Handlungsfeldanzeigen", linkText: "Handlungsfeldanzeigen",
link: "http://localhost:8000/mediacenter/handlungsfeld", link: "http://localhost:8000/media/handlungsfeld",
openWindow: false, openWindow: false,
}, },
{ {
@ -149,7 +149,7 @@ const field = {
description: description:
"Lernmedium: Verkehrsrechtsschutz Buch «Sach- und Vermögensversicherungen/Kapitel 12.3»", "Lernmedium: Verkehrsrechtsschutz Buch «Sach- und Vermögensversicherungen/Kapitel 12.3»",
linkText: "Handlungsfeldanzeigen", linkText: "Handlungsfeldanzeigen",
link: "http://localhost:8000/mediacenter/handlungsfeld", link: "http://localhost:8000/media/handlungsfeld",
openWindow: false, openWindow: false,
}, },
], ],
@ -163,10 +163,10 @@ const props = defineProps<{
log.debug("MediaCategoryDetailView created", props.mediaCategorySlug); log.debug("MediaCategoryDetailView created", props.mediaCategorySlug);
const mediaStore = useMediaCenterStore(); const mediaStore = useMediaLibraryStore();
const mediaCategory = computed(() => { const mediaCategory = computed(() => {
return mediaStore.mediaCenterPage?.children.find( return mediaStore.mediaLibraryPage?.children.find(
(category) => category.slug === props.mediaCategorySlug (category) => category.slug === props.mediaCategorySlug
); );
}); });
@ -199,7 +199,7 @@ const hasMoreItemsForType = (itemType: string, items: object[]) => {
</script> </script>
<template> <template>
<Teleport v-if="mediaStore.mediaCenterPage && mediaCategory" to="body"> <Teleport v-if="mediaStore.mediaLibraryPage && mediaCategory" to="body">
<HandlungsfeldLayout> <HandlungsfeldLayout>
<template #header> <template #header>
<div class="flex justify-between"> <div class="flex justify-between">
@ -252,18 +252,15 @@ const hasMoreItemsForType = (itemType: string, items: object[]) => {
/> />
<div v-else class="flex items-center justify-between border-b py-4"> <div v-else class="flex items-center justify-between border-b py-4">
<h4 class="text-bold">{{ subItem.title }}</h4> <h4 class="text-bold">{{ subItem.title }}</h4>
<media-link <media-link :blank="subItem.openWindow" :to="subItem.link" class="link"
:blank="subItem.openWindow" >{{ subItem.linkText }}
:to="subItem.link" </media-link>
class="link"
>{{ subItem.linkText }}</media-link
>
</div> </div>
</li> </li>
</ul> </ul>
<router-link <router-link
v-if="hasMoreItemsForType(item.type, item.items)" v-if="hasMoreItemsForType(item.type, item.items)"
to="/mediacenter/handlungsfeldlist" to="/media/handlungsfeldlist"
class="flex items-center" class="flex items-center"
> >
<span>Alle anschauen</span> <span>Alle anschauen</span>
@ -279,6 +276,7 @@ const hasMoreItemsForType = (itemType: string, items: object[]) => {
.it-icon-hf { .it-icon-hf {
color: blue; color: blue;
} }
.it-icon-hf > * { .it-icon-hf > * {
@apply m-auto; @apply m-auto;
} }

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { useMediaCenterStore } from "@/stores/mediaCenter"; import { useMediaLibraryStore } from "@/stores/mediaLibrary";
import * as log from "loglevel"; import * as log from "loglevel";
import { ref, watch } from "vue"; import { ref, watch } from "vue";
@ -56,7 +56,7 @@ const fields = [
}, },
]; ];
const mediaStore = useMediaCenterStore(); const mediaStore = useMediaLibraryStore();
const dropdownSelected = ref(mediaStore.selectedLearningPath); const dropdownSelected = ref(mediaStore.selectedLearningPath);
watch(dropdownSelected, (newValue) => watch(dropdownSelected, (newValue) =>
@ -72,15 +72,15 @@ watch(dropdownSelected, (newValue) =>
<h1>Handlungsfelder</h1> <h1>Handlungsfelder</h1>
<!-- <ItDropdownSelect v-model="dropdownSelected" :items="mediaStore.availableLearningPaths"></ItDropdownSelect>--> <!-- <ItDropdownSelect v-model="dropdownSelected" :items="mediaStore.availableLearningPaths"></ItDropdownSelect>-->
</div> </div>
<div v-if="mediaStore.mediaCenterPage"> <div v-if="mediaStore.mediaLibraryPage">
<ul class="grid gap-5 grid-cols-1 lg:grid-cols-4"> <ul class="grid gap-5 grid-cols-1 lg:grid-cols-4">
<li <li
v-for="cat in mediaStore.mediaCenterPage.children" v-for="cat in mediaStore.mediaLibraryPage.children"
:key="cat.id" :key="cat.id"
class="bg-white p-4" class="bg-white p-4"
> >
<router-link <router-link
:to="`/mediacenter/${mediaStore.mediaCenterPage.slug}/handlungsfelder/${cat.slug}`" :to="`/media/${mediaStore.mediaLibraryPage.slug}/handlungsfelder/${cat.slug}`"
> >
<img class="m-auto" :src="`/static/icons/demo/${cat.overview_icon}.svg`" /> <img class="m-auto" :src="`/static/icons/demo/${cat.overview_icon}.svg`" />
<h3 class="text-base text-center">{{ cat.title }}</h3> <h3 class="text-base text-center">{{ cat.title }}</h3>

View File

@ -1,12 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import OverviewCard from "@/components/mediaCenter/OverviewCard.vue"; import OverviewCard from "@/components/mediaLibrary/OverviewCard.vue";
import { useMediaCenterStore } from "@/stores/mediaCenter"; import { useMediaLibraryStore } from "@/stores/mediaLibrary";
import * as log from "loglevel"; import * as log from "loglevel";
import { ref, watch } from "vue"; import { ref, watch } from "vue";
log.debug("MediaMainView created"); log.debug("MediaMainView created");
const mediaStore = useMediaCenterStore(); const mediaStore = useMediaLibraryStore();
const dropdownSelected = ref(mediaStore.selectedLearningPath); const dropdownSelected = ref(mediaStore.selectedLearningPath);
watch(dropdownSelected, (newValue) => watch(dropdownSelected, (newValue) =>
@ -25,20 +25,20 @@ watch(dropdownSelected, (newValue) =>
<!-- :items="mediaStore.availableLearningPaths"></ItDropdownSelect>--> <!-- :items="mediaStore.availableLearningPaths"></ItDropdownSelect>-->
</div> </div>
<OverviewCard <OverviewCard
v-if="mediaStore.mediaCenterPage" v-if="mediaStore.mediaLibraryPage"
title="Handlungsfelder" title="Handlungsfelder"
call2-action="Anschauen" call2-action="Anschauen"
:link="`/mediacenter/${mediaStore.mediaCenterPage.slug}/handlungsfelder`" :link="`/media/${mediaStore.mediaLibraryPage.slug}/handlungsfelder`"
description="Finde alle Ressourcen der Handlungsfelder wie Lernmedien, Links und andere nützliche Informationen." description="Finde alle Ressourcen der Handlungsfelder wie Lernmedien, Links und andere nützliche Informationen."
icon="handlungsfelder-overview" icon="handlungsfelder-overview"
class="mb-6" class="mb-6"
> >
</OverviewCard> </OverviewCard>
<OverviewCard <OverviewCard
v-if="mediaStore.mediaCenterPage" v-if="mediaStore.mediaLibraryPage"
title="Lernmedien" title="Lernmedien"
call2-action="Anschauen" call2-action="Anschauen"
:link="`/mediacenter/${mediaStore.mediaCenterPage.slug}/lernmedien`" :link="`/media/${mediaStore.mediaLibraryPage.slug}/lernmedien`"
description="Finde eine vollständige Liste der Bücher und anderen Medien, auf die im Kurs verwiesen wird." description="Finde eine vollständige Liste der Bücher und anderen Medien, auf die im Kurs verwiesen wird."
icon="lernmedien-overview" icon="lernmedien-overview"
class="mb-6" class="mb-6"

View File

@ -1,21 +1,21 @@
<script setup lang="ts"> <script setup lang="ts">
import { useMediaCenterStore } from "@/stores/mediaCenter"; import { useMediaLibraryStore } from "@/stores/mediaLibrary";
import * as log from "loglevel"; import * as log from "loglevel";
import { onMounted } from "vue"; import { onMounted } from "vue";
log.debug("MediaCenterView created"); log.debug("MediaLibraryView created");
const props = defineProps<{ const props = defineProps<{
mediaCenterPageSlug: string; mediaLibraryPageSlug: string;
}>(); }>();
const mediaCenterStore = useMediaCenterStore(); const mediaLibraryStore = useMediaLibraryStore();
onMounted(async () => { onMounted(async () => {
log.debug("MediaCenterView mounted", props.mediaCenterPageSlug); log.debug("MediaLibraryView mounted", props.mediaLibraryPageSlug);
try { try {
await mediaCenterStore.loadMediaCenterPage(props.mediaCenterPageSlug); await mediaLibraryStore.loadMediaLibraryPage(props.mediaLibraryPageSlug);
} catch (error) { } catch (error) {
log.error(error); log.error(error);
} }

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import MediaLink from "@/components/mediaCenter/MediaLink.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue"; import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue";
const data = { const data = {
@ -73,9 +73,9 @@ const data = {
</div> </div>
</div> </div>
<div class=""> <div class="">
<media-link :to="item.link" :blank="item.openWindow" class="link">{{ <media-link :to="item.link" :blank="item.openWindow" class="link"
item.linkText >{{ item.linkText }}
}}</media-link> </media-link>
</div> </div>
</li> </li>
</ul> </ul>
@ -89,6 +89,7 @@ const data = {
.it-icon-hf { .it-icon-hf {
color: blue; color: blue;
} }
.it-icon-hf > * { .it-icon-hf > * {
@apply m-auto; @apply m-auto;
} }

View File

@ -6,7 +6,7 @@ from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.media_library.models import MediaLibraryPage from vbv_lernwelt.media_library.models import MediaLibraryPage
class MediaCenterAPITestCase(APITestCase): class MediaLibraryAPITestCase(APITestCase):
def setUp(self) -> None: def setUp(self) -> None:
create_default_users() create_default_users()
create_test_course() create_test_course()