]> git.wh0rd.org Git - tt-rss.git/blob - lib/dojo/cookie.js.uncompressed.js
dojo: add some more controls to the layer
[tt-rss.git] / lib / dojo / cookie.js.uncompressed.js
1 define("dojo/cookie", ["./_base/kernel", "./regexp"], function(dojo, regexp){
2
3 // module:
4 //              dojo/cookie
5
6 /*=====
7 var __cookieProps = {
8         // expires: Date|String|Number?
9         //              If a number, the number of days from today at which the cookie
10         //              will expire. If a date, the date past which the cookie will expire.
11         //              If expires is in the past, the cookie will be deleted.
12         //              If expires is omitted or is 0, the cookie will expire when the browser closes.
13         // path: String?
14         //              The path to use for the cookie.
15         // domain: String?
16         //              The domain to use for the cookie.
17         // secure: Boolean?
18         //              Whether to only send the cookie on secure connections
19 };
20 =====*/
21
22
23 dojo.cookie = function(/*String*/name, /*String?*/ value, /*__cookieProps?*/ props){
24         // summary:
25         //              Get or set a cookie.
26         // description:
27         //              If one argument is passed, returns the value of the cookie
28         //              For two or more arguments, acts as a setter.
29         // name:
30         //              Name of the cookie
31         // value:
32         //              Value for the cookie
33         // props:
34         //              Properties for the cookie
35         // example:
36         //              set a cookie with the JSON-serialized contents of an object which
37         //              will expire 5 days from now:
38         //      |       require(["dojo/cookie", "dojo/json"], function(cookie, json){
39         //      |               cookie("configObj", json.stringify(config, {expires: 5 }));
40         //      |       });
41         //
42         // example:
43         //              de-serialize a cookie back into a JavaScript object:
44         //      |       require(["dojo/cookie", "dojo/json"], function(cookie, json){
45         //      |               config = json.parse(cookie("configObj"));
46         //      |       });
47         //
48         // example:
49         //              delete a cookie:
50         //      |       require(["dojo/cookie"], function(cookie){
51         //      |               cookie("configObj", null, {expires: -1});
52         //      |       });
53         var c = document.cookie, ret;
54         if(arguments.length == 1){
55                 var matches = c.match(new RegExp("(?:^|; )" + regexp.escapeString(name) + "=([^;]*)"));
56                 ret = matches ? decodeURIComponent(matches[1]) : undefined; 
57         }else{
58                 props = props || {};
59 // FIXME: expires=0 seems to disappear right away, not on close? (FF3)  Change docs?
60                 var exp = props.expires;
61                 if(typeof exp == "number"){
62                         var d = new Date();
63                         d.setTime(d.getTime() + exp*24*60*60*1000);
64                         exp = props.expires = d;
65                 }
66                 if(exp && exp.toUTCString){ props.expires = exp.toUTCString(); }
67
68                 value = encodeURIComponent(value);
69                 var updatedCookie = name + "=" + value, propName;
70                 for(propName in props){
71                         updatedCookie += "; " + propName;
72                         var propValue = props[propName];
73                         if(propValue !== true){ updatedCookie += "=" + propValue; }
74                 }
75                 document.cookie = updatedCookie;
76         }
77         return ret; // String|undefined
78 };
79
80 dojo.cookie.isSupported = function(){
81         // summary:
82         //              Use to determine if the current browser supports cookies or not.
83         //
84         //              Returns true if user allows cookies.
85         //              Returns false if user doesn't allow cookies.
86
87         if(!("cookieEnabled" in navigator)){
88                 this("__djCookieTest__", "CookiesAllowed");
89                 navigator.cookieEnabled = this("__djCookieTest__") == "CookiesAllowed";
90                 if(navigator.cookieEnabled){
91                         this("__djCookieTest__", "", {expires: -1});
92                 }
93         }
94         return navigator.cookieEnabled;
95 };
96
97 return dojo.cookie;
98 });