Support retry with optional overwrite
This commit is contained in:
@@ -216,9 +216,9 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
var folderItem;
|
||||
try {
|
||||
folderItem = event.originalEvent.dataTransfer.items[0].webkitGetAsEntry();
|
||||
if (folderItem.isFile) return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder);
|
||||
if (folderItem.isFile) return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder, false);
|
||||
} catch (e) {
|
||||
return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder);
|
||||
return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder, false);
|
||||
}
|
||||
|
||||
// if we got here we have a folder drop and a modern browser
|
||||
@@ -252,7 +252,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
|
||||
if (error) return console.error(error);
|
||||
|
||||
uploadFiles(fileList, targetFolder);
|
||||
uploadFiles(fileList, targetFolder, false);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -332,13 +332,16 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
countDone: 0,
|
||||
size: 0,
|
||||
done: 0,
|
||||
percentDone: 0
|
||||
percentDone: 0,
|
||||
files: [],
|
||||
targetFolder: ''
|
||||
};
|
||||
|
||||
function uploadFiles(files, targetFolder) {
|
||||
function uploadFiles(files, targetFolder, overwrite) {
|
||||
if (!files || !files.length) return;
|
||||
|
||||
targetFolder = targetFolder || '';
|
||||
overwrite = !!overwrite;
|
||||
|
||||
// prevent it from getting closed
|
||||
$('#uploadModal').modal({
|
||||
@@ -346,6 +349,8 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
keyboard: false
|
||||
});
|
||||
|
||||
$scope.uploadStatus.files = files;
|
||||
$scope.uploadStatus.targetFolder = targetFolder;
|
||||
$scope.uploadStatus.error = null;
|
||||
$scope.uploadStatus.busy = true;
|
||||
$scope.uploadStatus.count = files.length;
|
||||
@@ -363,7 +368,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
|
||||
$scope.uploadStatus.fileName = file.name;
|
||||
|
||||
Client.filesUpload($scope.appId, filePath, file, function (loaded) {
|
||||
Client.filesUpload($scope.appId, filePath, file, overwrite, function (loaded) {
|
||||
$scope.uploadStatus.percentDone = ($scope.uploadStatus.done+loaded) * 100 / $scope.uploadStatus.size;
|
||||
}, function (error) {
|
||||
if (error) return callback(error);
|
||||
@@ -377,9 +382,12 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
}, function (error) {
|
||||
$scope.uploadStatus.busy = false;
|
||||
|
||||
if (error) {
|
||||
if (error && error.statusCode === 409) {
|
||||
$scope.uploadStatus.error = 'exists';
|
||||
return;
|
||||
} else if (error) {
|
||||
console.error(error);
|
||||
$scope.uploadStatus.error = 'Failed to upload one or more files. Please try again.';
|
||||
$scope.uploadStatus.error = 'generic';
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -390,17 +398,23 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
$scope.uploadStatus.size = 0;
|
||||
$scope.uploadStatus.done = 0;
|
||||
$scope.uploadStatus.percentDone = 100;
|
||||
$scope.uploadStatus.files = [];
|
||||
$scope.uploadStatus.targetFolder = '';
|
||||
|
||||
$scope.refresh();
|
||||
});
|
||||
}
|
||||
|
||||
$scope.retryUpload = function (overwrite) {
|
||||
uploadFiles($scope.uploadStatus.files, $scope.uploadStatus.targetFolder, !!overwrite);
|
||||
};
|
||||
|
||||
// file upload
|
||||
$('#uploadFileInput').on('change', function (e) { uploadFiles(e.target.files || []); });
|
||||
$('#uploadFileInput').on('change', function (e) { uploadFiles(e.target.files || [], '', false); });
|
||||
$scope.onUploadFile = function () { $('#uploadFileInput').click(); };
|
||||
|
||||
// folder upload
|
||||
$('#uploadFolderInput').on('change', function (e ) { uploadFiles(e.target.files || []); });
|
||||
$('#uploadFolderInput').on('change', function (e ) { uploadFiles(e.target.files || [], '', false); });
|
||||
$scope.onUploadFolder = function () { $('#uploadFolderInput').click(); };
|
||||
|
||||
$scope.newDirectory = {
|
||||
@@ -459,7 +473,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
|
||||
var filePath = sanitize($scope.cwd + '/' + $scope.newFile.name);
|
||||
|
||||
Client.filesUpload($scope.appId, filePath, new File([], $scope.newFile.name), function () {}, function (error) {
|
||||
Client.filesUpload($scope.appId, filePath, new File([], $scope.newFile.name), false, function () {}, function (error) {
|
||||
$scope.newFile.busy = false;
|
||||
if (error && error.statusCode === 409) return $scope.newFile.error = 'Already exists';
|
||||
if (error) return Client.error(error);
|
||||
@@ -569,7 +583,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
|
||||
var filePath = sanitize($scope.cwd + '/' + $scope.textEditor.entry.fileName);
|
||||
var file = new File([newContent], 'file');
|
||||
|
||||
Client.filesUpload($scope.appId, filePath, file, function () {}, function (error) {
|
||||
Client.filesUpload($scope.appId, filePath, file, true, function () {}, function (error) {
|
||||
if (error) return Client.error(error);
|
||||
|
||||
$timeout(function () {
|
||||
|
||||
Reference in New Issue
Block a user