Skip to content

Instantly share code, notes, and snippets.

@ghuntley
Created July 26, 2011 08:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ghuntley/1106312 to your computer and use it in GitHub Desktop.
Save ghuntley/1106312 to your computer and use it in GitHub Desktop.
###
Ext JS Library 3.4.0
Copyright(c) 2006-2011 Sencha Inc.
licensing@sencha.com
http://www.sencha.com/license
###
###
@class Ext.util.Cookies
Utility class for managing and interacting with cookies.
@singleton
###
Ext.util.Cookies =
###
Create a cookie with the specified name and value. Additional settings
for the cookie may be optionally specified (for example: expiration,
access restriction, SSL).
@param {String} name The name of the cookie to set.
@param {Mixed} value The value to set for the cookie.
@param {Object} expires (Optional) Specify an expiration date the
cookie is to persist until. Note that the specified Date object will
be converted to Greenwich Mean Time (GMT).
@param {String} path (Optional) Setting a path on the cookie restricts
access to pages that match that path. Defaults to all pages ('/').
@param {String} domain (Optional) Setting a domain restricts access to
pages on a given domain (typically used to allow cookie access across
subdomains). For example, "extjs.com" will create a cookie that can be
accessed from any subdomain of extjs.com, including www.extjs.com,
support.extjs.com, etc.
@param {Boolean} secure (Optional) Specify true to indicate that the cookie
should only be accessible via SSL on a page using the HTTPS protocol.
Defaults to false. Note that this will only work if the page
calling this code uses the HTTPS protocol, otherwise the cookie will be
created with default options.
###
set: (name, value) ->
argv = arguments
argc = arguments.length
expires = (argc > 2) ? argv[2] : null
path = (argc > 3) ? argv[3] : '/'
domain = (argc > 4) ? argv[4] : null
secure = (argc > 5) ? argv[5] : false
document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : "")
###
Retrieves cookies that are accessible by the current page. If a cookie
does not exist, get() returns null. The following
example retrieves the cookie called "valid" and stores the String value
in the variable validStatus.
var validStatus = Ext.util.Cookies.get("valid");
@param {String} name The name of the cookie to get
@return {Mixed} Returns the cookie value for the specified name;
null if the cookie name does not exist.
###
get: (name) ->
arg = name + "="
alen = arg.length
clen = document.cookie.length
i = 0
j = 0
while(i < clen){
j = i + alen
if(document.cookie.substring(i, j) == arg){
return Ext.util.Cookies.getCookieVal(j)
}
i = document.cookie.indexOf(" ", i) + 1
if(i === 0){
break
}
}
return null
###
Removes a cookie with the provided name from the browser
if found by setting its expiration date to sometime in the past.
@param {String} name The name of the cookie to remove
###
clear: (name) ->
if Ext.util.Cookies.get(name)
document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT"
###
@private
###
getCookieVal: (offset) ->
endstr = document.cookie.indexOf(";", offset)
if(endstr == -1)
endstr = document.cookie.length
return unescape(document.cookie.substring(offset, endstr))
/*!
* Ext JS Library 3.4.0
* Copyright(c) 2006-2011 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
/**
* @class Ext.util.Cookies
* Utility class for managing and interacting with cookies.
* @singleton
*/
Ext.util.Cookies = {
/**
* Create a cookie with the specified name and value. Additional settings
* for the cookie may be optionally specified (for example: expiration,
* access restriction, SSL).
* @param {String} name The name of the cookie to set.
* @param {Mixed} value The value to set for the cookie.
* @param {Object} expires (Optional) Specify an expiration date the
* cookie is to persist until. Note that the specified Date object will
* be converted to Greenwich Mean Time (GMT).
* @param {String} path (Optional) Setting a path on the cookie restricts
* access to pages that match that path. Defaults to all pages ('/').
* @param {String} domain (Optional) Setting a domain restricts access to
* pages on a given domain (typically used to allow cookie access across
* subdomains). For example, "extjs.com" will create a cookie that can be
* accessed from any subdomain of extjs.com, including www.extjs.com,
* support.extjs.com, etc.
* @param {Boolean} secure (Optional) Specify true to indicate that the cookie
* should only be accessible via SSL on a page using the HTTPS protocol.
* Defaults to false. Note that this will only work if the page
* calling this code uses the HTTPS protocol, otherwise the cookie will be
* created with default options.
*/
set: function(name, value){
var argv = arguments;
var argc = arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : '/';
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : "");
},
/**
* Retrieves cookies that are accessible by the current page. If a cookie
* does not exist, get() returns null. The following
* example retrieves the cookie called "valid" and stores the String value
* in the variable validStatus.
*
* var validStatus = Ext.util.Cookies.get("valid");
*
* @param {String} name The name of the cookie to get
* @return {Mixed} Returns the cookie value for the specified name;
* null if the cookie name does not exist.
*/
get : function(name){
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
var j = 0;
while(i < clen){
j = i + alen;
if(document.cookie.substring(i, j) == arg){
return Ext.util.Cookies.getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) + 1;
if(i === 0){
break;
}
}
return null;
},
/**
* Removes a cookie with the provided name from the browser
* if found by setting its expiration date to sometime in the past.
* @param {String} name The name of the cookie to remove
*/
clear : function(name){
if(Ext.util.Cookies.get(name)){
document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
},
/**
* @private
*/
getCookieVal: function(offset){
var endstr = document.cookie.indexOf(";", offset);
if(endstr == -1){
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment