fix: check enrollment on course certification page
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
<script setup>
|
||||
import { computed, inject, onMounted, ref } from 'vue'
|
||||
import { Breadcrumbs, call, createResource } from 'frappe-ui'
|
||||
import { useRouter } from 'vue-router'
|
||||
import UpcomingEvaluations from '@/components/UpcomingEvaluations.vue'
|
||||
|
||||
const courseTitle = ref(null)
|
||||
@@ -44,6 +45,7 @@ const evaluator = ref(null)
|
||||
const courses = ref([])
|
||||
const user = inject('$user')
|
||||
const dayjs = inject('$dayjs')
|
||||
const router = useRouter()
|
||||
|
||||
const props = defineProps({
|
||||
courseName: {
|
||||
@@ -53,6 +55,7 @@ const props = defineProps({
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
fetchEnrollmentDetails()
|
||||
fetchCourseDetails()
|
||||
})
|
||||
|
||||
@@ -66,10 +69,23 @@ const certificate = createResource({
|
||||
},
|
||||
fieldname: ['name', 'template', 'issue_date'],
|
||||
},
|
||||
auto: true,
|
||||
cache: [user.data?.name, props.courseName],
|
||||
})
|
||||
|
||||
const fetchEnrollmentDetails = () => {
|
||||
call('frappe.client.get_value', {
|
||||
doctype: 'LMS Enrollment',
|
||||
filters: { member: user.data?.name, course: props.courseName },
|
||||
fieldname: ['purchased_certificate'],
|
||||
}).then((data) => {
|
||||
if (data.purchased_certificate) {
|
||||
certificate.reload()
|
||||
} else {
|
||||
router.push({ name: 'CourseDetail', params: { courseName: props.courseName } })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const fetchCourseDetails = () => {
|
||||
call('frappe.client.get_value', {
|
||||
doctype: 'LMS Course',
|
||||
|
||||
@@ -283,7 +283,8 @@ const courseType = computed(() => {
|
||||
]
|
||||
if (user.data?.is_student) {
|
||||
types.push({ label: __('Enrolled'), value: 'Enrolled' })
|
||||
} else {
|
||||
}
|
||||
if (user.data?.is_moderator || user.data?.is_instructor) {
|
||||
types.push({ label: __('Created'), value: 'Created' })
|
||||
}
|
||||
return types
|
||||
|
||||
@@ -113,37 +113,6 @@ def render_portal_page(path, **kwargs):
|
||||
return page.render()
|
||||
|
||||
|
||||
class CoursePage(BaseRenderer):
|
||||
def __init__(self, path, http_status_code):
|
||||
super().__init__(path, http_status_code)
|
||||
self.renderer = None
|
||||
|
||||
def can_render(self):
|
||||
return self.path.startswith("course")
|
||||
|
||||
def render(self):
|
||||
if "learn" in self.path:
|
||||
prefix = self.path.split("/learn")[0]
|
||||
course_name = prefix.split("/")[1]
|
||||
lesson_index = self.path.split("/learn/")[1]
|
||||
chapter_number = lesson_index.split(".")[0]
|
||||
lesson_number = lesson_index.split(".")[1]
|
||||
|
||||
frappe.flags.redirect_location = (
|
||||
f"/lms/courses/{course_name}/learn/{chapter_number}-{lesson_number}"
|
||||
)
|
||||
return RedirectPage(self.path).render()
|
||||
|
||||
elif len(self.path.split("/")) > 1:
|
||||
course_name = self.path.split("/")[1]
|
||||
frappe.flags.redirect_location = f"/lms/courses/{course_name}"
|
||||
return RedirectPage(self.path).render()
|
||||
|
||||
else:
|
||||
frappe.flags.redirect_location = "/lms/courses"
|
||||
return RedirectPage(self.path).render()
|
||||
|
||||
|
||||
class SCORMRenderer(BaseRenderer):
|
||||
def can_render(self):
|
||||
return "scorm/" in self.path
|
||||
|
||||
Reference in New Issue
Block a user