diff options
| author | David Baumgold | 2013-11-05 10:36:17 -0500 | 
|---|---|---|
| committer | David Baumgold | 2013-11-05 10:36:17 -0500 | 
| commit | 0016356400822c452250d3fd8d84bc38e1e9d48c (patch) | |
| tree | bc1ba4fdef612f4e482fac6c546d92d50fdd16d7 /debug_toolbar/static | |
| parent | 1c2bb37e06e97f9a1577f624e4bce4afa56bfcce (diff) | |
| download | django-debug-toolbar-0016356400822c452250d3fd8d84bc38e1e9d48c.tar.bz2 | |
Update jQuery Cookie Plugin to 1.4.0
Diffstat (limited to 'debug_toolbar/static')
| -rw-r--r-- | debug_toolbar/static/debug_toolbar/js/jquery.cookie.js | 191 | 
1 files changed, 104 insertions, 87 deletions
diff --git a/debug_toolbar/static/debug_toolbar/js/jquery.cookie.js b/debug_toolbar/static/debug_toolbar/js/jquery.cookie.js index 6df1fac..a9da53b 100644 --- a/debug_toolbar/static/debug_toolbar/js/jquery.cookie.js +++ b/debug_toolbar/static/debug_toolbar/js/jquery.cookie.js @@ -1,96 +1,113 @@ -/** - * Cookie plugin - * - * Copyright (c) 2006 Klaus Hartl (stilbuero.de) - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html +/*! + * jQuery Cookie Plugin v1.4.0 + * https://github.com/carhartl/jquery-cookie   * + * Copyright 2013 Klaus Hartl + * Released under the MIT license   */ +(function (factory) { +    if (typeof define === 'function' && define.amd) { +        // AMD. Register as anonymous module. +        define(['jquery'], factory); +    } else { +        // Browser globals. +        factory(jQuery); +    } +}(function ($) { -/** - * Create a cookie with the given name and value and other optional parameters. - * - * @example $.cookie('the_cookie', 'the_value'); - * @desc Set the value of a cookie. - * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); - * @desc Create a cookie with all available options. - * @example $.cookie('the_cookie', 'the_value'); - * @desc Create a session cookie. - * @example $.cookie('the_cookie', null); - * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain - *       used when the cookie was set. - * - * @param String name The name of the cookie. - * @param String value The value of the cookie. - * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. - * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. - *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted. - *                             If set to null or omitted, the cookie will be a session cookie and will not be retained - *                             when the the browser exits. - * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). - * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). - * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will - *                        require a secure protocol (like HTTPS). - * @type undefined - * - * @name $.cookie - * @cat Plugins/Cookie - * @author Klaus Hartl/klaus.hartl@stilbuero.de - */ +    var pluses = /\+/g; -/** - * Get the value of a cookie with the given name. - * - * @example $.cookie('the_cookie'); - * @desc Get the value of a cookie. - * - * @param String name The name of the cookie. - * @return The value of the cookie. - * @type String - * - * @name $.cookie - * @cat Plugins/Cookie - * @author Klaus Hartl/klaus.hartl@stilbuero.de - */ -jQuery.cookie = function(name, value, options) { -    if (typeof value != 'undefined') { // name and value given, set cookie -        options = options || {}; -        if (value === null) { -            value = ''; -            options.expires = -1; +    function encode(s) { +        return config.raw ? s : encodeURIComponent(s); +    } + +    function decode(s) { +        return config.raw ? s : decodeURIComponent(s); +    } + +    function stringifyCookieValue(value) { +        return encode(config.json ? JSON.stringify(value) : String(value)); +    } + +    function parseCookieValue(s) { +        if (s.indexOf('"') === 0) { +            // This is a quoted cookie as according to RFC2068, unescape... +            s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');          } -        var expires = ''; -        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { -            var date; -            if (typeof options.expires == 'number') { -                date = new Date(); -                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); -            } else { -                date = options.expires; + +        try { +            // Replace server-side written pluses with spaces. +            // If we can't decode the cookie, ignore it, it's unusable. +            // If we can't parse the cookie, ignore it, it's unusable. +            s = decodeURIComponent(s.replace(pluses, ' ')); +            return config.json ? JSON.parse(s) : s; +        } catch(e) {} +    } + +    function read(s, converter) { +        var value = config.raw ? s : parseCookieValue(s); +        return $.isFunction(converter) ? converter(value) : value; +    } + +    var config = $.cookie = function (key, value, options) { + +        // Write +        if (value !== undefined && !$.isFunction(value)) { +            options = $.extend({}, config.defaults, options); + +            if (typeof options.expires === 'number') { +                var days = options.expires, t = options.expires = new Date(); +                t.setDate(t.getDate() + days);              } -            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE + +            return (document.cookie = [ +                encode(key), '=', stringifyCookieValue(value), +                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE +                options.path    ? '; path=' + options.path : '', +                options.domain  ? '; domain=' + options.domain : '', +                options.secure  ? '; secure' : '' +            ].join(''));          } -        // CAUTION: Needed to parenthesize options.path and options.domain -        // in the following expressions, otherwise they evaluate to undefined -        // in the packed version for some reason... -        var path = options.path ? '; path=' + (options.path) : ''; -        var domain = options.domain ? '; domain=' + (options.domain) : ''; -        var secure = options.secure ? '; secure' : ''; -        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); -    } else { // only name given, get cookie -        var cookieValue = null; -        if (document.cookie && document.cookie != '') { -            var cookies = document.cookie.split(';'); -            for (var i = 0; i < cookies.length; i++) { -                var cookie = jQuery.trim(cookies[i]); -                // Does this cookie string begin with the name we want? -                if (cookie.substring(0, name.length + 1) == (name + '=')) { -                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); -                    break; -                } + +        // Read + +        var result = key ? undefined : {}; + +        // To prevent the for loop in the first place assign an empty array +        // in case there are no cookies at all. Also prevents odd result when +        // calling $.cookie(). +        var cookies = document.cookie ? document.cookie.split('; ') : []; + +        for (var i = 0, l = cookies.length; i < l; i++) { +            var parts = cookies[i].split('='); +            var name = decode(parts.shift()); +            var cookie = parts.join('='); + +            if (key && key === name) { +                // If second argument (value) is a function it's a converter... +                result = read(cookie, value); +                break; +            } + +            // Prevent storing a cookie that we couldn't decode. +            if (!key && (cookie = read(cookie)) !== undefined) { +                result[name] = cookie;              }          } -        return cookieValue; -    } -};
\ No newline at end of file + +        return result; +    }; + +    config.defaults = {}; + +    $.removeCookie = function (key, options) { +        if ($.cookie(key) === undefined) { +            return false; +        } + +        // Must not alter options, thus extending a fresh object... +        $.cookie(key, '', $.extend({}, options, { expires: -1 })); +        return !$.cookie(key); +    }; + +}));  | 
