Improves file selection for zipped download. Zipped download is now disabled by default.

This commit is contained in:
Lars Jung 2011-10-30 21:50:25 +01:00
parent 3c23c7e956
commit 4a65ce61df
20 changed files with 109 additions and 100 deletions

View File

@ -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);
}

View File

@ -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>

View File

@ -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>

View File

@ -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">

View File

@ -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();
};
};

View File

@ -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 () {

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
/*global window, jQuery */
(function ($) {
"use strict";
/*global window, jQuery */
var init = function (htmlElement) {

File diff suppressed because one or more lines are too long

7
src/h5ai/js/libs.js Normal file
View 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"

View File

@ -1,7 +1,3 @@
/*global jQuery, h5aiOptions, h5aiLangs*/
// @include "inc/jquery.scrollpanel.js"
// @include "inc/jquery.utils.js"
(function($) {
"use strict";

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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": {

View File

@ -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";
}
?>

View File

@ -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%