aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/storage/FlashStorageProvider.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/storage/FlashStorageProvider.js')
-rw-r--r--includes/js/dojox/storage/FlashStorageProvider.js346
1 files changed, 0 insertions, 346 deletions
diff --git a/includes/js/dojox/storage/FlashStorageProvider.js b/includes/js/dojox/storage/FlashStorageProvider.js
deleted file mode 100644
index 42cd7dc..0000000
--- a/includes/js/dojox/storage/FlashStorageProvider.js
+++ /dev/null
@@ -1,346 +0,0 @@
-if(!dojo._hasResource["dojox.storage.FlashStorageProvider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.storage.FlashStorageProvider"] = true;
-dojo.provide("dojox.storage.FlashStorageProvider");
-
-dojo.require("dojox.flash");
-dojo.require("dojox.storage.manager");
-dojo.require("dojox.storage.Provider");
-
-// summary:
-// Storage provider that uses features in Flash to achieve permanent
-// storage
-// description:
-// Authors of this storage provider-
-// Brad Neuberg, bkn3@columbia.edu
-dojo.declare("dojox.storage.FlashStorageProvider", dojox.storage.Provider, {
- initialized: false,
-
- _available: null,
- _statusHandler: null,
- _flashReady: false,
- _pageReady: false,
-
- initialize: function(){
- //console.debug("FlashStorageProvider.initialize");
- if(dojo.config["disableFlashStorage"] == true){
- return;
- }
-
- // initialize our Flash
- dojox.flash.addLoadedListener(dojo.hitch(this, function(){
- //console.debug("flashReady");
- // indicate our Flash subsystem is now loaded
- this._flashReady = true;
- if(this._flashReady && this._pageReady){
- this._loaded();
- }
- }));
- var swfLoc = dojo.moduleUrl("dojox", "storage/Storage.swf").toString();
- dojox.flash.setSwf(swfLoc, false);
-
- // wait till page is finished loading
- dojo.connect(dojo, "loaded", this, function(){
- //console.debug("pageReady");
- this._pageReady = true;
- if(this._flashReady && this._pageReady){
- this._loaded();
- }
- });
- },
-
- // Set a new value for the flush delay timer.
- // Possible values:
- // 0 : Perform the flush synchronously after each "put" request
- // > 0 : Wait until 'newDelay' ms have passed without any "put" request to flush
- // -1 : Do not automatically flush
- setFlushDelay: function(newDelay){
- if(newDelay === null || typeof newDelay === "undefined" || isNaN(newDelay)){
- throw new Error("Invalid argunment: " + newDelay);
- }
-
- dojox.flash.comm.setFlushDelay(String(newDelay));
- },
-
- getFlushDelay: function(){
- return Number(dojox.flash.comm.getFlushDelay());
- },
-
- flush: function(namespace){
- //FIXME: is this test necessary? Just use !namespace
- if(namespace == null || typeof namespace == "undefined"){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
- dojox.flash.comm.flush(namespace);
- },
-
- isAvailable: function(){
- return (this._available = !dojo.config["disableFlashStorage"]);
- },
-
- put: function(key, value, resultsHandler, namespace){
- if(!this.isValidKey(key)){
- throw new Error("Invalid key given: " + key);
- }
-
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- this._statusHandler = resultsHandler;
-
- // serialize the value;
- // handle strings differently so they have better performance
- if(dojo.isString(value)){
- value = "string:" + value;
- }else{
- value = dojo.toJson(value);
- }
-
- dojox.flash.comm.put(key, value, namespace);
- },
-
- putMultiple: function(keys, values, resultsHandler, namespace){
- if(!this.isValidKeyArray(keys) || ! values instanceof Array
- || keys.length != values.length){
- throw new Error("Invalid arguments: keys = [" + keys + "], values = [" + values + "]");
- }
-
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- this._statusHandler = resultsHandler;
-
- // Convert the arguments on strings we can pass along to Flash
- var metaKey = keys.join(",");
- var lengths = [];
- for(var i=0;i<values.length;i++){
- if(dojo.isString(values[i])){
- values[i] = "string:" + values[i];
- }else{
- values[i] = dojo.toJson(values[i]);
- }
- lengths[i] = values[i].length;
- }
- var metaValue = values.join("");
- var metaLengths = lengths.join(",");
-
- dojox.flash.comm.putMultiple(metaKey, metaValue, metaLengths, this.namespace);
- },
-
- get: function(key, namespace){
- if(!this.isValidKey(key)){
- throw new Error("Invalid key given: " + key);
- }
-
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var results = dojox.flash.comm.get(key, namespace);
-
- if(results == ""){
- return null;
- }
-
- return this._destringify(results);
- },
-
- getMultiple: function(/*array*/ keys, /*string?*/ namespace){ /*Object*/
- if(!this.isValidKeyArray(keys)){
- throw new ("Invalid key array given: " + keys);
- }
-
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var metaKey = keys.join(",");
- var metaResults = dojox.flash.comm.getMultiple(metaKey, this.namespace);
- var results = eval("(" + metaResults + ")");
-
- // destringify each entry back into a real JS object
- //FIXME: use dojo.map
- for(var i = 0; i < results.length; i++){
- results[i] = (results[i] == "") ? null : this._destringify(results[i]);
- }
-
- return results;
- },
-
- _destringify: function(results){
- // destringify the content back into a
- // real JavaScript object;
- // handle strings differently so they have better performance
- if(dojo.isString(results) && (/^string:/.test(results))){
- results = results.substring("string:".length);
- }else{
- results = dojo.fromJson(results);
- }
-
- return results;
- },
-
- getKeys: function(namespace){
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var results = dojox.flash.comm.getKeys(namespace);
-
- // Flash incorrectly returns an empty string as "null"
- if(results == null || results == "null"){
- results = "";
- }
-
- results = results.split(",");
- results.sort();
-
- return results;
- },
-
- getNamespaces: function(){
- var results = dojox.flash.comm.getNamespaces();
-
- // Flash incorrectly returns an empty string as "null"
- if(results == null || results == "null"){
- results = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- results = results.split(",");
- results.sort();
-
- return results;
- },
-
- clear: function(namespace){
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- dojox.flash.comm.clear(namespace);
- },
-
- remove: function(key, namespace){
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- dojox.flash.comm.remove(key, namespace);
- },
-
- removeMultiple: function(/*array*/ keys, /*string?*/ namespace){ /*Object*/
- if(!this.isValidKeyArray(keys)){
- dojo.raise("Invalid key array given: " + keys);
- }
- if(!namespace){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(!this.isValidKey(namespace)){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var metaKey = keys.join(",");
- dojox.flash.comm.removeMultiple(metaKey, this.namespace);
- },
-
- isPermanent: function(){
- return true;
- },
-
- getMaximumSize: function(){
- return dojox.storage.SIZE_NO_LIMIT;
- },
-
- hasSettingsUI: function(){
- return true;
- },
-
- showSettingsUI: function(){
- dojox.flash.comm.showSettings();
- dojox.flash.obj.setVisible(true);
- dojox.flash.obj.center();
- },
-
- hideSettingsUI: function(){
- // hide the dialog
- dojox.flash.obj.setVisible(false);
-
- // call anyone who wants to know the dialog is
- // now hidden
- if(dojo.isFunction(dojox.storage.onHideSettingsUI)){
- dojox.storage.onHideSettingsUI.call(null);
- }
- },
-
- getResourceList: function(){ /* Array[] */
- // Dojo Offline no longer uses the FlashStorageProvider for offline
- // storage; Gears is now required
- return [];
- },
-
- /** Called when Flash and the page are finished loading. */
- _loaded: function(){
- // get available namespaces
- this._allNamespaces = this.getNamespaces();
-
- this.initialized = true;
-
- // indicate that this storage provider is now loaded
- dojox.storage.manager.loaded();
- },
-
- // Called if the storage system needs to tell us about the status
- // of a put() request.
- _onStatus: function(statusResult, key, namespace){
- //console.debug("onStatus, statusResult="+statusResult+", key="+key);
- var ds = dojox.storage;
- var dfo = dojox.flash.obj;
-
- if(statusResult == ds.PENDING){
- dfo.center();
- dfo.setVisible(true);
- }else{
- dfo.setVisible(false);
- }
-
- if(ds._statusHandler){
- ds._statusHandler.call(null, statusResult, key, namespace);
- }
- }
- }
-);
-
-dojox.storage.manager.register("dojox.storage.FlashStorageProvider",
- new dojox.storage.FlashStorageProvider());
-
-}