[tabs] do not use an ajax call to set cookie value, use jquery.cookie helper instead (closes #1944522) stable
authorAurelien Campeas <aurelien.campeas@logilab.fr>
Wed, 21 Sep 2011 19:04:33 +0200
branchstable
changeset 7820 2c73fc529a20
parent 7819 93d9a9c29bfb
child 7822 ce8a4de2ecf1
[tabs] do not use an ajax call to set cookie value, use jquery.cookie helper instead (closes #1944522)
web/data/cubicweb.ajax.js
web/data/jquery.cookie.js
web/views/tabs.py
--- 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);
 }
--- /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;
+};
--- 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