webgui/www/extras/yui-ext/docs/overview-summary-State.js.html
JT Smith 4f68a0933c added YUI and YUI-ext
fixed the resizable text area with IE problem
fixed the ad space with IE problem
merged the 7.2.0 and 7.1.4 change logs
2006-11-07 23:15:57 +00:00

218 lines
10 KiB
HTML

<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="State.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();" style="margin:15px;">
<center>
<h2>State.js</h2>
</center>
<h4>Summary</h4>
<p>
</p>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview">YAHOO.namespace(<span class="literal">'ext.state'</span>);
YAHOO.ext.state.Provider = <span class="reserved">function</span>(){
YAHOO.ext.state.Provider.superclass.constructor.call(<span class="reserved">this</span>);
<span class="reserved">this</span>.events = {
<span class="literal">'statechange'</span>: new YAHOO.util.CustomEvent(<span class="literal">'statechange'</span>)
};
<span class="reserved">this</span>.state = {};
};
YAHOO.extendX(YAHOO.ext.state.Provider, YAHOO.ext.util.Observable, {
get : <span class="reserved">function</span>(name){
<span class="reserved">return</span> <span class="reserved">this</span>.state[name];
},
clear : <span class="reserved">function</span>(name){
delete <span class="reserved">this</span>.state[name];
<span class="reserved">this</span>.fireEvent(<span class="literal">'statechange'</span>, <span class="reserved">this</span>, name, null);
},
set : <span class="reserved">function</span>(name, value){
<span class="reserved">this</span>.state[name] = value;
<span class="reserved">this</span>.fireEvent(<span class="literal">'statechange'</span>, <span class="reserved">this</span>, name, value);
}
});
YAHOO.ext.state.Manager = new <span class="reserved">function</span>(){
var provider = new YAHOO.ext.state.Provider();
<span class="reserved">return</span> {
setProvider : <span class="reserved">function</span>(stateProvider){
provider = stateProvider;
},
get : <span class="reserved">function</span>(key){
<span class="reserved">return</span> provider.get(key);
},
set : <span class="reserved">function</span>(key, value){
provider.set(key, value);
},
clear : <span class="reserved">function</span>(key){
provider.clear(key);
},
getProvider : <span class="reserved">function</span>(){
<span class="reserved">return</span> provider;
}
};
}();
YAHOO.ext.state.CookieProvider = <span class="reserved">function</span>(config){
YAHOO.ext.state.CookieProvider.superclass.constructor.call(<span class="reserved">this</span>);
<span class="reserved">this</span>.path = <span class="literal">'/'</span>;
<span class="reserved">this</span>.expires = new Date(new Date().getTime()+(1000*60*60*24*7)); <span class="comment">//7 days</span>
<span class="reserved">this</span>.domain = null;
<span class="reserved">this</span>.secure = false;
YAHOO.ext.util.Config.apply(<span class="reserved">this</span>, config);
<span class="reserved">this</span>.state = <span class="reserved">this</span>.readCookies();
};
YAHOO.extendX(YAHOO.ext.state.CookieProvider, YAHOO.ext.state.Provider, {
set : <span class="reserved">function</span>(name, value){
<span class="reserved">if</span>(typeof value == <span class="literal">'undefined'</span> || value === null){
<span class="reserved">this</span>.clear(name);
<span class="reserved">return</span>;
}
<span class="reserved">this</span>.setCookie(name, value);
YAHOO.ext.state.CookieProvider.superclass.set.call(<span class="reserved">this</span>, name, value);
},
clear : <span class="reserved">function</span>(name){
<span class="reserved">this</span>.clearCookie(name);
YAHOO.ext.state.CookieProvider.superclass.clear.call(<span class="reserved">this</span>, name);
},
readCookies : <span class="reserved">function</span>(){
var cookies = {};
var c = document.cookie + <span class="literal">';'</span>;
var re = /\s?(.*?)=(.*?);/g;
var matches;
<span class="reserved">while</span>((matches = re.exec(c)) != null){
var name = matches[1];
var value = matches[2];
<span class="reserved">if</span>(name &amp;&amp; name.substring(0,3) == <span class="literal">'ys-'</span>){
cookies[name.substr(3)] = <span class="reserved">this</span>.decodeValue(value);
}
}
<span class="reserved">return</span> cookies;
},
decodeValue : <span class="reserved">function</span>(cookie){
var re = /^(a|n|d|b|s|o)\:(.*)$/;
var matches = re.exec(unescape(cookie));
<span class="reserved">if</span>(!matches || !matches[1]) <span class="reserved">return</span>; <span class="comment">// non state cookie</span>
var type = matches[1];
var v = matches[2];
switch(type){
case <span class="literal">'n'</span>:
<span class="reserved">return</span> parseFloat(v);
case <span class="literal">'d'</span>:
<span class="reserved">return</span> new Date(Date.parse(v));
case <span class="literal">'b'</span>:
<span class="reserved">return</span> (v == <span class="literal">'1'</span>);
case <span class="literal">'a'</span>:
var all = [];
var values = v.split(<span class="literal">'^'</span>);
<span class="reserved">for</span>(var i = 0, len = values.length; i &lt; len; i++){
all.push(<span class="reserved">this</span>.decodeValue(values[i]))
}
<span class="reserved">return</span> all;
case <span class="literal">'o'</span>:
var all = {};
var values = v.split(<span class="literal">'^'</span>);
<span class="reserved">for</span>(var i = 0, len = values.length; i &lt; len; i++){
var kv = values[i].split(<span class="literal">'='</span>);
all[kv[0]] = <span class="reserved">this</span>.decodeValue(kv[1]);
}
<span class="reserved">return</span> all;
default:
<span class="reserved">return</span> v;
}
},
encodeValue : <span class="reserved">function</span>(v){
var enc;
<span class="reserved">if</span>(typeof v == <span class="literal">'number'</span>){
enc = <span class="literal">'n:'</span> + v;
}<span class="reserved">else</span> <span class="reserved">if</span>(typeof v == <span class="literal">'boolean'</span>){
enc = <span class="literal">'b:'</span> + (v ? <span class="literal">'1'</span> : <span class="literal">'0'</span>);
}<span class="reserved">else</span> <span class="reserved">if</span>(v instanceof Date){
enc = <span class="literal">'d:'</span> + v.toGMTString();
}<span class="reserved">else</span> <span class="reserved">if</span>(v instanceof Array){
var flat = <span class="literal">''</span>;
<span class="reserved">for</span>(var i = 0, len = v.length; i &lt; len; i++){
flat += <span class="reserved">this</span>.encodeValue(v[i]);
<span class="reserved">if</span>(i != len-1) flat += <span class="literal">'^'</span>;
}
enc = <span class="literal">'a:'</span> + flat;
}<span class="reserved">else</span> <span class="reserved">if</span>(typeof v == <span class="literal">'object'</span>){
var flat = <span class="literal">''</span>;
<span class="reserved">for</span>(var key in v){
<span class="reserved">if</span>(typeof v[key] != <span class="literal">'function'</span>){
flat += key + <span class="literal">'='</span> + <span class="reserved">this</span>.encodeValue(v[key]) + <span class="literal">'^'</span>;
}
}
enc = <span class="literal">'o:'</span> + flat.substring(0, flat.length-1);
}<span class="reserved">else</span>{
enc = <span class="literal">'s:'</span> + v;
}
<span class="reserved">return</span> escape(enc);
},
setCookie : <span class="reserved">function</span>(name, value){
document.cookie = <span class="literal">"ys-"</span>+ name + <span class="literal">"="</span> + <span class="reserved">this</span>.encodeValue(value) +
((<span class="reserved">this</span>.expires == null) ? <span class="literal">""</span> : (<span class="literal">"; expires="</span> + <span class="reserved">this</span>.expires.toGMTString())) +
((<span class="reserved">this</span>.path == null) ? <span class="literal">""</span> : (<span class="literal">"; path="</span> + <span class="reserved">this</span>.path)) +
((<span class="reserved">this</span>.domain == null) ? <span class="literal">""</span> : (<span class="literal">"; domain="</span> + <span class="reserved">this</span>.domain)) +
((<span class="reserved">this</span>.secure == true) ? <span class="literal">"; secure"</span> : <span class="literal">""</span>);
},
clearCookie : <span class="reserved">function</span>(name){
document.cookie = <span class="literal">"ys-"</span> + name + <span class="literal">"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"</span> +
((<span class="reserved">this</span>.path == null) ? <span class="literal">""</span> : (<span class="literal">"; path="</span> + <span class="reserved">this</span>.path)) +
((<span class="reserved">this</span>.domain == null) ? <span class="literal">""</span> : (<span class="literal">"; domain="</span> + <span class="reserved">this</span>.domain)) +
((<span class="reserved">this</span>.secure == true) ? <span class="literal">"; secure"</span> : <span class="literal">""</span>);
}
});
</pre>
<hr>
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sat Oct 14 06:07:10 2006</div>
</body>
</html>