70 lines
1.8 KiB
JavaScript

modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'core/event', 'core/location', 'core/server'], function (_, $, allsettings, resource, event, location, server) {
var settings = _.extend({
enabled: false,
type: 'php-tar',
packageName: 'package',
alwaysVisible: false
}, allsettings.download);
var downloadBtnTemplate =
'<div id="download" class="tool">' +
'<img src="' + resource.image('download') + '" alt="download"/>' +
'</div>';
var selectedItems = [];
function onSelection(items) {
var $download = $('#download');
selectedItems = items.slice(0);
if (selectedItems.length) {
$download.show();
} else if (!settings.alwaysVisible) {
$download.hide();
}
}
function onClick(event) {
var type = settings.type;
var extension = (type === 'shell-zip') ? 'zip' : 'tar';
var name;
if (selectedItems.length === 1) {
name = selectedItems[0].label;
} else {
name = location.getItem().label;
}
var query = {
action: 'download',
as: (settings.packageName || name) + '.' + extension,
type: type,
hrefs: _.pluck(selectedItems, 'absHref').join('|:|')
};
server.formRequest(query);
}
function init() {
if (!settings.enabled) {
return;
}
$(downloadBtnTemplate)
.on('click', onClick)
.appendTo('#toolbar');
if (settings.alwaysVisible) {
$('#download').show();
}
event.sub('selection', onSelection);
}
init();
});