Site Tools


Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
Hotfix release available: 2018-04-22b "Greebo". upgrade now! [50.2] (what's this?)
scorm_content_integration

Scorm Content Integration (In Progress)

The prototype work for this can be found at - https://wiki.exphosted.com/doku.php/scorm_player_support.

The current status of the runtime API and data model implementation and the list of improvements that can be done - https://wiki.exphosted.com/doku.php/scorm_2004_runtime_api_and_data_model

To intetegrate scorm content to our system, we need to work on the following.

  1. Uploading and unpacking the content
  2. Integration with course player
  3. Progress tracking

Uploading and unpacking the content

Scorm content is treated as another special type of content similar to quiz, web links etc. When a user creates a scorm content the data is saved similar to any other uploaded file and a record is created in scorm_packages table. A corresponding record is created in contents table with content_type as ScormPackage. The package is unpacked and the manifest is saved in the scorm_packages table.

Integration with course player

The prototype mentioned above plays the content in a frame which is present inside a frameset. The activity navigation is shown in another frame which is present in the same frameset. We can have the content launched in either or both of the following ways.

1) As the course player is already a div, we cannot use frameset and we will use iframe and two frames inside it to hold navigation and content respectively. We shall hide the navigation of the course player when ever scorm content is being played.

Open question -

How to find when the content is unloaded ?

Generally we update the RTE with scores when we close the window in which the content is launched(onunload/ beforeunload) events. We need to find out if all the scorm contents can do this when launched like above. If we cannot do this, then we cannot launch it this way.

We need to proceed with the implementation to figure out if any issues occur with this kind of launching.

2) We can open a new window as soon as we click on the content and launch the scorm content inside it. This looks similar to flex paper fullscreen window. We need to try this implementation and see if any issues.

Progress tracking

The progress tracking on each activity is done through the RTE calls and the data is updated in scorm_sessions table.

The overall tracking of scorm score % in a course is yet to be worked on.

Known Issues

1) Scorm gem limitations

  1. Cannot read <metadata> inside the <organization> and <item> tags of manifest file.(Only manifests with multiple <organization> s would require this metadata.) It is a regular practice that a scorm content always has one <organization>. So, support for this is not required immediately. But this should be added some time in future.
  2. Cannot parse sequencing related tags in the manifest.

2) Runtime API

  1. At present only most important runtime data is handled. This should be good for now. We can add support for other data model elements down the line.
  2. Runtime API does not handle sequencing and objectives at this point of time.

Model and Table design

Models -

ScormPackage - ScormPackage is extended from Document(which is extended from Asset) so that all the physically uploaded files would go to assets table and we resuse most of the code. We overwrite the paperclip settings and other methods for ScormPackage to suit the purpose.

ScormPackageDetail - This has the information of scorm content which is additional to any other asset. At present only manifest is saved here.

Tables -

Table name - scorm_package_deatils

This table stores the additional information of any scorm package which is not present for assets. At present we save manifest here.

Column_name type Description
id integer primary key
scorm_package_id integer Id of scorm package to which this belongs to
manifest longtext The parsed manifest object which is used as the course structure

* Note - The manifest column contains the ScormPackage::Manifest object which is generated after parsing the PIF.

Table name - scorm_sessions

This table saves the runtime data of any user who played this content. We track this based on enrollment_id because one scorm content may be present in more than one course. So, we need both course_id and the user_id when we need to track the progress of a user on a scorm package. Enrollment has both of these details. The number of attempts is stored in progress_scores table.

Column_name type Description
id integer primary key
scorm_package_id integer foreign key to scorm packages table. The scorm package id corresponding to which this session is created
enrollment_id integer foreign key to the users table. User who has launched this package.
runtime_data integer This is a serialized hash containing all the runtime data of all activities.
created_at date_time created date
updated_at date_timeupdated date

SCORM 1.2 Support

scorm_content_integration.txt · Last modified: 2018/08/31 16:16 (external edit)