if (jQuery) (function($) { $.extend($.fn, { fileTree: function(o, h) { if (!o) var o = {}; if (o.root == undefined) o.root = '/'; if (o.script == undefined) o.script = 'jqueryFileTree.php'; if (o.folderEvent == undefined) o.folderEvent = 'click'; if (o.expandSpeed == undefined) o.expandSpeed = 500; if (o.collapseSpeed == undefined) o.collapseSpeed = 500; if (o.expandEasing == undefined) o.expandEasing = null; if (o.collapseEasing == undefined) o.collapseEasing = null; if (o.multiFolder == undefined) o.multiFolder = true; if (o.loadMessage == undefined) o.loadMessage = 'Loading...'; $(this).each(function() { function showTree(c, t) { $(c).addClass('wait'); $(".jqueryFileTree.start").remove(); $.post(o.script, { dir: t }, function(a) { $(c).find('.start').html(''); $(c).removeClass('wait').append(a); if (o.root == t) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing }); bindTree(c) }) } function bindTree(t) { $(t).find('LI A').bind(o.folderEvent, function() { if ($(this).parent().hasClass('directory')) { if ($(this).parent().hasClass('collapsed')) { if (!o.multiFolder) { $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing }); $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed') } $(this).parent().find('UL').remove(); showTree($(this).parent(), escape($(this).attr('rel').match(/.*\//))); $(this).parent().removeClass('collapsed').addClass('expanded') } else { $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing }); $(this).parent().removeClass('expanded').addClass('collapsed') } } else { h($(this).attr('rel')) } return false }); if (o.folderEvent.toLowerCase != 'click') $(t).find('LI A').bind('click', function() { return false }) } $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>'); showTree($(this), escape(o.root)) }) } }) })(jQuery);