265 lines
No EOL
49 KiB
HTML
265 lines
No EOL
49 KiB
HTML
<html><head><title>State.js</title><link rel="stylesheet" type="text/css" href="../style.css" media="screen"/></head><body><div class="hl-main"><pre><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">namespace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">ext.state</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">;
|
|
</span><span class="hl-comment">/**
|
|
* @class YAHOO.ext.state.Provider
|
|
* Abstract base class for provider implementations. This class provides methods
|
|
* for encoding and decoding <b>typed</b> variables including dates and defines the
|
|
* Provider interface.
|
|
*/
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">Provider</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-comment">/**
|
|
* @event statechange
|
|
* Fires when a state change occurs.
|
|
* @param {Provider} this
|
|
* @param {String} key The state key which was changed
|
|
* @param {String} value The encoded value for the state
|
|
*/
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">events</span><span class="hl-code"> = </span><span class="hl-brackets">{
|
|
</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-brackets">)
|
|
}</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-default">;
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extendX</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Observable</span><span class="hl-code">, </span><span class="hl-brackets">{
|
|
</span><span class="hl-comment">/**
|
|
* Get the current value for a key.
|
|
* @param {String} name
|
|
* @param {Mixed} defaultValue
|
|
* @return {Mixed}
|
|
*/
|
|
</span><span class="hl-identifier">get</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">return typeof this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> ?
|
|
</span><span class="hl-identifier">defaultValue</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Clear a value from the state.
|
|
*/
|
|
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">delete this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Set the value for a key.
|
|
* @param {String} name
|
|
* @param {Mixed} value
|
|
*/
|
|
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">value</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Decodes a string previously encoded with {@link #encodeValue}.
|
|
* @param {String} value
|
|
* @return {Mixed} The value
|
|
*/
|
|
</span><span class="hl-identifier">decodeValue</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">cookie</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">re</span><span class="hl-code"> = </span><span class="hl-quotes">/</span><span class="hl-string">^(a|n|d|b|s|o)\:(.*)$</span><span class="hl-quotes">/</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">matches</span><span class="hl-code"> = </span><span class="hl-identifier">re</span><span class="hl-code">.</span><span class="hl-identifier">exec</span><span class="hl-brackets">(</span><span class="hl-identifier">unescape</span><span class="hl-brackets">(</span><span class="hl-identifier">cookie</span><span class="hl-brackets">))</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">matches</span><span class="hl-code"> || !</span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]) </span><span class="hl-reserved">return</span><span class="hl-code">; </span><span class="hl-comment">// non state cookie
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">v</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">n</span><span class="hl-quotes">'</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">parseFloat</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">d</span><span class="hl-quotes">'</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">return new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-builtin">Date</span><span class="hl-code">.</span><span class="hl-identifier">parse</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">))</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">b</span><span class="hl-quotes">'</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">1</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">a</span><span class="hl-quotes">'</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">all</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">values</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> < </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">all</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">values</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]))
|
|
}
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">all</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">o</span><span class="hl-quotes">'</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">all</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">values</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> < </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">kv</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">=</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-identifier">all</span><span class="hl-brackets">[</span><span class="hl-identifier">kv</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">kv</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">all</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">default</span><span class="hl-code">:
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">v</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Encode a value including type information.
|
|
* @param {Mixed} value
|
|
* @return {String}
|
|
*/
|
|
</span><span class="hl-identifier">encodeValue</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">enc</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">number</span><span class="hl-quotes">'</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">n:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">boolean</span><span class="hl-quotes">'</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">b:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-code"> ? </span><span class="hl-quotes">'</span><span class="hl-string">1</span><span class="hl-quotes">'</span><span class="hl-code"> : </span><span class="hl-quotes">'</span><span class="hl-string">0</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">v </span><span class="hl-reserved">instanceof </span><span class="hl-builtin">Date</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">d:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">toGMTString</span><span class="hl-brackets">()</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">v </span><span class="hl-reserved">instanceof </span><span class="hl-builtin">Array</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">flat</span><span class="hl-code"> = </span><span class="hl-quotes">''</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> < </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">])</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code"> != </span><span class="hl-identifier">len</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">) </span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">a:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">flat</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">object</span><span class="hl-quotes">'</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">flat</span><span class="hl-code"> = </span><span class="hl-quotes">''</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">key </span><span class="hl-reserved">in </span><span class="hl-identifier">v</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">function</span><span class="hl-quotes">'</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-identifier">key</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">=</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">])</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
}
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">o:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">flat</span><span class="hl-code">.</span><span class="hl-identifier">substring</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">flat</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-reserved">else</span><span class="hl-brackets">{
|
|
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">s:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">escape</span><span class="hl-brackets">(</span><span class="hl-identifier">enc</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
})</span><span class="hl-default">;
|
|
|
|
</span><span class="hl-comment">/**
|
|
* @class YAHOO.ext.state.Manager
|
|
* This is the global state manager. By default all components that are "state aware" check this class
|
|
* for state information if you don't pass them a custom state provider. In order for this class
|
|
* to be useful, it must be initialized with a provider when your application initializes.
|
|
<pre><code>
|
|
// in your initialization function
|
|
init : function(){
|
|
YAHOO.ext.state.Manager.setProvider(new YAHOO.ext.state.CookieProvider());
|
|
...
|
|
// supposed you have a {@link YAHOO.ext.BorderLayout}
|
|
var layout = new YAHOO.ext.BorderLayout(...);
|
|
layout.restoreState();
|
|
// or a {YAHOO.ext.BasicDialog}
|
|
var dialog = new YAHOO.ext.BasicDialog(...);
|
|
dialog.restoreState();
|
|
</code></pre>
|
|
* @singleton
|
|
*/
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">Manager</span><span class="hl-default"> = </span><span class="hl-reserved">new function</span><span class="hl-brackets">(){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">provider</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-brackets">()</span><span class="hl-code">;
|
|
|
|
</span><span class="hl-reserved">return </span><span class="hl-brackets">{
|
|
</span><span class="hl-comment">/**
|
|
* Configures the default provider for your application.
|
|
* @param {Provider} stateProvider
|
|
*/
|
|
</span><span class="hl-identifier">setProvider</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">stateProvider</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">provider</span><span class="hl-code"> = </span><span class="hl-identifier">stateProvider</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Get the current value for a key.
|
|
* @param {String} name
|
|
* @param {Mixed} defaultValue
|
|
* @return {Mixed}
|
|
*/
|
|
</span><span class="hl-identifier">get</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">get</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Set the value for a key.
|
|
* @param {String} name
|
|
* @param {Mixed} value
|
|
*/
|
|
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">set</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Clear a value from the state.
|
|
*/
|
|
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-comment">/**
|
|
* Gets the currently configured provider.
|
|
* @return {Provider}
|
|
*/
|
|
</span><span class="hl-identifier">getProvider</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">provider</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
}</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}()</span><span class="hl-default">;
|
|
|
|
</span><span class="hl-comment">/**
|
|
* @class YAHOO.ext.state.CookieProvider
|
|
* @extends YAHOO.ext.state.Provider
|
|
* The default Provider implementation. The example below includes all valid configuration options and their
|
|
* default values.
|
|
<pre><code>
|
|
var cp = new YAHOO.ext.state.CookieProvider({
|
|
path: '/',
|
|
expires: new Date(new Date().getTime()+(1000*60*60*24*7)); //7 days
|
|
domain: null,
|
|
secure: false
|
|
})
|
|
YAHOO.ext.state.Manager.setProvider(cp);
|
|
</code></pre>
|
|
* @constructor
|
|
* Create a new CookieProvider
|
|
* @param {Object} config The configuration object
|
|
*/
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">config</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">/</span><span class="hl-quotes">'</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">()</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-number">1000</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">24</span><span class="hl-code">*</span><span class="hl-number">7</span><span class="hl-brackets">))</span><span class="hl-code">; </span><span class="hl-comment">//7 days
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Config</span><span class="hl-code">.</span><span class="hl-identifier">apply</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">readCookies</span><span class="hl-brackets">()</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-default">;
|
|
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extendX</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">, </span><span class="hl-brackets">{
|
|
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> || </span><span class="hl-identifier">value</span><span class="hl-code"> === </span><span class="hl-reserved">null</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">return</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setCookie</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">set</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearCookie</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-identifier">readCookies</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">cookies</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">c</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">;</span><span class="hl-quotes">'</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">re</span><span class="hl-code"> = </span><span class="hl-quotes">/</span><span class="hl-string">\s?(.*?)=(.*?);</span><span class="hl-quotes">/g</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">matches</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">matches</span><span class="hl-code"> = </span><span class="hl-identifier">re</span><span class="hl-code">.</span><span class="hl-identifier">exec</span><span class="hl-brackets">(</span><span class="hl-identifier">c</span><span class="hl-brackets">))</span><span class="hl-code"> != </span><span class="hl-reserved">null</span><span class="hl-brackets">){
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">name</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">var </span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
|
|
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code"> && </span><span class="hl-identifier">name</span><span class="hl-code">.</span><span class="hl-identifier">substring</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">3</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">ys-</span><span class="hl-quotes">'</span><span class="hl-brackets">){
|
|
</span><span class="hl-identifier">cookies</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-code">.</span><span class="hl-identifier">substr</span><span class="hl-brackets">(</span><span class="hl-number">3</span><span class="hl-brackets">)]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
}
|
|
</span><span class="hl-reserved">return </span><span class="hl-identifier">cookies</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-identifier">setCookie</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
|
|
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">ys-</span><span class="hl-quotes">"</span><span class="hl-code">+ </span><span class="hl-identifier">name</span><span class="hl-code"> + </span><span class="hl-quotes">"</span><span class="hl-string">=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">""</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">; expires=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code">.</span><span class="hl-identifier">toGMTString</span><span class="hl-brackets">()))</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">""</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">; path=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-brackets">))</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">""</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">; domain=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-brackets">))</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> == </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">"</span><span class="hl-string">; secure</span><span class="hl-quotes">"</span><span class="hl-code"> : </span><span class="hl-quotes">""</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}</span><span class="hl-code">,
|
|
|
|
</span><span class="hl-identifier">clearCookie</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
|
|
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">ys-</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-identifier">name</span><span class="hl-code"> + </span><span class="hl-quotes">"</span><span class="hl-string">=null; expires=Thu, 01-Jan-70 00:00:01 GMT</span><span class="hl-quotes">"</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">""</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">; path=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-brackets">))</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">""</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">; domain=</span><span class="hl-quotes">"</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-brackets">))</span><span class="hl-code"> +
|
|
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> == </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">"</span><span class="hl-string">; secure</span><span class="hl-quotes">"</span><span class="hl-code"> : </span><span class="hl-quotes">""</span><span class="hl-brackets">)</span><span class="hl-code">;
|
|
</span><span class="hl-brackets">}
|
|
})</span><span class="hl-default">;
|
|
</span></pre></div><hr>Copyright © 2006 Jack Slocum. All rights reserved.</body></html> |