forked from brianleroux/lawnchair
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cookie adaptor for fallback on older mobile browsers
- Loading branch information
1 parent
e0cfc4f
commit 4944e4a
Showing
3 changed files
with
115 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Lawnchair Spec</title> | ||
<link rel="stylesheet" href="shoulda.css" type="text/css" media="screen" title="no title" charset="utf-8"> | ||
|
||
<script src="qunit.js" type="text/javascript" charset="utf-8"></script> | ||
<script src="shoulda.js" type="text/javascript" charset="utf-8"></script> | ||
|
||
<script src="../src/adaptors/Helpers.js" type="text/javascript" charset="utf-8"></script> | ||
<script src="../src/adaptors/CookieAdaptor.js" type="text/javascript" charset="utf-8"></script> | ||
<script src="../src/lawnchair.js" type="text/javascript" charset="utf-8"></script> | ||
|
||
<script type="text/javascript" charset="utf-8"> | ||
var store = new Lawnchair({adaptor:'cookie'}); | ||
</script> | ||
<script src="lawnchair-spec.js" type="text/javascript" charset="utf-8"></script> | ||
|
||
</head> | ||
<body> | ||
<h2 id="qunit-banner">Lawnchair Spec</h2> | ||
<h2 id="qunit-userAgent"></h2> | ||
<ol id="qunit-tests"></ol> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
/** | ||
* CookieAdaptor | ||
* =================== | ||
* Cookie implementation for Lawnchair for older browsers. | ||
* | ||
* Based on ppk's http://www.quirksmode.org/js/cookies.html | ||
* | ||
*/ | ||
var CookieAdaptor = function(options) { | ||
for (var i in LawnchairAdaptorHelpers) { | ||
this[i] = LawnchairAdaptorHelpers[i]; | ||
} | ||
this.init(options); | ||
}; | ||
|
||
CookieAdaptor.prototype = { | ||
init:function(){ | ||
this.createCookie = function(name, value, days) { | ||
if (days) { | ||
var date = new Date(); | ||
date.setTime(date.getTime()+(days*24*60*60*1000)); | ||
var expires = "; expires="+date.toGMTString(); | ||
} | ||
else var expires = ""; | ||
document.cookie = name+"="+value+expires+"; path=/"; | ||
}; | ||
}, | ||
get:function(key, callback){ | ||
var readCookie = function(name) { | ||
var nameEQ = name + "="; | ||
var ca = document.cookie.split(';'); | ||
var len = ca.length; | ||
for (var i=0; i < len; i++) { | ||
var c = ca[i]; | ||
while (c.charAt(0)==' ') c = c.substring(1,c.length); | ||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); | ||
} | ||
return null; | ||
}; | ||
var obj = this.deserialize(readCookie(key)); | ||
if (obj) { | ||
obj.key = key; | ||
if (callback) | ||
callback(obj); | ||
} | ||
}, | ||
save:function(obj, callback){ | ||
var id = obj.key || this.uuid(); | ||
delete obj.key; | ||
this.createCookie(id, this.serialize(obj), 365); | ||
if (callback) | ||
callback(obj); | ||
}, | ||
all:function(callback){ | ||
var cb = this.terseToVerboseCallback(callback); | ||
var ca = document.cookie.split(';'); | ||
|
||
var len = ca.length; | ||
var yar = []; | ||
var c,k,v,o; | ||
// yo ho yo ho a pirates life for me | ||
for (var i = 0; i < len; i++) { | ||
c = ca[i].split('='); | ||
k = c[0]; | ||
v = c[1]; | ||
o = this.deserialize(v) | ||
if (o) { | ||
o.key = k; | ||
yar.push(o); | ||
} | ||
} | ||
if (cb) | ||
cb(yar); | ||
}, | ||
remove:function(keyOrObj) { | ||
var key = (typeof keyOrObj == 'string') ? keyOrObj : keyOrObj.key; | ||
this.createCookie(key, '', -1); | ||
}, | ||
nuke:function() { | ||
var that = this; | ||
this.all(function(r){ | ||
var l = r.length; | ||
for (var i = 0; i < l; i++) { | ||
that.remove(r[i].key) | ||
} | ||
}); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters