Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.widget.html.stabile");
13
dojo.provide("dojo.widget.html.stabile");
12
dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2};
14
dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2};
13
dojo.widget.html.stabile.getState = function (id) {
15
dojo.widget.html.stabile.getState = function (id) {
14
	dojo.widget.html.stabile.setup();
16
	dojo.widget.html.stabile.setup();
15
	return dojo.widget.html.stabile.widgetState[id];
17
	return dojo.widget.html.stabile.widgetState[id];
16
};
18
};
17
dojo.widget.html.stabile.setState = function (id, state, isCommit) {
19
dojo.widget.html.stabile.setState = function (id, state, isCommit) {
18
	dojo.widget.html.stabile.setup();
20
	dojo.widget.html.stabile.setup();
19
	dojo.widget.html.stabile.widgetState[id] = state;
21
	dojo.widget.html.stabile.widgetState[id] = state;
20
	if (isCommit) {
22
	if (isCommit) {
21
		dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState);
23
		dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState);
22
	}
24
	}
23
};
25
};
24
dojo.widget.html.stabile.setup = function () {
26
dojo.widget.html.stabile.setup = function () {
25
	if (!dojo.widget.html.stabile.widgetState) {
27
	if (!dojo.widget.html.stabile.widgetState) {
26
		var text = dojo.widget.html.stabile._getStorage().value;
28
		var text = dojo.widget.html.stabile._getStorage().value;
27
		dojo.widget.html.stabile.widgetState = text ? dj_eval("(" + text + ")") : {};
29
		dojo.widget.html.stabile.widgetState = text ? dj_eval("(" + text + ")") : {};
28
	}
30
	}
29
};
31
};
30
dojo.widget.html.stabile.commit = function (state) {
32
dojo.widget.html.stabile.commit = function (state) {
31
	dojo.widget.html.stabile._getStorage().value = dojo.widget.html.stabile.description(state);
33
	dojo.widget.html.stabile._getStorage().value = dojo.widget.html.stabile.description(state);
32
};
34
};
33
dojo.widget.html.stabile.description = function (v, showAll) {
35
dojo.widget.html.stabile.description = function (v, showAll) {
34
	var depth = dojo.widget.html.stabile._depth;
36
	var depth = dojo.widget.html.stabile._depth;
35
	var describeThis = function () {
37
	var describeThis = function () {
36
		return this.description(this, true);
38
		return this.description(this, true);
37
	};
39
	};
38
	try {
40
	try {
39
		if (v === void (0)) {
41
		if (v === void (0)) {
40
			return "undefined";
42
			return "undefined";
41
		}
43
		}
42
		if (v === null) {
44
		if (v === null) {
43
			return "null";
45
			return "null";
44
		}
46
		}
45
		if (typeof (v) == "boolean" || typeof (v) == "number" || v instanceof Boolean || v instanceof Number) {
47
		if (typeof (v) == "boolean" || typeof (v) == "number" || v instanceof Boolean || v instanceof Number) {
46
			return v.toString();
48
			return v.toString();
47
		}
49
		}
48
		if (typeof (v) == "string" || v instanceof String) {
50
		if (typeof (v) == "string" || v instanceof String) {
49
			var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1");
51
			var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1");
50
			v1 = v1.replace(/\n/g, "\\n");
52
			v1 = v1.replace(/\n/g, "\\n");
51
			v1 = v1.replace(/\r/g, "\\r");
53
			v1 = v1.replace(/\r/g, "\\r");
52
			return "'" + v1 + "'";
54
			return "'" + v1 + "'";
53
		}
55
		}
54
		if (v instanceof Date) {
56
		if (v instanceof Date) {
55
			return "new Date(" + d.getFullYear + "," + d.getMonth() + "," + d.getDate() + ")";
57
			return "new Date(" + d.getFullYear + "," + d.getMonth() + "," + d.getDate() + ")";
56
		}
58
		}
57
		var d;
59
		var d;
58
		if (v instanceof Array || v.push) {
60
		if (v instanceof Array || v.push) {
59
			if (depth >= dojo.widget.html.stabile.depthLimit) {
61
			if (depth >= dojo.widget.html.stabile.depthLimit) {
60
				return "[ ... ]";
62
				return "[ ... ]";
61
			}
63
			}
62
			d = "[";
64
			d = "[";
63
			var first = true;
65
			var first = true;
64
			dojo.widget.html.stabile._depth++;
66
			dojo.widget.html.stabile._depth++;
65
			for (var i = 0; i < v.length; i++) {
67
			for (var i = 0; i < v.length; i++) {
66
				if (first) {
68
				if (first) {
67
					first = false;
69
					first = false;
68
				} else {
70
				} else {
69
					d += ",";
71
					d += ",";
70
				}
72
				}
71
				d += arguments.callee(v[i], showAll);
73
				d += arguments.callee(v[i], showAll);
72
			}
74
			}
73
			return d + "]";
75
			return d + "]";
74
		}
76
		}
75
		if (v.constructor == Object || v.toString == describeThis) {
77
		if (v.constructor == Object || v.toString == describeThis) {
76
			if (depth >= dojo.widget.html.stabile.depthLimit) {
78
			if (depth >= dojo.widget.html.stabile.depthLimit) {
77
				return "{ ... }";
79
				return "{ ... }";
78
			}
80
			}
79
			if (typeof (v.hasOwnProperty) != "function" && v.prototype) {
81
			if (typeof (v.hasOwnProperty) != "function" && v.prototype) {
80
				throw new Error("description: " + v + " not supported by script engine");
82
				throw new Error("description: " + v + " not supported by script engine");
81
			}
83
			}
82
			var first = true;
84
			var first = true;
83
			d = "{";
85
			d = "{";
84
			dojo.widget.html.stabile._depth++;
86
			dojo.widget.html.stabile._depth++;
85
			for (var key in v) {
87
			for (var key in v) {
86
				if (v[key] == void (0) || typeof (v[key]) == "function") {
88
				if (v[key] == void (0) || typeof (v[key]) == "function") {
87
					continue;
89
					continue;
88
				}
90
				}
89
				if (first) {
91
				if (first) {
90
					first = false;
92
					first = false;
91
				} else {
93
				} else {
92
					d += ", ";
94
					d += ", ";
93
				}
95
				}
94
				var kd = key;
96
				var kd = key;
95
				if (!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {
97
				if (!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {
96
					kd = arguments.callee(key, showAll);
98
					kd = arguments.callee(key, showAll);
97
				}
99
				}
98
				d += kd + ": " + arguments.callee(v[key], showAll);
100
				d += kd + ": " + arguments.callee(v[key], showAll);
99
			}
101
			}
100
			return d + "}";
102
			return d + "}";
101
		}
103
		}
102
		if (showAll) {
104
		if (showAll) {
103
			if (dojo.widget.html.stabile._recur) {
105
			if (dojo.widget.html.stabile._recur) {
104
				var objectToString = Object.prototype.toString;
106
				var objectToString = Object.prototype.toString;
105
				return objectToString.apply(v, []);
107
				return objectToString.apply(v, []);
106
			} else {
108
			} else {
107
				dojo.widget.html.stabile._recur = true;
109
				dojo.widget.html.stabile._recur = true;
108
				return v.toString();
110
				return v.toString();
109
			}
111
			}
110
		} else {
112
		} else {
111
			throw new Error("Unknown type: " + v);
113
			throw new Error("Unknown type: " + v);
112
			return "'unknown'";
114
			return "'unknown'";
113
		}
115
		}
114
	}
116
	}
115
	finally {
117
	finally {
116
		dojo.widget.html.stabile._depth = depth;
118
		dojo.widget.html.stabile._depth = depth;
117
	}
119
	}
118
};
120
};
119
dojo.widget.html.stabile._getStorage = function () {
121
dojo.widget.html.stabile._getStorage = function () {
120
	if (dojo.widget.html.stabile.dataField) {
122
	if (dojo.widget.html.stabile.dataField) {
121
		return dojo.widget.html.stabile.dataField;
123
		return dojo.widget.html.stabile.dataField;
122
	}
124
	}
123
	var form = document.forms._dojo_form;
125
	var form = document.forms._dojo_form;
124
	return dojo.widget.html.stabile.dataField = form ? form.stabile : {value:""};
126
	return dojo.widget.html.stabile.dataField = form ? form.stabile : {value:""};
125
};
127
};
126
 
128