-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
96 lines (94 loc) · 3.59 KB
/
script.js
File metadata and controls
96 lines (94 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
jQuery.fn.explorerTree = function(opts){
var $ = jQuery;
$(this).each(function(){
var tree_opts = $.extend({onselect:null},opts||{}), $tree_root = $(this), tree_selected = opts.current||':', selected_class = tree_opts.classname+"_selecter", dbcl = {id: null, TO: null, clicks: 0},
setselected = function(){
if ($(this).data('itemid') != tree_selected){
var $elem = $(this),
is_ns = $elem.is('.folder>.li>a'),
ajax_call = (is_ns && tree_opts.onselectns === true) || (!is_ns && tree_opts.onselectpage === true),
function_call = (is_ns && typeof tree_opts.onselectnsjs === 'function' ? tree_opts.onselectnsjs : undefined) || (!is_ns && typeof tree_opts.onselectpagejs === 'function' ? tree_opts.onselectpagejs : undefined) || null;
$tree_root.find('.'+selected_class).removeClass(selected_class);
$elem.addClass(selected_class);
tree_selected = $elem.data('itemid');
$tree_root.trigger('tree_selected',[$elem.data('itemid'),$elem,$tree_root]);
if (ajax_call){
$.post(DOKU_BASE + 'lib/exe/ajax.php',
{ call:'plugin_explorertree', operation: 'callback', event: is_ns ? 'ns_selected_cb':'page_selected_cb', loader: tree_opts.loader, route: tree_opts.route, sectok: tree_opts.token,itemid:$elem.data('itemid') },
function(r){
if (r.token) tree_opts.token = r.token;
if (r.error) alert(r.msg);
if (r.func){
try{
var f = window[r.func];
if (typeof f === 'function')
f.apply(null,r.args||[]);
}catch(e){
alert(e);
}
}else if (r.msg){
alert(r.msg);
}
}
);
}
if (function_call){
function_call.apply(null,[$elem.data('itemid'),$elem,$tree_root]);
}
$tree_root.trigger('tree_selected_'+(is_ns?'ns':'page'),[$elem.data('itemid'),$elem,$tree_root]);
}
return true;
},
setselectednodblclick = function(e){
var id = $(this).data('itemid'), $elem = this;
if (dbcl.id != id){
dbcl.clicks = 0;
dbcl.id = id;
dbcl.TO = null;
}
dbcl.clicks++;
if(dbcl.clicks == 1) {
dbcl.TO = setTimeout(function(){
if (dbcl.id == id){
var c = dbcl.clicks;
dbcl.clicks = 0;
if(c == 1){
setselected.call($elem); // on singleclick
}
}
},500);
}
if (dbcl.clicks == 2){
clearTimeout(dbcl.TO);
dbcl.clicks = 0;
}
},
foldinghandler = function(e){
if (!$(e.target).is($('>.li',this)) && !$(e.target).is($('>.li>a',this))) return true;
var $elem = $(this);
if ($(this).hasClass('open')){
$(this).removeClass('open loading').addClass('closed'); return false;
$tree_root.trigger('tree_folder_closed',[$elem.data('itemid'),$elem,$tree_root]);
}
$(this).removeClass('closed').addClass('open');
$tree_root.trigger('tree_folder_open',[$elem.data('itemid'),$elem,$tree_root]);
if (!$elem.has('>ul.'+tree_opts.classname).length){
$(this).addClass('loading');
$.post(DOKU_BASE + 'lib/exe/ajax.php',
{call: 'plugin_explorertree',operation:'explorertree_branch',itemid:$elem.data('itemid'), loader: tree_opts.loader, route: tree_opts.route, sectok: tree_opts.token},
function(r){
if (r.token) tree_opts.token = r.token;
if (r.error) {alert(r.msg); return;}
$elem.append(r.html).removeClass('loading');
$tree_root.trigger('tree_folder_open_ready',[$elem.data('itemid'),$elem,$tree_root]);
}
);
}else{
$tree_root.trigger('tree_folder_open_ready',[$elem.data('itemid'),$elem,$tree_root]);
}
return false;
};
$(this).on('click','.li>a',setselectednodblclick);
$(this).on('dblclick','.folder',foldinghandler);
});
};