mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-03-21 21:10:00 +01:00
Improves file selection for zipped download. Zipped download is now disabled by default.
This commit is contained in:
parent
3c23c7e956
commit
4a65ce61df
@ -45,7 +45,7 @@
|
||||
background-color: #f6f6f6;
|
||||
color: #e80;
|
||||
}
|
||||
&.selected {
|
||||
&.selected:not(.selecting), &.selecting:not(.selected) {
|
||||
border-color: rgba(240,100,0,0.2);
|
||||
background-color: rgba(240,100,0,0.2);
|
||||
}
|
||||
@ -193,7 +193,7 @@
|
||||
border-color: #eee;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
&.selected {
|
||||
&.selected:not(.selecting), &.selecting:not(.selected) {
|
||||
border-color: rgba(240,100,0,0.2);
|
||||
background-color: rgba(240,100,0,0.2);
|
||||
}
|
||||
|
@ -27,9 +27,7 @@
|
||||
</span>
|
||||
</span>
|
||||
</footer>
|
||||
<script src="/h5ai/js/lib/jquery.min.js"></script>
|
||||
<script src="/h5ai/js/lib/jquery.mousewheel.min.js"></script>
|
||||
<script src="/h5ai/js/lib/jquery.fracs-core.min.js"></script>
|
||||
<script src="/h5ai/js/libs.js"></script>
|
||||
<script src="/h5ai/options.js"></script>
|
||||
<script src="/h5ai/js/main-js.js"></script>
|
||||
</body>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<link rel="apple-touch-icon" type="image/png" href="/h5ai/images/h5ai-48x48.png">
|
||||
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold">
|
||||
<link rel="stylesheet" href="/h5ai/css/main-js.css">
|
||||
<script src="/h5ai/js/lib/modernizr.min.js"></script>
|
||||
<script src="/h5ai/js/modernizr.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="selection-rect"></div>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<link rel="apple-touch-icon" type="image/png" href="/h5ai/images/h5ai-48x48.png">
|
||||
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold">
|
||||
<link rel="stylesheet" href="/h5ai/css/main-php.css">
|
||||
<script src="/h5ai/js/lib/modernizr.min.js"></script>
|
||||
<script src="/h5ai/js/modernizr.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="selection-rect"></div>
|
||||
@ -60,9 +60,7 @@
|
||||
</span>
|
||||
</span>
|
||||
</footer>
|
||||
<script src="/h5ai/js/lib/jquery.min.js"></script>
|
||||
<script src="/h5ai/js/lib/jquery.mousewheel.min.js"></script>
|
||||
<script src="/h5ai/js/lib/jquery.fracs-core.min.js"></script>
|
||||
<script src="/h5ai/js/libs.js"></script>
|
||||
<script src="/h5ai/options.js"></script>
|
||||
<script src="/h5ai/js/main-php.js"></script>
|
||||
<section id="table">
|
||||
|
@ -95,7 +95,7 @@ H5aiJs.factory.Extended = function () {
|
||||
}
|
||||
});
|
||||
},
|
||||
initCounts = function () {
|
||||
initTotals = function () {
|
||||
|
||||
$(".folderCount").text($("#extended .entry.folder:not(.parentfolder)").size());
|
||||
$(".fileCount").text($("#extended .entry.file").size());
|
||||
@ -107,6 +107,6 @@ H5aiJs.factory.Extended = function () {
|
||||
initBreadcrumb();
|
||||
initExtendedView();
|
||||
customize();
|
||||
initCounts();
|
||||
initTotals();
|
||||
};
|
||||
};
|
||||
|
@ -1,12 +1,13 @@
|
||||
/*global window, $, H5aiJs, localStorage */
|
||||
|
||||
H5aiJs.factory.H5ai = function (options, langs) {
|
||||
/*global window, $, amplify*/
|
||||
|
||||
var $window = $(window),
|
||||
$document = $(document),
|
||||
defaults = {
|
||||
store: {
|
||||
viewmode: "h5ai.viewmode",
|
||||
lang: "h5ai.lang"
|
||||
viewmode: "h5ai.pref.viewmode",
|
||||
lang: "h5ai.pref.lang"
|
||||
},
|
||||
callbacks: {
|
||||
pathClick: []
|
||||
@ -47,14 +48,14 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
},
|
||||
getViewmode = function () {
|
||||
|
||||
var viewmode = localStorage.getItem(settings.store.viewmode);
|
||||
var viewmode = amplify.store(settings.store.viewmode);
|
||||
|
||||
return $.inArray(viewmode, settings.viewmodes) >= 0 ? viewmode : settings.viewmodes[0];
|
||||
},
|
||||
applyViewmode = function (viewmode) {
|
||||
|
||||
if (viewmode) {
|
||||
localStorage.setItem(settings.store.viewmode, viewmode);
|
||||
amplify.store(settings.store.viewmode, viewmode);
|
||||
}
|
||||
viewmode = getViewmode();
|
||||
|
||||
@ -189,7 +190,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
},
|
||||
localize = function (langs, lang, useBrowserLang) {
|
||||
|
||||
var storedLang = localStorage.getItem(settings.store.lang),
|
||||
var storedLang = amplify.store(settings.store.lang),
|
||||
browserLang, selected, key;
|
||||
|
||||
if (langs[storedLang]) {
|
||||
@ -219,7 +220,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
},
|
||||
initLangSelector = function (langs) {
|
||||
|
||||
var idx, lang,
|
||||
var $langOptions = $(".langOptions"),
|
||||
sortedLangsKeys = [],
|
||||
$ul;
|
||||
|
||||
@ -235,18 +236,22 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
.text(lang + " - " + langs[lang].lang)
|
||||
.appendTo($ul)
|
||||
.click(function () {
|
||||
localStorage.setItem(settings.store.lang, lang);
|
||||
amplify.store(settings.store.lang, lang);
|
||||
localize(langs, lang, false);
|
||||
});
|
||||
});
|
||||
$("#langSelector .langOptions").append($ul);
|
||||
$("#langSelector").hover(
|
||||
function () {
|
||||
var $ele = $(".langOptions");
|
||||
$ele.css("top", "-" + $ele.outerHeight() + "px").stop(true, true).fadeIn();
|
||||
$langOptions
|
||||
.css("top", "-" + $langOptions.outerHeight() + "px")
|
||||
.stop(true, true)
|
||||
.fadeIn();
|
||||
},
|
||||
function () {
|
||||
$(".langOptions").stop(true, true).fadeOut();
|
||||
$langOptions
|
||||
.stop(true, true)
|
||||
.fadeOut();
|
||||
}
|
||||
);
|
||||
},
|
||||
@ -296,14 +301,23 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
|
||||
var x = 0,
|
||||
y = 0,
|
||||
selected = function (hrefs) {
|
||||
ctrl = false,
|
||||
updateDownloadBtn = function () {
|
||||
|
||||
var query, idx;
|
||||
$.each(hrefs, function (idx, href) {
|
||||
query = query ? query + ":" + href : href;
|
||||
});
|
||||
query = "/h5ai/php/zipcontent.php?hrefs=" + query;
|
||||
$("#download").show().find("a").attr("href", query);
|
||||
var query,
|
||||
href,
|
||||
$selected = $("#extended a.selected");
|
||||
|
||||
if ($selected.size() > 0) {
|
||||
$selected.each(function () {
|
||||
href = $(this).attr("href");
|
||||
query = query ? query + ":" + href : href;
|
||||
});
|
||||
query = "/h5ai/php/zipcontent.php?hrefs=" + query;
|
||||
$("#download").show().find("a").attr("href", query);
|
||||
} else {
|
||||
$("#download").hide().find("a").attr("href", "#");
|
||||
}
|
||||
},
|
||||
selectionUpdate = function (event) {
|
||||
|
||||
@ -317,41 +331,45 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
$("#selection-rect").css({left: l, top: t, width: w, height: h});
|
||||
|
||||
sel = $("#selection-rect").fracs("rect");
|
||||
$("#extended a").removeClass("selected").each(function () {
|
||||
$("#extended a").removeClass("selecting").each(function () {
|
||||
|
||||
var $a = $(this),
|
||||
rect = $a.fracs("rect"),
|
||||
inter = sel.intersection(rect);
|
||||
if (inter && !$a.closest(".entry").hasClass("folder-parent")) {
|
||||
$a.addClass("selected");
|
||||
$a.addClass("selecting");
|
||||
}
|
||||
});
|
||||
},
|
||||
selectionEnd = function (event) {
|
||||
|
||||
event.preventDefault();
|
||||
$document.unbind("mousemove", selectionUpdate);
|
||||
$("#selection-rect").hide().css({left: 0, top: 0, width: 0, height: 0});
|
||||
|
||||
$window.unbind("mousemove", selectionUpdate);
|
||||
|
||||
var hrefs = [];
|
||||
$("#extended a.selected").each(function () {
|
||||
hrefs.push($(this).attr("href"));
|
||||
});
|
||||
if (hrefs.length > 0) {
|
||||
selected(hrefs);
|
||||
}
|
||||
$("#extended a.selecting.selected").removeClass("selecting").removeClass("selected");
|
||||
$("#extended a.selecting").removeClass("selecting").addClass("selected");
|
||||
updateDownloadBtn();
|
||||
},
|
||||
selectionStart = function (event) {
|
||||
|
||||
event.preventDefault();
|
||||
var view = $.fracs.viewport();
|
||||
|
||||
x = event.pageX;
|
||||
y = event.pageY;
|
||||
$("#download").hide().find("a").attr("href", "#");
|
||||
$("#extended a").removeClass("selected");
|
||||
$("#selection-rect").show().css({left: x, top: y, width: 0, height: 0});
|
||||
if (x >= view.right || y >= view.bottom) {
|
||||
// don't block the scrollbars
|
||||
return;
|
||||
}
|
||||
|
||||
$window
|
||||
event.preventDefault();
|
||||
if (!ctrl) {
|
||||
$("#extended a").removeClass("selected");
|
||||
updateDownloadBtn();
|
||||
}
|
||||
$("#selection-rect").show().css({left: x, top: y, width: 0, height: 0});
|
||||
selectionUpdate(event);
|
||||
|
||||
$document
|
||||
.bind("mousemove", selectionUpdate)
|
||||
.one("mouseup", selectionEnd);
|
||||
},
|
||||
@ -359,12 +377,29 @@ H5aiJs.factory.H5ai = function (options, langs) {
|
||||
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
},
|
||||
noSelectionUnlessCtrl = function (event) {
|
||||
|
||||
if (!ctrl) {
|
||||
noSelection(event);
|
||||
}
|
||||
};
|
||||
|
||||
if (settings.zippedDownload) {
|
||||
$("body>nav,body>footer,#tree,#extended a").bind("mousedown", noSelection);
|
||||
$("#extended a").live("mousedown", noSelection);
|
||||
$window.bind("mousedown", selectionStart);
|
||||
$("body>nav,body>footer,#tree").bind("mousedown", noSelection);
|
||||
$("#extended .entry a").bind("mousedown", noSelectionUnlessCtrl).live("mousedown", noSelectionUnlessCtrl);
|
||||
$document
|
||||
.bind("mousedown", selectionStart)
|
||||
.keydown(function (event) {
|
||||
if (event.keyCode === 17) {
|
||||
ctrl = true;
|
||||
}
|
||||
})
|
||||
.keyup(function (event) {
|
||||
if (event.keyCode === 17) {
|
||||
ctrl = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
init = function () {
|
||||
|
@ -1,31 +0,0 @@
|
||||
/*global window, jQuery */
|
||||
|
||||
(function ($) {
|
||||
"use strict";
|
||||
|
||||
// http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
|
||||
// modified
|
||||
$.log = function () {
|
||||
|
||||
$.log.history = $.log.history || [];
|
||||
$.log.history.push(arguments);
|
||||
if (window.console) {
|
||||
window.console.log(Array.prototype.slice.call(arguments));
|
||||
}
|
||||
};
|
||||
|
||||
$.timer = (function () {
|
||||
|
||||
var start = $.now(),
|
||||
last = start;
|
||||
|
||||
return {
|
||||
log: function (label) {
|
||||
var now = $.now();
|
||||
$.log("timer", label, "+" + (now - last), "=" + (now - start));
|
||||
last = now;
|
||||
}
|
||||
};
|
||||
}());
|
||||
|
||||
}(jQuery));
|
10
src/h5ai/js/inc/lib/amplify.min.js
vendored
Normal file
10
src/h5ai/js/inc/lib/amplify.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
/*global window, jQuery */
|
||||
|
||||
(function ($) {
|
||||
"use strict";
|
||||
/*global window, jQuery */
|
||||
|
||||
var init = function (htmlElement) {
|
||||
|
4
src/h5ai/js/lib/modernizr.min.js
vendored
4
src/h5ai/js/lib/modernizr.min.js
vendored
File diff suppressed because one or more lines are too long
7
src/h5ai/js/libs.js
Normal file
7
src/h5ai/js/libs.js
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
// @include "inc/lib/jquery.min.js"
|
||||
// @include "inc/lib/jquery.mousewheel.min.js"
|
||||
// @include "inc/lib/jquery.fracs-core.min.js"
|
||||
// @include "inc/lib/jquery.scrollpanel.js"
|
||||
|
||||
// @include "inc/lib/amplify.min.js"
|
@ -1,7 +1,3 @@
|
||||
/*global jQuery, h5aiOptions, h5aiLangs*/
|
||||
|
||||
// @include "inc/jquery.scrollpanel.js"
|
||||
// @include "inc/jquery.utils.js"
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
@ -1,7 +1,3 @@
|
||||
/*global jQuery, h5aiOptions, h5aiLangs*/
|
||||
|
||||
// @include "inc/jquery.scrollpanel.js"
|
||||
// @include "inc/jquery.utils.js"
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
4
src/h5ai/js/modernizr.min.js
vendored
Normal file
4
src/h5ai/js/modernizr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -103,7 +103,7 @@ h5aiOptions = {
|
||||
* Enable zipped download of selected entries. Requieres
|
||||
* PHP on the server.
|
||||
*/
|
||||
"zippedDownload": true
|
||||
"zippedDownload": false
|
||||
};
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ h5aiLangs = {
|
||||
"empty": "vide",
|
||||
"folders": "Répertoires",
|
||||
"files": "Fichiers",
|
||||
"download": "download"
|
||||
"download": "télécharger"
|
||||
},
|
||||
|
||||
"it": {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
if (!array_key_exists("hrefs", $_REQUEST)) {
|
||||
echo "failed";
|
||||
echo "1: no href specified";
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -12,7 +12,6 @@ $h5ai = new H5ai();
|
||||
$zipit = new ZipIt($h5ai);
|
||||
|
||||
$hrefs = explode(":", trim($_REQUEST["hrefs"]));
|
||||
|
||||
$zipFile = $zipit->zip($hrefs);
|
||||
|
||||
if ($zipFile !== false) {
|
||||
@ -22,7 +21,7 @@ if ($zipFile !== false) {
|
||||
header("Connection: close");
|
||||
readfile($zipFile);
|
||||
} else {
|
||||
echo "sorry, something went wrong while building the zip.";
|
||||
echo "2: something went wrong while building the zip";
|
||||
}
|
||||
|
||||
?>
|
@ -27,7 +27,8 @@ IndexIgnore h5ai h5ai.header.html h5ai.footer.html
|
||||
# table options
|
||||
################################
|
||||
|
||||
# syntax for default sort order is: IndexOrderDefault Ascending|Descending Name|Date|Size
|
||||
# syntax for default sort order is:
|
||||
# IndexOrderDefault Ascending|Descending Name|Date|Size
|
||||
IndexOrderDefault Ascending Name
|
||||
|
||||
IndexOptions Type=text/html;h5ai=%BUILD_VERSION%
|
||||
|
Loading…
x
Reference in New Issue
Block a user