feat: edit related courses from frontend

This commit is contained in:
Jannat Patel
2025-06-16 15:13:30 +05:30
parent ec8bf6251f
commit 83ebfececf
7 changed files with 72 additions and 41 deletions

View File

@@ -83,12 +83,12 @@
:avg_rating="course.data.rating"
:membership="course.data.membership"
/>
<RelatedCourses :courseName="course.data.name" />
</div>
<div class="hidden md:block">
<CourseCardOverlay :course="course" />
</div>
</div>
<RelatedCourses :courseName="course.data.name" />
</div>
</div>
</template>
@@ -109,10 +109,8 @@ import CourseReviews from '@/components/CourseReviews.vue'
import UserAvatar from '@/components/UserAvatar.vue'
import CourseInstructors from '@/components/CourseInstructors.vue'
import RelatedCourses from '@/components/RelatedCourses.vue'
import { useRoute } from 'vue-router'
const { brand } = sessionStore()
const route = useRoute()
const props = defineProps({
courseName: {
@@ -124,22 +122,18 @@ const props = defineProps({
const course = createResource({
url: 'lms.lms.utils.get_course_details',
cache: ['course', props.courseName],
params: {
course: props.courseName,
makeParams() {
return {
course: props.courseName,
}
},
auto: true,
})
watch(
() => route.params.courseName,
(newCourseName, oldCourseName) => {
if (newCourseName && newCourseName !== oldCourseName) {
course.update({
cache: ['course', newCourseName],
params: { course: newCourseName },
})
course.reload()
}
() => props.courseName,
() => {
course.reload()
}
)

View File

@@ -199,6 +199,21 @@
)
"
/>
<MultiSelect
v-model="related_courses"
doctype="LMS Course"
:label="__('Related Courses')"
:filters="{ name: ['!=', courseResource.data?.name] }"
:onCreate="
(close) => {
router.push({
name: 'CourseForm',
params: { courseName: 'new' },
})
}
"
/>
</div>
<div class="px-10 pb-5 space-y-5 border-b">
@@ -319,6 +334,7 @@ const newTag = ref('')
const { brand } = sessionStore()
const router = useRouter()
const instructors = ref([])
const related_courses = ref([])
const app = getCurrentInstance()
const { updateOnboardingStep } = useOnboarding('learning')
const { $dialog } = app.appContext.config.globalProperties
@@ -400,6 +416,9 @@ const courseCreationResource = createResource({
instructors: instructors.value.map((instructor) => ({
instructor: instructor,
})),
related_courses: related_courses.value.map((course) => ({
course: course,
})),
...values,
},
}
@@ -418,6 +437,9 @@ const courseEditResource = createResource({
instructors: instructors.value.map((instructor) => ({
instructor: instructor,
})),
related_courses: related_courses.value.map((course) => ({
course: course,
})),
...course,
},
}
@@ -440,6 +462,11 @@ const courseResource = createResource({
data.instructors.forEach((instructor) => {
instructors.value.push(instructor.instructor)
})
} else if (key == 'related_courses') {
related_courses.value = []
data.related_courses.forEach((course) => {
related_courses.value.push(course.course)
})
} else if (Object.hasOwn(course, key)) course[key] = data[key]
})
let checkboxes = [