]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/cookie.js.uncompressed.js
upgrade dojo to 1.8.3 (refs #570)
[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 });