# HG changeset patch # User Aurelien Campeas # Date 1316624673 -7200 # Node ID 2c73fc529a20d2bfa2d0631b9ff5dfcc1cbb2a61 # Parent 93d9a9c29bfb9a9da1527dd2d04c3e214f6f1082 [tabs] do not use an ajax call to set cookie value, use jquery.cookie helper instead (closes #1944522) diff -r 93d9a9c29bfb -r 2c73fc529a20 web/data/cubicweb.ajax.js --- a/web/data/cubicweb.ajax.js Wed Sep 21 19:00:49 2011 +0200 +++ b/web/data/cubicweb.ajax.js Wed Sep 21 19:04:33 2011 +0200 @@ -705,7 +705,7 @@ function setTab(tabname, cookiename) { // set appropriate cookie - loadRemote('json', ajaxFuncArgs('set_cookie', null, cookiename, tabname)); + jQuery.cookie(cookiename, tabname, {path: '/'}); // trigger show + tabname event triggerLoad(tabname); } diff -r 93d9a9c29bfb -r 2c73fc529a20 web/data/jquery.cookie.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/data/jquery.cookie.js Wed Sep 21 19:04:33 2011 +0200 @@ -0,0 +1,41 @@ +/** + * jQuery Cookie plugin + * + * Copyright (c) 2010 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 = function (key, value, options) { + + // key and at least value given, set cookie... + if (arguments.length > 1 && String(value) !== "[object Object]") { + options = jQuery.extend({}, options); + + if (value === null || value === undefined) { + options.expires = -1; + } + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + value = String(value); + + return (document.cookie = [ + encodeURIComponent(key), '=', + options.raw ? value : encodeURIComponent(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('')); + } + + // key and possibly options given, get cookie... + options = value || {}; + var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; + return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; +}; diff -r 93d9a9c29bfb -r 2c73fc529a20 web/views/tabs.py --- a/web/views/tabs.py Wed Sep 21 19:00:49 2011 +0200 +++ b/web/views/tabs.py Wed Sep 21 19:04:33 2011 +0200 @@ -128,7 +128,7 @@ entity.view(default, w=self.w) return self._cw.add_css('jquery.ui.css') - self._cw.add_js(('jquery.ui.js', 'cubicweb.ajax.js')) + self._cw.add_js(('jquery.ui.js', 'cubicweb.ajax.js', 'jquery.cookie.js')) # prune tabs : not all are to be shown tabs, active_tab = self.prune_tabs(tabs, default) # build the html structure