| 44 | }, |
| 45 | |
| 46 | courseWorldMap (param) { |
| 47 | const courseId = |
| 48 | param.courseId || param.course?.id || param.course?._id || param.course |
| 49 | const courseInstanceId = |
| 50 | param.courseInstanceId || |
| 51 | param.courseInstance?.id || |
| 52 | param.courseInstance?._id || |
| 53 | param.courseInstance |
| 54 | const campaignId = |
| 55 | param.campaignId || |
| 56 | param.course?.attributes?.campaignID || |
| 57 | param.course?.campaignID |
| 58 | const classroomId = param.classroom?.id || param.classroomId |
| 59 | const { campaignPage } = param |
| 60 | const { codeLanguage } = param |
| 61 | if (!campaignId) { |
| 62 | console.error('courseWorldMap: campaign id is not defined', param) |
| 63 | return '' |
| 64 | } |
| 65 | if (courseId === utils.courseIDs.HACKSTACK) { |
| 66 | return `/ai/course-instance/${courseInstanceId}` |
| 67 | } else if (utils.HACKSTACK_COURSE_IDS.includes(courseId)) { |
| 68 | if (courseInstanceId) return `/ai/play/${campaignId}/?course-instance=${courseInstanceId}` |
| 69 | else return '/ai/play' |
| 70 | } |
| 71 | const courseCampaignSlug = utils.courseCampaignSlugs[courseId] |
| 72 | let url = `/play/${encodeURIComponent(courseCampaignSlug || campaignId)}` |
| 73 | const queryParams = {} |
| 74 | if (courseId) { |
| 75 | queryParams.course = encodeURIComponent(courseId) |
| 76 | } |
| 77 | if (courseInstanceId) { |
| 78 | queryParams['course-instance'] = encodeURIComponent(courseInstanceId) |
| 79 | } |
| 80 | if (campaignPage) { |
| 81 | queryParams['campaign-page'] = encodeURIComponent(campaignPage) |
| 82 | } |
| 83 | if (codeLanguage) { |
| 84 | queryParams.codeLanguage = encodeURIComponent(codeLanguage) |
| 85 | } |
| 86 | if (classroomId) { |
| 87 | queryParams['classroom-id'] = encodeURIComponent(classroomId) |
| 88 | } |
| 89 | const queryString = $.param(queryParams) |
| 90 | if (queryString) { |
| 91 | url += `?${queryString}` |
| 92 | } |
| 93 | if (utils.showOzaria()) { |
| 94 | url = url.replace(/^\/play/, '/play/ozaria') |
| 95 | } |
| 96 | return url |
| 97 | }, |
| 98 | |
| 99 | courseProjectGallery ({ courseInstance }) { |
| 100 | return `/students/project-gallery/${courseInstance.id}` |