Work on media library frontend
This commit is contained in:
parent
cbdbdba6b8
commit
63a5039134
|
|
@ -6,8 +6,8 @@ import { useUserStore } from "@/stores/user";
|
|||
import { onMounted } from "vue";
|
||||
|
||||
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
|
||||
import LearningPathViewVertical from "@/pages/LearningPathViewVertical.vue";
|
||||
import type { LearningPath } from "@/services/learningPath";
|
||||
import LearningPathViewVertical from "@/views/LearningPathViewVertical.vue";
|
||||
|
||||
log.debug("LearningPathView created");
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import LinkCard from "@/components/mediaLibrary/LinkCard.vue";
|
||||
import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
|
||||
import HandlungsfeldLayout from "@/pages/mediaLibrary/MLCategoryLayout.vue";
|
||||
import { useMediaLibraryStore } from "@/stores/mediaLibrary";
|
||||
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue";
|
||||
import * as log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
|
||||
|
|
@ -281,7 +281,7 @@ const hasMoreItemsForType = (itemType: string, items: object[]) => {
|
|||
content_collection.value.contents
|
||||
)
|
||||
"
|
||||
to="/media/handlungsfeldlist"
|
||||
:to="`${mediaCategory.frontend_url}/media`"
|
||||
class="flex items-center"
|
||||
>
|
||||
<span>Alle anschauen</span>
|
||||
|
|
@ -28,7 +28,7 @@ watch(dropdownSelected, (newValue) =>
|
|||
v-if="mediaStore.mediaLibraryPage"
|
||||
title="Handlungsfelder"
|
||||
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."
|
||||
icon="handlungsfelder-overview"
|
||||
class="mb-6"
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
|
||||
import HandlungsfeldLayout from "@/views/HandlungsfeldLayout.vue";
|
||||
import HandlungsfeldLayout from "@/pages/mediaLibrary/MLCategoryLayout.vue";
|
||||
|
||||
const data = {
|
||||
title: "Fahrzeug: Lernmedien",
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import { redirectToLoginIfRequired, updateLoggedIn } from "@/router/guards";
|
||||
import { useAppStore } from "@/stores/app";
|
||||
import CockpitView from "@/views/CockpitView.vue";
|
||||
import LoginView from "@/views/LoginView.vue";
|
||||
import CockpitView from "@/pages/CockpitView.vue";
|
||||
import LoginView from "@/pages/LoginView.vue";
|
||||
import { createRouter, createWebHistory } from "vue-router";
|
||||
|
||||
const router = createRouter({
|
||||
|
|
@ -22,71 +22,71 @@ const router = createRouter({
|
|||
},
|
||||
{
|
||||
path: "/shop",
|
||||
component: () => import("@/views/ShopView.vue"),
|
||||
component: () => import("@/pages/ShopView.vue"),
|
||||
},
|
||||
{
|
||||
path: "/media/:mediaLibraryPageSlug",
|
||||
props: true,
|
||||
component: () => import("@/views/media_library/MediaLibraryParentView.vue"),
|
||||
component: () => import("@/pages/mediaLibrary/MLParentPage.vue"),
|
||||
children: [
|
||||
{
|
||||
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,
|
||||
component: () => import("@/views/media_library/MediaCategoryDetailView.vue"),
|
||||
component: () => import("@/pages/mediaLibrary/MLCategoryDetailPage.vue"),
|
||||
},
|
||||
{
|
||||
path: "handlungsfelder",
|
||||
path: "category",
|
||||
component: () =>
|
||||
import("@/views/media_library/MediaLibraryCategoryOverview.vue"),
|
||||
},
|
||||
{
|
||||
path: "handlungsfeldlist",
|
||||
component: () => import("@/views/MediaList.vue"),
|
||||
import("@/pages/mediaLibrary/MLCategoryIndexPage.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/messages",
|
||||
component: () => import("@/views/MessagesView.vue"),
|
||||
component: () => import("@/pages/MessagesView.vue"),
|
||||
},
|
||||
{
|
||||
path: "/profile",
|
||||
component: () => import("@/views/ProfileView.vue"),
|
||||
component: () => import("@/pages/ProfileView.vue"),
|
||||
},
|
||||
{
|
||||
path: "/learn/:learningPathSlug",
|
||||
component: () => import("../views/LearningPathView.vue"),
|
||||
component: () => import("../pages/LearningPathView.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "/learn/:learningPathSlug/:circleSlug",
|
||||
component: () => import("../views/CircleView.vue"),
|
||||
component: () => import("../pages/CircleView.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "/learn/:learningPathSlug/:circleSlug/evaluate/:learningUnitSlug",
|
||||
component: () => import("../views/LearningUnitSelfEvaluationView.vue"),
|
||||
component: () => import("../pages/LearningUnitSelfEvaluationView.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "/learn/:learningPathSlug/:circleSlug/:contentSlug",
|
||||
component: () => import("../views/LearningContentView.vue"),
|
||||
component: () => import("../pages/LearningContentView.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "/styleguide",
|
||||
component: () => import("../views/StyleGuideView.vue"),
|
||||
component: () => import("../pages/StyleGuideView.vue"),
|
||||
meta: {
|
||||
public: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/:pathMatch(.*)*",
|
||||
component: () => import("../views/404View.vue"),
|
||||
component: () => import("../pages/404Page.vue"),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import structlog
|
||||
from django.views.decorators.cache import cache_page
|
||||
from rest_framework.decorators import api_view
|
||||
from rest_framework.response import Response
|
||||
from wagtail.models import Page
|
||||
|
|
@ -12,7 +11,8 @@ logger = structlog.get_logger(__name__)
|
|||
|
||||
|
||||
@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):
|
||||
try:
|
||||
page = Page.objects.get(slug=slug, locale__language_code="de-CH")
|
||||
|
|
|
|||
|
|
@ -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_media_collection(
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ class MediaCategoryPage(Page):
|
|||
|
||||
def get_frontend_url(self):
|
||||
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
|
||||
def get_serializer_class(cls):
|
||||
|
|
|
|||
Loading…
Reference in New Issue