Notes on eFFx from Richard's last day
Abstract
eFFx is a content player with a focus on a central events handler. All of the events produce by the system (from content, clicks, load and unloads) through one central event handling system.
At present this sytems handles:
- foundations editor
- foundations player
- task editor
- task player
does things like:
- show / hide things
- access content
- turn on tracking
Versions
- 1.0 - original far training
- 1.1 - construction safty
- 1.1.1 - COBC
- 2.0 - introduced the editor / <header> tag in menu
Event Handler
The events are pulled from 2 areas:
- Events specified by the project (in the content in an <events> tag)
- Events common to all player Types [foundataions, editor, tasks and task editor] (events.xml in these folders)
control.js - main application
- for each new application
- pull in controls.js and xml.js - basis of effx
- create a FoundationsPlayer.htm to define the layout
Responsabilities
effx
- loading content
foundations
- rendering content
editor
- edits xml content
player
- track - current session info - history of this session
- scorm - traing that links to a backend - permanent records.
module
- specs.js
- module path
- styles
- parameters
- loadtype(1=cd,2=web,3=xmldb-preview,4=xmldb-loading)
- hasLMS ( if true: prompts if lms is not found and sets this to false. if false: does not even check)
- specifing player location ( makes possible multiple players in one project) (specified in index.htm)
Objects
- ctrl - holds settings, parameters...
- params must be "filename=<path to module xml from the effx core dir>" - this is set
- holds info for all the parts - player info, effx info... info is just tagged onto this object
- objXML - holds module xml
- objEvents - holds events.xml file.
each part of the player / editor (each frame)
- sets ev = to global event handler
- sets up load and unload
Events
- mostly stand alone functions
- debug function in render is useful!
- <event id="foo"><action>doesSomething</action></event> -- called with ev('foo','<args>') - triggers javascript actions
- eval("doesSomething(args)")
questions answer types
- any - one try is considered completed
- none - only one shot
- wrong - only show wrong answers again
- all - have to have all right to be completed)
Notes on Files
player.js
- must be loaded last!
render.js
- initFoundations - takes the module files... passes it through load.xsl (using transformToString) to produce the html source for the module
- when the content of the _content_ div is changed, the onclick of the _content_ div is called ( calls flash_onload if <flash>, media_onload if <media>, else content_ontrack
Styles
- to edit navigation bar edit Foundations/navibar.xsl
css
- each frame can have its own css (css attribute of <frame>)
- each page has 2 style sheets - one general and on on a per frame requirement