Documentation

SCORM 2004

This export allows creating offline zip packages with a selected lesson. It contains only the required files to launch the latest icplayer version from mAuthor and additional scripts in the index.html file.

Additionally to HTML5/offline format it has scripts accessing the SCORM communication.

Package structure

/
    icplayer/ - folder with newest icplayer
    javascript/ - folder containing scripts required to launch addons from icplayer and mAuthor additional scripts for index.html file
    pages/ - folder containing main.xml file describing whole content and lesson pages xmls
    resources/ - folder containing media files used by lesson
    index.html - initial launching file for lesson
    imsmanifest.xml - SCORM manifest
    metadata.xml - xml file with lesson metadata

index.html

This is a main initial file to boot the exported package. It contains a portion of scripts required by the player to launch a lesson and some mAuthor additional scripts' functionalities.

<script type="text/javascript" src="javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="icplayer/icplayer.nocache.js"></script>
<script type="text/javascript" src="javascript/semi-responsive-layout-chooser.js"></script>
<script type="text/javascript" src="javascript/screen.js"></script>

Scripts included in the mAuthor export packages:

jquery-1.7.1.min.js - jQuery script for addons
semi-respoinsive-layout-chooser.js & screen.js - additional mAuthor scripts for changing lesson layout depending on device screen.
icplayer.nocache.js - boot file for player application to load icplayer

You can download these scripts here: Scripts

Booting script

function ocOnAppLoaded() {
    player = icCreatePlayer('_icplayer');
    player.load('pages/main.xml', parseInt(location));
    ...

    scorm = getScorm();
    var result = scorm.initializeScormCommunication(window);
    if (result === false) {
        scorm = getScorm_1_2();
        scorm.initializeScormCommunication(window);
    }
    var savedState = scorm.loadState();
    if (savedState) {
        player.setState(savedState);
    }
    var location = scorm.loadLocation();
    if (location === false) {
        location = '0';
    }

}

This part of the script is required to load a lesson with configuration written in the main.xml file. The second part of the script that comes after the three dots represents SCORM communication.

function doUnload() {
    var end = new Date().getTime();

    // This ensures that Player knows to update score before leaving page, event for score type FIRST.
    if (player.hasOwnProperty('forceScoreUpdate')) {
        player.forceScoreUpdate();
    }

    var ps = player.getPlayerServices();
    var utils = new PlayerUtils(player);
    var presentation = utils.getPresentation();
    var score = utils.getPresentationScore(presentation);
    for(var i = 0; i < score.paginatedResult.length; i++){
        var s = score.paginatedResult[i];
        scorm.setPageName(i, 'Page_' + s.page_number);
        scorm.setPageMinScore(i, 0);
        scorm.setPageMaxScore(i, 1);
        scorm.setPageRawScore(i, s.score);
        scorm.setPageScaledScore(i, s.score);
    }

    var _rawscore = score.scaledScore * 100;
    var rawscore = Math.round(_rawscore);

    scorm.setMinScore(0);
    scorm.setMaxScore(100);
    scorm.setRawScore(rawscore);
    scorm.setScaledScore(_rawscore/100);
    scorm.setSessionTime(end - start);
    scorm.saveState(player.getState());
    scorm.saveLocation(ps.getCurrentPageIndex());
    scorm.setCompleted();
    scorm.terminateScormCommunication();
    scorm.commitScormCommunication();
}

Scorm communication is used in doUnload function which sends the lesson state and score before closing the lesson.