diff --git a/src/_h5ai/js/inc/ext/dropbox.js b/src/_h5ai/js/inc/ext/dropbox.js index 7e589b53..2415708a 100644 --- a/src/_h5ai/js/inc/ext/dropbox.js +++ b/src/_h5ai/js/inc/ext/dropbox.js @@ -1,8 +1,10 @@ -modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry'], function (_, $, allsettings, entry) { +modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry', 'core/resource'], function (_, $, allsettings, entry, resource) { var defaults = { - enabled: true + enabled: false, + maxfiles: 5, + maxfilesize: 20 }, settings = _.extend({}, defaults, allsettings.dropbox), @@ -11,8 +13,8 @@ modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry'], functi uploadTemplate = '
  • ' + '' + - '
    ' + '' + + '
    ' + '
  • ', init = function () { @@ -23,16 +25,34 @@ modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry'], functi var $dropbox = $(template).appendTo('#content'); - var uploads = {}; + var uploads = {}, + afterUpload = function (err, file, timeout) { - $dropbox.filedrop({ + timeout = timeout || 5000; + + if (file) { + uploads[file.name] + .addClass(err ? 'error' : 'finished') + .find('.progress').replaceWith(err ? '' + err + '' : 'okay'); + + setTimeout(function () { + uploads[file.name].slideUp(400, function () { + + uploads[file.name].remove(); + delete uploads[file.name]; + }); + }, timeout); + } + }; + + // $dropbox.filedrop({ + $('html').filedrop({ - // The name of the $_FILES entry: paramname: 'userfile', - maxfiles: 24, - maxfilesize: 1024, - url: allsettings.h5aiAbsHref + 'php/api.php', + maxfiles: settings.maxfiles, + maxfilesize: settings.maxfilesize, + url: resource.api(), data: { action: 'upload', href: entry.absHref @@ -48,19 +68,9 @@ modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry'], functi $dropbox.removeClass('match'); }, - docOver: function () { - - $dropbox.addClass('hint'); - }, - - docLeave: function () { - - $dropbox.removeClass('hint'); - }, - drop: function () { - $dropbox.removeClass('match hint'); + $dropbox.removeClass('match'); }, @@ -70,69 +80,23 @@ modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/entry'], functi .find('.name').text(file.name).end() .find('.size').text(file.size).end() .find('.progress .bar').css('width', 0).end(); - - console.log('beforeEach', file); - }, - - uploadStarted: function (i, file, len) { - - console.log('uploadStarted', i, file, len); }, progressUpdated: function (i, file, progress) { - uploads[file.name] - .find('.progress .bar').css('width', '' + progress + '%'); - console.log('progressUpdated', i, file, progress); + uploads[file.name].find('.progress .bar').css('width', '' + progress + '%'); }, uploadFinished: function (i, file, response) { - uploads[file.name].addClass(response.code ? 'error' : 'finished'); - setTimeout(function () { - uploads[file.name].slideUp(400, function () { - - uploads[file.name].remove(); - }); - }, 5000); - console.log('uploadFinished', i, file, response); + afterUpload(response.code && response.msg, file); }, - afterAll: function () { - - // $('#uploads .upload').remove(); - }, - - error: function (err, file) { - uploads[file.name].addClass('error'); - setTimeout(function () { - uploads[file.name].slideUp(400, function () { - - uploads[file.name].remove(); - }); - }, 5000); - switch (err) { - case 'BrowserNotSupported': - console.log('ERROR', 'Your browser does not support HTML5 file uploads!'); - break; - case 'TooManyFiles': - console.log('ERROR', 'Too many files! Please select 5 at most! (configurable)'); - break; - case 'FileTooLarge': - console.log('ERROR', file.name + ' is too large! Please upload files up to 2mb (configurable).'); - break; - default: - break; - } - console.log('error', err, file); + afterUpload(err, file); } }); - - - - }; init();