Use jquery.cookie
authorJohn Firebaugh <john.firebaugh@gmail.com>
Tue, 18 Sep 2012 00:00:03 +0000 (17:00 -0700)
committerTom Hughes <tom@compton.nu>
Tue, 18 Sep 2012 07:55:27 +0000 (08:55 +0100)
app/assets/javascripts/application.js
app/views/site/index.html.erb
vendor/assets/jquery/jquery.cookie.js [new file with mode: 0644]

index 148855dd8145013ab14ad50c85236da4abd620c7..551d48f100516e35bc0f20fbb6ba2bf260d33745 100644 (file)
@@ -2,6 +2,7 @@
 //= require jquery_ujs
 //= require jquery.autogrowtextarea
 //= require jquery.timers
+//= require jquery.cookie
 //= require augment
 //= require openlayers
 //= require i18n/translations
index 25f0c8585a2245034e9505e74afb96b86df27270..9d502432674991d853b950c88f22926168d1550c 100644 (file)
@@ -227,7 +227,7 @@ end
     updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, objtype, objid);
 
     expiry.setYear(expiry.getFullYear() + 10);
-    document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString();
+    $.cookie("_osm_location", [lonlat.lon, lonlat.lat, zoom, layers].join("|"), {expires: expiry});
   }
 
   function remoteEditHandler(event) {
diff --git a/vendor/assets/jquery/jquery.cookie.js b/vendor/assets/jquery/jquery.cookie.js
new file mode 100644 (file)
index 0000000..9e911a6
--- /dev/null
@@ -0,0 +1,72 @@
+/*jshint eqnull:true */
+/*!
+ * jQuery Cookie Plugin v1.2
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2011, Klaus Hartl
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.opensource.org/licenses/GPL-2.0
+ */
+(function ($, document, undefined) {
+
+       var pluses = /\+/g;
+
+       function raw(s) {
+               return s;
+       }
+
+       function decoded(s) {
+               return decodeURIComponent(s.replace(pluses, ' '));
+       }
+
+       var config = $.cookie = function (key, value, options) {
+
+               // write
+               if (value !== undefined) {
+                       options = $.extend({}, config.defaults, options);
+
+                       if (value === null) {
+                               options.expires = -1;
+                       }
+
+                       if (typeof options.expires === 'number') {
+                               var days = options.expires, t = options.expires = new Date();
+                               t.setDate(t.getDate() + days);
+                       }
+
+                       value = config.json ? JSON.stringify(value) : String(value);
+
+                       return (document.cookie = [
+                               encodeURIComponent(key), '=', config.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(''));
+               }
+
+               // read
+               var decode = config.raw ? raw : decoded;
+               var cookies = document.cookie.split('; ');
+               for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) {
+                       if (decode(parts.shift()) === key) {
+                               var cookie = decode(parts.join('='));
+                               return config.json ? JSON.parse(cookie) : cookie;
+                       }
+               }
+
+               return null;
+       };
+
+       config.defaults = {};
+
+       $.removeCookie = function (key, options) {
+               if ($.cookie(key) !== null) {
+                       $.cookie(key, null, options);
+                       return true;
+               }
+               return false;
+       };
+
+})(jQuery, document);