Commits

Shlomi Fish committed 18167ca

Add saveState.

We are generating IDs sequentially so they could be off.

TODO : add more permanent IDs.

  • Participants
  • Parent commits 277256e
  • Branches convert-from-jquery-treeview-to-jqtree-plugin

Comments (0)

Files changed (4)

File common/js/jquery.cookie.js

+/*!
+ * jQuery Cookie Plugin v1.3
+ * 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, l = cookies.length; i < l; i++) {
+			var parts = cookies[i].split('=');
+			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);

File common/js/to-jqtree-2.js

             $('#nav_menu').tree({
                 autoEscape: false,
                 autoOpen: false,
+                saveState: true,
                 data: calc_jqtree_data_from_html_w_nav_menu_json(
                     {
                         input: json_input,

File common/js/to-jqtree.js

 
     // TODO : XSS - cross site scripting.
     var _recurse;
+    var _next_id = 0;
 
     _recurse = function(sub_tree) {
         if ($.isArray(sub_tree)) {
                 escape_html(_get_rel(sub_tree['url'])) + "\"" + title_attr +
                 ">" + sub_tree['text'] + "</a>"
                 ),
+            id: (++_next_id),
         };
 
         if ('subs' in sub_tree) {

File lib/rest-of-template.wml

 <script type="text/javascript" src="$(ROOT)/js/jquery.treeview.min.js"></script>
 <script type="text/javascript" src="$(ROOT)/js/toggle_sect.js"></script>
 <script type="text/javascript" src="$(ROOT)/js/tree.jq.js"></script>
+<script type="text/javascript" src="$(ROOT)/js/jquery.cookie.js"></script>
 <script type="text/javascript" src="$(ROOT)/js/to-jqtree.js"></script>
 <script type="text/javascript" src="$(ROOT)/js/to-jqtree-2.js"></script>
 <link rel="alternate" type="application/rss+xml" title="Shlomi Fish’s Homepage RSS Feed" href="http://www.livejournal.com/community/shlomif_hsite/data/rss" />