Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* jQuery Storage API Plugin
*
* Copyright (c) 2013 Julien Maurel
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* https://github.com/julien-maurel/jQuery-Storage-API
*
* Version: 1.7.3
*
*/
(function (factory) {
if(typeof define==='function' && define.amd){
// AMD
define(['jquery'],factory);
}else if(typeof exports==='object') {
// CommonJS
factory(require('jquery'));
}else {
// Browser globals
factory(jQuery);
}
}(function($){
// Prefix to use with cookie fallback
var cookie_local_prefix="ls_";
var cookie_session_prefix="ss_";
// Get items from a storage
function _get(storage){
var l=arguments.length,s=window[storage],a=arguments,a1=a[1],vi,ret,tmp;
if(l<2) throw new Error('Minimum 2 arguments must be given');
else if($.isArray(a1)){
// If second argument is an array, return an object with value of storage for each item in this array
ret={};
for(var i in a1){
vi=a1[i];
try{
ret[vi]=JSON.parse(s.getItem(vi));
}catch(e){
ret[vi]=s.getItem(vi);
}
}
return ret;
}else if(l==2){
// If only 2 arguments, return value directly
try{
return JSON.parse(s.getItem(a1));
}catch(e){
return s.getItem(a1);
}
}else{
// If more than 2 arguments, parse storage to retrieve final value to return it
// Get first level
try{
ret=JSON.parse(s.getItem(a1));
}catch(e){
throw new ReferenceError(a1+' is not defined in this storage');
}
// Parse next levels
for(var i=2;i1){
o=_get.apply(this,a);
}else{
o=s;
}
if(o._cookie){
// If storage is a cookie, use $.cookie to retrieve keys
for(var key in $.cookie()){
if(key!='') {
keys.push(key.replace(o._prefix,''));
}
}
}else{
for(var i in o){
keys.push(i);
}
}
return keys;
}
// Create new namespace storage
function _createNamespace(name){
if(!name || typeof name!="string") throw new Error('First parameter must be a string');
if(storage_available){
if(!window.localStorage.getItem(name)) window.localStorage.setItem(name,'{}');
if(!window.sessionStorage.getItem(name)) window.sessionStorage.setItem(name,'{}');
}else{
if(!window.localCookieStorage.getItem(name)) window.localCookieStorage.setItem(name,'{}');
if(!window.sessionCookieStorage.getItem(name)) window.sessionCookieStorage.setItem(name,'{}');
}
var ns={
localStorage:$.extend({},$.localStorage,{_ns:name}),
sessionStorage:$.extend({},$.sessionStorage,{_ns:name})
};
if($.cookie){
if(!window.cookieStorage.getItem(name)) window.cookieStorage.setItem(name,'{}');
ns.cookieStorage=$.extend({},$.cookieStorage,{_ns:name});
}
$.namespaceStorages[name]=ns;
return ns;
}
// Test if storage is natively available on browser
function _testStorage(name){
if(!window[name]) return false;
var foo='jsapi';
try{
window[name].setItem(foo,foo);
window[name].removeItem(foo);
return true;
}catch(e){
return false;
}
}
// Check if storages are natively available on browser
var storage_available=_testStorage('localStorage');
// Namespace object
var storage={
_type:'',
_ns:'',
_callMethod:function(f,a){
var p=[this._type],a=Array.prototype.slice.call(a),a0=a[0];
if(this._ns) p.push(this._ns);
if(typeof a0==='string' && a0.indexOf('.')!==-1){
a.shift();
[].unshift.apply(a,a0.split('.'));
}
[].push.apply(p,a);
return f.apply(this,p);
},
// Get items. If no parameters and storage have a namespace, return all namespace
get:function(){
return this._callMethod(_get,arguments);
},
// Set items
set:function(){
var l=arguments.length,a=arguments,a0=a[0];
if(l<1 || !$.isPlainObject(a0) && l<2) throw new Error('Minimum 2 arguments must be given or first parameter must be an object');
// If first argument is an object and storage is a namespace storage, set values individually
if($.isPlainObject(a0) && this._ns){
for(var i in a0){
_set(this._type,this._ns,i,a0[i]);
}
return a0;
}else{
var r=this._callMethod(_set,a);
if(this._ns) return r[a0.split('.')[0]];
else return r;
}
},
// Delete items
remove:function(){
if(arguments.length<1) throw new Error('Minimum 1 argument must be given');
return this._callMethod(_remove,arguments);
},
// Delete all items
removeAll:function(reinit_ns){
if(this._ns){
_set(this._type,this._ns,{});
return true;
}else{
return _removeAll(this._type, reinit_ns);
}
},
// Items empty
isEmpty:function(){
return this._callMethod(_isEmpty,arguments);
},
// Items exists
isSet:function(){
if(arguments.length<1) throw new Error('Minimum 1 argument must be given');
return this._callMethod(_isSet,arguments);
},
// Get keys of items
keys:function(){
return this._callMethod(_keys,arguments);
}
};
// Use jquery.cookie for compatibility with old browsers and give access to cookieStorage
if($.cookie){
// sessionStorage is valid for one window/tab. To simulate that with cookie, we set a name for the window and use it for the name of the cookie
if(!window.name) window.name=Math.floor(Math.random()*100000000);
var cookie_storage={
_cookie:true,
_prefix:'',
_expires:null,
_path:null,
_domain:null,
setItem:function(n,v){
$.cookie(this._prefix+n,v,{expires:this._expires,path:this._path,domain:this._domain});
},
getItem:function(n){
return $.cookie(this._prefix+n);
},
removeItem:function(n){
return $.removeCookie(this._prefix+n);
},
clear:function(){
for(var key in $.cookie()){
if(key!=''){
if(!this._prefix && key.indexOf(cookie_local_prefix)===-1 && key.indexOf(cookie_session_prefix)===-1 || this._prefix && key.indexOf(this._prefix)===0) {
$.removeCookie(key);
}
}
}
},
setExpires:function(e){
this._expires=e;
return this;
},
setPath:function(p){
this._path=p;
return this;
},
setDomain:function(d){
this._domain=d;
return this;
},
setConf:function(c){
if(c.path) this._path=c.path;
if(c.domain) this._domain=c.domain;
if(c.expires) this._expires=c.expires;
return this;
},
setDefaultConf:function(){
this._path=this._domain=this._expires=null;
}
};
if(!storage_available){
window.localCookieStorage=$.extend({},cookie_storage,{_prefix:cookie_local_prefix,_expires:365*10});
window.sessionCookieStorage=$.extend({},cookie_storage,{_prefix:cookie_session_prefix+window.name+'_'});
}
window.cookieStorage=$.extend({},cookie_storage);
// cookieStorage API
$.cookieStorage=$.extend({},storage,{
_type:'cookieStorage',
setExpires:function(e){window.cookieStorage.setExpires(e); return this;},
setPath:function(p){window.cookieStorage.setPath(p); return this;},
setDomain:function(d){window.cookieStorage.setDomain(d); return this;},
setConf:function(c){window.cookieStorage.setConf(c); return this;},
setDefaultConf:function(){window.cookieStorage.setDefaultConf(); return this;}
});
}
// Get a new API on a namespace
$.initNamespaceStorage=function(ns){ return _createNamespace(ns); };
if(storage_available) {
// localStorage API
$.localStorage=$.extend({},storage,{_type:'localStorage'});
// sessionStorage API
$.sessionStorage=$.extend({},storage,{_type:'sessionStorage'});
}else{
// localStorage API
$.localStorage=$.extend({},storage,{_type:'localCookieStorage'});
// sessionStorage API
$.sessionStorage=$.extend({},storage,{_type:'sessionCookieStorage'});
}
// List of all namespace storage
$.namespaceStorages={};
// Remove all items in all storages
$.removeAllStorages=function(reinit_ns){
$.localStorage.removeAll(reinit_ns);
$.sessionStorage.removeAll(reinit_ns);
if($.cookieStorage) $.cookieStorage.removeAll(reinit_ns);
if(!reinit_ns){
$.namespaceStorages={};
}
}
}));