SickGear/gui/slick/js/lib/jquery.cookiejar.js

201 lines
6.5 KiB
JavaScript
Raw Normal View History

/**
* .cookieJar - Cookie Jar Plugin
*
* Version: 1.0.1
* Updated: 2007-08-14
*
* Used to store objects, arrays or multiple values in one cookie, under one name
*
* Copyright (c) 2007 James Dempster (letssurf@gmail.com, http://www.jdempster.com/category/jquery/cookieJar/)
*
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
**/
/**
* Requirements:
* - jQuery (John Resig, http://www.jquery.com/)
* - cookie (Klaus Hartl, http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/)
* - toJSON (Mark Gibson, http://jollytoad.googlepages.com/json.js)
**/
(function($) {
$.cookieJar = function(name, options) {
if (!$.parseJSON) return false;
if (!$.toJSON) return false;
if (!$.cookie) return false;
return new function() {
/**
* @access private
**/
function log(s) {
if (typeof console != 'undefined' && typeof console.log != 'undefined') {
console.log('cookiejar:' + self.cookieName + ' ' + s);
} else {
alert(s);
}
};
/**
* @access private
**/
function save() {
if (self.options.debug) log('save ' + $.toJSON(self.cookieObject));
return $.cookie(self.cookieName, $.toJSON(self.cookieObject), self.options.cookie);
};
/**
* @access private
**/
function load() {
var cookieJSON = $.cookie(self.cookieName);
if (typeof cookieJSON == 'string') {
if (self.options.debug) log('load ' + cookieJSON);
self.cookieObject = $.parseJSON(cookieJSON, true);
} else {
if (self.options.debug) log('load new');
self.cookieObject = {};
save();
}
}
/**
* cookieJar.set(name, value)
*
* Sets a value in the cookie jar using a name to identify it
*
* @access public
* @param string name value identifier
* @param mixed value any value, array or object
* @return bool
**/
this.set = function(name, value) {
if (self.options.debug) log('set ' + name + ' = ' + value);
self.cookieObject[name] = value;
return save();
};
/**
* cookieJar.get(name)
*
* Gets a value from the cookie jar using a name to identify it
*
* @access public
* @param string name value identifier
* @return mixed stored value
**/
this.get = function(name) {
if (!self.options.cacheCookie) {
load();
}
if (self.options.debug) log('get ' + name + ' = ' + self.cookieObject[name]);
return self.cookieObject[name];
};
/**
* cookieJar.remove([name])
*
* Removes a value from the cookie jar using a name to identify it
* No name will clear the cookie jar of all values
*
* @access public
* @param string name value identifier
* @return bool
**/
this.remove = function(name) {
if (self.options.debug) log('remove ' + name);
if (typeof name != 'undefined') {
delete(self.cookieObject[name]);
} else {
self.setFromObject({});
}
return save();
};
/**
* cookieJar.setFromObject(object)
*
* Uses the object as the set of values to store in the cookie jar
*
* @access public
* @param object object new values for the cookie jar
* @return bool
**/
this.setFromObject = function(object) {
if (typeof object == 'object') {
if (self.options.debug) log('setFromObject');
self.cookieObject = object;
return save();
}
};
/**
* cookieJar.toObject()
*
* Returns the contents of the cookie jar as an object
*
* @access public
* @return object contents of the cookie jar
**/
this.toObject = function() {
if (self.options.debug) log('toObject');
return self.cookieObject;
};
/**
* cookieJar.toString()
*
* Returns the contents of the cookie jar as a JSON encoded string
*
* @access public
* @return string contents of the cookie jar as JSON
**/
this.toString = function() {
if (self.options.debug) log('toString = ' + $.toJSON(self.cookieObject));
return $.toJSON(self.cookieObject);
};
/**
* cookieJar.destroy()
*
* Removes the cookie containing the cookie jar from the server
*
* @access public
* @return bool
**/
this.destroy = function() {
if (self.options.debug) log('destroy');
self.cookieObject = {};
return $.cookie(self.cookieName, null, self.options.cookie);
};
/**
* cookieJar(name, [options])
*
* loads a cookie jar for the name provided, creates new if none found
*
* @param string name
* @param object options
* @return object cookieJar
**/
this.construct = function(name, options) {
self.options = $.extend({
cookie: {
expires: 365,
path: '/'
},
cacheCookie: true,
cookiePrefix: 'jqCookieJar_',
debug: false
}, options);
self.cookieName = self.options.cookiePrefix + name;
load();
return self;
};
var self = this;
self.construct(name, options);
};
};
})(jQuery);