PluginProbe
WPIDE – File Manager & Code Editor / 2.1
WPIDE – File Manager & Code Editor v2.1
3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 3.4 All 54 releases
wpide / jqueryFileTree.js

jqueryFileTree.js in WPIDE – File Manager & Code Editor 2.1, at jqueryFileTree.js

118 lines 4.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // jQuery File Tree Plugin
2 //
3 // Version 1.01
4 //
5 // Cory S.N. LaViska
6 // A Beautiful Site (http://abeautifulsite.net/)
7 // 24 March 2008
8 //
9 // Visit http://abeautifulsite.net/notebook.php?article=58 for more information
10 //
11 // Usage: $('.fileTreeDemo').fileTree( options, callback )
12 //
13 // Options: root - root folder to display; default = /
14 // script - location of the serverside AJAX file to use; default = jqueryFileTree.php
15 // folderEvent - event to trigger expand/collapse; default = click
16 // expandSpeed - default = 500 (ms); use -1 for no animation
17 // collapseSpeed - default = 500 (ms); use -1 for no animation
18 // expandEasing - easing function to use on expand (optional)
19 // collapseEasing - easing function to use on collapse (optional)
20 // multiFolder - whether or not to limit the browser to one subfolder at a time
21 // loadMessage - Message to display while initial tree loads (can be HTML)
22 //
23 // History:
24 //
25 // 1.01 - updated to work with foreign characters in directory/file names (12 April 2008)
26 // 1.00 - released (24 March 2008)
27 //
28 // TERMS OF USE
29 //
30 // This plugin is dual-licensed under the GNU General Public License and the MIT License and
31 // is copyright 2008 A Beautiful Site, LLC.
32 //
33 if(jQuery) (function($){
34
35 $.extend($.fn, {
36 fileTree: function(o, h) {
37 // Defaults
38 if( !o ) var o = {};
39 if( o.root == undefined ) o.root = '/';
40 if( o.script == undefined ) o.script = 'jqueryFileTree.php';
41 if( o.folderEvent == undefined ) o.folderEvent = 'click';
42 if( o.expandSpeed == undefined ) o.expandSpeed= 500;
43 if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
44 if( o.expandEasing == undefined ) o.expandEasing = null;
45 if( o.collapseEasing == undefined ) o.collapseEasing = null;
46 if( o.multiFolder == undefined ) o.multiFolder = true;
47 if( o.loadMessage == undefined ) o.loadMessage = 'Loading...';
48
49 $(this).each( function() {
50
51 function showTree(c, t) {
52 $(c).addClass('wait');
53 $(".jqueryFileTree.start").remove();
54 $.post(o.script, { dir: t, action: 'jqueryFileTree', _wpnonce: $('#_wpnonce').val(), _wp_http_referer: $('#_wp_http_referer').val() }, function(data) {
55 $(c).find('.start').html('');
56 $(c).removeClass('wait').append(data);
57 if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
58 bindTree(c);
59
60 //make files draggable
61 $("li.file", $("#wpide_file_browser") ).draggable({
62 cursor: "move",
63 handle: "a",
64 cursorAt: { top: 20, left: 20 },
65 helper: function( event ) {
66 return $( "<div>Image Path</div>" );
67 }
68 });
69
70 });
71 }
72
73 function bindTree(t) {
74 $(t).find('LI A').bind(o.folderEvent, function() {
75 if( $(this).parent().hasClass('directory') ) {
76 if( $(this).parent().hasClass('collapsed') ) {
77 // Expand
78 if( !o.multiFolder ) {
79 $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
80 $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
81 }
82 $(this).parent().find('UL').remove(); // cleanup
83 showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
84 $(this).parent().removeClass('collapsed').addClass('expanded');
85 } else {
86 // Collapse
87 $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
88 $(this).parent().removeClass('expanded').addClass('collapsed');
89 }
90 } else {
91 h($(this).parent(), $(this).attr('rel'));
92 }
93
94
95
96 return false;
97 });
98 // Prevent A from triggering the # on non-click events
99 if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
100 }
101 // Loading message
102 $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
103 // Get the initial file list
104 jQuery.ajaxSetup({async:false}); //we need to wait until we get the response
105 showTree( $(this), escape(o.root) );
106 jQuery.ajaxSetup({async:true}); //enable async again
107
108
109
110 //if nothing returned then let user know something wrong with permissions
111 if ( $(this).children('.jqueryFileTree').length==0 ){
112 alert('WPide is having trouble accessing your files.');
113 }
114 });
115 }
116 });
117
118 })(jQuery);