diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 2c0afea4..7dba321c 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -99,6 +99,7 @@ import { getSidebarLinks } from '../utils' import { usersStore } from '@/stores/user' import { sessionStore } from '@/stores/session' import { useSidebar } from '@/stores/sidebar' +import { useSettings } from '@/stores/settings' import { ChevronRight, Plus } from 'lucide-vue-next' import { createResource, Button } from 'frappe-ui' import PageModal from '@/components/Modals/PageModal.vue' @@ -114,6 +115,7 @@ const isModerator = ref(false) const isInstructor = ref(false) const pageToEdit = ref(null) const showWebPages = ref(false) +const settingsStore = useSettings() onMounted(() => { socket.on('publish_lms_notifications', (data) => { @@ -184,12 +186,23 @@ const addQuizzes = () => { } const addPrograms = () => { - if (isInstructor.value || isModerator.value) { - sidebarLinks.value.push({ + if (settingsStore.learningPaths.data) { + let activeFor = ['Programs', 'ProgramForm'] + let index = 1 + if (!isInstructor.value && !isModerator.value) { + sidebarLinks.value = sidebarLinks.value.filter( + (link) => link.label !== 'Courses' + ) + activeFor.push('CourseDetail') + activeFor.push('Lesson') + index = 0 + } + + sidebarLinks.value.splice(index, 0, { label: 'Programs', icon: 'Route', to: 'Programs', - activeFor: ['Programs', 'ProgramForm'], + activeFor: activeFor, }) } } diff --git a/frontend/src/components/CourseOutline.vue b/frontend/src/components/CourseOutline.vue index d93dbc2d..04f73937 100644 --- a/frontend/src/components/CourseOutline.vue +++ b/frontend/src/components/CourseOutline.vue @@ -303,9 +303,9 @@ const trashChapter = (chapterName) => { } const redirectToChapter = (chapter) => { + if (!chapter.is_scorm_package) return event.preventDefault() if (props.allowEdit) return - if (!chapter.is_scorm_package) return if (!user.data) { showToast( __('You are not enrolled'), diff --git a/frontend/src/components/Quiz.vue b/frontend/src/components/Quiz.vue index 79096e9e..b4b3c42f 100644 --- a/frontend/src/components/Quiz.vue +++ b/frontend/src/components/Quiz.vue @@ -397,6 +397,9 @@ const attempts = createResource({ watch( () => quiz.data, () => { + if (quiz.data) { + populateQuestions() + } if (quiz.data && quiz.data.max_attempts) { attempts.reload() resetQuiz() diff --git a/frontend/src/pages/Courses.vue b/frontend/src/pages/Courses.vue index 8fc7b1e8..16ae3ba0 100644 --- a/frontend/src/pages/Courses.vue +++ b/frontend/src/pages/Courses.vue @@ -173,12 +173,14 @@ import { BookOpen, Plus, Search } from 'lucide-vue-next' import { ref, computed, inject, onMounted, watch } from 'vue' import { updateDocumentTitle } from '@/utils' import { useRouter } from 'vue-router' +import { useSettings } from '@/stores/settings' const user = inject('$user') const searchQuery = ref('') const currentCategory = ref(null) const hasCourses = ref(false) const router = useRouter() +const settings = useSettings() onMounted(() => { checkLearningPath() @@ -189,14 +191,12 @@ onMounted(() => { }) const checkLearningPath = () => { - call('frappe.client.get_single_value', { - doctype: 'LMS Settings', - field: 'enable_learning_paths', - }).then((res) => { - if (res && !user.data?.is_moderator && !user.data?.is_instructor) { - router.push({ name: 'Programs' }) - } - }) + if ( + settings.learningPaths.data && + (!user.data?.is_moderator || !user.data?.is_instructor) + ) { + router.push({ name: 'Programs' }) + } } const courses = createResource({ diff --git a/frontend/src/pages/ProgramForm.vue b/frontend/src/pages/ProgramForm.vue index 13f15d3c..092e41b8 100644 --- a/frontend/src/pages/ProgramForm.vue +++ b/frontend/src/pages/ProgramForm.vue @@ -211,8 +211,6 @@ const program = createDocumentResource({ cache: ['program', props.programName], }) -console.log(program) - const addProgramCourse = () => { program.setValue.submit( { @@ -288,7 +286,6 @@ const updateOrder = (e) => { course.idx = index + 1 }) - console.log(courses) program.setValue.submit( { program_courses: courses, diff --git a/frontend/src/pages/Programs.vue b/frontend/src/pages/Programs.vue index 29f5c09b..860a1244 100644 --- a/frontend/src/pages/Programs.vue +++ b/frontend/src/pages/Programs.vue @@ -15,15 +15,27 @@