Merge pull request #1374 from pateljannat/issues-82
fix: check enrollment on course certification page
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { computed, inject, onMounted, ref } from 'vue'
|
import { computed, inject, onMounted, ref } from 'vue'
|
||||||
import { Breadcrumbs, call, createResource } from 'frappe-ui'
|
import { Breadcrumbs, call, createResource } from 'frappe-ui'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
import UpcomingEvaluations from '@/components/UpcomingEvaluations.vue'
|
import UpcomingEvaluations from '@/components/UpcomingEvaluations.vue'
|
||||||
|
|
||||||
const courseTitle = ref(null)
|
const courseTitle = ref(null)
|
||||||
@@ -44,6 +45,7 @@ const evaluator = ref(null)
|
|||||||
const courses = ref([])
|
const courses = ref([])
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
const dayjs = inject('$dayjs')
|
const dayjs = inject('$dayjs')
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
courseName: {
|
courseName: {
|
||||||
@@ -53,6 +55,7 @@ const props = defineProps({
|
|||||||
})
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
fetchEnrollmentDetails()
|
||||||
fetchCourseDetails()
|
fetchCourseDetails()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -66,10 +69,26 @@ const certificate = createResource({
|
|||||||
},
|
},
|
||||||
fieldname: ['name', 'template', 'issue_date'],
|
fieldname: ['name', 'template', 'issue_date'],
|
||||||
},
|
},
|
||||||
auto: true,
|
|
||||||
cache: [user.data?.name, props.courseName],
|
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 = () => {
|
const fetchCourseDetails = () => {
|
||||||
call('frappe.client.get_value', {
|
call('frappe.client.get_value', {
|
||||||
doctype: 'LMS Course',
|
doctype: 'LMS Course',
|
||||||
|
|||||||
@@ -283,7 +283,8 @@ const courseType = computed(() => {
|
|||||||
]
|
]
|
||||||
if (user.data?.is_student) {
|
if (user.data?.is_student) {
|
||||||
types.push({ label: __('Enrolled'), value: 'Enrolled' })
|
types.push({ label: __('Enrolled'), value: 'Enrolled' })
|
||||||
} else {
|
}
|
||||||
|
if (user.data?.is_moderator || user.data?.is_instructor) {
|
||||||
types.push({ label: __('Created'), value: 'Created' })
|
types.push({ label: __('Created'), value: 'Created' })
|
||||||
}
|
}
|
||||||
return types
|
return types
|
||||||
|
|||||||
@@ -113,37 +113,6 @@ def render_portal_page(path, **kwargs):
|
|||||||
return page.render()
|
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):
|
class SCORMRenderer(BaseRenderer):
|
||||||
def can_render(self):
|
def can_render(self):
|
||||||
return "scorm/" in self.path
|
return "scorm/" in self.path
|
||||||
|
|||||||
Reference in New Issue
Block a user