| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| import DojoExternalInterface; |
| |
| class Storage { |
| public static var SUCCESS = "success"; |
| public static var FAILED = "failed"; |
| public static var PENDING = "pending"; |
| |
| public var so; |
| |
| public function Storage(){ |
| //getURL("javascript:dojo.debug('FLASH:Storage constructor')"); |
| DojoExternalInterface.initialize(); |
| DojoExternalInterface.addCallback("put", this, put); |
| DojoExternalInterface.addCallback("get", this, get); |
| DojoExternalInterface.addCallback("showSettings", this, showSettings); |
| DojoExternalInterface.addCallback("clear", this, clear); |
| DojoExternalInterface.addCallback("getKeys", this, getKeys); |
| DojoExternalInterface.addCallback("remove", this, remove); |
| DojoExternalInterface.loaded(); |
| |
| // preload the System Settings finished button movie for offline |
| // access so it is in the cache |
| _root.createEmptyMovieClip("_settingsBackground", 1); |
| // getURL("javascript:alert('"+DojoExternalInterface.dojoPath+"');"); |
| _root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf"); |
| } |
| |
| public function put(keyName, keyValue, namespace){ |
| // Get the SharedObject for these values and save it |
| so = SharedObject.getLocal(namespace); |
| |
| // prepare a storage status handler |
| var self = this; |
| so.onStatus = function(infoObject:Object){ |
| //getURL("javascript:dojo.debug('FLASH: onStatus, infoObject="+infoObject.code+"')"); |
| |
| // delete the data value if the request was denied |
| if (infoObject.code == "SharedObject.Flush.Failed"){ |
| delete self.so.data[keyName]; |
| } |
| |
| var statusResults; |
| if(infoObject.code == "SharedObject.Flush.Failed"){ |
| statusResults = Storage.FAILED; |
| }else if(infoObject.code == "SharedObject.Flush.Pending"){ |
| statusResults = Storage.PENDING; |
| }else if(infoObject.code == "SharedObject.Flush.Success"){ |
| statusResults = Storage.SUCCESS; |
| } |
| //getURL("javascript:dojo.debug('FLASH: onStatus, statusResults="+statusResults+"')"); |
| |
| // give the status results to JavaScript |
| DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, |
| keyName); |
| } |
| |
| // save the key and value |
| so.data[keyName] = keyValue; |
| var flushResults = so.flush(); |
| |
| // return results of this command to JavaScript |
| var statusResults; |
| if(flushResults == true){ |
| statusResults = Storage.SUCCESS; |
| }else if(flushResults == "pending"){ |
| statusResults = Storage.PENDING; |
| }else{ |
| statusResults = Storage.FAILED; |
| } |
| |
| DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, |
| keyName); |
| } |
| |
| public function get(keyName, namespace){ |
| // Get the SharedObject for these values and save it |
| so = SharedObject.getLocal(namespace); |
| var results = so.data[keyName]; |
| |
| return results; |
| } |
| |
| public function showSettings(){ |
| // Show the configuration options for the Flash player, opened to the |
| // section for local storage controls (pane 1) |
| System.showSettings(1); |
| |
| // there is no way we can intercept when the Close button is pressed, allowing us |
| // to hide the Flash dialog. Instead, we need to load a movie in the |
| // background that we can show a close button on. |
| _root.createEmptyMovieClip("_settingsBackground", 1); |
| _root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf"); |
| } |
| |
| public function clear(namespace){ |
| so = SharedObject.getLocal(namespace); |
| so.clear(); |
| so.flush(); |
| } |
| |
| public function getKeys(namespace){ |
| // Returns a list of the available keys in this namespace |
| |
| // get the storage object |
| so = SharedObject.getLocal(namespace); |
| |
| // get all of the keys |
| var results = new Array(); |
| for(var i in so.data) |
| results.push(i); |
| |
| // join the keys together in a comma seperated string |
| results = results.join(","); |
| |
| return results; |
| } |
| |
| public function remove(keyName, namespace){ |
| // Removes a key |
| |
| // get the storage object |
| so = SharedObject.getLocal(namespace); |
| |
| // delete this value |
| delete so.data[keyName]; |
| |
| // save the changes |
| so.flush(); |
| } |
| |
| static function main(mc){ |
| //getURL("javascript:dojo.debug('FLASH: storage loaded')"); |
| _root.app = new Storage(); |
| } |
| } |
| |