source: pro-violet-viettel/www/deploy/20150304/assets/js/jquery/jqueryFileTree.js @ 804

Last change on this file since 804 was 780, checked in by dungnv, 10 years ago
File size: 3.7 KB
Line 
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//
33if(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                       
50                        $(this).each( function() {
51                               
52                                function showTree(c, t) {
53                                        $(c).addClass('wait');
54                                        $(".jqueryFileTree.start").remove();
55                                        $.post(o.script, { dir: t }, function(data) {
56                                                $(c).find('.start').html('');
57                                                $(c).removeClass('wait').append(data);
58                                                if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
59                                                bindTree(c);
60                                        });
61                                }
62                               
63                                function bindTree(t) {
64                                        $(t).find('LI A').bind(o.folderEvent, function() {
65                                                if( $(this).parent().hasClass('directory') ) {
66                                                        if( $(this).parent().hasClass('collapsed') ) {
67                                                                // Expand
68                                                                if( !o.multiFolder ) {
69                                                                        $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
70                                                                        $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
71                                                                }
72                                                                $(this).parent().find('UL').remove(); // cleanup
73                                                                showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
74                                                                $(this).parent().removeClass('collapsed').addClass('expanded');
75                                                        } else {
76                                                                // Collapse
77                                                                $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
78                                                                $(this).parent().removeClass('expanded').addClass('collapsed');
79                                                        }
80                                                } else {
81                                                        h($(this).attr('rel'));
82                                                }
83
84                                                return false;
85                                        });
86                                        // Prevent A from triggering the # on non-click events
87                                        //if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() {return false; });
88                                }
89
90                                // Loading message
91                                $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
92                                // Get the initial file list
93                                showTree( $(this), escape(o.root) );
94                        });
95                }
96        });
97       
98})(jQuery);
Note: See TracBrowser for help on using the repository browser.