Files
lms/frontend/src/pages/QuizPage.vue
2025-04-08 10:57:02 +05:30

67 lines
1.4 KiB
Vue

<template>
<header
v-if="!fromLesson"
class="sticky top-0 z-10 flex items-center justify-between border-b bg-surface-white px-3 py-2.5 sm:px-5"
>
<Breadcrumbs :items="breadcrumbs" />
</header>
<div
class="md:w-7/12 md:mx-auto mx-4 py-10"
:class="{ 'pt-4 md:w-full': fromLesson }"
>
<Quiz :quizName="quizID" />
</div>
</template>
<script setup>
import Quiz from '@/components/Quiz.vue'
import { createResource, Breadcrumbs, usePageMeta } from 'frappe-ui'
import { computed, inject, onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import { sessionStore } from '../stores/session'
const { brand } = sessionStore()
const user = inject('$user')
const router = useRouter()
const fromLesson = ref(false)
onMounted(() => {
if (!user.data) {
router.push({ name: 'Courses' })
}
if (new URLSearchParams(window.location.search).get('fromLesson')) {
fromLesson.value = true
}
})
const props = defineProps({
quizID: {
type: String,
required: true,
},
})
const title = createResource({
url: 'frappe.client.get_value',
params: {
doctype: 'LMS Quiz',
fieldname: 'title',
filters: {
name: props.quizID,
},
},
auto: true,
})
const breadcrumbs = computed(() => {
return [{ label: __('Quiz Submission') }, { label: title.data?.title }]
})
usePageMeta(() => {
return {
title: `${title.data?.title}`,
icon: brand.favicon,
}
})
</script>