Work on media library frontend

This commit is contained in:
Daniel Egger 2022-10-04 10:48:22 +02:00
parent cbdbdba6b8
commit 63a5039134
22 changed files with 33 additions and 29 deletions

View File

@ -6,8 +6,8 @@ import { useUserStore } from "@/stores/user";
import { onMounted } from "vue"; import { onMounted } from "vue";
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue"; import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
import LearningPathViewVertical from "@/pages/LearningPathViewVertical.vue";
import type { LearningPath } from "@/services/learningPath"; import type { LearningPath } from "@/services/learningPath";
import LearningPathViewVertical from "@/views/LearningPathViewVertical.vue";
log.debug("LearningPathView created"); log.debug("LearningPathView created");

View File

@ -1,8 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import LinkCard from "@/components/mediaLibrary/LinkCard.vue"; import LinkCard from "@/components/mediaLibrary/LinkCard.vue";
import MediaLink from "@/components/mediaLibrary/MediaLink.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
import HandlungsfeldLayout from "@/pages/mediaLibrary/MLCategoryLayout.vue";
import { useMediaLibraryStore } from "@/stores/mediaLibrary"; import { useMediaLibraryStore } from "@/stores/mediaLibrary";
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue";
import * as log from "loglevel"; import * as log from "loglevel";
import { computed } from "vue"; import { computed } from "vue";
@ -281,7 +281,7 @@ const hasMoreItemsForType = (itemType: string, items: object[]) => {
content_collection.value.contents content_collection.value.contents
) )
" "
to="/media/handlungsfeldlist" :to="`${mediaCategory.frontend_url}/media`"
class="flex items-center" class="flex items-center"
> >
<span>Alle anschauen</span> <span>Alle anschauen</span>

View File

@ -28,7 +28,7 @@ watch(dropdownSelected, (newValue) =>
v-if="mediaStore.mediaLibraryPage" v-if="mediaStore.mediaLibraryPage"
title="Handlungsfelder" title="Handlungsfelder"
call2-action="Anschauen" call2-action="Anschauen"
:link="`/media/${mediaStore.mediaLibraryPage.slug}/handlungsfelder`" :link="`${mediaStore.mediaLibraryPage.frontend_url}/category`"
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"

View File

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import MediaLink from "@/components/mediaLibrary/MediaLink.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue"; import HandlungsfeldLayout from "@/pages/mediaLibrary/MLCategoryLayout.vue";
const data = { const data = {
title: "Fahrzeug: Lernmedien", title: "Fahrzeug: Lernmedien",

View File

@ -1,7 +1,7 @@
import { redirectToLoginIfRequired, updateLoggedIn } from "@/router/guards"; import { redirectToLoginIfRequired, updateLoggedIn } from "@/router/guards";
import { useAppStore } from "@/stores/app"; import { useAppStore } from "@/stores/app";
import CockpitView from "@/views/CockpitView.vue"; import CockpitView from "@/pages/CockpitView.vue";
import LoginView from "@/views/LoginView.vue"; import LoginView from "@/pages/LoginView.vue";
import { createRouter, createWebHistory } from "vue-router"; import { createRouter, createWebHistory } from "vue-router";
const router = createRouter({ const router = createRouter({
@ -22,71 +22,71 @@ const router = createRouter({
}, },
{ {
path: "/shop", path: "/shop",
component: () => import("@/views/ShopView.vue"), component: () => import("@/pages/ShopView.vue"),
}, },
{ {
path: "/media/:mediaLibraryPageSlug", path: "/media/:mediaLibraryPageSlug",
props: true, props: true,
component: () => import("@/views/media_library/MediaLibraryParentView.vue"), component: () => import("@/pages/mediaLibrary/MLParentPage.vue"),
children: [ children: [
{ {
path: "", path: "",
component: () => import("@/views/media_library/MediaLibraryIndexView.vue"), component: () => import("@/pages/mediaLibrary/MLIndexPage.vue"),
}, },
{ {
path: "handlungsfelder/:mediaCategorySlug", path: "category/:mediaCategorySlug/media",
component: () => import("@/pages/mediaLibrary/MLMediaList.vue"),
},
{
path: "category/:mediaCategorySlug",
props: true, props: true,
component: () => import("@/views/media_library/MediaCategoryDetailView.vue"), component: () => import("@/pages/mediaLibrary/MLCategoryDetailPage.vue"),
}, },
{ {
path: "handlungsfelder", path: "category",
component: () => component: () =>
import("@/views/media_library/MediaLibraryCategoryOverview.vue"), import("@/pages/mediaLibrary/MLCategoryIndexPage.vue"),
},
{
path: "handlungsfeldlist",
component: () => import("@/views/MediaList.vue"),
}, },
], ],
}, },
{ {
path: "/messages", path: "/messages",
component: () => import("@/views/MessagesView.vue"), component: () => import("@/pages/MessagesView.vue"),
}, },
{ {
path: "/profile", path: "/profile",
component: () => import("@/views/ProfileView.vue"), component: () => import("@/pages/ProfileView.vue"),
}, },
{ {
path: "/learn/:learningPathSlug", path: "/learn/:learningPathSlug",
component: () => import("../views/LearningPathView.vue"), component: () => import("../pages/LearningPathView.vue"),
props: true, props: true,
}, },
{ {
path: "/learn/:learningPathSlug/:circleSlug", path: "/learn/:learningPathSlug/:circleSlug",
component: () => import("../views/CircleView.vue"), component: () => import("../pages/CircleView.vue"),
props: true, props: true,
}, },
{ {
path: "/learn/:learningPathSlug/:circleSlug/evaluate/:learningUnitSlug", path: "/learn/:learningPathSlug/:circleSlug/evaluate/:learningUnitSlug",
component: () => import("../views/LearningUnitSelfEvaluationView.vue"), component: () => import("../pages/LearningUnitSelfEvaluationView.vue"),
props: true, props: true,
}, },
{ {
path: "/learn/:learningPathSlug/:circleSlug/:contentSlug", path: "/learn/:learningPathSlug/:circleSlug/:contentSlug",
component: () => import("../views/LearningContentView.vue"), component: () => import("../pages/LearningContentView.vue"),
props: true, props: true,
}, },
{ {
path: "/styleguide", path: "/styleguide",
component: () => import("../views/StyleGuideView.vue"), component: () => import("../pages/StyleGuideView.vue"),
meta: { meta: {
public: true, public: true,
}, },
}, },
{ {
path: "/:pathMatch(.*)*", path: "/:pathMatch(.*)*",
component: () => import("../views/404View.vue"), component: () => import("../pages/404Page.vue"),
}, },
], ],
}); });

View File

@ -1,5 +1,4 @@
import structlog import structlog
from django.views.decorators.cache import cache_page
from rest_framework.decorators import api_view from rest_framework.decorators import api_view
from rest_framework.response import Response from rest_framework.response import Response
from wagtail.models import Page from wagtail.models import Page
@ -12,7 +11,8 @@ logger = structlog.get_logger(__name__)
@api_view(["GET"]) @api_view(["GET"])
@cache_page(60 * 60 * 8, cache="api_page_cache") # TODO readd
# @cache_page(60 * 60 * 8, cache="api_page_cache")
def page_api_view(request, slug): def page_api_view(request, slug):
try: try:
page = Page.objects.get(slug=slug, locale__language_code="de-CH") page = Page.objects.get(slug=slug, locale__language_code="de-CH")

View File

@ -56,6 +56,10 @@ welche Aspekte du bei einer Offerte beachten musst und wie du dem Kunden die Lö
create_learn_media_block(LearnMediaBlockFactory()), create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()), create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()), create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()),
create_learn_media_block(LearnMediaBlockFactory()),
], ],
), ),
create_media_collection( create_media_collection(

View File

@ -86,7 +86,7 @@ class MediaCategoryPage(Page):
def get_frontend_url(self): def get_frontend_url(self):
short_slug = self.slug.replace(f"{self.get_parent().slug}-cat-", "") short_slug = self.slug.replace(f"{self.get_parent().slug}-cat-", "")
return f"{self.get_parent().specific.get_frontend_url()}/handlungsfelder/{short_slug}" return f"{self.get_parent().specific.get_frontend_url()}/category/{short_slug}"
@classmethod @classmethod
def get_serializer_class(cls): def get_serializer_class(cls):