Package: openedx-scorm-xblock
This is an XBlock to displaySCORMcontent within theOpen edXLMS and Studio. It will save student state and report scores to the progress tab of the course.
Currently supports SCORM 1.2 and SCORM 2004 standard.This XBlock was initially developed byRaccoon Gangand published asedx_xblock_scorm. It was later improved, published on Pypi and relicensed as AGPLv3 thanks to the support ofCompliplus Ltd.This XBlock is not compatible with itsancestor: older xblocks cannot be simply migrated to the newer one. However, this xblock can be installed next to the other one and run on the same platform for easier transition.FeaturesFull SCORM data student reports for staff usersFullscreen display on button pressedOptional display in pop-up windowIntegrated grading, compatible with rescoringOptional custom width navigation menu interpreted from manifest fileCompatibility withDjango storages, customizable storage backendInstallationThis XBlock was designed to work out of the box withTutor(Ironwood release). It comes bundled by default in the official Tutor releases, such that there is no need to install it manually.For non-Tutor platforms, you should install thePython package from Pypi:pip install openedx-scorm-xblockIn the Open edX native installation, you will have to modify the files/edx/etc/lms.ymland/edx/etc/studio.yml. Replace:X_FRAME_OPTIONS: DENYBy:X_FRAME_OPTIONS: SAMEORIGINUsageIn the Studio, go to the advanced settings of your course (“Settings” 🡒 “Advanced Settings”). In the “Advanced Module List” add “scorm”. Then hit “Save changes”.Go back to your course content. In the “Add New Component” section, click “Advanced”, and then “Scorm module”. Click “Edit” on the newly-created module: this is where you will upload your content package. It should be a.zipfile containing animsmanifest.xmlfile at the root. The content of the package will be displayed in the Studio and the LMS after you click “Save”.Advanced configurationAsset urlBy default, SCORM modules will be accessible at “/scorm/” urls and static assets will be stored in “scorm” media folders – either on S3 or in the local storage, depending on your platform configuration. To change this behaviour, modify the xblock-specificLOCATIONsetting:XBLOCK_SETTINGS["ScormXBlock"] = {
    "LOCATION": "alternatevalue",
}Custom storage backendsBy default, static assets are stored in the default Django storage backend. To override this behaviour, you should define a custom storage function. This function must take the xblock instance as its first and only argument. For instance, you can store assets in different directories depending on the XBlock organisation with:def scorm_storage(xblock):
    from django.conf import settings
    from django.core.files.storage import get_storage_class
    from openedx.core.djangoapps.site_configuration.models import SiteConfiguration

    subfolder = SiteConfiguration.get_value_for_org(
        xblock.location.org, "SCORM_STORAGE_NAME", "default"
    )
    storage_location = os.path.join(settings.MEDIA_ROOT, subfolder)
    return get_storage_class(settings.DEFAULT_FILE_STORAGE)(
        location=storage_location, base_url=settings.MEDIA_URL + "/" + subfolder
    )

XBLOCK_SETTINGS["ScormXBlock"] = {
    "STORAGE_FUNC": scorm_storage,
}This should be added both to the LMS and the CMS settings. Instead of a function, a string that points to an importable module may be passed:XBLOCK_SETTINGS["ScormXBlock"] = {
    "STORAGE_FUNC": "my.custom.storage.module.get_scorm_storage_function",
}Note that the SCORM XBlock comes with S3 storage support out of the box. See the following section:S3 storageThe SCORM XBlock may be configured to proxy static SCORM assets stored in either public or private S3 buckets. To configure S3 storage, add the following to your LMS and CMS settings:XBLOCK_SETTINGS["ScormXBlock"] = {
    "STORAGE_FUNC": "openedxscorm.storage.s3"
}You may define the following additional settings inXBLOCK_SETTINGS["ScormXBlock"]:S3_BUCKET_NAME(default:AWS_STORAGE_BUCKET_NAME): to store SCORM assets in a specific bucket.S3_QUERY_AUTH(default:True): boolean flag (TrueorFalse) for query string authentication in S3 urls. If your bucket is public, set this value toFalse. But be aware that in such case your SCORM assets will be publicly available to everyone.S3_EXPIRES_IN(default: 604800): time duration (in seconds) for the presigned URLs to stay valid. The default is one week.These settings may be added to Tutor by creating aplugin:from tutor import hooks

hooks.Filters.ENV_PATCHES.add_item(
    (
        "openedx-common-settings",
        """
XBLOCK_SETTINGS["ScormXBlock"] = {
    "STORAGE_FUNC": "openedxscorm.storage.s3",
    "S3_BUCKET_NAME": "mybucket",
    ...
}"""
)DevelopmentRun unit tests with:$ NO_PREREQ_INSTALL=1 paver test_system -s lms -t openedxscormTroubleshootingThis XBlock is maintained by Zia Fazal fromEdly. Community support is available from the officialOpen edX forum. Do you need help with this plugin? See thetroubleshootingsection from the Tutor documentation.LicenseThis work is licensed under the terms of theGNU Affero General Public License (AGPL).