XBlock for Open edX which embeds xAPI/Tin Can content
Python JavaScript HTML CSS
Switch branches/tags
Nothing to show
Clone or download
dadasoz-cuelogic and ihowson bugfix - not working on dogwood (#1)
* bugfix - not working on dogwood

* Updating scorm root path for production - nginx

The earlier settings for production was not working. so you have to change config files as follows:
In production, add to `/edx/app/nginx/sites-enabled/lms` and `/edx/app/nginx/sites-enabled/cms`:

location /scorm{
     alias /edx/app/edxapp/scorm;
     index  index.html;

* removed init method
Latest commit e0d469f May 25, 2016



This block does not implement any security features to stop a student from faking their test results. It is strictly for test purposes at this time. You have been warned.

What is it?

Experimental XBlock for hosting a SCORM content object. Currently it has built in trivial quiz for testing purposes, but eventually it will allow the user to upload an arbitrary SCORM zipfile.


  • See here for an overview of the SCORM API.
  • See the issues page for (an incomplete list of) work that needs to be done.


  1. Fork.
  2. Comment on the issue related to the thing you want to fix, so others know you're working on it. If you want to do something that doesn't have an issue associated with it, create an issue.
  3. Work on each feature/issue in a separate branch
  4. Submit pull request(s)


  1. Install the XBlock. The module name for advanced_modules is xb_scorm.
  2. Upload your SCORMs (see below)
  3. Insert them into a course using Studio

Uploading SCORMs

Right now, there is no nice GUI to do this. The XBlock looks under /edx/app/edxapp/scorm for potential SCORMs to display. They must be unzipped. The folder structure looks like:

  |--> some_scorm/
  |     |
  |     |--> ... some files ...
  |     |--> imsmanifest.xml
  |     |--> ... more files ...
  |--> another_scorm/
        |--> ... files ...
        |--> imsmanifest.xml

It looks for an imsmanifest.xml file inside the directory. It only looks one directory deep, so the above structure must be followed EXACTLY.


On Devstack, modify /edx/app/edxapp/edx-platform/lms/urls.py:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    # SCORM content (NEW)
    urlpatterns += static('/scorm/', document_root='/edx/app/edxapp/scorm/')

    # in debug mode, allow any template to be rendered (most useful for UX reference templates)
    urlpatterns += url(r'^template/(?P<template>.+)$', 'debug.views.show_reference_template'),

Also modify /edx/app/edxapp/edx-platform/cms/urls.py:

if settings.DEBUG:
        from .urls_dev import urlpatterns as dev_urlpatterns
        urlpatterns += dev_urlpatterns
    except ImportError:

    # SCORM content (NEW)
    from django.conf.urls.static import static
    urlpatterns += static('/scorm/', document_root='/edx/app/edxapp/scorm/')

In production, add to /edx/app/nginx/sites-enabled/lms and /edx/app/nginx/sites-enabled/cms:

location /scorm{
 alias /edx/app/edxapp/scorm;
 index  index.html;


(All of this static location business will go away when someone gets time to fix it.)

If this filesystem location doesn't work for you, you can change it in xb_scorm.py near the top.


As the content is simply 'dumped on a web server', any of it can be viewed by anyone who knows the URL. There are no permissions or security yet.

Using Articulate Storyline

If you're using Articulate Storyline to generate Tin Can content, I recommend unchecking the 'generate Flash content' check box when you're exporting. This will force mobile users (phones, iPads and tablets) to use the HTML5 renderer. This XBlock doesn't work with the Articulate app, and besides, why would you want to use Flash?

In general, if you're having trouble with content generated by Storyline, it's worth downloading the latest version from the Articulate website and re-exporting your content. There's a list of changes (bugs, new features, and so on) at

In particular, if sound isn't working on iPads and iPhones, that's fixed in updates at the start of 2015.