diff --git a/emhttp/plugins/dynamix/javascript/jquery.filetree.js b/emhttp/plugins/dynamix/javascript/jquery.filetree.js index f17a9e1d1..744e5982a 100644 --- a/emhttp/plugins/dynamix/javascript/jquery.filetree.js +++ b/emhttp/plugins/dynamix/javascript/jquery.filetree.js @@ -1,121 +1,120 @@ /* jQuery File Tree. Authors - Cory S.N. LaViska & Dave Rogers. Copyright 2008 A Beautiful Site, LLC. - Adapted by Bergware for use in Unraid */ -jQuery && function(e) { - e.extend(e.fn, { - fileTree: function(i, t, l) { - // Initialize pickexclude with an empty string if not provided - void 0 === i.root && (i.root = "/mnt/"), - void 0 === i.top && (i.top = "/mnt/"), - void 0 === i.filter && (i.filter = ""), - void 0 === i.match && (i.match = ".*"), - void 0 === i.script && (i.script = "/webGui/include/FileTree.php"), - void 0 === i.folderEvent && (i.folderEvent = "click"), - void 0 === i.expandSpeed && (i.expandSpeed = 300), - void 0 === i.collapseSpeed && (i.collapseSpeed = 300), - void 0 === i.expandEasing && (i.expandEasing = null), - void 0 === i.collapseEasing && (i.collapseEasing = null), - void 0 === i.multiFolder && (i.multiFolder = !1), - void 0 === i.loadMessage && (i.loadMessage = "Loading..."), - void 0 === i.multiSelect && (i.multiSelect = !1), - void 0 === i.allowBrowsing && (i.allowBrowsing = !1), - void 0 === i.pickexclude && (i.pickexclude = ""); - e(this).each(function() { - function s(r, n, o) { - e(r).addClass("wait"), - e(".jqueryFileTree.start").remove(), - /* Modify the post data to include pickexclude. */ - e.post(i.script, { - dir: n, - root: i.top, - multiSelect: i.multiSelect, - filter: i.filter, - match: i.match, - show_parent: o, - /* Add pickexclude parameter. */ - pickexclude: i.pickexclude - }).done(function(o) { - var d; - e(r).find(".start").html(""), - e(r).removeClass("wait").append(o), - i.root == n ? e(r).find("UL:hidden").show() : e(r).find("UL:hidden").slideDown({ - duration: i.expandSpeed, - easing: i.expandEasing - }), - e(d = r).find("LI A").on(i.folderEvent, function(r) { - r.preventDefault(); - var n = {}; - return n.li = e(this).closest("li"), - n.type = n.li.hasClass("directory") ? "directory" : "file", - n.value = e(this).text(), - n.rel = e(this).prop("rel"), - ".." == e(this).text() ? (i.root = n.rel, l && l(e(this).attr("rel")), a(e(this), "filetreefolderclicked", n), root = e(this).closest("ul.jqueryFileTree"), root.html('"), s(e(root), i.root, i.allowBrowsing)) : e(this).parent().hasClass("directory") ? (e(this).parent().hasClass("collapsed") ? (a(e(this), "filetreeexpand", n), i.multiFolder || (e(this).parent().parent().find("UL").slideUp({ - duration: i.collapseSpeed, - easing: i.collapseEasing - }), e(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed")), e(this).parent().removeClass("collapsed").addClass("expanded"), e(this).parent().find("UL").remove(), s(e(this).parent(), e(this).attr("rel").match(/.*\//)[0], !1)) : (a(e(this), "filetreecollapse", n), e(this).parent().find("UL").slideUp({ - duration: i.collapseSpeed, - easing: i.collapseEasing - }), e(this).parent().removeClass("expanded").addClass("collapsed"), a(e(this), "filetreecollapsed", n)), l && l(e(this).attr("rel")), a(e(this), "filetreefolderclicked", n)) : (t && t(e(this).attr("rel")), a(e(this), "filetreeclicked", n)), !1 - }), - "click" != i.folderEvent.toLowerCase && e(d).find("LI A").on("click", function(e) { - return e.preventDefault(), !1 - }), - a(e(this), "filetreeexpanded", o) - }).fail(function() { - e(r).find(".start").html(""), - e(r).removeClass("wait").append("
  • Unable to get file tree information
  • ") - }) - } - - function a(e, i, t) { - t.trigger = i, - e.trigger(i, t) - } - e(this).html('"), - s(e(this), i.root, i.allowBrowsing), - e(this).on("change", "input:checkbox", function() { - var i = {}; - i.li = e(this).closest("li"), - i.type = i.li.hasClass("directory") ? "directory" : "file", - i.value = i.li.children("a").text(), - i.rel = i.li.children("a").prop("rel"), - i.li.find("input:checkbox").prop("checked", e(this).prop("checked")), - e(this).prop("checked") ? a(e(this), "filetreechecked", i) : a(e(this), "filetreeunchecked", i) +jQuery && function($) { + $.extend($.fn, { + fileTree: function(options, callback, onCancel) { + void 0 === options.root && (options.root = "/mnt/"), + void 0 === options.top && (options.top = "/mnt/"), + void 0 === options.filter && (options.filter = ""), + void 0 === options.match && (options.match = ".*"), + void 0 === options.script && (options.script = "/webGui/include/FileTree.php"), + void 0 === options.folderEvent && (options.folderEvent = "click"), + void 0 === options.expandSpeed && (options.expandSpeed = 300), + void 0 === options.collapseSpeed && (options.collapseSpeed = 300), + void 0 === options.expandEasing && (options.expandEasing = null), + void 0 === options.collapseEasing && (options.collapseEasing = null), + void 0 === options.multiFolder && (options.multiFolder = !1), + void 0 === options.loadMessage && (options.loadMessage = "Loading..."), + void 0 === options.multiSelect && (options.multiSelect = !1), + void 0 === options.allowBrowsing && (options.allowBrowsing = !1), + void 0 === options.pickexclude && (options.pickexclude = ""); + $(this).each(function() { + function showTree($this, dir, showParent) { + $this.addClass("wait"), + $(".jqueryFileTree.start").remove(), + /* Modify the post data to include pickexclude. */ + $.post(options.script, { + dir: dir, + root: options.top, + multiSelect: options.multiSelect, + filter: options.filter, + match: options.match, + show_parent: showParent, + /* Add pickexclude parameter. */ + pickexclude: options.pickexclude + }).done(function(data) { + var $parent; + $this.find(".start").html(""), + $this.removeClass("wait").append(data), + options.root == dir ? $this.find("UL:hidden").show() : $this.find("UL:hidden").slideDown({ + duration: options.expandSpeed, + easing: options.expandEasing + }), + $($parent = $this).find("LI A").on(options.folderEvent, function(event) { + event.preventDefault(); + var node = {}; + return node.li = $(this).closest("li"), + node.type = node.li.hasClass("directory") ? "directory" : "file", + node.value = $(this).text(), + node.rel = $(this).prop("rel"), + ".." == $(this).text() ? (options.root = node.rel, callback && callback($(this).attr("rel")), triggerEvent($(this), "filetreefolderclicked", node), root = $(this).closest("ul.jqueryFileTree"), root.html('"), showTree($(root), options.root, options.allowBrowsing)) : $(this).parent().hasClass("directory") ? ($(this).parent().hasClass("collapsed") ? (triggerEvent($(this), "filetreeexpand", node), options.multiFolder || ($(this).parent().parent().find("UL").slideUp({ + duration: options.collapseSpeed, + easing: options.collapseEasing + }), $(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed")), $(this).parent().removeClass("collapsed").addClass("expanded"), $(this).parent().find("UL").remove(), showTree($(this).parent(), $(this).attr("rel").match(/.*\//)[0], !1)) : (triggerEvent($(this), "filetreecollapse", node), $(this).parent().find("UL").slideUp({ + duration: options.collapseSpeed, + easing: options.collapseEasing + }), $(this).parent().removeClass("expanded").addClass("collapsed"), triggerEvent($(this), "filetreecollapsed", node)), callback && callback($(this).attr("rel")), triggerEvent($(this), "filetreefolderclicked", node)) : (onCancel && onCancel($(this).attr("rel")), triggerEvent($(this), "filetreeclicked", node)), !1 + }), + "click" != options.folderEvent.toLowerCase && $parent.find("LI A").on("click", function(event) { + return event.preventDefault(), !1 + }), + triggerEvent($(this), "filetreeexpanded", data) + }).fail(function() { + $this.find(".start").html(""), + $this.removeClass("wait").append("
  • Unable to get file tree information
  • ") }) - }) + } + + function triggerEvent($elem, event, data) { + data.trigger = event, + $elem.trigger(event, data) + } + $(this).html('"), + showTree($(this), options.root, options.allowBrowsing), + $(this).on("change", "input:checkbox", function() { + var node = {}; + node.li = $(this).closest("li"), + node.type = node.li.hasClass("directory") ? "directory" : "file", + node.value = node.li.children("a").text(), + node.rel = node.li.children("a").prop("rel"), + node.li.find("input:checkbox").prop("checked", $(this).prop("checked")), + $(this).prop("checked") ? triggerEvent($(this), "filetreechecked", node) : triggerEvent($(this), "filetreeunchecked", node) + }) + }) }, - fileTreeAttach: function(i, t, l) { - var s = {}; - e.isFunction(i) ? (e.isFunction(t) && (l = t), t = i) : i && e.extend(s, i), - e(this).each(function() { - var i = e(this), - a = e.extend({}, s, i.data()), - r = i.next(".fileTree"); - 0 === r.length && (e(document).mousedown(function(i) { - var t = e(".fileTree"); - t.is(i.target) || 0 !== t.has(i.target).length || t.slideUp("fast") + fileTreeAttach: function(options, callback, onCancel) { + var settings = {}; + $.isFunction(options) ? ($.isFunction(callback) && (onCancel = callback), callback = options) : options && $.extend(settings, options), + $(this).each(function() { + var $this = $(this), + config = $.extend({}, settings, $this.data()), + $fileTree = $this.next(".fileTree"); + 0 === $fileTree.length && ($(document).mousedown(function(event) { + var $fileTree = $(".fileTree"); + $fileTree.is(event.target) || 0 !== $fileTree.has(event.target).length || $fileTree.slideUp("fast") }), - r = e("
    ", { + $fileTree = $("
    ", { class: "textarea fileTree" }), - i.after(r)), - i.click(function() { - r.is(":visible") ? r.slideUp("fast") : ("" === r.html() && (r.html(' Loading...'), - r.fileTree({ - root: a.pickroot, - top: a.picktop, - filter: (a.pickfilter || "").split(","), - match: a.pickmatch || ".*", + $this.after($fileTree)), + $this.click(function() { + $fileTree.is(":visible") ? $fileTree.slideUp("fast") : ("" === $fileTree.html() && ($fileTree.html(' Loading...'), + $fileTree.fileTree({ + root: config.pickroot, + top: config.picktop, + filter: (config.pickfilter || "").split(","), + match: config.pickmatch || ".*", /* Include pickexclude parameter in fileTreeAttach. */ - pickexclude: a.pickexclude - }, e.isFunction(t) ? t : function(e) { - i.val(e).change(), - a.hasOwnProperty("pickcloseonfile") && r.slideUp("fast") - }, e.isFunction(l) ? l : function(e) { - a.hasOwnProperty("pickfolders") && i.val(e).change() + pickexclude: config.pickexclude + }, $.isFunction(callback) ? callback : function(data) { + $this.val(data).change(), + config.hasOwnProperty("pickcloseonfile") && $fileTree.slideUp("fast") + }, $.isFunction(onCancel) ? onCancel : function(data) { + config.hasOwnProperty("pickfolders") && $this.val(data).change() })), - r.offset({ - left: i.position().left + $fileTree.offset({ + left: $this.position().left }), - r.slideDown("fast")) + $fileTree.slideDown("fast")) }) }) }