PageRenderTime 22ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/assets/js/plugins/filetree/jqueryFileTree.js

https://gitlab.com/my-application.bjoernbartels.earth/theme-taurus
JavaScript | 95 lines | 52 code | 5 blank | 38 comment | 30 complexity | 54f4d5be8818e449f7e9ed47198d845f MD5 | raw file
  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. $.extend($.fn, {
  35. fileTree: function(o, h) {
  36. // Defaults
  37. if( !o ) var o = {};
  38. if( o.root == undefined ) o.root = '/';
  39. if( o.script == undefined ) o.script = 'jqueryFileTree.php';
  40. if( o.folderEvent == undefined ) o.folderEvent = 'click';
  41. if( o.expandSpeed == undefined ) o.expandSpeed= 500;
  42. if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
  43. if( o.expandEasing == undefined ) o.expandEasing = null;
  44. if( o.collapseEasing == undefined ) o.collapseEasing = null;
  45. if( o.multiFolder == undefined ) o.multiFolder = true;
  46. if( o.loadMessage == undefined ) o.loadMessage = 'Loading...';
  47. $(this).each( function() {
  48. function showTree(c, t) {
  49. $(c).addClass('wait');
  50. $(".jqueryFileTree.start").remove();
  51. $.post(o.script, { dir: t }, function(data) {
  52. $(c).find('.start').html('');
  53. $(c).removeClass('wait').append(data);
  54. if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
  55. bindTree(c);
  56. });
  57. }
  58. function bindTree(t) {
  59. $(t).find('LI A').bind(o.folderEvent, function() {
  60. if( $(this).parent().hasClass('directory') ) {
  61. if( $(this).parent().hasClass('collapsed') ) {
  62. // Expand
  63. if( !o.multiFolder ) {
  64. $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
  65. $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
  66. }
  67. $(this).parent().find('UL').remove(); // cleanup
  68. showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
  69. $(this).parent().removeClass('collapsed').addClass('expanded');
  70. } else {
  71. // Collapse
  72. $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
  73. $(this).parent().removeClass('expanded').addClass('collapsed');
  74. }
  75. } else {
  76. h($(this).attr('rel'));
  77. }
  78. return false;
  79. });
  80. // Prevent A from triggering the # on non-click events
  81. if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
  82. }
  83. // Loading message
  84. $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
  85. // Get the initial file list
  86. showTree( $(this), escape(o.root) );
  87. });
  88. }
  89. });
  90. })(jQuery);