commit
a76ccaaa4f
|
@ -207,7 +207,9 @@ export class AddonModScormIndexComponent extends CoreCourseModuleMainActivityCom
|
|||
this.scorm.numAttempts = this.attempts.total;
|
||||
this.scorm.gradeMethodReadable = this.scormProvider.getScormGradeMethod(this.scorm);
|
||||
this.scorm.attemptsLeft = this.scormProvider.countAttemptsLeft(this.scorm, this.attempts.lastAttempt.number);
|
||||
if (this.scorm.forceattempt && this.scorm.incomplete) {
|
||||
|
||||
if (this.scorm.forcenewattempt == AddonModScormProvider.SCORM_FORCEATTEMPT_ALWAYS ||
|
||||
(this.scorm.forcenewattempt && !this.scorm.incomplete)) {
|
||||
this.scormOptions.newAttempt = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -193,12 +193,11 @@ export class AddonModScormHelperProvider {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the first SCO to load in a SCORM. If a non-empty TOC is provided, it will be the first valid SCO in the TOC.
|
||||
* Otherwise, it will be the first valid SCO returned by $mmaModScorm#getScos.
|
||||
* Get the first SCO to load in a SCORM: the first valid and incomplete SCO.
|
||||
*
|
||||
* @param {number} scormId Scorm ID.
|
||||
* @param {number} attempt Attempt number.
|
||||
* @param {any[]} [toc] SCORM's TOC.
|
||||
* @param {any[]} [toc] SCORM's TOC. If not provided, it will be calculated.
|
||||
* @param {string} [organization] Organization to use.
|
||||
* @param {boolean} [offline] Whether the attempt is offline.
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
|
@ -220,7 +219,8 @@ export class AddonModScormHelperProvider {
|
|||
for (let i = 0; i < scos.length; i++) {
|
||||
const sco = scos[i];
|
||||
|
||||
if (sco.isvisible && sco.prereq && sco.launch) {
|
||||
// Return the first valid and incomplete SCO.
|
||||
if (sco.isvisible && sco.prereq && sco.launch && this.scormProvider.isStatusIncomplete(sco.status)) {
|
||||
return sco;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,6 +77,10 @@ export class AddonModScormProvider {
|
|||
static MODENORMAL = 'normal';
|
||||
static MODEREVIEW = 'review';
|
||||
|
||||
static SCORM_FORCEATTEMPT_NO = 0;
|
||||
static SCORM_FORCEATTEMPT_ONCOMPLETE = 1;
|
||||
static SCORM_FORCEATTEMPT_ALWAYS = 2;
|
||||
|
||||
// Events.
|
||||
static LAUNCH_NEXT_SCO_EVENT = 'addon_mod_scorm_launch_next_sco';
|
||||
static LAUNCH_PREV_SCO_EVENT = 'addon_mod_scorm_launch_prev_sco';
|
||||
|
@ -233,6 +237,15 @@ export class AddonModScormProvider {
|
|||
}
|
||||
}
|
||||
|
||||
if (scorm.forcenewattempt == AddonModScormProvider.SCORM_FORCEATTEMPT_ALWAYS) {
|
||||
// This SCORM is configured to force a new attempt on every re-entry.
|
||||
return {
|
||||
mode: AddonModScormProvider.MODENORMAL,
|
||||
attempt: attempt + 1,
|
||||
newAttempt: true
|
||||
};
|
||||
}
|
||||
|
||||
// Validate user request to start a new attempt.
|
||||
if (attempt == 0) {
|
||||
newAttempt = true;
|
||||
|
|
Loading…
Reference in New Issue