feat: added logic to handle failure cases on SCORM courses failure (Whether to allow retake of final quiz or Reset the whole Course)
This commit is contained in:
@@ -47,6 +47,12 @@ import { updateDocumentTitle } from '@/utils'
|
|||||||
const sidebarStore = useSidebar()
|
const sidebarStore = useSidebar()
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
const readyToRender = ref(false)
|
const readyToRender = ref(false)
|
||||||
|
const isSuccessfullyCompleted = ref(false)
|
||||||
|
|
||||||
|
// If courseRestartOnFailure is true, student has to restart the whole course if failed.
|
||||||
|
// Otherwise, student could retake the final quiz portion.
|
||||||
|
// Ideally, this should be configurable along with `Number of failures before course should restart`.
|
||||||
|
const courseRestartOnFailure = false
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
courseName: {
|
courseName: {
|
||||||
@@ -97,12 +103,20 @@ const getDataFromLMS = (key) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const saveDataToLMS = (key, value) => {
|
const saveDataToLMS = (key, value) => {
|
||||||
if (key === 'cmi.core.lesson_status' && value === 'passed') {
|
if (key === 'cmi.core.lesson_status') {
|
||||||
saveProgress({
|
if (value === 'passed') {
|
||||||
is_complete: true,
|
isSuccessfullyCompleted.value = true
|
||||||
scorm_content: '',
|
saveProgress({
|
||||||
})
|
is_complete: isSuccessfullyCompleted.value,
|
||||||
} else if (key === 'cmi.suspend_data') {
|
scorm_content: '',
|
||||||
|
})
|
||||||
|
} else if (value === 'failed' && courseRestartOnFailure) {
|
||||||
|
saveProgress({
|
||||||
|
is_complete: isSuccessfullyCompleted.value,
|
||||||
|
scorm_content: '',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else if (key === 'cmi.suspend_data' && !isSuccessfullyCompleted.value) {
|
||||||
saveProgress({
|
saveProgress({
|
||||||
is_complete: false,
|
is_complete: false,
|
||||||
scorm_content: value,
|
scorm_content: value,
|
||||||
|
|||||||
Reference in New Issue
Block a user