mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-28 05:54:48 -04:00
Switches indentation to tabs.
This commit is contained in:
parent
231ba3013b
commit
20858a1f43
39 changed files with 3437 additions and 3440 deletions
|
@ -1,115 +1,115 @@
|
|||
|
||||
(function ($, H5AI) {
|
||||
|
||||
H5AI.connector = (function () {
|
||||
H5AI.connector = (function () {
|
||||
|
||||
var cache = {},
|
||||
pathnameStatusCache = {},
|
||||
contentTypeRegEx = /^text\/html;h5ai=/,
|
||||
getPath = function (folder, tableRow) {
|
||||
var cache = {},
|
||||
pathnameStatusCache = {},
|
||||
contentTypeRegEx = /^text\/html;h5ai=/,
|
||||
getPath = function (folder, tableRow) {
|
||||
|
||||
var absHref = H5AI.util.getAbsHref(folder, tableRow),
|
||||
path = cache[absHref];
|
||||
var absHref = H5AI.util.getAbsHref(folder, tableRow),
|
||||
path = cache[absHref];
|
||||
|
||||
if (!path) {
|
||||
path = H5AI.Path(folder, tableRow);
|
||||
if (!path.isParentFolder) {
|
||||
cache[path.absHref] = path;
|
||||
}
|
||||
}
|
||||
if (!path) {
|
||||
path = H5AI.Path(folder, tableRow);
|
||||
if (!path.isParentFolder) {
|
||||
cache[path.absHref] = path;
|
||||
}
|
||||
}
|
||||
|
||||
return path;
|
||||
},
|
||||
fetchStatus = function (pathname, callback) {
|
||||
return path;
|
||||
},
|
||||
fetchStatus = function (pathname, callback) {
|
||||
|
||||
if (H5AI.core.settings.folderStatus[pathname]) {
|
||||
callback(H5AI.core.settings.folderStatus[pathname]);
|
||||
return;
|
||||
} else if (pathnameStatusCache[pathname]) {
|
||||
callback(pathnameStatusCache[pathname]);
|
||||
return;
|
||||
}
|
||||
if (H5AI.core.settings.folderStatus[pathname]) {
|
||||
callback(H5AI.core.settings.folderStatus[pathname]);
|
||||
return;
|
||||
} else if (pathnameStatusCache[pathname]) {
|
||||
callback(pathnameStatusCache[pathname]);
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: pathname,
|
||||
type: "HEAD",
|
||||
complete: function (xhr) {
|
||||
$.ajax({
|
||||
url: pathname,
|
||||
type: "HEAD",
|
||||
complete: function (xhr) {
|
||||
|
||||
var status = xhr.status;
|
||||
var status = xhr.status;
|
||||
|
||||
if (status === 200 && contentTypeRegEx.test(xhr.getResponseHeader("Content-Type"))) {
|
||||
status = "h5ai";
|
||||
}
|
||||
pathnameStatusCache[pathname] = status;
|
||||
callback(status);
|
||||
}
|
||||
});
|
||||
},
|
||||
updatePath = function (path) {
|
||||
if (status === 200 && contentTypeRegEx.test(xhr.getResponseHeader("Content-Type"))) {
|
||||
status = "h5ai";
|
||||
}
|
||||
pathnameStatusCache[pathname] = status;
|
||||
callback(status);
|
||||
}
|
||||
});
|
||||
},
|
||||
updatePath = function (path) {
|
||||
|
||||
if (path.isFolder && !path.isParentFolder && path.status === undefined) {
|
||||
fetchStatus(path.absHref, function (status) {
|
||||
if (path.isFolder && !path.isParentFolder && path.status === undefined) {
|
||||
fetchStatus(path.absHref, function (status) {
|
||||
|
||||
if (status !== "h5ai") {
|
||||
path.status = status;
|
||||
}
|
||||
H5AI.html.updateHtml(path);
|
||||
H5AI.core.linkHoverStates();
|
||||
});
|
||||
}
|
||||
},
|
||||
updatePaths = function () {
|
||||
if (status !== "h5ai") {
|
||||
path.status = status;
|
||||
}
|
||||
H5AI.html.updateHtml(path);
|
||||
H5AI.core.linkHoverStates();
|
||||
});
|
||||
}
|
||||
},
|
||||
updatePaths = function () {
|
||||
|
||||
$.each(cache, function (ref, cached) {
|
||||
updatePath(cached);
|
||||
});
|
||||
},
|
||||
fetchStatusAndContent = function (pathname, includeParent, callback) {
|
||||
$.each(cache, function (ref, cached) {
|
||||
updatePath(cached);
|
||||
});
|
||||
},
|
||||
fetchStatusAndContent = function (pathname, includeParent, callback) {
|
||||
|
||||
fetchStatus(pathname, function (status) {
|
||||
fetchStatus(pathname, function (status) {
|
||||
|
||||
if (status !== "h5ai") {
|
||||
callback(status, {});
|
||||
return;
|
||||
}
|
||||
if (status !== "h5ai") {
|
||||
callback(status, {});
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: pathname,
|
||||
type: "GET",
|
||||
dataType: "html",
|
||||
error: function (xhr) {
|
||||
$.ajax({
|
||||
url: pathname,
|
||||
type: "GET",
|
||||
dataType: "html",
|
||||
error: function (xhr) {
|
||||
|
||||
callback(xhr.status, {}); // since it was checked before this should never happen
|
||||
},
|
||||
success: function (html, status, xhr) {
|
||||
callback(xhr.status, {}); // since it was checked before this should never happen
|
||||
},
|
||||
success: function (html, status, xhr) {
|
||||
|
||||
var content = {};
|
||||
var content = {};
|
||||
|
||||
if (!contentTypeRegEx.test(xhr.getResponseHeader("Content-Type"))) {
|
||||
callback(xhr.status, {}); // since it was checked before this should never happen
|
||||
return;
|
||||
}
|
||||
if (!contentTypeRegEx.test(xhr.getResponseHeader("Content-Type"))) {
|
||||
callback(xhr.status, {}); // since it was checked before this should never happen
|
||||
return;
|
||||
}
|
||||
|
||||
$(html).find("#table td").closest("tr").each(function () {
|
||||
$(html).find("#table td").closest("tr").each(function () {
|
||||
|
||||
var path = getPath(pathname, this);
|
||||
var path = getPath(pathname, this);
|
||||
|
||||
if (path.isFolder && (!path.isParentFolder || includeParent)) {
|
||||
content[path.absHref] = path;
|
||||
updatePath(path);
|
||||
}
|
||||
});
|
||||
callback("h5ai", content);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
if (path.isFolder && (!path.isParentFolder || includeParent)) {
|
||||
content[path.absHref] = path;
|
||||
updatePath(path);
|
||||
}
|
||||
});
|
||||
callback("h5ai", content);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
getPath: getPath,
|
||||
updatePaths: updatePaths,
|
||||
fetchStatusAndContent: fetchStatusAndContent
|
||||
};
|
||||
}());
|
||||
return {
|
||||
getPath: getPath,
|
||||
updatePaths: updatePaths,
|
||||
fetchStatusAndContent: fetchStatusAndContent
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery, H5AI));
|
||||
|
|
|
@ -1,399 +1,399 @@
|
|||
|
||||
(function (window, $, H5AI, config) {
|
||||
|
||||
H5AI.core = (function () {
|
||||
H5AI.core = (function () {
|
||||
|
||||
var $window = $(window),
|
||||
defaults = {
|
||||
store: {
|
||||
viewmode: "h5ai.pref.viewmode",
|
||||
lang: "h5ai.pref.lang"
|
||||
},
|
||||
callbacks: {
|
||||
pathClick: []
|
||||
},
|
||||
var $window = $(window),
|
||||
defaults = {
|
||||
store: {
|
||||
viewmode: "h5ai.pref.viewmode",
|
||||
lang: "h5ai.pref.lang"
|
||||
},
|
||||
callbacks: {
|
||||
pathClick: []
|
||||
},
|
||||
|
||||
rootAbsHref: "/",
|
||||
h5aiAbsHref: "/_h5ai/",
|
||||
customHeader: "_h5ai.header.html",
|
||||
customFooter: "_h5ai.footer.html",
|
||||
rootAbsHref: "/",
|
||||
h5aiAbsHref: "/_h5ai/",
|
||||
customHeader: "_h5ai.header.html",
|
||||
customFooter: "_h5ai.footer.html",
|
||||
|
||||
viewmodes: ["details", "icons"],
|
||||
sortorder: "na",
|
||||
showTree: true,
|
||||
slideTree: true,
|
||||
folderStatus: {},
|
||||
lang: null,
|
||||
useBrowserLang: true,
|
||||
setParentFolderLabels: true,
|
||||
linkHoverStates: true,
|
||||
dateFormat: "yyyy-MM-dd HH:mm",
|
||||
showThumbs: false,
|
||||
zippedDownload: false
|
||||
},
|
||||
settings = $.extend({}, defaults, config.options),
|
||||
currentDateFormat = settings.dateFormat,
|
||||
extToFileType = (function (types) {
|
||||
var map = {};
|
||||
$.each(types, function (type, exts) {
|
||||
$.each(exts, function (idx, ext) {
|
||||
map[ext] = type;
|
||||
});
|
||||
});
|
||||
return map;
|
||||
}(config.types)),
|
||||
api = function () {
|
||||
viewmodes: ["details", "icons"],
|
||||
sortorder: "na",
|
||||
showTree: true,
|
||||
slideTree: true,
|
||||
folderStatus: {},
|
||||
lang: null,
|
||||
useBrowserLang: true,
|
||||
setParentFolderLabels: true,
|
||||
linkHoverStates: true,
|
||||
dateFormat: "yyyy-MM-dd HH:mm",
|
||||
showThumbs: false,
|
||||
zippedDownload: false
|
||||
},
|
||||
settings = $.extend({}, defaults, config.options),
|
||||
currentDateFormat = settings.dateFormat,
|
||||
extToFileType = (function (types) {
|
||||
var map = {};
|
||||
$.each(types, function (type, exts) {
|
||||
$.each(exts, function (idx, ext) {
|
||||
map[ext] = type;
|
||||
});
|
||||
});
|
||||
return map;
|
||||
}(config.types)),
|
||||
api = function () {
|
||||
|
||||
return settings.h5aiAbsHref + "php/api.php";
|
||||
},
|
||||
image = function (id) {
|
||||
return settings.h5aiAbsHref + "php/api.php";
|
||||
},
|
||||
image = function (id) {
|
||||
|
||||
return settings.h5aiAbsHref + "images/" + id + ".png";
|
||||
},
|
||||
icon = function (id, big) {
|
||||
return settings.h5aiAbsHref + "images/" + id + ".png";
|
||||
},
|
||||
icon = function (id, big) {
|
||||
|
||||
return settings.h5aiAbsHref + "icons/" + (big ? "48x48" : "16x16") + "/" + id + ".png";
|
||||
},
|
||||
viewmode = function (viewmode) {
|
||||
return settings.h5aiAbsHref + "icons/" + (big ? "48x48" : "16x16") + "/" + id + ".png";
|
||||
},
|
||||
viewmode = function (viewmode) {
|
||||
|
||||
var $viewDetails = $("#viewdetails"),
|
||||
$viewIcons = $("#viewicons"),
|
||||
$extended = $("#extended");
|
||||
var $viewDetails = $("#viewdetails"),
|
||||
$viewIcons = $("#viewicons"),
|
||||
$extended = $("#extended");
|
||||
|
||||
if (viewmode) {
|
||||
amplify.store(settings.store.viewmode, viewmode);
|
||||
} else {
|
||||
viewmode = amplify.store(settings.store.viewmode);
|
||||
}
|
||||
viewmode = $.inArray(viewmode, settings.viewmodes) >= 0 ? viewmode : settings.viewmodes[0];
|
||||
if (viewmode) {
|
||||
amplify.store(settings.store.viewmode, viewmode);
|
||||
} else {
|
||||
viewmode = amplify.store(settings.store.viewmode);
|
||||
}
|
||||
viewmode = $.inArray(viewmode, settings.viewmodes) >= 0 ? viewmode : settings.viewmodes[0];
|
||||
|
||||
$viewDetails.add($viewIcons).removeClass("current");
|
||||
if (viewmode === "details") {
|
||||
$viewDetails.addClass("current");
|
||||
$extended.addClass("details-view").removeClass("icons-view").show();
|
||||
} else if (viewmode === "icons") {
|
||||
$viewIcons.addClass("current");
|
||||
$extended.removeClass("details-view").addClass("icons-view").show();
|
||||
} else {
|
||||
$extended.hide();
|
||||
}
|
||||
},
|
||||
initTopSpace = function () {
|
||||
$viewDetails.add($viewIcons).removeClass("current");
|
||||
if (viewmode === "details") {
|
||||
$viewDetails.addClass("current");
|
||||
$extended.addClass("details-view").removeClass("icons-view").show();
|
||||
} else if (viewmode === "icons") {
|
||||
$viewIcons.addClass("current");
|
||||
$extended.removeClass("details-view").addClass("icons-view").show();
|
||||
} else {
|
||||
$extended.hide();
|
||||
}
|
||||
},
|
||||
initTopSpace = function () {
|
||||
|
||||
var $body = $("body"),
|
||||
$tree = $("#tree"),
|
||||
adjustTopSpace = function () {
|
||||
var $body = $("body"),
|
||||
$tree = $("#tree"),
|
||||
adjustTopSpace = function () {
|
||||
|
||||
var winHeight = $window.height(),
|
||||
navHeight = $("body > nav").outerHeight(),
|
||||
footerHeight = $("body > footer").outerHeight(),
|
||||
contentSpacing = 50,
|
||||
treeSpacing = 30;
|
||||
var winHeight = $window.height(),
|
||||
navHeight = $("body > nav").outerHeight(),
|
||||
footerHeight = $("body > footer").outerHeight(),
|
||||
contentSpacing = 50,
|
||||
treeSpacing = 30;
|
||||
|
||||
$body.css({
|
||||
"margin-top": navHeight + contentSpacing,
|
||||
"margin-bottom": footerHeight + contentSpacing
|
||||
});
|
||||
$body.css({
|
||||
"margin-top": navHeight + contentSpacing,
|
||||
"margin-bottom": footerHeight + contentSpacing
|
||||
});
|
||||
|
||||
$tree.css({
|
||||
top: navHeight + treeSpacing,
|
||||
height: winHeight - navHeight - footerHeight - 18 - 2 * treeSpacing
|
||||
});
|
||||
$tree.css({
|
||||
top: navHeight + treeSpacing,
|
||||
height: winHeight - navHeight - footerHeight - 18 - 2 * treeSpacing
|
||||
});
|
||||
|
||||
try {
|
||||
$tree.get(0).updateScrollbar();
|
||||
} catch (err) {}
|
||||
};
|
||||
try {
|
||||
$tree.get(0).updateScrollbar();
|
||||
} catch (err) {}
|
||||
};
|
||||
|
||||
$window.resize(function () {
|
||||
adjustTopSpace();
|
||||
});
|
||||
adjustTopSpace();
|
||||
},
|
||||
initViews = function () {
|
||||
$window.resize(function () {
|
||||
adjustTopSpace();
|
||||
});
|
||||
adjustTopSpace();
|
||||
},
|
||||
initViews = function () {
|
||||
|
||||
var $navbar = $("#navbar"),
|
||||
$extended = $("#extended");
|
||||
var $navbar = $("#navbar"),
|
||||
$extended = $("#extended");
|
||||
|
||||
$("#table").remove();
|
||||
$("#table").remove();
|
||||
|
||||
if (settings.viewmodes.length > 1) {
|
||||
if ($.inArray("icons", settings.viewmodes) >= 0) {
|
||||
$("<li id='viewicons' class='view'><a href='#'><img alt='view-icons' /><span class='l10n-icons'>icons</span></a></li>")
|
||||
.find("img").attr("src", image("view-icons")).end()
|
||||
.click(function () { viewmode("icons"); })
|
||||
.appendTo($navbar);
|
||||
}
|
||||
if ($.inArray("details", settings.viewmodes) >= 0) {
|
||||
$("<li id='viewdetails' class='view'><a href='#'><img alt='view-details' /><span class='l10n-details'>details</span></a></li>")
|
||||
.find("img").attr("src", image("view-details")).end()
|
||||
.click(function () { viewmode("details"); })
|
||||
.appendTo($navbar);
|
||||
}
|
||||
}
|
||||
if (settings.viewmodes.length > 1) {
|
||||
if ($.inArray("icons", settings.viewmodes) >= 0) {
|
||||
$("<li id='viewicons' class='view'><a href='#'><img alt='view-icons' /><span class='l10n-icons'>icons</span></a></li>")
|
||||
.find("img").attr("src", image("view-icons")).end()
|
||||
.click(function () { viewmode("icons"); })
|
||||
.appendTo($navbar);
|
||||
}
|
||||
if ($.inArray("details", settings.viewmodes) >= 0) {
|
||||
$("<li id='viewdetails' class='view'><a href='#'><img alt='view-details' /><span class='l10n-details'>details</span></a></li>")
|
||||
.find("img").attr("src", image("view-details")).end()
|
||||
.click(function () { viewmode("details"); })
|
||||
.appendTo($navbar);
|
||||
}
|
||||
}
|
||||
|
||||
// status update
|
||||
$extended.find(".entry a").hover(
|
||||
function () {
|
||||
if ($extended.hasClass("icons-view")) {
|
||||
var $this = $(this);
|
||||
$(".status.default").hide();
|
||||
$(".status.dynamic")
|
||||
.empty()
|
||||
.append($this.find(".label").clone())
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".date").clone())
|
||||
.show();
|
||||
// status update
|
||||
$extended.find(".entry a").hover(
|
||||
function () {
|
||||
if ($extended.hasClass("icons-view")) {
|
||||
var $this = $(this);
|
||||
$(".status.default").hide();
|
||||
$(".status.dynamic")
|
||||
.empty()
|
||||
.append($this.find(".label").clone())
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".date").clone())
|
||||
.show();
|
||||
|
||||
if (!$this.closest(".entry").hasClass("folder")) {
|
||||
$(".status.dynamic")
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".size").clone());
|
||||
}
|
||||
}
|
||||
},
|
||||
function () {
|
||||
$(".status.default").show();
|
||||
$(".status.dynamic").empty().hide();
|
||||
}
|
||||
);
|
||||
},
|
||||
shiftTree = function (forceVisible, dontAnimate) {
|
||||
if (!$this.closest(".entry").hasClass("folder")) {
|
||||
$(".status.dynamic")
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".size").clone());
|
||||
}
|
||||
}
|
||||
},
|
||||
function () {
|
||||
$(".status.default").show();
|
||||
$(".status.dynamic").empty().hide();
|
||||
}
|
||||
);
|
||||
},
|
||||
shiftTree = function (forceVisible, dontAnimate) {
|
||||
|
||||
var $tree = $("#tree"),
|
||||
$extended = $("#extended");
|
||||
var $tree = $("#tree"),
|
||||
$extended = $("#extended");
|
||||
|
||||
if ((settings.slideTree && $tree.outerWidth() < $extended.offset().left) || forceVisible) {
|
||||
if (dontAnimate) {
|
||||
$tree.stop().css({ left: 0 });
|
||||
} else {
|
||||
$tree.stop().animate({ left: 0 });
|
||||
}
|
||||
} else {
|
||||
if (dontAnimate) {
|
||||
$tree.stop().css({ left: 18 - $tree.outerWidth() });
|
||||
} else {
|
||||
$tree.stop().animate({ left: 18 - $tree.outerWidth() });
|
||||
}
|
||||
}
|
||||
},
|
||||
initTree = function () {
|
||||
if ((settings.slideTree && $tree.outerWidth() < $extended.offset().left) || forceVisible) {
|
||||
if (dontAnimate) {
|
||||
$tree.stop().css({ left: 0 });
|
||||
} else {
|
||||
$tree.stop().animate({ left: 0 });
|
||||
}
|
||||
} else {
|
||||
if (dontAnimate) {
|
||||
$tree.stop().css({ left: 18 - $tree.outerWidth() });
|
||||
} else {
|
||||
$tree.stop().animate({ left: 18 - $tree.outerWidth() });
|
||||
}
|
||||
}
|
||||
},
|
||||
initTree = function () {
|
||||
|
||||
$("#tree").hover(
|
||||
function () { shiftTree(true); },
|
||||
function () { shiftTree(); }
|
||||
);
|
||||
$window.resize(function () { shiftTree(); });
|
||||
shiftTree(false, true);
|
||||
},
|
||||
selectLinks = function (href) {
|
||||
$("#tree").hover(
|
||||
function () { shiftTree(true); },
|
||||
function () { shiftTree(); }
|
||||
);
|
||||
$window.resize(function () { shiftTree(); });
|
||||
shiftTree(false, true);
|
||||
},
|
||||
selectLinks = function (href) {
|
||||
|
||||
var elements = [];
|
||||
$("a[href^='/']").each(function () {
|
||||
var elements = [];
|
||||
$("a[href^='/']").each(function () {
|
||||
|
||||
if ($(this).attr("href") === href) {
|
||||
elements.push(this);
|
||||
}
|
||||
});
|
||||
return $(elements);
|
||||
},
|
||||
linkHoverStates = function () {
|
||||
if ($(this).attr("href") === href) {
|
||||
elements.push(this);
|
||||
}
|
||||
});
|
||||
return $(elements);
|
||||
},
|
||||
linkHoverStates = function () {
|
||||
|
||||
if (settings.linkHoverStates) {
|
||||
$("a[href^='/']:not(.linkedHoverStates)").each(function () {
|
||||
if (settings.linkHoverStates) {
|
||||
$("a[href^='/']:not(.linkedHoverStates)").each(function () {
|
||||
|
||||
var $a = $(this).addClass("linkedHoverStates"),
|
||||
href = $a.attr("href");
|
||||
var $a = $(this).addClass("linkedHoverStates"),
|
||||
href = $a.attr("href");
|
||||
|
||||
$a.hover(
|
||||
function () { selectLinks(href).addClass("hover"); },
|
||||
function () { selectLinks(href).removeClass("hover"); }
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
formatDates = function (dateFormat) {
|
||||
$a.hover(
|
||||
function () { selectLinks(href).addClass("hover"); },
|
||||
function () { selectLinks(href).removeClass("hover"); }
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
formatDates = function (dateFormat) {
|
||||
|
||||
if (dateFormat) {
|
||||
currentDateFormat = dateFormat;
|
||||
}
|
||||
if (dateFormat) {
|
||||
currentDateFormat = dateFormat;
|
||||
}
|
||||
|
||||
$("#extended .entry .date").each(function () {
|
||||
$("#extended .entry .date").each(function () {
|
||||
|
||||
var $this = $(this),
|
||||
time = $this.data("time"),
|
||||
formattedDate = time ? new Date(time).toString(currentDateFormat) : "";
|
||||
var $this = $(this),
|
||||
time = $this.data("time"),
|
||||
formattedDate = time ? new Date(time).toString(currentDateFormat) : "";
|
||||
|
||||
$this.text(formattedDate);
|
||||
});
|
||||
},
|
||||
localize = function (langs, lang, useBrowserLang) {
|
||||
$this.text(formattedDate);
|
||||
});
|
||||
},
|
||||
localize = function (langs, lang, useBrowserLang) {
|
||||
|
||||
var storedLang = amplify.store(settings.store.lang),
|
||||
browserLang, selected, key;
|
||||
var storedLang = amplify.store(settings.store.lang),
|
||||
browserLang, selected, key;
|
||||
|
||||
if (langs[storedLang]) {
|
||||
lang = storedLang;
|
||||
} else if (useBrowserLang) {
|
||||
browserLang = navigator.language;
|
||||
if (langs[browserLang]) {
|
||||
lang = browserLang;
|
||||
} else if (browserLang.length > 2 && langs[browserLang.substr(0, 2)]) {
|
||||
lang = browserLang.substr(0, 2);
|
||||
}
|
||||
}
|
||||
if (langs[storedLang]) {
|
||||
lang = storedLang;
|
||||
} else if (useBrowserLang) {
|
||||
browserLang = navigator.language;
|
||||
if (langs[browserLang]) {
|
||||
lang = browserLang;
|
||||
} else if (browserLang.length > 2 && langs[browserLang.substr(0, 2)]) {
|
||||
lang = browserLang.substr(0, 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (!langs[lang]) {
|
||||
lang = "en";
|
||||
}
|
||||
if (!langs[lang]) {
|
||||
lang = "en";
|
||||
}
|
||||
|
||||
selected = langs[lang];
|
||||
if (selected) {
|
||||
$.each(selected, function (key, value) {
|
||||
$(".l10n-" + key).text(value);
|
||||
});
|
||||
$(".lang").text(lang);
|
||||
$(".langOption").removeClass("current");
|
||||
$(".langOption." + lang).addClass("current");
|
||||
}
|
||||
selected = langs[lang];
|
||||
if (selected) {
|
||||
$.each(selected, function (key, value) {
|
||||
$(".l10n-" + key).text(value);
|
||||
});
|
||||
$(".lang").text(lang);
|
||||
$(".langOption").removeClass("current");
|
||||
$(".langOption." + lang).addClass("current");
|
||||
}
|
||||
|
||||
formatDates(selected.dateFormat || settings.dateFormat);
|
||||
},
|
||||
initLangSelector = function (langs) {
|
||||
formatDates(selected.dateFormat || settings.dateFormat);
|
||||
},
|
||||
initLangSelector = function (langs) {
|
||||
|
||||
var $langOptions = $("#langSelector .langOptions"),
|
||||
sortedLangsKeys = [],
|
||||
$ul;
|
||||
var $langOptions = $("#langSelector .langOptions"),
|
||||
sortedLangsKeys = [],
|
||||
$ul;
|
||||
|
||||
$.each(langs, function (lang) {
|
||||
sortedLangsKeys.push(lang);
|
||||
});
|
||||
sortedLangsKeys.sort();
|
||||
$.each(langs, function (lang) {
|
||||
sortedLangsKeys.push(lang);
|
||||
});
|
||||
sortedLangsKeys.sort();
|
||||
|
||||
$ul = $("<ul />");
|
||||
$.each(sortedLangsKeys, function (idx, lang) {
|
||||
$("<li class='langOption' />")
|
||||
.addClass(lang)
|
||||
.text(lang + " - " + langs[lang].lang)
|
||||
.appendTo($ul)
|
||||
.click(function () {
|
||||
amplify.store(settings.store.lang, lang);
|
||||
localize(langs, lang, false);
|
||||
});
|
||||
});
|
||||
$langOptions
|
||||
.append($ul)
|
||||
.scrollpanel();
|
||||
$ul = $("<ul />");
|
||||
$.each(sortedLangsKeys, function (idx, lang) {
|
||||
$("<li class='langOption' />")
|
||||
.addClass(lang)
|
||||
.text(lang + " - " + langs[lang].lang)
|
||||
.appendTo($ul)
|
||||
.click(function () {
|
||||
amplify.store(settings.store.lang, lang);
|
||||
localize(langs, lang, false);
|
||||
});
|
||||
});
|
||||
$langOptions
|
||||
.append($ul)
|
||||
.scrollpanel();
|
||||
|
||||
$("#langSelector").hover(
|
||||
function () {
|
||||
$langOptions
|
||||
.css("top", "-" + $langOptions.outerHeight() + "px")
|
||||
.stop(true, true)
|
||||
.fadeIn();
|
||||
$langOptions.get(0).updateScrollbar();
|
||||
},
|
||||
function () {
|
||||
$langOptions
|
||||
.stop(true, true)
|
||||
.fadeOut();
|
||||
}
|
||||
);
|
||||
},
|
||||
onIndicatorClick = function (event) {
|
||||
$("#langSelector").hover(
|
||||
function () {
|
||||
$langOptions
|
||||
.css("top", "-" + $langOptions.outerHeight() + "px")
|
||||
.stop(true, true)
|
||||
.fadeIn();
|
||||
$langOptions.get(0).updateScrollbar();
|
||||
},
|
||||
function () {
|
||||
$langOptions
|
||||
.stop(true, true)
|
||||
.fadeOut();
|
||||
}
|
||||
);
|
||||
},
|
||||
onIndicatorClick = function (event) {
|
||||
|
||||
var $indicator = $(this),
|
||||
$entry = $indicator.closest(".entry"),
|
||||
updateTreeScrollbar = $("#tree").get(0).updateScrollbar;
|
||||
var $indicator = $(this),
|
||||
$entry = $indicator.closest(".entry"),
|
||||
updateTreeScrollbar = $("#tree").get(0).updateScrollbar;
|
||||
|
||||
if ($indicator.hasClass("unknown")) {
|
||||
$.get(api(), { "action": "tree", "href": $entry.find("> a").attr("href") }, function (html) {
|
||||
if ($indicator.hasClass("unknown")) {
|
||||
$.get(api(), { "action": "tree", "href": $entry.find("> a").attr("href") }, function (html) {
|
||||
|
||||
var $content = $(html);
|
||||
var $content = $(html);
|
||||
|
||||
$indicator.removeClass("unknown");
|
||||
if ($content.find("> li").size() === 0) {
|
||||
$indicator.replaceWith($("<span class='blank' />"));
|
||||
} else {
|
||||
$indicator.addClass("open");
|
||||
$entry.find("> .content").replaceWith($content);
|
||||
updateTreeScrollbar();
|
||||
$content.find(".indicator:not(.initiated)")
|
||||
.click(onIndicatorClick)
|
||||
.addClass("initiated");
|
||||
}
|
||||
});
|
||||
} else if ($indicator.hasClass("open")) {
|
||||
$indicator.removeClass("open");
|
||||
updateTreeScrollbar(true);
|
||||
$entry.find("> .content").slideUp(function () {
|
||||
updateTreeScrollbar();
|
||||
});
|
||||
} else {
|
||||
$indicator.addClass("open");
|
||||
updateTreeScrollbar(true);
|
||||
$entry.find("> .content").slideDown(function () {
|
||||
updateTreeScrollbar();
|
||||
});
|
||||
}
|
||||
},
|
||||
initIndicators = function () {
|
||||
$indicator.removeClass("unknown");
|
||||
if ($content.find("> li").size() === 0) {
|
||||
$indicator.replaceWith($("<span class='blank' />"));
|
||||
} else {
|
||||
$indicator.addClass("open");
|
||||
$entry.find("> .content").replaceWith($content);
|
||||
updateTreeScrollbar();
|
||||
$content.find(".indicator:not(.initiated)")
|
||||
.click(onIndicatorClick)
|
||||
.addClass("initiated");
|
||||
}
|
||||
});
|
||||
} else if ($indicator.hasClass("open")) {
|
||||
$indicator.removeClass("open");
|
||||
updateTreeScrollbar(true);
|
||||
$entry.find("> .content").slideUp(function () {
|
||||
updateTreeScrollbar();
|
||||
});
|
||||
} else {
|
||||
$indicator.addClass("open");
|
||||
updateTreeScrollbar(true);
|
||||
$entry.find("> .content").slideDown(function () {
|
||||
updateTreeScrollbar();
|
||||
});
|
||||
}
|
||||
},
|
||||
initIndicators = function () {
|
||||
|
||||
$("#tree .entry.folder .indicator:not(.initiated)")
|
||||
.click(onIndicatorClick)
|
||||
.addClass("initiated");
|
||||
},
|
||||
getFileType = function (filename) {
|
||||
$("#tree .entry.folder .indicator:not(.initiated)")
|
||||
.click(onIndicatorClick)
|
||||
.addClass("initiated");
|
||||
},
|
||||
getFileType = function (filename) {
|
||||
|
||||
var dotidx = filename.lastIndexOf('.'),
|
||||
ext = dotidx >= 0 ? filename.substr(dotidx) : filename;
|
||||
var dotidx = filename.lastIndexOf('.'),
|
||||
ext = dotidx >= 0 ? filename.substr(dotidx) : filename;
|
||||
|
||||
return extToFileType[ext.toLowerCase()] || "unknown";
|
||||
},
|
||||
formatSizes = function () {
|
||||
return extToFileType[ext.toLowerCase()] || "unknown";
|
||||
},
|
||||
formatSizes = function () {
|
||||
|
||||
$("#extended .entry .size").each(function () {
|
||||
$("#extended .entry .size").each(function () {
|
||||
|
||||
var $this = $(this),
|
||||
bytes = $this.data("bytes"),
|
||||
formattedSize = bytes >= 0 ? H5AI.util.formatSize(bytes) : "";
|
||||
var $this = $(this),
|
||||
bytes = $this.data("bytes"),
|
||||
formattedSize = bytes >= 0 ? H5AI.util.formatSize(bytes) : "";
|
||||
|
||||
$this.text(formattedSize);
|
||||
});
|
||||
},
|
||||
setTotals = function () {
|
||||
$this.text(formattedSize);
|
||||
});
|
||||
},
|
||||
setTotals = function () {
|
||||
|
||||
var $extended = $("#extended");
|
||||
var $extended = $("#extended");
|
||||
|
||||
$(".folderTotal").text($extended.find(".entry.folder:not(.folder-parent)").length);
|
||||
$(".fileTotal").text($extended.find(".entry.file").length);
|
||||
},
|
||||
init = function () {
|
||||
$(".folderTotal").text($extended.find(".entry.folder:not(.folder-parent)").length);
|
||||
$(".fileTotal").text($extended.find(".entry.file").length);
|
||||
},
|
||||
init = function () {
|
||||
|
||||
initViews();
|
||||
viewmode();
|
||||
initTopSpace();
|
||||
initTree();
|
||||
linkHoverStates();
|
||||
initLangSelector(config.langs);
|
||||
localize(config.langs, settings.lang, settings.useBrowserLang);
|
||||
formatSizes();
|
||||
setTotals();
|
||||
initIndicators();
|
||||
};
|
||||
initViews();
|
||||
viewmode();
|
||||
initTopSpace();
|
||||
initTree();
|
||||
linkHoverStates();
|
||||
initLangSelector(config.langs);
|
||||
localize(config.langs, settings.lang, settings.useBrowserLang);
|
||||
formatSizes();
|
||||
setTotals();
|
||||
initIndicators();
|
||||
};
|
||||
|
||||
return {
|
||||
settings: settings,
|
||||
api: api,
|
||||
image: image,
|
||||
icon: icon,
|
||||
shiftTree: shiftTree,
|
||||
linkHoverStates: linkHoverStates,
|
||||
initIndicators: initIndicators,
|
||||
formatDates: formatDates,
|
||||
getFileType: getFileType,
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
return {
|
||||
settings: settings,
|
||||
api: api,
|
||||
image: image,
|
||||
icon: icon,
|
||||
shiftTree: shiftTree,
|
||||
linkHoverStates: linkHoverStates,
|
||||
initIndicators: initIndicators,
|
||||
formatDates: formatDates,
|
||||
getFileType: getFileType,
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
|
||||
}(window, jQuery, H5AI, H5AI_CONFIG));
|
||||
|
|
|
@ -1,127 +1,127 @@
|
|||
|
||||
(function (document, $, H5AI) {
|
||||
|
||||
H5AI.extended = (function () {
|
||||
H5AI.extended = (function () {
|
||||
|
||||
var initBreadcrumb = function () {
|
||||
var initBreadcrumb = function () {
|
||||
|
||||
var $ul = $("body > nav ul"),
|
||||
pathname = "/",
|
||||
path = H5AI.connector.getPath(pathname),
|
||||
pathnameParts = document.location.pathname.split("/"),
|
||||
lastPart = "",
|
||||
title = document.domain;
|
||||
var $ul = $("body > nav ul"),
|
||||
pathname = "/",
|
||||
path = H5AI.connector.getPath(pathname),
|
||||
pathnameParts = document.location.pathname.split("/"),
|
||||
lastPart = "",
|
||||
title = document.domain;
|
||||
|
||||
$ul.append(H5AI.html.updateCrumbHtml(path));
|
||||
$ul.append(H5AI.html.updateCrumbHtml(path));
|
||||
|
||||
$.each(pathnameParts, function (idx, part) {
|
||||
if (part !== "") {
|
||||
pathname += part + "/";
|
||||
$ul.append(H5AI.html.updateCrumbHtml(H5AI.connector.getPath(pathname)));
|
||||
lastPart = part + " - ";
|
||||
title += " > " + part;
|
||||
}
|
||||
});
|
||||
$.each(pathnameParts, function (idx, part) {
|
||||
if (part !== "") {
|
||||
pathname += part + "/";
|
||||
$ul.append(H5AI.html.updateCrumbHtml(H5AI.connector.getPath(pathname)));
|
||||
lastPart = part + " - ";
|
||||
title += " > " + part;
|
||||
}
|
||||
});
|
||||
|
||||
document.title = H5AI.util.checkedDecodeUri(lastPart + title);
|
||||
},
|
||||
initExtendedView = function () {
|
||||
document.title = H5AI.util.checkedDecodeUri(lastPart + title);
|
||||
},
|
||||
initExtendedView = function () {
|
||||
|
||||
var $ul, $li;
|
||||
var $ul, $li;
|
||||
|
||||
$ul = $("<ul/>");
|
||||
$li = $("<li class='header' />")
|
||||
.appendTo($ul)
|
||||
.append($("<a class='icon'></a>"))
|
||||
.append($("<a class='label' href='#'><span class='l10n-name'></span></a>"))
|
||||
.append($("<a class='date' href='#'><span class='l10n-lastModified'></span></a>"))
|
||||
.append($("<a class='size' href='#'><span class='l10n-size'></span></a>"));
|
||||
$ul = $("<ul/>");
|
||||
$li = $("<li class='header' />")
|
||||
.appendTo($ul)
|
||||
.append($("<a class='icon'></a>"))
|
||||
.append($("<a class='label' href='#'><span class='l10n-name'></span></a>"))
|
||||
.append($("<a class='date' href='#'><span class='l10n-lastModified'></span></a>"))
|
||||
.append($("<a class='size' href='#'><span class='l10n-size'></span></a>"));
|
||||
|
||||
// entries
|
||||
$("#table td").closest("tr").each(function () {
|
||||
var path = H5AI.connector.getPath(document.location.pathname, this);
|
||||
$ul.append(H5AI.html.updateExtendedHtml(path));
|
||||
});
|
||||
// entries
|
||||
$("#table td").closest("tr").each(function () {
|
||||
var path = H5AI.connector.getPath(document.location.pathname, this);
|
||||
$ul.append(H5AI.html.updateExtendedHtml(path));
|
||||
});
|
||||
|
||||
$("#extended").append($ul);
|
||||
$("#extended").append($ul);
|
||||
|
||||
// empty
|
||||
if ($ul.children(".entry:not(.folder-parent)").size() === 0) {
|
||||
$("#extended").append($("<div class='empty l10n-empty'>empty</div>"));
|
||||
}
|
||||
},
|
||||
customize = function () {
|
||||
// empty
|
||||
if ($ul.children(".entry:not(.folder-parent)").size() === 0) {
|
||||
$("#extended").append($("<div class='empty l10n-empty'>empty</div>"));
|
||||
}
|
||||
},
|
||||
customize = function () {
|
||||
|
||||
$.ajax({
|
||||
url: H5AI.core.settings.customHeader,
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#content > header").append($(data)).show();
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: H5AI.core.settings.customHeader,
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#content > header").append($(data)).show();
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: H5AI.core.settings.customFooter,
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#content > footer").prepend($(data)).show();
|
||||
}
|
||||
});
|
||||
},
|
||||
fetchPath = function (pathname, callback) {
|
||||
$.ajax({
|
||||
url: H5AI.core.settings.customFooter,
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#content > footer").prepend($(data)).show();
|
||||
}
|
||||
});
|
||||
},
|
||||
fetchPath = function (pathname, callback) {
|
||||
|
||||
H5AI.connector.fetchStatusAndContent(pathname, false, function (status, content) {
|
||||
H5AI.connector.fetchStatusAndContent(pathname, false, function (status, content) {
|
||||
|
||||
var path = H5AI.connector.getPath(pathname);
|
||||
var path = H5AI.connector.getPath(pathname);
|
||||
|
||||
path.status = status;
|
||||
path.content = content;
|
||||
callback(path);
|
||||
});
|
||||
},
|
||||
fetchTree = function (pathname, callback, childPath) {
|
||||
path.status = status;
|
||||
path.content = content;
|
||||
callback(path);
|
||||
});
|
||||
},
|
||||
fetchTree = function (pathname, callback, childPath) {
|
||||
|
||||
fetchPath(pathname, function (path) {
|
||||
fetchPath(pathname, function (path) {
|
||||
|
||||
var parent = H5AI.util.splitPath(pathname).parent;
|
||||
var parent = H5AI.util.splitPath(pathname).parent;
|
||||
|
||||
path.treeOpen = true;
|
||||
if (childPath) {
|
||||
path.content[childPath.absHref] = childPath;
|
||||
}
|
||||
if (parent === null) {
|
||||
callback(path);
|
||||
} else {
|
||||
fetchTree(parent, callback, path);
|
||||
}
|
||||
});
|
||||
},
|
||||
populateTree = function () {
|
||||
path.treeOpen = true;
|
||||
if (childPath) {
|
||||
path.content[childPath.absHref] = childPath;
|
||||
}
|
||||
if (parent === null) {
|
||||
callback(path);
|
||||
} else {
|
||||
fetchTree(parent, callback, path);
|
||||
}
|
||||
});
|
||||
},
|
||||
populateTree = function () {
|
||||
|
||||
fetchTree(document.location.pathname, function (path) {
|
||||
$("#tree")
|
||||
.append(H5AI.html.updateTreeHtml(path))
|
||||
.scrollpanel()
|
||||
.show();
|
||||
H5AI.core.shiftTree(false, true);
|
||||
H5AI.core.linkHoverStates();
|
||||
setTimeout(function () { $("#tree").get(0).updateScrollbar(); }, 1);
|
||||
});
|
||||
},
|
||||
init = function () {
|
||||
fetchTree(document.location.pathname, function (path) {
|
||||
$("#tree")
|
||||
.append(H5AI.html.updateTreeHtml(path))
|
||||
.scrollpanel()
|
||||
.show();
|
||||
H5AI.core.shiftTree(false, true);
|
||||
H5AI.core.linkHoverStates();
|
||||
setTimeout(function () { $("#tree").get(0).updateScrollbar(); }, 1);
|
||||
});
|
||||
},
|
||||
init = function () {
|
||||
|
||||
initBreadcrumb();
|
||||
initExtendedView();
|
||||
customize();
|
||||
H5AI.connector.updatePaths();
|
||||
if (H5AI.core.settings.showTree) {
|
||||
populateTree();
|
||||
}
|
||||
};
|
||||
initBreadcrumb();
|
||||
initExtendedView();
|
||||
customize();
|
||||
H5AI.connector.updatePaths();
|
||||
if (H5AI.core.settings.showTree) {
|
||||
populateTree();
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
|
||||
}(document, jQuery, H5AI));
|
||||
|
|
|
@ -1,264 +1,264 @@
|
|||
|
||||
(function ($, H5AI) {
|
||||
|
||||
H5AI.html = (function () {
|
||||
H5AI.html = (function () {
|
||||
|
||||
var thumbTypes = ["bmp", "gif", "ico", "image", "jpg", "png", "tiff"],
|
||||
onClick = function (path, context) {
|
||||
var thumbTypes = ["bmp", "gif", "ico", "image", "jpg", "png", "tiff"],
|
||||
onClick = function (path, context) {
|
||||
|
||||
},
|
||||
updateCrumbHtml = function (path) {
|
||||
},
|
||||
updateCrumbHtml = function (path) {
|
||||
|
||||
var $html, $a;
|
||||
var $html, $a;
|
||||
|
||||
if (path.html.$crumb && path.html.$crumb.data("status") === path.status) {
|
||||
return path.html.$crumb;
|
||||
}
|
||||
if (path.html.$crumb && path.html.$crumb.data("status") === path.status) {
|
||||
return path.html.$crumb;
|
||||
}
|
||||
|
||||
$html = $("<li class='crumb'><a><img alt='>' /><span></span></a></li>")
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
$html = $("<li class='crumb'><a><img alt='>' /><span></span></a></li>")
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
|
||||
if (path.status) {
|
||||
$html.data("status", path.status);
|
||||
}
|
||||
if (path.status) {
|
||||
$html.data("status", path.status);
|
||||
}
|
||||
|
||||
$a = $html.find("a")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "crumb"); })
|
||||
.find("img").attr("src", H5AI.core.image("crumb")).end()
|
||||
.find("span").text(path.label).end();
|
||||
$a = $html.find("a")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "crumb"); })
|
||||
.find("img").attr("src", H5AI.core.image("crumb")).end()
|
||||
.find("span").text(path.label).end();
|
||||
|
||||
if (path.isDomain) {
|
||||
$html.addClass("domain");
|
||||
$a.find("img").attr("src", H5AI.core.image("home"));
|
||||
}
|
||||
if (path.isDomain) {
|
||||
$html.addClass("domain");
|
||||
$a.find("img").attr("src", H5AI.core.image("home"));
|
||||
}
|
||||
|
||||
if (path.isCurrentFolder) {
|
||||
$html.addClass("current");
|
||||
}
|
||||
if (path.isCurrentFolder) {
|
||||
$html.addClass("current");
|
||||
}
|
||||
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$a.append($("<img class='hint' src='" + H5AI.core.image("page") + "' alt='not listable' />"));
|
||||
} else {
|
||||
$a.append($("<span class='hint'>(" + path.status + ")</span>"));
|
||||
}
|
||||
}
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$a.append($("<img class='hint' src='" + H5AI.core.image("page") + "' alt='not listable' />"));
|
||||
} else {
|
||||
$a.append($("<span class='hint'>(" + path.status + ")</span>"));
|
||||
}
|
||||
}
|
||||
|
||||
if (path.html.$crumb) {
|
||||
path.html.$crumb.replaceWith($html);
|
||||
}
|
||||
path.html.$crumb = $html;
|
||||
if (path.html.$crumb) {
|
||||
path.html.$crumb.replaceWith($html);
|
||||
}
|
||||
path.html.$crumb = $html;
|
||||
|
||||
return $html;
|
||||
},
|
||||
updateExtendedHtml = function (path) {
|
||||
return $html;
|
||||
},
|
||||
updateExtendedHtml = function (path) {
|
||||
|
||||
var $html, $a, $label,
|
||||
formattedDate = path.date ? path.date.toString(H5AI.core.settings.dateFormat) : "",
|
||||
imgClass = "",
|
||||
icon16 = H5AI.core.icon(path.type),
|
||||
icon48 = H5AI.core.icon(path.type, true);
|
||||
var $html, $a, $label,
|
||||
formattedDate = path.date ? path.date.toString(H5AI.core.settings.dateFormat) : "",
|
||||
imgClass = "",
|
||||
icon16 = H5AI.core.icon(path.type),
|
||||
icon48 = H5AI.core.icon(path.type, true);
|
||||
|
||||
if (path.html.$extended && path.html.$extended.data("status") === path.status) {
|
||||
return path.html.$extended;
|
||||
}
|
||||
if (path.html.$extended && path.html.$extended.data("status") === path.status) {
|
||||
return path.html.$extended;
|
||||
}
|
||||
|
||||
$html = $("<li class='entry' />")
|
||||
.data("path", path)
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
$html = $("<li class='entry' />")
|
||||
.data("path", path)
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
|
||||
if (path.status) {
|
||||
$html.data("status", path.status);
|
||||
}
|
||||
if (path.status) {
|
||||
$html.data("status", path.status);
|
||||
}
|
||||
|
||||
if (H5AI.core.settings.showThumbs === true && $.inArray(path.type, thumbTypes) >= 0) {
|
||||
imgClass = "class='thumb'";
|
||||
icon16 = H5AI.core.api() + "?action=thumb&href=" + path.absHref + "&width=16&height=16&mode=square";
|
||||
icon48 = H5AI.core.api() + "?action=thumb&href=" + path.absHref + "&width=96&height=46&mode=rational";
|
||||
}
|
||||
if (H5AI.core.settings.showThumbs === true && $.inArray(path.type, thumbTypes) >= 0) {
|
||||
imgClass = "class='thumb'";
|
||||
icon16 = H5AI.core.api() + "?action=thumb&href=" + path.absHref + "&width=16&height=16&mode=square";
|
||||
icon48 = H5AI.core.api() + "?action=thumb&href=" + path.absHref + "&width=96&height=46&mode=rational";
|
||||
}
|
||||
|
||||
$label = $("<span class='label'>" + path.label + "</span>");
|
||||
$a = $("<a />")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "extended"); })
|
||||
.appendTo($html)
|
||||
.append($("<span class='icon small'><img " + imgClass + " src='" + icon16 + "' alt='" + path.type + "' /></span>"))
|
||||
.append($("<span class='icon big'><img " + imgClass + " src='" + icon48 + "' alt='" + path.type + "' /></span>"))
|
||||
.append($label)
|
||||
.append($("<span class='date' data-time='" + path.time + "'></span>"))
|
||||
.append($("<span class='size' data-bytes='" + path.size + "'></span>"));
|
||||
$label = $("<span class='label'>" + path.label + "</span>");
|
||||
$a = $("<a />")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "extended"); })
|
||||
.appendTo($html)
|
||||
.append($("<span class='icon small'><img " + imgClass + " src='" + icon16 + "' alt='" + path.type + "' /></span>"))
|
||||
.append($("<span class='icon big'><img " + imgClass + " src='" + icon48 + "' alt='" + path.type + "' /></span>"))
|
||||
.append($label)
|
||||
.append($("<span class='date' data-time='" + path.time + "'></span>"))
|
||||
.append($("<span class='size' data-bytes='" + path.size + "'></span>"));
|
||||
|
||||
$a.hover(
|
||||
function () {
|
||||
if ($("#extended").hasClass("icons-view")) {
|
||||
var $this = $(this);
|
||||
$(".status.default").hide();
|
||||
$(".status.dynamic")
|
||||
.empty()
|
||||
.append($this.find(".label").clone())
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".date").clone())
|
||||
.show();
|
||||
$a.hover(
|
||||
function () {
|
||||
if ($("#extended").hasClass("icons-view")) {
|
||||
var $this = $(this);
|
||||
$(".status.default").hide();
|
||||
$(".status.dynamic")
|
||||
.empty()
|
||||
.append($this.find(".label").clone())
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".date").clone())
|
||||
.show();
|
||||
|
||||
if (!$this.closest(".entry").hasClass("folder")) {
|
||||
$(".status.dynamic")
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".size").clone());
|
||||
}
|
||||
}
|
||||
},
|
||||
function () {
|
||||
$(".status.default").show();
|
||||
$(".status.dynamic").empty().hide();
|
||||
}
|
||||
);
|
||||
if (!$this.closest(".entry").hasClass("folder")) {
|
||||
$(".status.dynamic")
|
||||
.append($("<span class='sep'>·</span>"))
|
||||
.append($this.find(".size").clone());
|
||||
}
|
||||
}
|
||||
},
|
||||
function () {
|
||||
$(".status.default").show();
|
||||
$(".status.dynamic").empty().hide();
|
||||
}
|
||||
);
|
||||
|
||||
if (path.isParentFolder) {
|
||||
if (!H5AI.core.settings.setParentFolderLabels) {
|
||||
$label.addClass("l10n-parentDirectory");
|
||||
}
|
||||
$html.addClass("folder-parent");
|
||||
}
|
||||
if (path.isParentFolder) {
|
||||
if (!H5AI.core.settings.setParentFolderLabels) {
|
||||
$label.addClass("l10n-parentDirectory");
|
||||
}
|
||||
$html.addClass("folder-parent");
|
||||
}
|
||||
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$html.addClass("page");
|
||||
$a.find(".icon.small img").attr("src", H5AI.core.icon("folder-page"));
|
||||
$a.find(".icon.big img").attr("src", H5AI.core.icon("folder-page", true));
|
||||
} else {
|
||||
$html.addClass("error");
|
||||
$label.append($("<span class='hint'> " + path.status + " </span>"));
|
||||
}
|
||||
}
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$html.addClass("page");
|
||||
$a.find(".icon.small img").attr("src", H5AI.core.icon("folder-page"));
|
||||
$a.find(".icon.big img").attr("src", H5AI.core.icon("folder-page", true));
|
||||
} else {
|
||||
$html.addClass("error");
|
||||
$label.append($("<span class='hint'> " + path.status + " </span>"));
|
||||
}
|
||||
}
|
||||
|
||||
if (path.html.$extended) {
|
||||
path.html.$extended.replaceWith($html);
|
||||
H5AI.core.formatDates();
|
||||
}
|
||||
path.html.$extended = $html;
|
||||
if (path.html.$extended) {
|
||||
path.html.$extended.replaceWith($html);
|
||||
H5AI.core.formatDates();
|
||||
}
|
||||
path.html.$extended = $html;
|
||||
|
||||
return $html;
|
||||
},
|
||||
updateTreeHtml = function (path) {
|
||||
return $html;
|
||||
},
|
||||
updateTreeHtml = function (path) {
|
||||
|
||||
var $html, $blank, $a, $indicator, $ul, idx;
|
||||
var $html, $blank, $a, $indicator, $ul, idx;
|
||||
|
||||
$html = $("<div class='entry' />")
|
||||
.data("path", path)
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
$html = $("<div class='entry' />")
|
||||
.data("path", path)
|
||||
.addClass(path.isFolder ? "folder" : "file");
|
||||
|
||||
$blank = $("<span class='blank' />").appendTo($html);
|
||||
$blank = $("<span class='blank' />").appendTo($html);
|
||||
|
||||
$a = $("<a />")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "tree"); })
|
||||
.appendTo($html)
|
||||
.append($("<span class='icon'><img src='" + H5AI.core.icon(path.type) + "' /></span>"))
|
||||
.append($("<span class='label'>" + path.label + "</span>"));
|
||||
$a = $("<a />")
|
||||
.attr("href", path.absHref)
|
||||
.click(function() { onClick(path, "tree"); })
|
||||
.appendTo($html)
|
||||
.append($("<span class='icon'><img src='" + H5AI.core.icon(path.type) + "' /></span>"))
|
||||
.append($("<span class='label'>" + path.label + "</span>"));
|
||||
|
||||
if (path.isFolder) {
|
||||
// indicator
|
||||
if (path.status === undefined || !path.isEmpty()) {
|
||||
$indicator = $("<span class='indicator initiated'><img src='" + H5AI.core.image("tree") + "' /></span>")
|
||||
.click(function (event) {
|
||||
if (path.isFolder) {
|
||||
// indicator
|
||||
if (path.status === undefined || !path.isEmpty()) {
|
||||
$indicator = $("<span class='indicator initiated'><img src='" + H5AI.core.image("tree") + "' /></span>")
|
||||
.click(function (event) {
|
||||
|
||||
var $entry = $indicator.closest(".entry"); // $html
|
||||
var $entry = $indicator.closest(".entry"); // $html
|
||||
|
||||
if ($indicator.hasClass("unknown")) {
|
||||
H5AI.connector.fetchStatusAndContent(path.absHref, false, function (status, content) {
|
||||
if ($indicator.hasClass("unknown")) {
|
||||
H5AI.connector.fetchStatusAndContent(path.absHref, false, function (status, content) {
|
||||
|
||||
path.status = status;
|
||||
path.content = content;
|
||||
path.treeOpen = true;
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
updateTreeHtml(path);
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
} else if ($indicator.hasClass("open")) {
|
||||
path.treeOpen = false;
|
||||
$indicator.removeClass("open");
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
$entry.find("> ul.content").slideUp(function() {
|
||||
path.status = status;
|
||||
path.content = content;
|
||||
path.treeOpen = true;
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
updateTreeHtml(path);
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
} else if ($indicator.hasClass("open")) {
|
||||
path.treeOpen = false;
|
||||
$indicator.removeClass("open");
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
$entry.find("> ul.content").slideUp(function() {
|
||||
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
} else {
|
||||
path.treeOpen = true;
|
||||
$indicator.addClass("open");
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
$entry.find("> ul.content").slideDown(function() {
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
} else {
|
||||
path.treeOpen = true;
|
||||
$indicator.addClass("open");
|
||||
$("#tree").get(0).updateScrollbar(true);
|
||||
$entry.find("> ul.content").slideDown(function() {
|
||||
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
}
|
||||
$("#tree").get(0).updateScrollbar();
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
if (path.status === undefined) {
|
||||
$indicator.addClass("unknown");
|
||||
} else if (path.treeOpen) {
|
||||
$indicator.addClass("open");
|
||||
}
|
||||
if (path.status === undefined) {
|
||||
$indicator.addClass("unknown");
|
||||
} else if (path.treeOpen) {
|
||||
$indicator.addClass("open");
|
||||
}
|
||||
|
||||
$blank.replaceWith($indicator);
|
||||
}
|
||||
$blank.replaceWith($indicator);
|
||||
}
|
||||
|
||||
// is path the domain?
|
||||
if (path.isDomain) {
|
||||
$html.addClass("domain");
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-home"));
|
||||
}
|
||||
// is path the domain?
|
||||
if (path.isDomain) {
|
||||
$html.addClass("domain");
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-home"));
|
||||
}
|
||||
|
||||
// is path the current folder?
|
||||
if (path.isCurrentFolder) {
|
||||
$html.addClass("current");
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-open"));
|
||||
}
|
||||
// is path the current folder?
|
||||
if (path.isCurrentFolder) {
|
||||
$html.addClass("current");
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-open"));
|
||||
}
|
||||
|
||||
// does it have subfolders?
|
||||
if (!path.isEmpty()) {
|
||||
$ul = $("<ul class='content' />").appendTo($html);
|
||||
$.each(path.content, function (idx, entry) {
|
||||
$("<li />").append(updateTreeHtml(entry)).appendTo($ul);
|
||||
});
|
||||
if (path.status === undefined || !path.treeOpen) {
|
||||
$ul.hide();
|
||||
}
|
||||
}
|
||||
// does it have subfolders?
|
||||
if (!path.isEmpty()) {
|
||||
$ul = $("<ul class='content' />").appendTo($html);
|
||||
$.each(path.content, function (idx, entry) {
|
||||
$("<li />").append(updateTreeHtml(entry)).appendTo($ul);
|
||||
});
|
||||
if (path.status === undefined || !path.treeOpen) {
|
||||
$ul.hide();
|
||||
}
|
||||
}
|
||||
|
||||
// reflect folder status
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-page"));
|
||||
$a.append($("<span class='hint'><img src='" + H5AI.core.image("page") + "' /></span>"));
|
||||
} else {
|
||||
$html.addClass("error");
|
||||
$a.append($("<span class='hint'>" + path.status + "</span>"));
|
||||
}
|
||||
}
|
||||
}
|
||||
// reflect folder status
|
||||
if (!isNaN(path.status)) {
|
||||
if (path.status === 200) {
|
||||
$a.find(".icon img").attr("src", H5AI.core.icon("folder-page"));
|
||||
$a.append($("<span class='hint'><img src='" + H5AI.core.image("page") + "' /></span>"));
|
||||
} else {
|
||||
$html.addClass("error");
|
||||
$a.append($("<span class='hint'>" + path.status + "</span>"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (path.html.$tree) {
|
||||
path.html.$tree.replaceWith($html);
|
||||
}
|
||||
path.html.$tree = $html;
|
||||
if (path.html.$tree) {
|
||||
path.html.$tree.replaceWith($html);
|
||||
}
|
||||
path.html.$tree = $html;
|
||||
|
||||
return $html;
|
||||
},
|
||||
updateHtml = function (path) {
|
||||
return $html;
|
||||
},
|
||||
updateHtml = function (path) {
|
||||
|
||||
updateCrumbHtml(path);
|
||||
updateExtendedHtml(path);
|
||||
updateTreeHtml(path);
|
||||
};
|
||||
updateCrumbHtml(path);
|
||||
updateExtendedHtml(path);
|
||||
updateTreeHtml(path);
|
||||
};
|
||||
|
||||
return {
|
||||
updateCrumbHtml: updateCrumbHtml,
|
||||
updateExtendedHtml: updateExtendedHtml,
|
||||
updateTreeHtml: updateTreeHtml,
|
||||
updateHtml: updateHtml
|
||||
};
|
||||
}());
|
||||
return {
|
||||
updateCrumbHtml: updateCrumbHtml,
|
||||
updateExtendedHtml: updateExtendedHtml,
|
||||
updateTreeHtml: updateTreeHtml,
|
||||
updateHtml: updateHtml
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery, H5AI));
|
||||
|
|
|
@ -1,95 +1,95 @@
|
|||
|
||||
(function (document, $, H5AI) {
|
||||
|
||||
H5AI.Path = function (folder, tableRow) {
|
||||
H5AI.Path = function (folder, tableRow) {
|
||||
|
||||
var path = {},
|
||||
$tds, $a, date, size, splits;
|
||||
var path = {},
|
||||
$tds, $a, date, size, splits;
|
||||
|
||||
// path.parentFolder: undefined
|
||||
// path.label: undefined
|
||||
// path.type: undefined
|
||||
// path.href: undefined
|
||||
// path.time: undefined
|
||||
// path.size: undefined
|
||||
// path.absHref: undefined
|
||||
// path.isFolder: undefined
|
||||
// path.isParentFolder: undefined
|
||||
// path.isCurrentFolder: undefined
|
||||
// path.isDomain: undefined
|
||||
// path.parentFolder: undefined
|
||||
// path.label: undefined
|
||||
// path.type: undefined
|
||||
// path.href: undefined
|
||||
// path.time: undefined
|
||||
// path.size: undefined
|
||||
// path.absHref: undefined
|
||||
// path.isFolder: undefined
|
||||
// path.isParentFolder: undefined
|
||||
// path.isCurrentFolder: undefined
|
||||
// path.isDomain: undefined
|
||||
|
||||
path.status = undefined; // undefined, "h5ai" or HTTP response code
|
||||
path.content = undefined; // associative array path.absHref -> path
|
||||
path.html = {
|
||||
$crumb: undefined,
|
||||
$extended: undefined,
|
||||
$tree: undefined
|
||||
};
|
||||
path.treeOpen = false;
|
||||
path.status = undefined; // undefined, "h5ai" or HTTP response code
|
||||
path.content = undefined; // associative array path.absHref -> path
|
||||
path.html = {
|
||||
$crumb: undefined,
|
||||
$extended: undefined,
|
||||
$tree: undefined
|
||||
};
|
||||
path.treeOpen = false;
|
||||
|
||||
if (!H5AI.util.pathEndsWithSlash(folder)) {
|
||||
folder += "/";
|
||||
}
|
||||
if (!H5AI.util.pathEndsWithSlash(folder)) {
|
||||
folder += "/";
|
||||
}
|
||||
|
||||
if (tableRow) {
|
||||
$tds = $(tableRow).find("td");
|
||||
$a = $tds.eq(1).find("a");
|
||||
date = Date.parse($tds.eq(2).text());
|
||||
size = H5AI.util.parseSize($tds.eq(3).text());
|
||||
if (tableRow) {
|
||||
$tds = $(tableRow).find("td");
|
||||
$a = $tds.eq(1).find("a");
|
||||
date = Date.parse($tds.eq(2).text());
|
||||
size = H5AI.util.parseSize($tds.eq(3).text());
|
||||
|
||||
path.parentFolder = folder;
|
||||
path.label = $a.text();
|
||||
path.type = $tds.eq(0).find("img").attr("alt") === "[DIR]" ? "folder" : H5AI.core.getFileType(path.label);
|
||||
path.href = $a.attr("href");
|
||||
path.time = date ? date.getTime() : 0;
|
||||
path.size = size;
|
||||
} else {
|
||||
splits = H5AI.util.splitPath(folder);
|
||||
path.parentFolder = folder;
|
||||
path.label = $a.text();
|
||||
path.type = $tds.eq(0).find("img").attr("alt") === "[DIR]" ? "folder" : H5AI.core.getFileType(path.label);
|
||||
path.href = $a.attr("href");
|
||||
path.time = date ? date.getTime() : 0;
|
||||
path.size = size;
|
||||
} else {
|
||||
splits = H5AI.util.splitPath(folder);
|
||||
|
||||
path.parentFolder = splits.parent || "";
|
||||
path.label = H5AI.util.checkedDecodeUri(splits.name);
|
||||
if (path.label === "/") {
|
||||
path.label = H5AI.util.checkedDecodeUri(document.domain);
|
||||
}
|
||||
path.type = "folder";
|
||||
path.href = splits.name;
|
||||
path.time = 0;
|
||||
path.size = -1;
|
||||
}
|
||||
path.parentFolder = splits.parent || "";
|
||||
path.label = H5AI.util.checkedDecodeUri(splits.name);
|
||||
if (path.label === "/") {
|
||||
path.label = H5AI.util.checkedDecodeUri(document.domain);
|
||||
}
|
||||
path.type = "folder";
|
||||
path.href = splits.name;
|
||||
path.time = 0;
|
||||
path.size = -1;
|
||||
}
|
||||
|
||||
if (H5AI.util.pathEndsWithSlash(path.label)) {
|
||||
path.label = path.label.slice(0, -1);
|
||||
}
|
||||
if (H5AI.util.pathEndsWithSlash(path.label)) {
|
||||
path.label = path.label.slice(0, -1);
|
||||
}
|
||||
|
||||
path.isFolder = (path.type === "folder");
|
||||
path.isParentFolder = (path.label === "Parent Directory");
|
||||
if (path.isParentFolder) {
|
||||
path.isFolder = true;
|
||||
path.type = "folder-parent";
|
||||
}
|
||||
path.absHref = path.isParentFolder ? path.href : path.parentFolder + path.href;
|
||||
path.isCurrentFolder = (path.absHref === document.location.pathname);
|
||||
path.isDomain = (path.absHref === "/");
|
||||
path.isFolder = (path.type === "folder");
|
||||
path.isParentFolder = (path.label === "Parent Directory");
|
||||
if (path.isParentFolder) {
|
||||
path.isFolder = true;
|
||||
path.type = "folder-parent";
|
||||
}
|
||||
path.absHref = path.isParentFolder ? path.href : path.parentFolder + path.href;
|
||||
path.isCurrentFolder = (path.absHref === document.location.pathname);
|
||||
path.isDomain = (path.absHref === "/");
|
||||
|
||||
if (path.isParentFolder && H5AI.core.settings.setParentFolderLabels) {
|
||||
if (path.isDomain) {
|
||||
path.label = H5AI.util.checkedDecodeUri(document.domain);
|
||||
} else {
|
||||
splits = H5AI.util.splitPath(path.parentFolder);
|
||||
path.label = H5AI.util.checkedDecodeUri(splits.parentname);
|
||||
}
|
||||
}
|
||||
if (path.isParentFolder && H5AI.core.settings.setParentFolderLabels) {
|
||||
if (path.isDomain) {
|
||||
path.label = H5AI.util.checkedDecodeUri(document.domain);
|
||||
} else {
|
||||
splits = H5AI.util.splitPath(path.parentFolder);
|
||||
path.label = H5AI.util.checkedDecodeUri(splits.parentname);
|
||||
}
|
||||
}
|
||||
|
||||
path.isEmpty = function () {
|
||||
path.isEmpty = function () {
|
||||
|
||||
return !path.content || $.isEmptyObject(path.content);
|
||||
};
|
||||
path.onClick = function (context) {
|
||||
return !path.content || $.isEmptyObject(path.content);
|
||||
};
|
||||
path.onClick = function (context) {
|
||||
|
||||
H5AI.core.triggerPathClick(path, context);
|
||||
};
|
||||
H5AI.core.triggerPathClick(path, context);
|
||||
};
|
||||
|
||||
return path;
|
||||
};
|
||||
return path;
|
||||
};
|
||||
|
||||
}(document, jQuery, H5AI));
|
||||
|
|
|
@ -1,157 +1,157 @@
|
|||
|
||||
(function ($, H5AI) {
|
||||
|
||||
H5AI.sort = (function () {
|
||||
H5AI.sort = (function () {
|
||||
|
||||
var type = function (entry) {
|
||||
var type = function (entry) {
|
||||
|
||||
var $entry = $(entry);
|
||||
var $entry = $(entry);
|
||||
|
||||
if ($entry.hasClass("folder-parent")) {
|
||||
return 0;
|
||||
} else if ($entry.hasClass("folder")) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
},
|
||||
cmp = function (entry1, entry2, rev, getVal) {
|
||||
if ($entry.hasClass("folder-parent")) {
|
||||
return 0;
|
||||
} else if ($entry.hasClass("folder")) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
},
|
||||
cmp = function (entry1, entry2, rev, getVal) {
|
||||
|
||||
var res, val1, val2;
|
||||
var res, val1, val2;
|
||||
|
||||
res = type(entry1) - type(entry2);
|
||||
if (res !== 0) {
|
||||
return res;
|
||||
}
|
||||
res = type(entry1) - type(entry2);
|
||||
if (res !== 0) {
|
||||
return res;
|
||||
}
|
||||
|
||||
val1 = getVal(entry1);
|
||||
val2 = getVal(entry2);
|
||||
if (val1 < val2) {
|
||||
return rev ? 1 : -1;
|
||||
} else if (val1 > val2) {
|
||||
return rev ? -1 : 1;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
cmpName = function (entry1, entry2) {
|
||||
val1 = getVal(entry1);
|
||||
val2 = getVal(entry2);
|
||||
if (val1 < val2) {
|
||||
return rev ? 1 : -1;
|
||||
} else if (val1 > val2) {
|
||||
return rev ? -1 : 1;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
cmpName = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".label").text().toLowerCase();
|
||||
});
|
||||
},
|
||||
cmpTime = function (entry1, entry2) {
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".label").text().toLowerCase();
|
||||
});
|
||||
},
|
||||
cmpTime = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".date").data("time");
|
||||
});
|
||||
},
|
||||
cmpSize = function (entry1, entry2) {
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".date").data("time");
|
||||
});
|
||||
},
|
||||
cmpSize = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".size").data("bytes");
|
||||
});
|
||||
},
|
||||
cmpNameRev = function (entry1, entry2) {
|
||||
return cmp(entry1, entry2, false, function (entry) {
|
||||
return $(entry).find(".size").data("bytes");
|
||||
});
|
||||
},
|
||||
cmpNameRev = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".label").text().toLowerCase();
|
||||
});
|
||||
},
|
||||
cmpTimeRev = function (entry1, entry2) {
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".label").text().toLowerCase();
|
||||
});
|
||||
},
|
||||
cmpTimeRev = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".date").data("time");
|
||||
});
|
||||
},
|
||||
cmpSizeRev = function (entry1, entry2) {
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".date").data("time");
|
||||
});
|
||||
},
|
||||
cmpSizeRev = function (entry1, entry2) {
|
||||
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".size").data("bytes");
|
||||
});
|
||||
},
|
||||
sort = function (fn) {
|
||||
return cmp(entry1, entry2, true, function (entry) {
|
||||
return $(entry).find(".size").data("bytes");
|
||||
});
|
||||
},
|
||||
sort = function (fn) {
|
||||
|
||||
$("#extended .entry").detach().sort(fn).appendTo($("#extended > ul"));
|
||||
},
|
||||
$all, orders,
|
||||
sortBy = function (id) {
|
||||
$("#extended .entry").detach().sort(fn).appendTo($("#extended > ul"));
|
||||
},
|
||||
$all, orders,
|
||||
sortBy = function (id) {
|
||||
|
||||
var order = orders[id];
|
||||
var order = orders[id];
|
||||
|
||||
$all.removeClass("ascending").removeClass("descending");
|
||||
order.head.addClass(order.clas).attr("href", "#!/sort=" + id);
|
||||
sort(order.fn);
|
||||
},
|
||||
init = function () {
|
||||
$all.removeClass("ascending").removeClass("descending");
|
||||
order.head.addClass(order.clas).attr("href", "#!/sort=" + id);
|
||||
sort(order.fn);
|
||||
},
|
||||
init = function () {
|
||||
|
||||
var $ascending = $("<img src='" + H5AI.core.image("ascending") + "' class='sort ascending' alt='ascending' />"),
|
||||
$descending = $("<img src='" + H5AI.core.image("descending") + "' class='sort descending' alt='descending' />"),
|
||||
initialOrder = /^.*#!.*\/sort=(.*?)(?:\/.*)?$/.exec(document.location),
|
||||
$header = $("#extended li.header"),
|
||||
$label = $header.find("a.label"),
|
||||
$date = $header.find("a.date"),
|
||||
$size = $header.find("a.size");
|
||||
var $ascending = $("<img src='" + H5AI.core.image("ascending") + "' class='sort ascending' alt='ascending' />"),
|
||||
$descending = $("<img src='" + H5AI.core.image("descending") + "' class='sort descending' alt='descending' />"),
|
||||
initialOrder = /^.*#!.*\/sort=(.*?)(?:\/.*)?$/.exec(document.location),
|
||||
$header = $("#extended li.header"),
|
||||
$label = $header.find("a.label"),
|
||||
$date = $header.find("a.date"),
|
||||
$size = $header.find("a.size");
|
||||
|
||||
$all = $header.find("a.label,a.date,a.size");
|
||||
orders = {
|
||||
na: {
|
||||
head: $label,
|
||||
clas: "ascending",
|
||||
fn: cmpName
|
||||
},
|
||||
nd: {
|
||||
head: $label,
|
||||
clas: "descending",
|
||||
fn: cmpNameRev
|
||||
},
|
||||
da: {
|
||||
head: $date,
|
||||
clas: "ascending",
|
||||
fn: cmpTime
|
||||
},
|
||||
dd: {
|
||||
head: $date,
|
||||
clas: "descending",
|
||||
fn: cmpTimeRev
|
||||
},
|
||||
sa: {
|
||||
head: $size,
|
||||
clas: "ascending",
|
||||
fn: cmpSize
|
||||
},
|
||||
sd: {
|
||||
head: $size,
|
||||
clas: "descending",
|
||||
fn: cmpSizeRev
|
||||
}
|
||||
};
|
||||
$all = $header.find("a.label,a.date,a.size");
|
||||
orders = {
|
||||
na: {
|
||||
head: $label,
|
||||
clas: "ascending",
|
||||
fn: cmpName
|
||||
},
|
||||
nd: {
|
||||
head: $label,
|
||||
clas: "descending",
|
||||
fn: cmpNameRev
|
||||
},
|
||||
da: {
|
||||
head: $date,
|
||||
clas: "ascending",
|
||||
fn: cmpTime
|
||||
},
|
||||
dd: {
|
||||
head: $date,
|
||||
clas: "descending",
|
||||
fn: cmpTimeRev
|
||||
},
|
||||
sa: {
|
||||
head: $size,
|
||||
clas: "ascending",
|
||||
fn: cmpSize
|
||||
},
|
||||
sd: {
|
||||
head: $size,
|
||||
clas: "descending",
|
||||
fn: cmpSizeRev
|
||||
}
|
||||
};
|
||||
|
||||
sortBy(initialOrder ? initialOrder[1] : H5AI.core.settings.sortorder);
|
||||
sortBy(initialOrder ? initialOrder[1] : H5AI.core.settings.sortorder);
|
||||
|
||||
$label
|
||||
.attr("href", "#!/sort=na")
|
||||
.append($ascending.clone()).append($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("n" + ($label.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
$label
|
||||
.attr("href", "#!/sort=na")
|
||||
.append($ascending.clone()).append($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("n" + ($label.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
|
||||
$date
|
||||
.attr("href", "#!/sort=da")
|
||||
.prepend($ascending.clone()).prepend($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("d" + ($date.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
$date
|
||||
.attr("href", "#!/sort=da")
|
||||
.prepend($ascending.clone()).prepend($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("d" + ($date.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
|
||||
$size
|
||||
.attr("href", "#!/sort=sa")
|
||||
.prepend($ascending.clone()).prepend($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("s" + ($size.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
};
|
||||
$size
|
||||
.attr("href", "#!/sort=sa")
|
||||
.prepend($ascending.clone()).prepend($descending.clone())
|
||||
.click(function () {
|
||||
sortBy("s" + ($size.hasClass("ascending") ? "d" : "a"));
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery, H5AI));
|
||||
|
|
|
@ -1,115 +1,115 @@
|
|||
|
||||
(function ($, H5AI) {
|
||||
|
||||
H5AI.util = (function () {
|
||||
H5AI.util = (function () {
|
||||
|
||||
var reSplitPath = /^\/([^\/]+\/?)$/,
|
||||
reSplitPath2 = /^(\/(?:.*\/)*?([^\/]+)\/)([^\/]+\/?)$/,
|
||||
splitPath = function (pathname) {
|
||||
var reSplitPath = /^\/([^\/]+\/?)$/,
|
||||
reSplitPath2 = /^(\/(?:.*\/)*?([^\/]+)\/)([^\/]+\/?)$/,
|
||||
splitPath = function (pathname) {
|
||||
|
||||
var match;
|
||||
var match;
|
||||
|
||||
if (pathname === "/") {
|
||||
return {
|
||||
parent: null,
|
||||
parentname: null,
|
||||
name: "/"
|
||||
};
|
||||
}
|
||||
match = reSplitPath2.exec(pathname);
|
||||
if (match) {
|
||||
return {
|
||||
parent: match[1],
|
||||
parentname: match[2],
|
||||
name: match[3]
|
||||
};
|
||||
}
|
||||
match = reSplitPath.exec(pathname);
|
||||
if (match) {
|
||||
return {
|
||||
parent: "/",
|
||||
parentname: "/",
|
||||
name: match[1]
|
||||
};
|
||||
}
|
||||
},
|
||||
rePathEndsWithSlash = /\/$/,
|
||||
pathEndsWithSlash = function (pathname) {
|
||||
if (pathname === "/") {
|
||||
return {
|
||||
parent: null,
|
||||
parentname: null,
|
||||
name: "/"
|
||||
};
|
||||
}
|
||||
match = reSplitPath2.exec(pathname);
|
||||
if (match) {
|
||||
return {
|
||||
parent: match[1],
|
||||
parentname: match[2],
|
||||
name: match[3]
|
||||
};
|
||||
}
|
||||
match = reSplitPath.exec(pathname);
|
||||
if (match) {
|
||||
return {
|
||||
parent: "/",
|
||||
parentname: "/",
|
||||
name: match[1]
|
||||
};
|
||||
}
|
||||
},
|
||||
rePathEndsWithSlash = /\/$/,
|
||||
pathEndsWithSlash = function (pathname) {
|
||||
|
||||
return rePathEndsWithSlash.test(pathname);
|
||||
},
|
||||
getAbsHref = function (folder, tableRow) {
|
||||
return rePathEndsWithSlash.test(pathname);
|
||||
},
|
||||
getAbsHref = function (folder, tableRow) {
|
||||
|
||||
var $a, isParentFolder, href;
|
||||
var $a, isParentFolder, href;
|
||||
|
||||
if (!pathEndsWithSlash(folder)) {
|
||||
folder += "/";
|
||||
}
|
||||
if (!tableRow) {
|
||||
return folder;
|
||||
}
|
||||
$a = $(tableRow).find("td").eq(1).find("a");
|
||||
isParentFolder = ($a.text() === "Parent Directory");
|
||||
href = $a.attr("href");
|
||||
return isParentFolder ? undefined : folder + href;
|
||||
},
|
||||
kilo = 1000.0,
|
||||
reParseSize = /^\s*([\.\d]+)\s*([kmg]?)b?\s*$/i,
|
||||
parseSize = function (str) {
|
||||
if (!pathEndsWithSlash(folder)) {
|
||||
folder += "/";
|
||||
}
|
||||
if (!tableRow) {
|
||||
return folder;
|
||||
}
|
||||
$a = $(tableRow).find("td").eq(1).find("a");
|
||||
isParentFolder = ($a.text() === "Parent Directory");
|
||||
href = $a.attr("href");
|
||||
return isParentFolder ? undefined : folder + href;
|
||||
},
|
||||
kilo = 1000.0,
|
||||
reParseSize = /^\s*([\.\d]+)\s*([kmg]?)b?\s*$/i,
|
||||
parseSize = function (str) {
|
||||
|
||||
var match = reParseSize.exec(str),
|
||||
val, unit;
|
||||
var match = reParseSize.exec(str),
|
||||
val, unit;
|
||||
|
||||
if (!match) {
|
||||
return -1;
|
||||
}
|
||||
if (!match) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
val = parseFloat(match[1]);
|
||||
unit = match[2].toLowerCase();
|
||||
if (unit === "k") {
|
||||
val *= kilo;
|
||||
} else if (unit === "m") {
|
||||
val *= kilo * kilo;
|
||||
} else if (unit === "g") {
|
||||
val *= kilo * kilo * kilo;
|
||||
} else if (unit === "t") {
|
||||
val *= kilo * kilo * kilo * kilo;
|
||||
}
|
||||
return val;
|
||||
},
|
||||
sizeUnits = ["B", "KB", "MB", "GB", "TB"],
|
||||
formatSize = function (size) {
|
||||
val = parseFloat(match[1]);
|
||||
unit = match[2].toLowerCase();
|
||||
if (unit === "k") {
|
||||
val *= kilo;
|
||||
} else if (unit === "m") {
|
||||
val *= kilo * kilo;
|
||||
} else if (unit === "g") {
|
||||
val *= kilo * kilo * kilo;
|
||||
} else if (unit === "t") {
|
||||
val *= kilo * kilo * kilo * kilo;
|
||||
}
|
||||
return val;
|
||||
},
|
||||
sizeUnits = ["B", "KB", "MB", "GB", "TB"],
|
||||
formatSize = function (size) {
|
||||
|
||||
var th = 1000.0,
|
||||
i = 0,
|
||||
maxI = sizeUnits.length - 1;
|
||||
var th = 1000.0,
|
||||
i = 0,
|
||||
maxI = sizeUnits.length - 1;
|
||||
|
||||
if (isNaN(size)) {
|
||||
return size;
|
||||
}
|
||||
if (isNaN(size)) {
|
||||
return size;
|
||||
}
|
||||
|
||||
while (size >= th && i < maxI) {
|
||||
size /= kilo;
|
||||
i += 1;
|
||||
}
|
||||
return (i <= 1 ? Math.round(size) : size.toFixed(1)).toString() + " " + sizeUnits[i];
|
||||
},
|
||||
checkedDecodeUri = function (uri) {
|
||||
while (size >= th && i < maxI) {
|
||||
size /= kilo;
|
||||
i += 1;
|
||||
}
|
||||
return (i <= 1 ? Math.round(size) : size.toFixed(1)).toString() + " " + sizeUnits[i];
|
||||
},
|
||||
checkedDecodeUri = function (uri) {
|
||||
|
||||
try {
|
||||
return decodeURI(uri);
|
||||
} catch (err) {}
|
||||
return uri;
|
||||
};
|
||||
try {
|
||||
return decodeURI(uri);
|
||||
} catch (err) {}
|
||||
return uri;
|
||||
};
|
||||
|
||||
return {
|
||||
splitPath: splitPath,
|
||||
pathEndsWithSlash: pathEndsWithSlash,
|
||||
getAbsHref: getAbsHref,
|
||||
parseSize: parseSize,
|
||||
formatSize: formatSize,
|
||||
checkedDecodeUri: checkedDecodeUri
|
||||
};
|
||||
}());
|
||||
return {
|
||||
splitPath: splitPath,
|
||||
pathEndsWithSlash: pathEndsWithSlash,
|
||||
getAbsHref: getAbsHref,
|
||||
parseSize: parseSize,
|
||||
formatSize: formatSize,
|
||||
checkedDecodeUri: checkedDecodeUri
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery, H5AI));
|
||||
|
|
|
@ -1,110 +1,110 @@
|
|||
|
||||
(function ($, H5AI) {
|
||||
|
||||
H5AI.zippedDownload = (function () {
|
||||
H5AI.zippedDownload = (function () {
|
||||
|
||||
var x = 0,
|
||||
y = 0,
|
||||
$document = $(document),
|
||||
$selectionRect = $("#selection-rect"),
|
||||
updateDownloadBtn = function () {
|
||||
var x = 0,
|
||||
y = 0,
|
||||
$document = $(document),
|
||||
$selectionRect = $("#selection-rect"),
|
||||
updateDownloadBtn = function () {
|
||||
|
||||
var $selected = $("#extended a.selected"),
|
||||
$downloadBtn = $("#download"),
|
||||
query, href;
|
||||
var $selected = $("#extended a.selected"),
|
||||
$downloadBtn = $("#download"),
|
||||
query, href;
|
||||
|
||||
if ($selected.size() > 0) {
|
||||
$selected.each(function () {
|
||||
href = $(this).attr("href");
|
||||
query = query ? query + ":" + href : href;
|
||||
});
|
||||
query = H5AI.core.api() + "?action=zip&hrefs=" + query;
|
||||
$downloadBtn.show().find("a").attr("href", query);
|
||||
} else {
|
||||
$downloadBtn.hide().find("a").attr("href", "#");
|
||||
}
|
||||
},
|
||||
selectionUpdate = function (event) {
|
||||
if ($selected.size() > 0) {
|
||||
$selected.each(function () {
|
||||
href = $(this).attr("href");
|
||||
query = query ? query + ":" + href : href;
|
||||
});
|
||||
query = H5AI.core.api() + "?action=zip&hrefs=" + query;
|
||||
$downloadBtn.show().find("a").attr("href", query);
|
||||
} else {
|
||||
$downloadBtn.hide().find("a").attr("href", "#");
|
||||
}
|
||||
},
|
||||
selectionUpdate = function (event) {
|
||||
|
||||
var l = Math.min(x, event.pageX),
|
||||
t = Math.min(y, event.pageY),
|
||||
w = Math.abs(x - event.pageX),
|
||||
h = Math.abs(y - event.pageY),
|
||||
selRect;
|
||||
var l = Math.min(x, event.pageX),
|
||||
t = Math.min(y, event.pageY),
|
||||
w = Math.abs(x - event.pageX),
|
||||
h = Math.abs(y - event.pageY),
|
||||
selRect;
|
||||
|
||||
event.preventDefault();
|
||||
$selectionRect.css({left: l, top: t, width: w, height: h});
|
||||
event.preventDefault();
|
||||
$selectionRect.css({left: l, top: t, width: w, height: h});
|
||||
|
||||
selRect = $selectionRect.fracs("rect");
|
||||
$("#extended a").removeClass("selecting").each(function () {
|
||||
selRect = $selectionRect.fracs("rect");
|
||||
$("#extended a").removeClass("selecting").each(function () {
|
||||
|
||||
var $a = $(this),
|
||||
rect = $a.fracs("rect"),
|
||||
inter = selRect.intersection(rect);
|
||||
if (inter && !$a.closest(".entry").hasClass("folder-parent")) {
|
||||
$a.addClass("selecting");
|
||||
}
|
||||
});
|
||||
},
|
||||
selectionEnd = function (event) {
|
||||
var $a = $(this),
|
||||
rect = $a.fracs("rect"),
|
||||
inter = selRect.intersection(rect);
|
||||
if (inter && !$a.closest(".entry").hasClass("folder-parent")) {
|
||||
$a.addClass("selecting");
|
||||
}
|
||||
});
|
||||
},
|
||||
selectionEnd = function (event) {
|
||||
|
||||
event.preventDefault();
|
||||
$document.off("mousemove", selectionUpdate);
|
||||
$selectionRect.hide().css({left: 0, top: 0, width: 0, height: 0});
|
||||
$("#extended a.selecting.selected").removeClass("selecting").removeClass("selected");
|
||||
$("#extended a.selecting").removeClass("selecting").addClass("selected");
|
||||
updateDownloadBtn();
|
||||
},
|
||||
selectionStart = function (event) {
|
||||
event.preventDefault();
|
||||
$document.off("mousemove", selectionUpdate);
|
||||
$selectionRect.hide().css({left: 0, top: 0, width: 0, height: 0});
|
||||
$("#extended a.selecting.selected").removeClass("selecting").removeClass("selected");
|
||||
$("#extended a.selecting").removeClass("selecting").addClass("selected");
|
||||
updateDownloadBtn();
|
||||
},
|
||||
selectionStart = function (event) {
|
||||
|
||||
var view = $.fracs.viewport();
|
||||
var view = $.fracs.viewport();
|
||||
|
||||
x = event.pageX;
|
||||
y = event.pageY;
|
||||
// only on left button and don't block the scrollbars
|
||||
if (event.button !== 0 || x >= view.right || y >= view.bottom) {
|
||||
return;
|
||||
}
|
||||
x = event.pageX;
|
||||
y = event.pageY;
|
||||
// only on left button and don't block the scrollbars
|
||||
if (event.button !== 0 || x >= view.right || y >= view.bottom) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
if (!event.ctrlKey) {
|
||||
$("#extended a").removeClass("selected");
|
||||
updateDownloadBtn();
|
||||
}
|
||||
$selectionRect.show().css({left: x, top: y, width: 0, height: 0});
|
||||
selectionUpdate(event);
|
||||
event.preventDefault();
|
||||
if (!event.ctrlKey) {
|
||||
$("#extended a").removeClass("selected");
|
||||
updateDownloadBtn();
|
||||
}
|
||||
$selectionRect.show().css({left: x, top: y, width: 0, height: 0});
|
||||
selectionUpdate(event);
|
||||
|
||||
$document
|
||||
.on("mousemove", selectionUpdate)
|
||||
.one("mouseup", selectionEnd);
|
||||
},
|
||||
noSelection = function (event) {
|
||||
$document
|
||||
.on("mousemove", selectionUpdate)
|
||||
.one("mouseup", selectionEnd);
|
||||
},
|
||||
noSelection = function (event) {
|
||||
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
},
|
||||
noSelectionUnlessCtrl = function (event) {
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
},
|
||||
noSelectionUnlessCtrl = function (event) {
|
||||
|
||||
if (!event.ctrlKey) {
|
||||
noSelection(event);
|
||||
}
|
||||
},
|
||||
init = function () {
|
||||
if (!event.ctrlKey) {
|
||||
noSelection(event);
|
||||
}
|
||||
},
|
||||
init = function () {
|
||||
|
||||
if (H5AI.core.settings.zippedDownload) {
|
||||
$("<li id='download'><a href='#'><img alt='download' /><span class='l10n-download'>download</span></a></li>")
|
||||
.find("img").attr("src", H5AI.core.image("download")).end()
|
||||
.appendTo($("#navbar"));
|
||||
if (H5AI.core.settings.zippedDownload) {
|
||||
$("<li id='download'><a href='#'><img alt='download' /><span class='l10n-download'>download</span></a></li>")
|
||||
.find("img").attr("src", H5AI.core.image("download")).end()
|
||||
.appendTo($("#navbar"));
|
||||
|
||||
$("body>nav,body>footer,#tree").on("mousedown", noSelection);
|
||||
$("#extended").on("mousedown", "a", noSelectionUnlessCtrl);
|
||||
$document.on("mousedown", selectionStart);
|
||||
}
|
||||
};
|
||||
$("body>nav,body>footer,#tree").on("mousedown", noSelection);
|
||||
$("#extended").on("mousedown", "a", noSelectionUnlessCtrl);
|
||||
$document.on("mousedown", selectionStart);
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
return {
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery, H5AI));
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
||||
*
|
||||
* Version: 3.0.5
|
||||
*
|
||||
*
|
||||
* Requires: 1.2.2+
|
||||
*/
|
||||
|
||||
|
@ -15,73 +15,70 @@
|
|||
var types = ['DOMMouseScroll', 'mousewheel'];
|
||||
|
||||
if ($.event.fixHooks) {
|
||||
for ( var i=types.length; i; ) {
|
||||
$.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
|
||||
}
|
||||
for ( var i=types.length; i; ) {
|
||||
$.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
|
||||
}
|
||||
}
|
||||
|
||||
$.event.special.mousewheel = {
|
||||
setup: function() {
|
||||
if ( this.addEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.addEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = handler;
|
||||
}
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
if ( this.removeEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.removeEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = null;
|
||||
}
|
||||
}
|
||||
setup: function() {
|
||||
if ( this.addEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.addEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = handler;
|
||||
}
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
if ( this.removeEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.removeEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.extend({
|
||||
mousewheel: function(fn) {
|
||||
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
|
||||
},
|
||||
|
||||
unmousewheel: function(fn) {
|
||||
return this.unbind("mousewheel", fn);
|
||||
}
|
||||
mousewheel: function(fn) {
|
||||
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
|
||||
},
|
||||
|
||||
unmousewheel: function(fn) {
|
||||
return this.unbind("mousewheel", fn);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function handler(event) {
|
||||
var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
|
||||
event = $.event.fix(orgEvent);
|
||||
event.type = "mousewheel";
|
||||
|
||||
// Old school scrollwheel delta
|
||||
if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
|
||||
if ( event.detail ) { delta = -event.detail/3; }
|
||||
|
||||
// New school multidimensional scroll (touchpads) deltas
|
||||
deltaY = delta;
|
||||
|
||||
// Gecko
|
||||
if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
|
||||
deltaY = 0;
|
||||
deltaX = -1*delta;
|
||||
}
|
||||
|
||||
// Webkit
|
||||
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
|
||||
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
|
||||
|
||||
// Add event and delta to the front of the arguments
|
||||
args.unshift(event, delta, deltaX, deltaY);
|
||||
|
||||
return ($.event.dispatch || $.event.handle).apply(this, args);
|
||||
var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
|
||||
event = $.event.fix(orgEvent);
|
||||
event.type = "mousewheel";
|
||||
|
||||
// Old school scrollwheel delta
|
||||
if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
|
||||
if ( event.detail ) { delta = -event.detail/3; }
|
||||
|
||||
// New school multidimensional scroll (touchpads) deltas
|
||||
deltaY = delta;
|
||||
|
||||
// Gecko
|
||||
if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
|
||||
deltaY = 0;
|
||||
deltaX = -1*delta;
|
||||
}
|
||||
|
||||
// Webkit
|
||||
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
|
||||
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
|
||||
|
||||
// Add event and delta to the front of the arguments
|
||||
args.unshift(event, delta, deltaX, deltaY);
|
||||
|
||||
return ($.event.dispatch || $.event.handle).apply(this, args);
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,156 +2,156 @@
|
|||
* jQuery.scrollpanel
|
||||
* author: Lars Jung
|
||||
* license: MIT
|
||||
*
|
||||
* bad and ugly coded!
|
||||
*
|
||||
* still quick and dirty!
|
||||
*/
|
||||
|
||||
(function (window, $) {
|
||||
"use strict";
|
||||
"use strict";
|
||||
|
||||
var $window = $(window),
|
||||
init = function (htmlElement) {
|
||||
var $window = $(window),
|
||||
init = function (htmlElement) {
|
||||
|
||||
var $element = $(htmlElement),
|
||||
$scrollbar, $drag, $wrapper, $content, mouseOffsetY, updateId,
|
||||
update, scroll;
|
||||
var $element = $(htmlElement),
|
||||
$scrollbar, $drag, $wrapper, $content, mouseOffsetY, updateId,
|
||||
update, scroll;
|
||||
|
||||
if (!$element.css("position") || $element.css("position") === "static") {
|
||||
$element.css("position", "relative");
|
||||
}
|
||||
if (!$element.css("position") || $element.css("position") === "static") {
|
||||
$element.css("position", "relative");
|
||||
}
|
||||
|
||||
$scrollbar = $("<div class='scrollbar' />");
|
||||
$drag = $("<div class='drag' />").appendTo($scrollbar);
|
||||
$element
|
||||
.wrapInner("<div class='wrapper'><div class='content' /></div>")
|
||||
.append($scrollbar);
|
||||
$wrapper = $element.find("> .wrapper");
|
||||
$content = $wrapper.find("> .content");
|
||||
mouseOffsetY = 0;
|
||||
$scrollbar = $("<div class='scrollbar' />");
|
||||
$drag = $("<div class='drag' />").appendTo($scrollbar);
|
||||
$element
|
||||
.wrapInner("<div class='wrapper'><div class='content' /></div>")
|
||||
.append($scrollbar);
|
||||
$wrapper = $element.find("> .wrapper");
|
||||
$content = $wrapper.find("> .content");
|
||||
mouseOffsetY = 0;
|
||||
|
||||
update = function (repeat) {
|
||||
update = function (repeat) {
|
||||
|
||||
var visibleHeight, contentHeight, scrollTop, scrollTopFrac, visVertFrac;
|
||||
var visibleHeight, contentHeight, scrollTop, scrollTopFrac, visVertFrac;
|
||||
|
||||
if (updateId && !repeat) {
|
||||
clearInterval(updateId);
|
||||
updateId = undefined;
|
||||
} else if (!updateId && repeat) {
|
||||
updateId = setInterval(function() { update(true); }, 50);
|
||||
}
|
||||
if (updateId && !repeat) {
|
||||
clearInterval(updateId);
|
||||
updateId = undefined;
|
||||
} else if (!updateId && repeat) {
|
||||
updateId = setInterval(function() { update(true); }, 50);
|
||||
}
|
||||
|
||||
$wrapper.css("height", $element.height());
|
||||
visibleHeight = $element.height();
|
||||
contentHeight = $content.outerHeight();
|
||||
scrollTop = $wrapper.scrollTop();
|
||||
scrollTopFrac = scrollTop / contentHeight;
|
||||
visVertFrac = Math.min(visibleHeight / contentHeight, 1);
|
||||
$wrapper.css("height", $element.height());
|
||||
visibleHeight = $element.height();
|
||||
contentHeight = $content.outerHeight();
|
||||
scrollTop = $wrapper.scrollTop();
|
||||
scrollTopFrac = scrollTop / contentHeight;
|
||||
visVertFrac = Math.min(visibleHeight / contentHeight, 1);
|
||||
|
||||
if (visVertFrac < 1) {
|
||||
$scrollbar
|
||||
.fadeIn(50)
|
||||
.css({
|
||||
height: $element.innerHeight() + $scrollbar.height() - $scrollbar.outerHeight(true)
|
||||
});
|
||||
$drag
|
||||
.css({
|
||||
top: $scrollbar.height() * scrollTopFrac,
|
||||
height: $scrollbar.height() * visVertFrac
|
||||
});
|
||||
} else {
|
||||
$scrollbar.fadeOut(50);
|
||||
}
|
||||
};
|
||||
if (visVertFrac < 1) {
|
||||
$scrollbar
|
||||
.fadeIn(50)
|
||||
.css({
|
||||
height: $element.innerHeight() + $scrollbar.height() - $scrollbar.outerHeight(true)
|
||||
});
|
||||
$drag
|
||||
.css({
|
||||
top: $scrollbar.height() * scrollTopFrac,
|
||||
height: $scrollbar.height() * visVertFrac
|
||||
});
|
||||
} else {
|
||||
$scrollbar.fadeOut(50);
|
||||
}
|
||||
};
|
||||
|
||||
scroll = function (event) {
|
||||
scroll = function (event) {
|
||||
|
||||
var clickFrac = (event.pageY - $scrollbar.offset().top - mouseOffsetY) / $scrollbar.height();
|
||||
var clickFrac = (event.pageY - $scrollbar.offset().top - mouseOffsetY) / $scrollbar.height();
|
||||
|
||||
$wrapper.scrollTop($content.outerHeight() * clickFrac);
|
||||
update();
|
||||
event.preventDefault();
|
||||
};
|
||||
$wrapper.scrollTop($content.outerHeight() * clickFrac);
|
||||
update();
|
||||
event.preventDefault();
|
||||
};
|
||||
|
||||
$element
|
||||
.mousewheel(function (event, delta) {
|
||||
|
||||
$wrapper.scrollTop($wrapper.scrollTop() - 50 * delta);
|
||||
update();
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
})
|
||||
.scroll(update);
|
||||
$element.get(0).updateScrollbar = update;
|
||||
$wrapper
|
||||
.css({
|
||||
"padding-right": $scrollbar.outerWidth(true),
|
||||
height: $element.height(),
|
||||
overflow: "hidden"
|
||||
});
|
||||
$scrollbar
|
||||
.css({
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
right: 0,
|
||||
overflow: "hidden",
|
||||
cursor: "pointer"
|
||||
})
|
||||
.mousedown(function (event) {
|
||||
$element
|
||||
.mousewheel(function (event, delta) {
|
||||
|
||||
mouseOffsetY = $drag.outerHeight() / 2;
|
||||
scroll(event);
|
||||
$scrollbar.addClass("dragOn");
|
||||
$window
|
||||
.bind("mousemove", scroll)
|
||||
.one("mouseup", function (event) {
|
||||
$wrapper.scrollTop($wrapper.scrollTop() - 50 * delta);
|
||||
update();
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
})
|
||||
.scroll(update);
|
||||
$element.get(0).updateScrollbar = update;
|
||||
$wrapper
|
||||
.css({
|
||||
"padding-right": $scrollbar.outerWidth(true),
|
||||
height: $element.height(),
|
||||
overflow: "hidden"
|
||||
});
|
||||
$scrollbar
|
||||
.css({
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
right: 0,
|
||||
overflow: "hidden",
|
||||
cursor: "pointer"
|
||||
})
|
||||
.mousedown(function (event) {
|
||||
|
||||
$scrollbar.removeClass("dragOn");
|
||||
$window.unbind("mousemove", scroll);
|
||||
scroll(event);
|
||||
event.stopPropagation();
|
||||
});
|
||||
event.preventDefault();
|
||||
})
|
||||
.each(function () {
|
||||
mouseOffsetY = $drag.outerHeight() / 2;
|
||||
scroll(event);
|
||||
$scrollbar.addClass("dragOn");
|
||||
$window
|
||||
.bind("mousemove", scroll)
|
||||
.one("mouseup", function (event) {
|
||||
|
||||
this.onselectstart = function () {
|
||||
$scrollbar.removeClass("dragOn");
|
||||
$window.unbind("mousemove", scroll);
|
||||
scroll(event);
|
||||
event.stopPropagation();
|
||||
});
|
||||
event.preventDefault();
|
||||
})
|
||||
.each(function () {
|
||||
|
||||
return false;
|
||||
};
|
||||
});
|
||||
$drag
|
||||
.css({
|
||||
position: "absolute",
|
||||
left: 0,
|
||||
width: "100%"
|
||||
})
|
||||
.mousedown(function (event) {
|
||||
this.onselectstart = function () {
|
||||
|
||||
mouseOffsetY = event.pageY - $drag.offset().top;
|
||||
scroll(event);
|
||||
$scrollbar.addClass("dragOn");
|
||||
$window
|
||||
.bind("mousemove", scroll)
|
||||
.one("mouseup", function (event) {
|
||||
return false;
|
||||
};
|
||||
});
|
||||
$drag
|
||||
.css({
|
||||
position: "absolute",
|
||||
left: 0,
|
||||
width: "100%"
|
||||
})
|
||||
.mousedown(function (event) {
|
||||
|
||||
$scrollbar.removeClass("dragOn");
|
||||
$window.unbind("mousemove", scroll);
|
||||
scroll(event);
|
||||
event.stopPropagation();
|
||||
});
|
||||
event.stopPropagation();
|
||||
});
|
||||
mouseOffsetY = event.pageY - $drag.offset().top;
|
||||
scroll(event);
|
||||
$scrollbar.addClass("dragOn");
|
||||
$window
|
||||
.bind("mousemove", scroll)
|
||||
.one("mouseup", function (event) {
|
||||
|
||||
update();
|
||||
};
|
||||
$scrollbar.removeClass("dragOn");
|
||||
$window.unbind("mousemove", scroll);
|
||||
scroll(event);
|
||||
event.stopPropagation();
|
||||
});
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
update();
|
||||
};
|
||||
|
||||
|
||||
$.fn.scrollpanel = function () {
|
||||
$.fn.scrollpanel = function () {
|
||||
|
||||
return this.each(function () {
|
||||
return this.each(function () {
|
||||
|
||||
init(this);
|
||||
});
|
||||
};
|
||||
init(this);
|
||||
});
|
||||
};
|
||||
|
||||
}(window, jQuery));
|
||||
|
|
|
@ -3,27 +3,27 @@
|
|||
/*global jQuery, amplify, H5AI_CONFIG */
|
||||
|
||||
(function ($) {
|
||||
"use strict";
|
||||
"use strict";
|
||||
|
||||
var H5AI = {};
|
||||
var H5AI = {};
|
||||
|
||||
// @include "inc/Util.js"
|
||||
// @include "inc/Core.js"
|
||||
// @include "inc/Sort.js"
|
||||
// @include "inc/ZippedDownload.js"
|
||||
// @include "inc/Util.js"
|
||||
// @include "inc/Core.js"
|
||||
// @include "inc/Sort.js"
|
||||
// @include "inc/ZippedDownload.js"
|
||||
|
||||
// @include "inc/Path.js"
|
||||
// @include "inc/Connector.js"
|
||||
// @include "inc/Html.js"
|
||||
// @include "inc/Extended.js"
|
||||
// @include "inc/Path.js"
|
||||
// @include "inc/Connector.js"
|
||||
// @include "inc/Html.js"
|
||||
// @include "inc/Extended.js"
|
||||
|
||||
$(function () {
|
||||
$(function () {
|
||||
|
||||
H5AI.extended.init();
|
||||
H5AI.extended.init();
|
||||
|
||||
H5AI.core.init();
|
||||
H5AI.sort.init();
|
||||
H5AI.zippedDownload.init();
|
||||
});
|
||||
H5AI.core.init();
|
||||
H5AI.sort.init();
|
||||
H5AI.zippedDownload.init();
|
||||
});
|
||||
|
||||
}(jQuery));
|
||||
|
|
|
@ -3,23 +3,23 @@
|
|||
/*global jQuery, amplify, H5AI_CONFIG */
|
||||
|
||||
(function ($) {
|
||||
"use strict";
|
||||
"use strict";
|
||||
|
||||
var H5AI = {};
|
||||
var H5AI = {};
|
||||
|
||||
// @include "inc/Util.js"
|
||||
// @include "inc/Core.js"
|
||||
// @include "inc/Sort.js"
|
||||
// @include "inc/ZippedDownload.js"
|
||||
// @include "inc/Util.js"
|
||||
// @include "inc/Core.js"
|
||||
// @include "inc/Sort.js"
|
||||
// @include "inc/ZippedDownload.js"
|
||||
|
||||
$(function () {
|
||||
$(function () {
|
||||
|
||||
H5AI.core.init();
|
||||
H5AI.sort.init();
|
||||
H5AI.zippedDownload.init();
|
||||
H5AI.core.init();
|
||||
H5AI.sort.init();
|
||||
H5AI.zippedDownload.init();
|
||||
|
||||
$("#tree").scrollpanel();
|
||||
H5AI.core.shiftTree(false, true);
|
||||
});
|
||||
$("#tree").scrollpanel();
|
||||
H5AI.core.shiftTree(false, true);
|
||||
});
|
||||
|
||||
}(jQuery));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue