SCORM 2004 4th Edition test package
===================================

WHAT IT IS
A one-page SCORM 2004 4th Edition lesson for testing an LMS. It teaches nothing. It proves that your
LMS can import a SCORM 2004 4th Edition package, launch it, hand it the SCORM 2004 API, and store
what the package sends.

WHAT IT DOES, IN ORDER
1. Looks for the SCORM 2004 API: an object named API_1484_11 (window.API_1484_11) in this window,
   then in each parent window up to the top, then in the window that opened it and that window's
   parents.
2. Calls Initialize("").
3. Reads and shows on the page:
     cmi.learner_name, cmi.completion_status, cmi.success_status, cmi.entry, cmi.mode,
     cmi.suspend_data
   (On a first launch, reading cmi.suspend_data can return error 403, "Data Model Element Value
   Not Initialized". That is normal and the log marks it as such.)
4. If cmi.completion_status is "not attempted" or "unknown" (or empty), sets it to "incomplete".
5. Writes a launch counter to cmi.suspend_data ("launches=1", then "launches=2" on the next
   launch, and so on), then calls Commit("").
6. When the learner clicks "Mark complete", sets:
     cmi.score.min            0
     cmi.score.max            100
     cmi.score.raw            100
     cmi.score.scaled         1
     cmi.completion_status    completed
     cmi.success_status       passed
     cmi.session_time         time on the page, as an ISO 8601 duration (for example PT0H1M5S)
     cmi.exit                 normal
   then calls Commit("") and Terminate("").
7. If the page is closed before "Mark complete", sets cmi.session_time and cmi.exit = "suspend",
   then calls Commit("") and Terminate(""). The completion status stays "incomplete", and the
   launch counter should go up by 1 on the next launch.

Every call is listed in the API log at the bottom of the page with its return value and, when it
is not 0, the error code and the LMS's description of it.

WHAT YOUR LMS SHOULD RECORD AFTER "MARK COMPLETE"
  Completion status: completed
  Success status: passed
  Score: 100 (raw), 1 (scaled)
  Time: roughly the time the page was open

The item in the manifest sets completionSetByContent="true" and objectiveSetByContent="true", so
the LMS takes completion and success only from what the lesson reports. It sets no other
sequencing rules and no mastery score.

FILES
  imsmanifest.xml              the manifest: SCORM 2004 4th Edition, one SCO,
                               resource type adlcp:scormType="sco"
  index.html                   the lesson; all CSS and JavaScript are inside it
  README.txt                   this file
  imscp_v1p1.xsd               IMS Content Packaging 1.1.4 schema
  adlcp_v1p3.xsd               ADL content packaging extensions
  adlseq_v1p3.xsd              ADL sequencing extensions
  adlnav_v1p3.xsd              ADL navigation extensions
  imsss_v1p0*.xsd (10 files)   IMS Simple Sequencing schema
  xml.xsd, XMLSchema.dtd, datatypes.dtd   W3C files the schemas above rely on
  This is the 4th Edition schema set for content without metadata, which is all this package needs.

Upload the .zip as it is. Do not unzip and re-zip it: imsmanifest.xml must stay at the top level.
Note: core Moodle does not support SCORM 2004. Use the SCORM 1.2 sample there.

LICENSE
The lesson files (index.html, imsmanifest.xml and this README) are free to use, copy,
change and share for any purpose, including commercial use, with no attribution required. They come
with no warranty.
The .xsd and .dtd files are the standard manifest schema files written by IMS Global Learning
Consortium, ADL and W3C, as distributed by SCORM.com (Rustici Software) for inclusion in every SCORM
package. They keep the notices inside them.

Built 9 October 2026.
