Index: lams_common/src/flash/org/lamsfoundation/lams/common/Config.as =================================================================== diff -u -rc40830be7545758efe68288de4e980bbdd498bff -ree261cfca3e2c0de48cbc149e95c1702b08e92e1 --- lams_common/src/flash/org/lamsfoundation/lams/common/Config.as (.../Config.as) (revision c40830be7545758efe68288de4e980bbdd498bff) +++ lams_common/src/flash/org/lamsfoundation/lams/common/Config.as (.../Config.as) (revision ee261cfca3e2c0de48cbc149e95c1702b08e92e1) @@ -1,20 +1,34 @@ -import org.lamsfoundation.lams.common.* +import org.lamsfoundation.lams.common.*; +import org.lamsfoundation.lams.common.util.*; +import org.lamsfoundation.lams.authoring.*; + /** * Stores configuration data for LAMS application * @class Config * @author DI */ class Config { - //Declarations - //Application instance is stored as a static in the application class - private static var _instance:Config = null; + //Config instance is stored as a static in the class + private static var _instance:Config = null; + + private var _configData:Object //Object that stores configuration data + private var _cm:CookieMonster; + private var _comms:Communication; private var _className = 'Config'; + + private var _version:String; //Config properties + private var _language:String; + private var _theme:String; + private var _rootUrl:String; + //Constructor - private function Config() { - + private function Config() { + //Get a ref to the cookie monster + _cm = CookieMonster.getInstance(); + _comms = Application.getInstance().getComms(); } /** @@ -30,14 +44,25 @@ /** * Loads application configuration data for LAMS, can load from a URL or cookie */ - function load(src:Object){ + public function load(src:Object){ if(typeof(src)=='string'{ //load from URL otherwise }else { - //load from config cookie + //load from config cookie + _configData = _cm.open('config'); } - } + } + /** + * Set the default configuration properties + */ + public function setDefaults(){ + //TODO - DI 16/05/05 Get these from server eventually + _version = '1.1'; + _language = 'uk'; + _theme = 'default'; + _rootUrl = 'http:dolly.uklams.net/lams'; + } //Getters+Setters function get className():String{ Index: lams_common/src/flash/org/lamsfoundation/lams/common/util/CookieMonster.as =================================================================== diff -u --- lams_common/src/flash/org/lamsfoundation/lams/common/util/CookieMonster.as (revision 0) +++ lams_common/src/flash/org/lamsfoundation/lams/common/util/CookieMonster.as (revision ee261cfca3e2c0de48cbc149e95c1702b08e92e1) @@ -0,0 +1,78 @@ +import org.lamsfoundation.lams.common.util.* + +/** +* CookieMonster - Singleton used for opening and saving shared objects (cookies); +* +* +* @author DI +* @usage +* //Import and get and instance of CookieMonster singleton +* import CookieMonster +* var cm = CookieMonster.getInstance(); +* +* //Create an object and save under a name with cmInstance.save(obj:Object,name:String); +* var john:Object = {name:'john',age:25,town:'London'}; +* cm.save(john,'john'); +* //The following code should trace "name:John age:25" +* var savedPerson:Object = cm.open('john'); +* trace('name:' + savedPerson.name + ' age:' + savedPerson.age); +*/ +class CookieMonster { + + //CookieMonster instance is stored as a static in the CookieMonster class + private static var _instance:CookieMonster = null; + + private var _className = 'CookieMonster'; + private var _so:SharedObject; + + //Constructor + private function CookieMonster(){ + //Create the LAMS shared object + _so = SharedObject.getLocal('org.lamsfoundation.lams','/'); + _so.data.name = 'LAMSData'; + } + + /** + * Clears all data in org.lamsfoundation.lams shared object + * NOTE: - This should be called only when ALL local data for lams is to be deleted + */ + public function purge():Void { + _so.clear(); + } + + /** + * Retrieves an instance of the CookieMonster singleton + */ + public static function getInstance():CookieMonster{ + if(CookieMonster._instance == null){ + CookieMonster._instance = new CookieMonster(); + } + return CookieMonster._instance; + } + + /** + * Saves the object under the name provided + */ + public function save(obj:Object,name:String){ + //TODO DI 16/05/05 Error handling needs to provide for size limits, duplicates etc. + //Save the object under the named reference provided + if(!_so.data[name]) { + _so.data[name]=obj; + _so.flush(); + } + } + + + /** + * Saves the object under the name provided + */ + public function open(obj:Object,name:String):Object{ + //TODO DI 16/05/05 Error handling needs to provide for missing objects + //Save the object under the named reference provided + return _so.data[name]; + } + + function get className():String{ + return _className; + } +}