mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-13 21:21:27 +00:00
initial support to upload folders by drag and drop
This commit is contained in:
parent
26553cf69d
commit
d868438af9
|
@ -819,7 +819,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) {
|
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
|
||||||
/* target is set for the quick upload area */
|
/* target is set for the quick upload area */
|
||||||
var target_id = obj.data('target');
|
var target_id = obj.data('target');
|
||||||
var target_type = 'folder';
|
var target_type = 'folder';
|
||||||
|
@ -839,31 +839,45 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(target_type == 'folder' && target_id) {
|
if(target_type == 'folder' && target_id) {
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if(files[i].size <= maxFileSize) {
|
var item = items[i].webkitGetAsEntry();
|
||||||
var fd = new FormData();
|
if (item.isFile) {
|
||||||
fd.append('targettype', target_type);
|
item.file(function(file) {
|
||||||
fd.append('folderid', target_id);
|
if(file.size <= maxFileSize) {
|
||||||
fd.append('formtoken', obj.data('uploadformtoken'));
|
var fd = new FormData();
|
||||||
if (typeof obj.data('comment') !== 'undefined') {
|
fd.append('targettype', target_type);
|
||||||
fd.append('comment', obj.data('comment'));
|
fd.append('folderid', target_id);
|
||||||
}
|
fd.append('formtoken', obj.data('uploadformtoken'));
|
||||||
if (typeof obj.data('keywords') !== 'undefined') {
|
if (typeof obj.data('comment') !== 'undefined') {
|
||||||
fd.append('keywords', obj.data('keywords'));
|
fd.append('comment', obj.data('comment'));
|
||||||
}
|
}
|
||||||
fd.append('userfile', files[i]);
|
if (typeof obj.data('keywords') !== 'undefined') {
|
||||||
fd.append('command', 'uploaddocument');
|
fd.append('keywords', obj.data('keywords'));
|
||||||
this.getFormData(fd, obj.data('attributes'), 'attributes');
|
}
|
||||||
this.getFormData(fd, obj.data('categories'), 'categories');
|
fd.append('userfile', file);
|
||||||
// fd.append('path', files[i].webkitRelativePath);
|
fd.append('command', 'uploaddocument');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories');
|
||||||
|
// fd.append('path', file.webkitRelativePath);
|
||||||
|
|
||||||
statusbar.parent().show();
|
statusbar.parent().show();
|
||||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||||
status.setFileNameSize(files[i].name,files[i].size);
|
status.setFileNameSize(file.name,file.size);
|
||||||
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
||||||
} else {
|
} else {
|
||||||
|
noty({
|
||||||
|
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
|
||||||
|
type: 'error',
|
||||||
|
dismissQueue: true,
|
||||||
|
layout: 'topRight',
|
||||||
|
theme: 'defaultTheme',
|
||||||
|
timeout: 5000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if(item.isDirectory) {
|
||||||
noty({
|
noty({
|
||||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
text: 'Folders currently not supported',
|
||||||
type: 'error',
|
type: 'error',
|
||||||
dismissQueue: true,
|
dismissQueue: true,
|
||||||
layout: 'topRight',
|
layout: 'topRight',
|
||||||
|
@ -945,9 +959,12 @@ $(document).ready(function() { /* {{{ */
|
||||||
$(this).css('border', '0px dotted #0B85A1');
|
$(this).css('border', '0px dotted #0B85A1');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
|
||||||
//We need to send dropped files to Server
|
//We need to send dropped files to Server
|
||||||
SeedDMSUpload.handleFileUpload(files, $(this), $(this));
|
if(items.length > 0) {
|
||||||
|
SeedDMSUpload.handleFileUpload(items, $(this), $(this));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('dragenter', '.droptarget', function (e) {
|
$(document).on('dragenter', '.droptarget', function (e) {
|
||||||
|
@ -974,9 +991,10 @@ $(document).ready(function() { /* {{{ */
|
||||||
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
||||||
if(target_type == 'folder') {
|
if(target_type == 'folder') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.length > 0) {
|
||||||
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1075,9 +1093,10 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document') {
|
} else if(target_type == 'document') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.length > 0) {
|
||||||
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1160,8 +1179,9 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'attachment') {
|
} else if(target_type == 'attachment') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
if(items.length > 0) {
|
||||||
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -763,7 +763,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
timeout: 1500
|
timeout: 1500
|
||||||
});
|
});
|
||||||
if(editBtnLabel)
|
if(editBtnLabel)
|
||||||
status.statusbar.after($('<a href="'+seeddms_webroot+'out/out.EditDocument.php?documentid=' + data.data + '" class="btn btn-mini btn-primary">' + editBtnLabel + '</a>'));
|
status.statusbar.after($('<a href="'+seeddms_webroot+'out/out.EditDocument.php?documentid=' + data.data + '" class="btn btn-mini btn-sm btn-primary">' + editBtnLabel + '</a>'));
|
||||||
if(callback) {
|
if(callback) {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
@ -793,7 +793,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
this.filename = $("<div class='filename'></div>").appendTo(this.statusbar);
|
this.filename = $("<div class='filename'></div>").appendTo(this.statusbar);
|
||||||
this.size = $("<div class='filesize'></div>").appendTo(this.statusbar);
|
this.size = $("<div class='filesize'></div>").appendTo(this.statusbar);
|
||||||
this.progressBar = $("<div class='progress'><div class='bar bg-success'></div></div>").appendTo(this.statusbar);
|
this.progressBar = $("<div class='progress'><div class='bar bg-success'></div></div>").appendTo(this.statusbar);
|
||||||
this.abort = $("<div class='btn btn-mini btn-danger'>" + abortBtnLabel + "</div>").appendTo(this.statusbar);
|
this.abort = $("<div class='btn btn-mini btn-sm btn-danger'>" + abortBtnLabel + "</div>").appendTo(this.statusbar);
|
||||||
// $('.statusbar').empty();
|
// $('.statusbar').empty();
|
||||||
obj.after(this.statusbar);
|
obj.after(this.statusbar);
|
||||||
this.setFileNameSize = function(name,size) {
|
this.setFileNameSize = function(name,size) {
|
||||||
|
@ -850,7 +850,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) {
|
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
|
||||||
/* target is set for the quick upload area */
|
/* target is set for the quick upload area */
|
||||||
var target_id = obj.data('target');
|
var target_id = obj.data('target');
|
||||||
var target_type = 'folder';
|
var target_type = 'folder';
|
||||||
|
@ -870,37 +870,57 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(target_type == 'folder' && target_id) {
|
if(target_type == 'folder' && target_id) {
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if(files[i].size <= maxFileSize) {
|
var item = items[i]; //.webkitGetAsEntry();
|
||||||
var fd = new FormData();
|
if (item.isFile) {
|
||||||
fd.append('targettype', target_type);
|
item.file(function(file) {
|
||||||
fd.append('folderid', target_id);
|
if(file.size <= maxFileSize) {
|
||||||
fd.append('formtoken', obj.data('uploadformtoken'));
|
var fd = new FormData();
|
||||||
if (typeof obj.data('comment') !== 'undefined') {
|
fd.append('targettype', target_type);
|
||||||
fd.append('comment', obj.data('comment'));
|
fd.append('folderid', target_id);
|
||||||
}
|
fd.append('formtoken', obj.data('uploadformtoken'));
|
||||||
if (typeof obj.data('keywords') !== 'undefined') {
|
if (typeof obj.data('comment') !== 'undefined') {
|
||||||
fd.append('keywords', obj.data('keywords'));
|
fd.append('comment', obj.data('comment'));
|
||||||
}
|
}
|
||||||
fd.append('userfile', files[i]);
|
if (typeof obj.data('keywords') !== 'undefined') {
|
||||||
fd.append('command', 'uploaddocument');
|
fd.append('keywords', obj.data('keywords'));
|
||||||
this.getFormData(fd, obj.data('attributes'), 'attributes');
|
}
|
||||||
this.getFormData(fd, obj.data('categories'), 'categories');
|
fd.append('userfile', file);
|
||||||
// fd.append('path', files[i].webkitRelativePath);
|
fd.append('command', 'uploaddocument');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories');
|
||||||
|
// fd.append('path', file.webkitRelativePath);
|
||||||
|
|
||||||
statusbar.parent().show();
|
statusbar.parent().show();
|
||||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||||
status.setFileNameSize(files[i].name,files[i].size);
|
status.setFileNameSize(file.name,file.size);
|
||||||
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
||||||
} else {
|
} else {
|
||||||
|
noty({
|
||||||
|
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
|
||||||
|
type: 'error',
|
||||||
|
dismissQueue: true,
|
||||||
|
layout: 'topRight',
|
||||||
|
theme: 'defaultTheme',
|
||||||
|
timeout: 5000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if(item.isDirectory) {
|
||||||
|
var dirReader = item.createReader();
|
||||||
|
dirReader.readEntries(function(entries) {
|
||||||
|
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
|
||||||
|
});
|
||||||
|
/*
|
||||||
noty({
|
noty({
|
||||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
text: 'Folders currently not supported',
|
||||||
type: 'error',
|
type: 'error',
|
||||||
dismissQueue: true,
|
dismissQueue: true,
|
||||||
layout: 'topRight',
|
layout: 'topRight',
|
||||||
theme: 'defaultTheme',
|
theme: 'defaultTheme',
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document' && target_id) {
|
} else if(target_type == 'document' && target_id) {
|
||||||
|
@ -976,9 +996,20 @@ $(document).ready(function() { /* {{{ */
|
||||||
$(this).css('border', '0px dotted #0B85A1');
|
$(this).css('border', '0px dotted #0B85A1');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
|
||||||
//We need to send dropped files to Server
|
//We need to send dropped files to Server
|
||||||
SeedDMSUpload.handleFileUpload(files, $(this), $(this));
|
console.log(items[0]);
|
||||||
|
console.log(items[0].webkitGetAsEntry());
|
||||||
|
|
||||||
|
newitems = [];
|
||||||
|
if(items.length > 0) {
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
console.log(newitems);
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems, $(this), $(this));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('dragenter', '.droptarget', function (e) {
|
$(document).on('dragenter', '.droptarget', function (e) {
|
||||||
|
@ -1005,9 +1036,14 @@ $(document).ready(function() { /* {{{ */
|
||||||
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
||||||
if(target_type == 'folder') {
|
if(target_type == 'folder') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.length > 0) {
|
||||||
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1118,9 +1154,14 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document') {
|
} else if(target_type == 'document') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.length > 0) {
|
||||||
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1210,8 +1251,13 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'attachment') {
|
} else if(target_type == 'attachment') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
if(items.length > 0) {
|
||||||
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user