Caldoz

Caldoz is a SCORM package player. It is built using  Zope and  Python.

It is currently in development state but some basic functionality already exists. Main goal is to create a SCORM package player that can easily integrate in to other software and portals. But it can be used as a standalone player.

Caldoz will only support SCORM 2004 and up but not older versions.

Latest version: Caldoz 0.6

Features

  • importing scorm package - done
  • scorm API - done
  • navigation control - under development
  • clientid based upload access control - done
  • update package - done

Installation

  • Download and install Zope 2.10.5 or higher
  • Download latest Caldoz version, unpack, rename(if neccessary) the folder to Caldoz
  • Place Caldoz in Zope's Products folder.
  • restart zope and start using it.
  • Edit zope.conf and add Caldoz configuration directives.
<product-config caldoz>
    store_location /path/to/where/caldoz/can/write/
</product-config>
  • store_location - this is a folder where Caldoz stores uploaded content.

Clients

Client for IVA. Latest version is 0.5 which is compatible with Caldoz 0.5 and up.

SCORM-0.5.tar.gz

Caldoz API

All methods are HTTP GET or POST requests to Caldoz.

  • startSession(package_id, access_key, uname)
    • package_id - package ID to be accessed. (optional)
    • access_key - access key to "unlock" package. public or private.
    • uname - username who accesses package, if available. (optional)

returns session key or no content

  • addNewPackage(file, clientid)
    • file - base64 encoded zip-file
    • clientid - Client identification string (optional)

returns a short xml-like string with package id, name, public and private key as well as status and statusText of current operation, explaining what just happened. Status 0 means success. example:

   <response>
      <id>package_123123_sco</id>
      <status>0</status>
      <statusText></statusText>
      <name>SCORM tutorial</name>
      <public>d9u23md092u3m2</public>
      <private>as0d8asumd0u</private>
   </response>
  • deletePackage(private_key)
    • private_key - private key to "unlock" package and then delete it. permanently

returns status and statusText

  • getTOC(session_key)
    • session_key - session key that was obtained by startSession call

returns HTML representation of table of content or empty string

  • getNavigation(session_key)
    • session_key - session key that was obtained by startSession call

returns HTML representation of navigation buttons or empty string

  • getCookie(session_key, came_from)
    • session_key - session key that was obtained by startSession call
    • came_from - URL where to redirect user next

Note that this method does NOT validate session but just sets a cookie. This is required to fix cross-domain access issues.

  • generateKeys(private_key)
    • private_key - private key to "unlock" package.

Generates new public and private key.

returns xml-like string with status, statusText, public, private

  • packageInfo(private_key)
    • private_key - private key to "unlock" package.

returns a short xml-like string with package id, name, public and private key as well as status and statusText of current operation.

See addNewPackage for example response.

  • updatePackage(file, clientid, private_key)
    • file - zip-file.
    • clientid - Client identification string (optional)
    • private_key - private key to "unlock" package.

Basicly replaces one package with another. returns a short xml-like string including <name>, <id> and status elements.

Attachments