Subversion Repositories Applications.papyrus

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1371 → Rev 1977

/tags/v2.0-narmer/api/js/dojo/src/storage/browser.js
New file
0,0 → 1,548
/*
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
*/
 
dojo.provide("dojo.storage.browser");
dojo.require("dojo.storage");
dojo.require("dojo.flash");
dojo.require("dojo.json");
dojo.require("dojo.uri.*");
dojo.storage.browser.FileStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage);
dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys";
dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj";
dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () {
if (djConfig["disableFileStorage"] == true) {
return;
}
this._loadKeyIndex();
this.initialized = true;
dojo.storage.manager.loaded();
}, isAvailable:function () {
this._available = false;
var protocol = window.location.protocol;
if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) {
this._available = this._isAvailableXPCOM();
if (this._available == false) {
this._available = this._isAvailableActiveX();
}
}
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
try {
this._save(key, value);
resultsHandler.call(null, dojo.storage.SUCCESS, key);
}
catch (e) {
this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
}
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var results = this._load(key);
return results;
}, getKeys:function () {
return this._keyIndex;
}, hasKey:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._loadKeyIndex();
var exists = false;
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
exists = true;
}
}
return exists;
}, clear:function () {
this._loadKeyIndex();
var keyIndex = new Array();
for (var i = 0; i < this._keyIndex.length; i++) {
keyIndex[keyIndex.length] = new String(this._keyIndex[i]);
}
for (var i = 0; i < keyIndex.length; i++) {
this.remove(keyIndex[i]);
}
}, remove:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._loadKeyIndex();
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
this._keyIndex.splice(i, 1);
break;
}
}
this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
var fullPath = this._getPagePath() + key + ".txt";
if (this._isAvailableXPCOM()) {
this._removeXPCOM(fullPath);
} else {
if (this._isAvailableActiveX()) {
this._removeActiveX(fullPath);
}
}
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return false;
}, showSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, hideSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, getType:function () {
return "dojo.storage.browser.FileStorageProvider";
}, _save:function (key, value, updateKeyIndex) {
if (typeof updateKeyIndex == "undefined") {
updateKeyIndex = true;
}
if (dojo.lang.isString(value) == false) {
value = dojo.json.serialize(value);
value = "/* JavaScript */\n" + value + "\n\n";
}
var fullPath = this._getPagePath() + key + ".txt";
if (this._isAvailableXPCOM()) {
this._saveFileXPCOM(fullPath, value);
} else {
if (this._isAvailableActiveX()) {
this._saveFileActiveX(fullPath, value);
}
}
if (updateKeyIndex) {
this._updateKeyIndex(key);
}
}, _load:function (key) {
var fullPath = this._getPagePath() + key + ".txt";
var results = null;
if (this._isAvailableXPCOM()) {
results = this._loadFileXPCOM(fullPath);
} else {
if (this._isAvailableActiveX()) {
results = this._loadFileActiveX(fullPath);
} else {
if (this._isAvailableJava()) {
results = this._loadFileJava(fullPath);
}
}
}
if (results == null) {
return null;
}
if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) {
results = dojo.json.evalJson(results);
}
return results;
}, _updateKeyIndex:function (key) {
this._loadKeyIndex();
var alreadyAdded = false;
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
alreadyAdded = true;
break;
}
}
if (alreadyAdded == false) {
this._keyIndex[this._keyIndex.length] = key;
}
this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
}, _loadKeyIndex:function () {
var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME);
if (indexContents == null) {
this._keyIndex = new Array();
} else {
this._keyIndex = indexContents;
}
}, _saveFileXPCOM:function (filename, value) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
ouputStream.init(f, 32 | 4 | 8, 256 + 128, null);
ouputStream.write(value, value.length);
ouputStream.close();
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg);
}
}, _loadFileXPCOM:function (filename) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
if (f.exists() == false) {
return null;
}
var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inp.init(f, 1, 4, null);
var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
inputStream.init(inp);
var results = inputStream.read(inputStream.available());
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg);
}
return null;
}, _saveFileActiveX:function (filename, value) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var f = fileSystem.OpenTextFile(filename, 2, true);
f.Write(value);
f.Close();
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg);
}
}, _loadFileActiveX:function (filename) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
if (fileSystem.FileExists(filename) == false) {
return null;
}
var f = fileSystem.OpenTextFile(filename, 1);
var results = f.ReadAll();
f.Close();
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg);
}
}, _saveFileJava:function (filename, value) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
applet.save(filename, value);
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg);
}
}, _loadFileJava:function (filename) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
var results = applet.load(filename);
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg);
}
}, _isAvailableActiveX:function () {
try {
if (window.ActiveXObject) {
var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject");
return true;
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _isAvailableXPCOM:function () {
try {
if (window.Components) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
return true;
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _isAvailableJava:function () {
try {
if (dojo.render.html.safari == true || dojo.render.html.opera == true()) {
if (navigator.javaEnabled() == true) {
return true;
}
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _getPagePath:function () {
var path = window.location.pathname;
if (/\.html?$/i.test(path)) {
path = path.replace(/(?:\/|\\)?[^\.\/\\]*\.html?$/, "");
}
if (/^\/?[a-z]+\:/i.test(path)) {
path = path.replace(/^\/?/, "");
path = path.replace(/\//g, "\\");
} else {
if (/^[\/\\]{2,3}[^\/]/.test(path)) {
path = path.replace(/^[\/\\]{2,3}/, "");
path = path.replace(/\//g, "\\");
path = "\\\\" + path;
}
}
if (/\/$/.test(path) == false && /\\$/.test(path) == false) {
if (/\//.test(path)) {
path += "/";
} else {
path += "\\";
}
}
path = unescape(path);
return path;
}, _removeXPCOM:function (filename) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
if (f.exists() == false || f.isDirectory()) {
return;
}
if (f.isFile()) {
f.remove(false);
}
}
catch (e) {
dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
}
}, _removeActiveX:function (filename) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
fileSystem.DeleteFile(filename);
}
catch (e) {
dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
}
}, _removeJava:function (filename) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
applet.remove(filename);
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): " + msg);
}
}, _writeApplet:function () {
var archive = dojo.uri.moduleUri("dojo", "../DojoFileStorageProvider.jar").toString();
var tag = "<applet " + "id='" + dojo.storage.browser.FileStorageProvider._APPLET_ID + "' " + "style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' " + "code='DojoFileStorageProvider.class' " + "archive='" + archive + "' " + "width='1' " + "height='1' " + ">" + "</applet>";
document.writeln(tag);
}});
dojo.storage.browser.WhatWGStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.WhatWGStorageProvider, dojo.storage);
dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider, {namespace:"default", initialized:false, _domain:null, _available:null, _statusHandler:null, initialize:function () {
if (djConfig["disableWhatWGStorage"] == true) {
return;
}
this._domain = location.hostname;
this.initialized = true;
dojo.storage.manager.loaded();
}, isAvailable:function () {
try {
var myStorage = globalStorage[location.hostname];
}
catch (e) {
this._available = false;
return this._available;
}
this._available = true;
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
if (dojo.lang.isString(value)) {
value = "string:" + value;
} else {
value = dojo.json.serialize(value);
}
window.addEventListener("storage", function (evt) {
resultsHandler.call(null, dojo.storage.SUCCESS, key);
}, false);
try {
var myStorage = globalStorage[this._domain];
myStorage.setItem(key, value);
}
catch (e) {
this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
}
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var myStorage = globalStorage[this._domain];
var results = myStorage.getItem(key);
if (results == null) {
return null;
}
results = results.value;
if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
results = results.substring("string:".length);
} else {
results = dojo.json.evalJson(results);
}
return results;
}, getKeys:function () {
var myStorage = globalStorage[this._domain];
var keysArray = new Array();
for (i = 0; i < myStorage.length; i++) {
keysArray[i] = myStorage.key(i);
}
return keysArray;
}, clear:function () {
var myStorage = globalStorage[this._domain];
var keys = new Array();
for (var i = 0; i < myStorage.length; i++) {
keys[keys.length] = myStorage.key(i);
}
for (var i = 0; i < keys.length; i++) {
myStorage.removeItem(keys[i]);
}
}, remove:function (key) {
var myStorage = globalStorage[this._domain];
myStorage.removeItem(key);
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return false;
}, showSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, hideSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, getType:function () {
return "dojo.storage.browser.WhatWGProvider";
}});
dojo.storage.browser.FlashStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.FlashStorageProvider, dojo.storage);
dojo.lang.extend(dojo.storage.browser.FlashStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, initialize:function () {
if (djConfig["disableFlashStorage"] == true) {
return;
}
var loadedListener = function () {
dojo.storage._flashLoaded();
};
dojo.flash.addLoadedListener(loadedListener);
var swfloc6 = dojo.uri.moduleUri("dojo", "../Storage_version6.swf").toString();
var swfloc8 = dojo.uri.moduleUri("dojo", "../Storage_version8.swf").toString();
dojo.flash.setSwf({flash6:swfloc6, flash8:swfloc8, visible:false});
}, isAvailable:function () {
if (djConfig["disableFlashStorage"] == true) {
this._available = false;
} else {
this._available = true;
}
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
if (dojo.lang.isString(value)) {
value = "string:" + value;
} else {
value = dojo.json.serialize(value);
}
dojo.flash.comm.put(key, value, this.namespace);
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var results = dojo.flash.comm.get(key, this.namespace);
if (results == "") {
return null;
}
if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
results = results.substring("string:".length);
} else {
results = dojo.json.evalJson(results);
}
return results;
}, getKeys:function () {
var results = dojo.flash.comm.getKeys(this.namespace);
if (results == "") {
return [];
}
return results.split(",");
}, clear:function () {
dojo.flash.comm.clear(this.namespace);
}, remove:function (key) {
dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove");
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return true;
}, showSettingsUI:function () {
dojo.flash.comm.showSettings();
dojo.flash.obj.setVisible(true);
dojo.flash.obj.center();
}, hideSettingsUI:function () {
dojo.flash.obj.setVisible(false);
if (dojo.storage.onHideSettingsUI != null && !dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)) {
dojo.storage.onHideSettingsUI.call(null);
}
}, getType:function () {
return "dojo.storage.browser.FlashStorageProvider";
}, _flashLoaded:function () {
this._initialized = true;
dojo.storage.manager.loaded();
}, _onStatus:function (statusResult, key) {
var ds = dojo.storage;
var dfo = dojo.flash.obj;
if (statusResult == ds.PENDING) {
dfo.center();
dfo.setVisible(true);
} else {
dfo.setVisible(false);
}
if ((!dj_undef("_statusHandler", ds)) && (ds._statusHandler != null)) {
ds._statusHandler.call(null, statusResult, key);
}
}});
dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider", new dojo.storage.browser.FileStorageProvider());
dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider", new dojo.storage.browser.WhatWGStorageProvider());
dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider", new dojo.storage.browser.FlashStorageProvider());
dojo.storage.manager.initialize();
 
/tags/v2.0-narmer/api/js/dojo/src/storage/java/DojoFileStorageProvider.java
New file
0,0 → 1,54
/**
This is a simple class that can load, save, and remove
files from the native file system. It is needed by Safari and Opera
for the dojo.storage.browser.FileStorageProvider, since both of
these platforms have no native way to talk to the file system
for file:// URLs. Safari supports LiveConnect, but only for talking
to an applet, not for generic scripting by JavaScript, so we must
have an applet.
 
@author Brad Neuberg, bkn3@columbia.edu
*/
 
import java.io.*;
import java.util.*;
 
public class DojoFileStorageProvider{
public String load(String filePath)
throws IOException, FileNotFoundException{
StringBuffer results = new StringBuffer();
BufferedReader reader = new BufferedReader(
new FileReader(filePath));
String line = null;
while((line = reader.readLine()) != null){
results.append(line);
}
 
reader.close();
 
return results.toString();
}
 
public void save(String filePath, String content)
throws IOException, FileNotFoundException{
PrintWriter writer = new PrintWriter(
new BufferedWriter(
new FileWriter(filePath, false)));
writer.print(content);
 
writer.close();
}
 
public void remove(String filePath)
throws IOException, FileNotFoundException{
File f = new File(filePath);
 
if(f.exists() == false || f.isDirectory()){
return;
}
 
if(f.exists() && f.isFile()){
f.delete();
}
}
}
/tags/v2.0-narmer/api/js/dojo/src/storage/java/DojoFileStorageProvider.class
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v2.0-narmer/api/js/dojo/src/storage/java/DojoFileStorageProvider.class
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v2.0-narmer/api/js/dojo/src/storage/__package__.js
New file
0,0 → 1,13
/*
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
*/
 
dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]});
dojo.provide("dojo.storage.*");
 
/tags/v2.0-narmer/api/js/dojo/src/storage/storage_dialog.fla
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v2.0-narmer/api/js/dojo/src/storage/storage_dialog.fla
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v2.0-narmer/api/js/dojo/src/storage/Storage.as
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v2.0-narmer/api/js/dojo/src/storage/Storage.as
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property