fancytree-rails 2.0.0.pre.6.pre.1 → 2.0.0.pre.11.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Rakefile +6 -7
- data/lib/fancytree/rails/version.rb +2 -2
- data/vendor/assets/images/fancytree/skin-win8-xxl/icons.gif +0 -0
- data/vendor/assets/images/fancytree/skin-win8-xxl/loading.gif +0 -0
- data/vendor/assets/javascripts/fancytree.js +1 -1
- data/vendor/assets/javascripts/fancytree/MIT-LICENSE.txt +21 -0
- data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.js +1267 -475
- data/vendor/assets/javascripts/fancytree/jquery.fancytree-custom.min.js +41 -0
- data/vendor/assets/javascripts/fancytree/jquery.fancytree.js +582 -310
- data/vendor/assets/javascripts/fancytree/jquery.fancytree.min.js +14 -7
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.childcounter.js +185 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.clones.js +417 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.columnview.js +149 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.debug.js +142 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.dnd.js +539 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.edit.js +318 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.filter.js +173 -0
- data/vendor/assets/javascripts/fancytree/{jquery.fancytree.awesome.js → src/jquery.fancytree.glyph.js} +28 -26
- data/vendor/assets/javascripts/fancytree/{jquery.fancytree.gridnav.js → src/jquery.fancytree.gridnav.js} +77 -41
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.js +4027 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.menu.js +155 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.persist.js +345 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.table.js +345 -0
- data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.themeroller.js +82 -0
- data/vendor/assets/stylesheets/fancytree/skin-awesome/ui.fancytree.css +29 -15
- data/vendor/assets/stylesheets/fancytree/skin-awesome/ui.fancytree.min.css +1 -1
- data/vendor/assets/stylesheets/fancytree/skin-bootstrap/ui.fancytree.css +366 -0
- data/vendor/assets/stylesheets/fancytree/skin-bootstrap/ui.fancytree.min.css +6 -0
- data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree.css +34 -7
- data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree.min.css +1 -1
- data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree.css +34 -7
- data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree.min.css +1 -1
- data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree.css +34 -7
- data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree.min.css +1 -1
- data/vendor/assets/stylesheets/fancytree/skin-win8-xxl/ui.fancytree.css +507 -0
- data/vendor/assets/stylesheets/fancytree/skin-win8-xxl/ui.fancytree.min.css +11 -0
- data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree.css +34 -7
- data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree.min.css +1 -1
- data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree.css +34 -7
- data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree.min.css +1 -1
- metadata +24 -13
- data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.min.js +0 -7
- data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.min.js.map +0 -1
- data/vendor/assets/javascripts/fancytree/jquery.fancytree.min.js.map +0 -1
- data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree-org.css +0 -460
- data/vendor/assets/stylesheets/fancytree/skin-themeroller/ui.fancytree-org.css +0 -505
- data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree-org.css +0 -610
- data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree-org.css +0 -592
- data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree-org.css +0 -602
- data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree-org.css +0 -578
@@ -0,0 +1,155 @@
|
|
1
|
+
/*!
|
2
|
+
* jquery.fancytree.menu.js
|
3
|
+
*
|
4
|
+
* Enable jQuery UI Menu as context menu for tree nodes.
|
5
|
+
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
|
6
|
+
*
|
7
|
+
* @see http://api.jqueryui.com/menu/
|
8
|
+
*
|
9
|
+
* Copyright (c) 2014, Martin Wendt (http://wwWendt.de)
|
10
|
+
*
|
11
|
+
* Released under the MIT license
|
12
|
+
* https://github.com/mar10/fancytree/wiki/LicenseInfo
|
13
|
+
*
|
14
|
+
* @version 2.0.0-11
|
15
|
+
* @date 2014-04-27T22:28
|
16
|
+
*/
|
17
|
+
|
18
|
+
;(function($, window, document, undefined) {
|
19
|
+
|
20
|
+
"use strict";
|
21
|
+
|
22
|
+
// prevent duplicate loading
|
23
|
+
// if ( $.ui.fancytree && $.ui.fancytree.version ) {
|
24
|
+
// $.ui.fancytree.warn("Fancytree: duplicate include");
|
25
|
+
// return;
|
26
|
+
// }
|
27
|
+
|
28
|
+
$.ui.fancytree.registerExtension({
|
29
|
+
name: "menu",
|
30
|
+
version: "0.0.1",
|
31
|
+
// Default options for this extension.
|
32
|
+
options: {
|
33
|
+
enable: true,
|
34
|
+
selector: null, //
|
35
|
+
position: {}, //
|
36
|
+
// Events:
|
37
|
+
create: $.noop, //
|
38
|
+
beforeOpen: $.noop, //
|
39
|
+
open: $.noop, //
|
40
|
+
focus: $.noop, //
|
41
|
+
select: $.noop, //
|
42
|
+
close: $.noop //
|
43
|
+
},
|
44
|
+
// Override virtual methods for this extension.
|
45
|
+
// `this` : is this extension object
|
46
|
+
// `this._base` : the Fancytree instance
|
47
|
+
// `this._super`: the virtual function that was overridden (member of prev. extension or Fancytree)
|
48
|
+
treeInit: function(ctx){
|
49
|
+
var opts = ctx.options,
|
50
|
+
tree = ctx.tree;
|
51
|
+
|
52
|
+
this._super(ctx);
|
53
|
+
|
54
|
+
// Prepare an object that will be passed with menu events
|
55
|
+
tree.ext.menu.data = {
|
56
|
+
tree: tree,
|
57
|
+
node: null,
|
58
|
+
$menu: null,
|
59
|
+
menuId: null
|
60
|
+
};
|
61
|
+
|
62
|
+
// tree.$container[0].oncontextmenu = function() {return false;};
|
63
|
+
// Replace the standard browser context menu with out own
|
64
|
+
tree.$container.delegate("span.fancytree-node", "contextmenu", function(event) {
|
65
|
+
var node = $.ui.fancytree.getNode(event),
|
66
|
+
ctx = {node: node, tree: node.tree, originalEvent: event, options: tree.options};
|
67
|
+
tree.ext.menu._openMenu(ctx);
|
68
|
+
return false;
|
69
|
+
});
|
70
|
+
|
71
|
+
// Use jquery.ui.menu
|
72
|
+
$(opts.menu.selector).menu({
|
73
|
+
create: function(event, ui){
|
74
|
+
tree.ext.menu.data.$menu = $(this).menu("widget");
|
75
|
+
var data = $.extend({}, tree.ext.menu.data);
|
76
|
+
opts.menu.create.call(tree, event, data);
|
77
|
+
},
|
78
|
+
focus: function(event, ui){
|
79
|
+
var data = $.extend({}, tree.ext.menu.data, {
|
80
|
+
menuItem: ui.item,
|
81
|
+
menuId: ui.item.find(">a").attr("href")
|
82
|
+
});
|
83
|
+
opts.menu.focus.call(tree, event, data);
|
84
|
+
},
|
85
|
+
select: function(event, ui){
|
86
|
+
var data = $.extend({}, tree.ext.menu.data, {
|
87
|
+
menuItem: ui.item,
|
88
|
+
menuId: ui.item.find(">a").attr("href")
|
89
|
+
});
|
90
|
+
if( opts.menu.select.call(tree, event, data) !== false){
|
91
|
+
tree.ext.menu._closeMenu(ctx);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}).hide();
|
95
|
+
},
|
96
|
+
treeDestroy: function(ctx){
|
97
|
+
this._super(ctx);
|
98
|
+
},
|
99
|
+
_openMenu: function(ctx){
|
100
|
+
var data,
|
101
|
+
tree = ctx.tree,
|
102
|
+
opts = ctx.options,
|
103
|
+
$menu = $(opts.menu.selector);
|
104
|
+
|
105
|
+
tree.ext.menu.data.node = ctx.node;
|
106
|
+
data = $.extend({}, tree.ext.menu.data);
|
107
|
+
|
108
|
+
if( opts.menu.beforeOpen.call(tree, ctx.originalEvent, data) === false){
|
109
|
+
return;
|
110
|
+
}
|
111
|
+
|
112
|
+
$(document).bind("keydown.fancytree", function(event){
|
113
|
+
if( event.which === $.ui.keyCode.ESCAPE ){
|
114
|
+
tree.ext.menu._closeMenu(ctx);
|
115
|
+
}
|
116
|
+
}).bind("mousedown.fancytree", function(event){
|
117
|
+
// Close menu when clicked outside menu
|
118
|
+
if( $(event.target).closest(".ui-menu-item").length === 0 ){
|
119
|
+
tree.ext.menu._closeMenu(ctx);
|
120
|
+
}
|
121
|
+
});
|
122
|
+
// $menu.position($.extend({my: "left top", at: "left bottom", of: event}, opts.menu.position));
|
123
|
+
$menu
|
124
|
+
.css("position", "absolute")
|
125
|
+
.show()
|
126
|
+
.position({my: "left top", at: "right top", of: ctx.originalEvent, collision: "fit"})
|
127
|
+
.focus();
|
128
|
+
|
129
|
+
opts.menu.open.call(tree, ctx.originalEvent, data);
|
130
|
+
},
|
131
|
+
_closeMenu: function(ctx){
|
132
|
+
var $menu,
|
133
|
+
tree = ctx.tree,
|
134
|
+
opts = ctx.options,
|
135
|
+
data = $.extend({}, tree.ext.menu.data);
|
136
|
+
if( opts.menu.close.call(tree, ctx.originalEvent, data) === false){
|
137
|
+
return;
|
138
|
+
}
|
139
|
+
$menu = $(opts.menu.selector);
|
140
|
+
$(document).unbind("keydown.fancytree, mousedown.fancytree");
|
141
|
+
$menu.hide();
|
142
|
+
tree.ext.menu.data.node = null;
|
143
|
+
}
|
144
|
+
// ,
|
145
|
+
// nodeClick: function(ctx) {
|
146
|
+
// var event = ctx.originalEvent;
|
147
|
+
// if(event.which === 2 || (event.which === 1 && event.ctrlKey)){
|
148
|
+
// event.preventDefault();
|
149
|
+
// ctx.tree.ext.menu._openMenu(ctx);
|
150
|
+
// return false;
|
151
|
+
// }
|
152
|
+
// this._super(ctx);
|
153
|
+
// }
|
154
|
+
});
|
155
|
+
}(jQuery, window, document));
|
@@ -0,0 +1,345 @@
|
|
1
|
+
/*!
|
2
|
+
* jquery.fancytree.persist.js
|
3
|
+
*
|
4
|
+
* Persist tree status in cookiesRemove or highlight tree nodes, based on a filter.
|
5
|
+
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
|
6
|
+
*
|
7
|
+
* @depends: jquery.cookie.js
|
8
|
+
*
|
9
|
+
* Copyright (c) 2014, Martin Wendt (http://wwWendt.de)
|
10
|
+
*
|
11
|
+
* Released under the MIT license
|
12
|
+
* https://github.com/mar10/fancytree/wiki/LicenseInfo
|
13
|
+
*
|
14
|
+
* @version 2.0.0-11
|
15
|
+
* @date 2014-04-27T22:28
|
16
|
+
*/
|
17
|
+
|
18
|
+
;(function($, window, document, undefined) {
|
19
|
+
|
20
|
+
"use strict";
|
21
|
+
|
22
|
+
|
23
|
+
/*******************************************************************************
|
24
|
+
* Private functions and variables
|
25
|
+
*/
|
26
|
+
function _assert(cond, msg){
|
27
|
+
msg = msg || "";
|
28
|
+
if(!cond){
|
29
|
+
$.error("Assertion failed " + msg);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
var ACTIVE = "active",
|
34
|
+
EXPANDED = "expanded",
|
35
|
+
FOCUS = "focus",
|
36
|
+
SELECTED = "selected";
|
37
|
+
|
38
|
+
|
39
|
+
/* Recursively load lazy nodes
|
40
|
+
* @param {string} mode 'load', 'expand', false
|
41
|
+
*/
|
42
|
+
function _loadLazyNodes(tree, instData, keyList, mode, dfd) {
|
43
|
+
var i, key, l, node,
|
44
|
+
foundOne = false,
|
45
|
+
deferredList = [],
|
46
|
+
// lazyNodeList = [],
|
47
|
+
missingKeyList = []; //keyList.slice(0),
|
48
|
+
|
49
|
+
keyList = keyList || [];
|
50
|
+
// expand = expand !== false;
|
51
|
+
dfd = dfd || $.Deferred();
|
52
|
+
|
53
|
+
for( i=0, l=keyList.length; i<l; i++ ) {
|
54
|
+
key = keyList[i];
|
55
|
+
node = tree.getNodeByKey(key);
|
56
|
+
if( node ) {
|
57
|
+
if( mode && node.isUndefined() ) {
|
58
|
+
// lazyNodeList.push(node);
|
59
|
+
foundOne = true;
|
60
|
+
tree.debug("_loadLazyNodes: " + node + " is lazy: loading...");
|
61
|
+
if( mode === "expand" ) {
|
62
|
+
deferredList.push(node.setExpanded());
|
63
|
+
} else {
|
64
|
+
deferredList.push(node.load());
|
65
|
+
}
|
66
|
+
} else {
|
67
|
+
tree.debug("_loadLazyNodes: " + node + " already loaded.");
|
68
|
+
node.setExpanded();
|
69
|
+
// node.expanded = true;
|
70
|
+
// node.render();
|
71
|
+
}
|
72
|
+
} else {
|
73
|
+
missingKeyList.push(key);
|
74
|
+
tree.debug("_loadLazyNodes: " + node + " was not yet found.");
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
$.when.apply($, deferredList).always(function(){
|
79
|
+
// All lazy-expands have finished
|
80
|
+
if( foundOne && missingKeyList.length > 0 ) {
|
81
|
+
// If we read new nodes from server, try to resolve yet-missing keys
|
82
|
+
_loadLazyNodes(tree, instData, missingKeyList, mode, dfd);
|
83
|
+
} else {
|
84
|
+
if( missingKeyList.length ) {
|
85
|
+
tree.warn("_loadLazyNodes: could not load those keys: ", missingKeyList);
|
86
|
+
for( i=0, l=missingKeyList.length; i<l; i++ ) {
|
87
|
+
key = keyList[i];
|
88
|
+
instData._setKey(EXPANDED, keyList[i], false);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
dfd.resolve();
|
92
|
+
}
|
93
|
+
});
|
94
|
+
return dfd;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
/**
|
99
|
+
* [ext-persist] Remove persistence cookies of the given type(s).
|
100
|
+
* Called like
|
101
|
+
* $("#tree").fancytree("getTree").clearCookies("active expanded focus selected");
|
102
|
+
*
|
103
|
+
* @alias Fancytree#clearCookies
|
104
|
+
* @requires jquery.fancytree.persist.js
|
105
|
+
*/
|
106
|
+
$.ui.fancytree._FancytreeClass.prototype.clearCookies = function(types){
|
107
|
+
var inst = this.ext.persist,
|
108
|
+
cookiePrefix = inst.cookiePrefix;
|
109
|
+
|
110
|
+
types = types || "active expanded focus selected";
|
111
|
+
// TODO: optimize
|
112
|
+
if(types.indexOf(ACTIVE) >= 0){
|
113
|
+
// $.cookie(cookiePrefix + ACTIVE, null);
|
114
|
+
$.removeCookie(cookiePrefix + ACTIVE);
|
115
|
+
}
|
116
|
+
if(types.indexOf(EXPANDED) >= 0){
|
117
|
+
// $.cookie(cookiePrefix + EXPANDED, null);
|
118
|
+
$.removeCookie(cookiePrefix + EXPANDED);
|
119
|
+
}
|
120
|
+
if(types.indexOf(FOCUS) >= 0){
|
121
|
+
// $.cookie(cookiePrefix + FOCUS, null);
|
122
|
+
$.removeCookie(cookiePrefix + FOCUS);
|
123
|
+
}
|
124
|
+
if(types.indexOf(SELECTED) >= 0){
|
125
|
+
// $.cookie(cookiePrefix + SELECTED, null);
|
126
|
+
$.removeCookie(cookiePrefix + SELECTED);
|
127
|
+
}
|
128
|
+
};
|
129
|
+
|
130
|
+
|
131
|
+
/**
|
132
|
+
* [ext-persist] Return persistence information from cookies
|
133
|
+
*
|
134
|
+
* Called like
|
135
|
+
* $("#tree").fancytree("getTree").getPersistData();
|
136
|
+
*
|
137
|
+
* @alias Fancytree#getPersistData
|
138
|
+
* @requires jquery.fancytree.persist.js
|
139
|
+
*/
|
140
|
+
$.ui.fancytree._FancytreeClass.prototype.getPersistData = function(){
|
141
|
+
var inst = this.ext.persist,
|
142
|
+
instOpts= this.options.persist,
|
143
|
+
delim = instOpts.cookieDelimiter,
|
144
|
+
res = {};
|
145
|
+
|
146
|
+
res[ACTIVE] = $.cookie(inst.cookiePrefix + ACTIVE);
|
147
|
+
res[EXPANDED] = ($.cookie(inst.cookiePrefix + EXPANDED) || "").split(delim);
|
148
|
+
res[SELECTED] = ($.cookie(inst.cookiePrefix + SELECTED) || "").split(delim);
|
149
|
+
res[FOCUS] = $.cookie(inst.cookiePrefix + FOCUS);
|
150
|
+
return res;
|
151
|
+
};
|
152
|
+
|
153
|
+
|
154
|
+
/* *****************************************************************************
|
155
|
+
* Extension code
|
156
|
+
*/
|
157
|
+
$.ui.fancytree.registerExtension({
|
158
|
+
name: "persist",
|
159
|
+
version: "0.2.0",
|
160
|
+
// Default options for this extension.
|
161
|
+
options: {
|
162
|
+
// appendRequestInfo: false,
|
163
|
+
cookieDelimiter: "~",
|
164
|
+
cookiePrefix: undefined, // 'fancytree-<treeId>-' by default
|
165
|
+
cookie: {
|
166
|
+
raw: false,
|
167
|
+
expires: "",
|
168
|
+
path: "",
|
169
|
+
domain: "",
|
170
|
+
secure: false
|
171
|
+
},
|
172
|
+
expandLazy: false, // true: recursively expand and load lazy nodes
|
173
|
+
overrideSource: false, // true: cookie takes precedence over `source` data attributes.
|
174
|
+
types: "active expanded focus selected"
|
175
|
+
},
|
176
|
+
|
177
|
+
/* Append `key` to a cookie. */
|
178
|
+
_setKey: function(type, key, flag){
|
179
|
+
key = "" + key; // #90
|
180
|
+
var instData = this._local,
|
181
|
+
instOpts = this.options.persist,
|
182
|
+
cookieName = instData.cookiePrefix + type,
|
183
|
+
cookie = $.cookie(cookieName),
|
184
|
+
cookieList = cookie ? cookie.split(instOpts.cookieDelimiter) : [],
|
185
|
+
idx = $.inArray(key, cookieList);
|
186
|
+
// Remove, even if we add a key, so the key is always the last entry
|
187
|
+
if(idx >= 0){
|
188
|
+
cookieList.splice(idx, 1);
|
189
|
+
}
|
190
|
+
// Append key to cookie
|
191
|
+
if(flag){
|
192
|
+
cookieList.push(key);
|
193
|
+
}
|
194
|
+
$.cookie(cookieName, cookieList.join(instOpts.cookieDelimiter), instOpts.cookie);
|
195
|
+
},
|
196
|
+
// Overide virtual methods for this extension.
|
197
|
+
// `this` : is this Fancytree object
|
198
|
+
// `this._super`: the virtual function that was overridden (member of prev. extension or Fancytree)
|
199
|
+
treeInit: function(ctx){
|
200
|
+
var tree = ctx.tree,
|
201
|
+
opts = ctx.options,
|
202
|
+
instData = this._local,
|
203
|
+
instOpts = this.options.persist;
|
204
|
+
|
205
|
+
_assert($.cookie, "Missing required plugin for 'persist' extension: jquery.cookie.js");
|
206
|
+
|
207
|
+
instData.cookiePrefix = instOpts.cookiePrefix || ("fancytree-" + tree._id + "-");
|
208
|
+
instData.storeActive = instOpts.types.indexOf(ACTIVE) >= 0;
|
209
|
+
instData.storeExpanded = instOpts.types.indexOf(EXPANDED) >= 0;
|
210
|
+
instData.storeSelected = instOpts.types.indexOf(SELECTED) >= 0;
|
211
|
+
instData.storeFocus = instOpts.types.indexOf(FOCUS) >= 0;
|
212
|
+
|
213
|
+
// Bind init-handler to apply cookie state
|
214
|
+
tree.$div.bind("fancytreeinit", function(event){
|
215
|
+
var cookie, dfd, i, keyList, node,
|
216
|
+
prevFocus = $.cookie(instData.cookiePrefix + FOCUS); // record this before node.setActive() overrides it;
|
217
|
+
|
218
|
+
tree.debug("COOKIE " + document.cookie);
|
219
|
+
|
220
|
+
cookie = $.cookie(instData.cookiePrefix + EXPANDED);
|
221
|
+
keyList = cookie && cookie.split(instOpts.cookieDelimiter);
|
222
|
+
|
223
|
+
if( instData.storeExpanded ) {
|
224
|
+
// Recursively load nested lazy nodes if expandLazy is 'expand' or 'load'
|
225
|
+
// Also remove expand-cookies for unmatched nodes
|
226
|
+
dfd = _loadLazyNodes(tree, instData, keyList, instOpts.expandLazy ? "expand" : false , null);
|
227
|
+
} else {
|
228
|
+
// nothing to do
|
229
|
+
dfd = new $.Deferred().resolve();
|
230
|
+
}
|
231
|
+
|
232
|
+
dfd.done(function(){
|
233
|
+
// alert("persistent expand done");
|
234
|
+
// if(instData.storeExpanded){
|
235
|
+
// cookie = $.cookie(instData.cookiePrefix + EXPANDED);
|
236
|
+
// if(cookie){
|
237
|
+
// keyList = cookie.split(instOpts.cookieDelimiter);
|
238
|
+
// for(i=0; i<keyList.length; i++){
|
239
|
+
// node = tree.getNodeByKey(keyList[i]);
|
240
|
+
// if(node){
|
241
|
+
// if(node.expanded === undefined || instOpts.overrideSource && (node.expanded === false)){
|
242
|
+
// // node.setExpanded();
|
243
|
+
// node.expanded = true;
|
244
|
+
// node.render();
|
245
|
+
// }
|
246
|
+
// }else{
|
247
|
+
// // node is no longer member of the tree: remove from cookie
|
248
|
+
// instData._setKey(EXPANDED, keyList[i], false);
|
249
|
+
// }
|
250
|
+
// }
|
251
|
+
// }
|
252
|
+
// }
|
253
|
+
if(instData.storeSelected){
|
254
|
+
cookie = $.cookie(instData.cookiePrefix + SELECTED);
|
255
|
+
if(cookie){
|
256
|
+
keyList = cookie.split(instOpts.cookieDelimiter);
|
257
|
+
for(i=0; i<keyList.length; i++){
|
258
|
+
node = tree.getNodeByKey(keyList[i]);
|
259
|
+
if(node){
|
260
|
+
if(node.selected === undefined || instOpts.overrideSource && (node.selected === false)){
|
261
|
+
// node.setSelected();
|
262
|
+
node.selected = true;
|
263
|
+
node.renderStatus();
|
264
|
+
}
|
265
|
+
}else{
|
266
|
+
// node is no longer member of the tree: remove from cookie also
|
267
|
+
instData._setKey(SELECTED, keyList[i], false);
|
268
|
+
}
|
269
|
+
}
|
270
|
+
}
|
271
|
+
}
|
272
|
+
if(instData.storeActive){
|
273
|
+
cookie = $.cookie(instData.cookiePrefix + ACTIVE);
|
274
|
+
if(cookie && (opts.persist.overrideSource || !tree.activeNode)){
|
275
|
+
node = tree.getNodeByKey(cookie);
|
276
|
+
if(node){
|
277
|
+
node.setActive();
|
278
|
+
}
|
279
|
+
}
|
280
|
+
}
|
281
|
+
if(instData.storeFocus && prevFocus){
|
282
|
+
node = tree.getNodeByKey(prevFocus);
|
283
|
+
if(node){
|
284
|
+
node.setFocus();
|
285
|
+
}
|
286
|
+
}
|
287
|
+
});
|
288
|
+
});
|
289
|
+
// Init the tree
|
290
|
+
this._super(ctx);
|
291
|
+
},
|
292
|
+
// treeDestroy: function(ctx){
|
293
|
+
// this._super(ctx);
|
294
|
+
// },
|
295
|
+
nodeSetActive: function(ctx, flag, opts) {
|
296
|
+
var instData = this._local,
|
297
|
+
instOpts = this.options.persist;
|
298
|
+
|
299
|
+
flag = flag !== false;
|
300
|
+
this._super(ctx, flag, opts);
|
301
|
+
|
302
|
+
if(instData.storeActive){
|
303
|
+
$.cookie(instData.cookiePrefix + ACTIVE,
|
304
|
+
this.activeNode ? this.activeNode.key : null,
|
305
|
+
instOpts.cookie);
|
306
|
+
}
|
307
|
+
},
|
308
|
+
nodeSetExpanded: function(ctx, flag, opts) {
|
309
|
+
var res,
|
310
|
+
node = ctx.node,
|
311
|
+
instData = this._local;
|
312
|
+
|
313
|
+
flag = flag !== false;
|
314
|
+
res = this._super(ctx, flag, opts);
|
315
|
+
|
316
|
+
if(instData.storeExpanded){
|
317
|
+
instData._setKey(EXPANDED, node.key, flag);
|
318
|
+
}
|
319
|
+
return res;
|
320
|
+
},
|
321
|
+
nodeSetFocus: function(ctx) {
|
322
|
+
var instData = this._local,
|
323
|
+
instOpts = this.options.persist;
|
324
|
+
|
325
|
+
this._super(ctx);
|
326
|
+
|
327
|
+
if(instData.storeFocus){
|
328
|
+
$.cookie(instData.cookiePrefix + FOCUS,
|
329
|
+
this.focusNode ? this.focusNode.key : null,
|
330
|
+
instOpts.cookie);
|
331
|
+
}
|
332
|
+
},
|
333
|
+
nodeSetSelected: function(ctx, flag) {
|
334
|
+
var node = ctx.node,
|
335
|
+
instData = this._local;
|
336
|
+
|
337
|
+
flag = flag !== false;
|
338
|
+
this._super(ctx, flag);
|
339
|
+
|
340
|
+
if(instData.storeSelected){
|
341
|
+
instData._setKey(SELECTED, node.key, flag);
|
342
|
+
}
|
343
|
+
}
|
344
|
+
});
|
345
|
+
}(jQuery, window, document));
|