MOBILE-2179 scorm: Always check completion when leaving player

main
Dani Palou 2018-07-26 14:04:47 +02:00
parent e6c5607463
commit 4e09c6e865
2 changed files with 9 additions and 4 deletions

View File

@ -61,6 +61,7 @@ export class AddonModScormIndexComponent extends CoreCourseModuleMainActivityCom
protected lastAttempt: number; // Last attempt. protected lastAttempt: number; // Last attempt.
protected lastIsOffline: boolean; // Whether the last attempt is offline. protected lastIsOffline: boolean; // Whether the last attempt is offline.
protected hasPlayed = false; // Whether the user has opened the player page. protected hasPlayed = false; // Whether the user has opened the player page.
protected syncDueToPlayerLeft = false; // Whether a sync was due to the user leaving the player.
constructor(injector: Injector, protected scormProvider: AddonModScormProvider, @Optional() protected content: Content, constructor(injector: Injector, protected scormProvider: AddonModScormProvider, @Optional() protected content: Content,
protected scormHelper: AddonModScormHelperProvider, protected scormOffline: AddonModScormOfflineProvider, protected scormHelper: AddonModScormHelperProvider, protected scormOffline: AddonModScormOfflineProvider,
@ -327,11 +328,14 @@ export class AddonModScormIndexComponent extends CoreCourseModuleMainActivityCom
* @return {boolean} If suceed or not. * @return {boolean} If suceed or not.
*/ */
protected hasSyncSucceed(result: any): boolean { protected hasSyncSucceed(result: any): boolean {
if (result.updated) { if (result.updated || this.syncDueToPlayerLeft) {
// Check completion status. // Check completion status if something was sent or the user just left the player.
// If the user plays the SCORM in online we don't know if he sent data or not, so always check completion.
this.checkCompletion(); this.checkCompletion();
} }
this.syncDueToPlayerLeft = false;
return true; return true;
} }
@ -343,6 +347,7 @@ export class AddonModScormIndexComponent extends CoreCourseModuleMainActivityCom
if (this.hasPlayed) { if (this.hasPlayed) {
this.hasPlayed = false; this.hasPlayed = false;
this.syncDueToPlayerLeft = true;
this.scormOptions.newAttempt = false; // Uncheck new attempt. this.scormOptions.newAttempt = false; // Uncheck new attempt.
// Add a delay to make sure the player has started the last writing calls so we can detect conflicts. // Add a delay to make sure the player has started the last writing calls so we can detect conflicts.

View File

@ -3,10 +3,10 @@
<p>{{ 'addon.mod_scorm.dataattemptshown' | translate:{number: attemptToContinue} }}</p> <p>{{ 'addon.mod_scorm.dataattemptshown' | translate:{number: attemptToContinue} }}</p>
</ion-item> </ion-item>
<ion-item text-center *ngIf="isBrowse"> <ion-item text-center *ngIf="isBrowse">
<p>{{ 'addon.mod_scorm.mod_scorm.browsemode' }}</p> <p>{{ 'addon.mod_scorm.browsemode' | translate }}</p>
</ion-item> </ion-item>
<ion-item text-center *ngIf="isReview"> <ion-item text-center *ngIf="isReview">
<p>{{ 'addon.mod_scorm.mod_scorm.reviewmode' }}</p> <p>{{ 'addon.mod_scorm.reviewmode' | translate }}</p>
</ion-item> </ion-item>
<!-- List of SCOs. --> <!-- List of SCOs. -->