Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / CookieProvider.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-state-CookieProvider-method-constructor'><span id='Ext-state-CookieProvider'>/**
19 </span></span> * A Provider implementation which saves and retrieves state via cookies. The CookieProvider supports the usual cookie
20  * options, such as:
21  *
22  * - {@link #path}
23  * - {@link #expires}
24  * - {@link #domain}
25  * - {@link #secure}
26  *
27  * Example:
28  *
29  *     Ext.create('Ext.state.CookieProvider', {
30  *         path: &quot;/cgi-bin/&quot;,
31  *         expires: new Date(new Date().getTime()+(1000*60*60*24*30)), //30 days
32  *         domain: &quot;sencha.com&quot;
33  *     });
34  *
35  *     Ext.state.Manager.setProvider(cp);
36  *
37  * @constructor
38  * Creates a new CookieProvider.
39  * @param {Object} config (optional) Config object.
40  * @return {Object}
41  */
42 Ext.define('Ext.state.CookieProvider', {
43     extend: 'Ext.state.Provider',
44
45 <span id='Ext-state-CookieProvider-cfg-path'>    /**
46 </span>     * @cfg {String} path
47      * The path for which the cookie is active. Defaults to root '/' which makes it active for all pages in the site.
48      */
49
50 <span id='Ext-state-CookieProvider-cfg-expires'>    /**
51 </span>     * @cfg {Date} expires
52      * The cookie expiration date. Defaults to 7 days from now.
53      */
54
55 <span id='Ext-state-CookieProvider-cfg-domain'>    /**
56 </span>     * @cfg {String} domain
57      * The domain to save the cookie for. Note that you cannot specify a different domain than your page is on, but you can
58      * specify a sub-domain, or simply the domain itself like 'sencha.com' to include all sub-domains if you need to access
59      * cookies across different sub-domains. Defaults to null which uses the same domain the page is running on including
60      * the 'www' like 'www.sencha.com'.
61      */
62
63 <span id='Ext-state-CookieProvider-cfg-secure'>    /**
64 </span>     * @cfg {Boolean} [secure=false]
65      * True if the site is using SSL
66      */
67
68 <span id='Ext-state-CookieProvider-method-constructor'>    /**
69 </span>     * Creates a new CookieProvider.
70      * @param {Object} [config] Config object.
71      */
72     constructor : function(config){
73         var me = this;
74         me.path = &quot;/&quot;;
75         me.expires = new Date(new Date().getTime()+(1000*60*60*24*7)); //7 days
76         me.domain = null;
77         me.secure = false;
78         me.callParent(arguments);
79         me.state = me.readCookies();
80     },
81
82     // private
83     set : function(name, value){
84         var me = this;
85
86         if(typeof value == &quot;undefined&quot; || value === null){
87             me.clear(name);
88             return;
89         }
90         me.setCookie(name, value);
91         me.callParent(arguments);
92     },
93
94     // private
95     clear : function(name){
96         this.clearCookie(name);
97         this.callParent(arguments);
98     },
99
100     // private
101     readCookies : function(){
102         var cookies = {},
103             c = document.cookie + &quot;;&quot;,
104             re = /\s?(.*?)=(.*?);/g,
105             prefix = this.prefix,
106             len = prefix.length,
107             matches,
108             name,
109             value;
110
111         while((matches = re.exec(c)) != null){
112             name = matches[1];
113             value = matches[2];
114             if (name &amp;&amp; name.substring(0, len) == prefix){
115                 cookies[name.substr(len)] = this.decodeValue(value);
116             }
117         }
118         return cookies;
119     },
120
121     // private
122     setCookie : function(name, value){
123         var me = this;
124
125         document.cookie = me.prefix + name + &quot;=&quot; + me.encodeValue(value) +
126            ((me.expires == null) ? &quot;&quot; : (&quot;; expires=&quot; + me.expires.toGMTString())) +
127            ((me.path == null) ? &quot;&quot; : (&quot;; path=&quot; + me.path)) +
128            ((me.domain == null) ? &quot;&quot; : (&quot;; domain=&quot; + me.domain)) +
129            ((me.secure == true) ? &quot;; secure&quot; : &quot;&quot;);
130     },
131
132     // private
133     clearCookie : function(name){
134         var me = this;
135
136         document.cookie = me.prefix + name + &quot;=null; expires=Thu, 01-Jan-70 00:00:01 GMT&quot; +
137            ((me.path == null) ? &quot;&quot; : (&quot;; path=&quot; + me.path)) +
138            ((me.domain == null) ? &quot;&quot; : (&quot;; domain=&quot; + me.domain)) +
139            ((me.secure == true) ? &quot;; secure&quot; : &quot;&quot;);
140     }
141 });
142 </pre>
143 </body>
144 </html>