From 6275fc2699ebdb2bbcedc302769d97818fb890ad Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20St=C4=99pniowski?= Date: Sat, 30 Jan 2010 20:39:23 +0100 Subject: [PATCH 1/1] =?utf8?q?Zapami=C4=99tywanie=20ustawie=C5=84=20otwart?= =?utf8?q?y/zamkni=C4=99ty=20paska=20z=20opisem=20tagu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- wolnelektury/settings.py | 3 +- wolnelektury/static/js/catalogue.js | 9 ++- wolnelektury/static/js/jquery.cookie.js | 96 +++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 wolnelektury/static/js/jquery.cookie.js diff --git a/wolnelektury/settings.py b/wolnelektury/settings.py index b57599cf2..d1e09e36d 100644 --- a/wolnelektury/settings.py +++ b/wolnelektury/settings.py @@ -131,7 +131,8 @@ COMPRESS_JS = { }, 'all': { 'source_filenames': ('js/jquery.autocomplete.js', 'js/jquery.form.js', - 'js/jquery.jqmodal.js', 'js/jquery.labelify.js', 'js/catalogue.js',), + 'js/jquery.jqmodal.js', 'js/jquery.labelify.js', 'js/catalogue.js', + 'js/jquery.cookie.js',), 'output_filename': 'js/all.min.js', }, 'book': { diff --git a/wolnelektury/static/js/catalogue.js b/wolnelektury/static/js/catalogue.js index c50dee87e..fa5357554 100644 --- a/wolnelektury/static/js/catalogue.js +++ b/wolnelektury/static/js/catalogue.js @@ -202,9 +202,11 @@ function changeBannerText() { ).click(function() { if ($('#description').hasClass('hidden')) { $('#description').slideDown('fast').removeClass('hidden'); + $.cookie('description-state', 'opened', {path: '/', expires: 30}); $('p', this).html('Zwiń opis ▲'); } else { $('#description').slideUp('fast').addClass('hidden'); + $.cookie('description-state', 'closed', {path: '/', expires: 30}); $('p', this).html('Rozwiń opis ▼'); } }); @@ -236,8 +238,13 @@ function changeBannerText() { }); }); + if ($.cookie('description-state') == 'closed') { + $('#description').hide().addClass('hidden'); + $('#toggle-description p').html('Rozwiń opis ▼'); + } + $('#user-info').show(); changeBannerText(); - $('#onepercent-banner').slideDown('slow') + $('#onepercent-banner').slideDown('slow'); }); })(jQuery) \ No newline at end of file diff --git a/wolnelektury/static/js/jquery.cookie.js b/wolnelektury/static/js/jquery.cookie.js new file mode 100644 index 000000000..6df1faca2 --- /dev/null +++ b/wolnelektury/static/js/jquery.cookie.js @@ -0,0 +1,96 @@ +/** + * 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 + * + */ + +/** + * 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 + */ + +/** + * 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; + } + 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; + } + expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE + } + // 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; + } + } + } + return cookieValue; + } +}; \ No newline at end of file -- 2.20.1