forked from EVOgeek/Vmeda.Online
commit
0b2e046041
|
@ -214,12 +214,12 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
const siteId = this.sitesProvider.getCurrentSiteId();
|
||||
|
||||
return this.lessonProvider.getLesson(courseId, module.id, false, false, siteId).then((lesson) => {
|
||||
if (!this.lessonProvider.isLessonOffline(lesson)) {
|
||||
// Check if there is any prevent access reason.
|
||||
return this.lessonProvider.getAccessInformation(lesson.id, false, false, siteId).then((info) => {
|
||||
if (!info.canviewreports && !this.lessonProvider.isLessonOffline(lesson)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if there is any prevent access reason.
|
||||
return this.lessonProvider.getAccessInformation(lesson.id, false, false, siteId).then((info) => {
|
||||
// It's downloadable if there are no prevent access reasons or there is just 1 and it's password.
|
||||
return !info.preventaccessreasons || !info.preventaccessreasons.length ||
|
||||
(info.preventaccessreasons.length == 1 && this.lessonProvider.isPasswordProtected(info));
|
||||
|
@ -273,7 +273,7 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
lesson = data.lesson || lesson;
|
||||
accessInfo = data.accessInfo;
|
||||
|
||||
if (!this.lessonProvider.leftDuringTimed(accessInfo)) {
|
||||
if (this.lessonProvider.isLessonOffline(lesson) && !this.lessonProvider.leftDuringTimed(accessInfo)) {
|
||||
// The user didn't left during a timed session. Call launch retake to make sure there is a started retake.
|
||||
return this.lessonProvider.launchRetake(lesson.id, password, undefined, false, siteId).then(() => {
|
||||
const promises = [];
|
||||
|
@ -301,6 +301,7 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
promises.push(this.filepoolProvider.addFilesToQueue(siteId, files, this.component, module.id));
|
||||
|
||||
// Get the list of pages.
|
||||
if (this.lessonProvider.isLessonOffline(lesson)) {
|
||||
promises.push(this.lessonProvider.getPages(lesson.id, password, false, true, siteId).then((pages) => {
|
||||
const subPromises = [];
|
||||
let hasRandomBranch = false;
|
||||
|
@ -359,7 +360,9 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
promises.push(this.lessonProvider.getContentPagesViewedOnline(lesson.id, retake, false, true, siteId));
|
||||
|
||||
// Prefetch question attempts in last retake for offline calculations.
|
||||
promises.push(this.lessonProvider.getQuestionsAttemptsOnline(lesson.id, retake, false, undefined, false, true, siteId));
|
||||
promises.push(this.lessonProvider.getQuestionsAttemptsOnline(lesson.id, retake, false, undefined, false, true,
|
||||
siteId));
|
||||
}
|
||||
|
||||
if (accessInfo.canviewreports) {
|
||||
// Prefetch reports data.
|
||||
|
@ -391,7 +394,24 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
}
|
||||
|
||||
retakePromises.push(this.lessonProvider.getUserRetake(lesson.id, lastRetake.try, student.id, false,
|
||||
true, siteId));
|
||||
true, siteId).then((attempt) => {
|
||||
if (!attempt || !attempt.answerpages) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Download embedded files in essays.
|
||||
const files = [];
|
||||
attempt.answerpages.forEach((answerPage) => {
|
||||
if (answerPage.page.qtype != AddonModLessonProvider.LESSON_PAGE_ESSAY) {
|
||||
return;
|
||||
}
|
||||
answerPage.answerdata.answers.forEach((answer) => {
|
||||
files.push(...this.domUtils.extractDownloadableFilesFromHtmlAsFakeFileObjects(answer[0]));
|
||||
});
|
||||
});
|
||||
|
||||
return this.filepoolProvider.addFilesToQueue(siteId, files, this.component, module.id);
|
||||
}));
|
||||
});
|
||||
|
||||
return Promise.all(retakePromises);
|
||||
|
|
Loading…
Reference in New Issue