adaptlearning / adapt-contrib-xapi

TinCan/xAPI extension for the Adapt Framework
GNU General Public License v3.0
12 stars 27 forks source link

Language selection is not retained on re-opening in multi language courses #88

Closed deltanetdan closed 1 year ago

deltanetdan commented 4 years ago

Subject of the issue

In a multi language course the user has to choose their language each time they return to a course.

Your environment

Steps to reproduce

Create a course with language picker , xAPI and bookmarking plugin. Include at least two languages. Start the course after uploading to your LRS (SCORM Cloud in this case) Select a language and get part way through the course. Close and re-open the course.

Note: xapi _shouldTrackState = true language picker _showOnCourseLoad = true

Expected behaviour

On re-opening, the course should be in the language selected on the previous launch. The user should be able to return to the bookmarked location.

Actual behaviour

The user is always asked to select a language. If they select the same language as the previous attempt they will be returned to the bookmark position.

If language picker _showOnCourseLoad is set to false the user is always returned to the default language and any bookmark progress in a non default language is lost.

deltanetdan commented 3 years ago

@kevindoherty30 did you find a solution for this?

deltanetdan commented 3 years ago

I can confirm that this is an issue in framework v5.11.0 using the latest xAPI and language picker plugins.

cahirodoherty-learningpool commented 2 years ago

Further investigation on this has show that the issue lies with the offline storage. Since the code was converted to an ES6 class it is instantiating, when it shouldn't. This results in the ready state being called earlier than it should, so the language property set by xAPI is not present when the offline storage is consumed by languagePicker.

Further xAPI work will depend on core issue #20 and may not be needed depending on the solution in Core

oliverfoster commented 2 years ago

@cahirodoherty-learningpool I can't replicate this, the ready state is triggered here from here after this triggered from here. Spoor does something almost identical and that seems to work well.

Since the code was converted to an ES6 class it is instantiating, when it shouldn't.

The offline storage code is behaving exactly as it did before it was converted to ES6 https://github.com/adaptlearning/adapt_framework/blob/v5.3.0/src/core/js/offlineStorage.js Did you mean since the offlineStorage, languagePicker or xapi conversion to ES6?

Could you have another look?

oliverfoster commented 1 year ago

Stale