fix drag&drop upload of folders

This commit is contained in:
Uwe Steinmann 2024-05-06 18:57:03 +02:00
parent 024f47367a
commit e6cb1ce446
2 changed files with 44 additions and 34 deletions

View File

@ -900,16 +900,16 @@ function onAddClipboard(ev) { /* {{{ */
}
}
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
SeedDMSUpload.handleFileUpload = function(target_id, target_type, items,obj,statusbar) {
/* target is set for the quick upload area */
var target_id = obj.data('target');
var target_type = 'folder';
// var target_id = obj.data('target');
// var target_type = 'folder';
/* droptarget is set for folders and documents in lists */
var droptarget = obj.data('droptarget');
if(droptarget) {
target_type = droptarget.split("_")[0];
target_id = droptarget.split("_")[1];
}
// var droptarget = obj.data('droptarget');
// if(droptarget) {
// target_type = droptarget.split("_")[0];
// target_id = droptarget.split("_")[1];
// }
var afterupload = obj.data('afterupload');
if(afterupload) {
afteruploadfunc = eval(afterupload);
@ -962,15 +962,15 @@ function onAddClipboard(ev) { /* {{{ */
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('command', 'addfolder');
fd.append('name', item.name);
var fid = SeedDMSUpload.addSubFolder(fd);
let fid = SeedDMSUpload.addSubFolder(fd);
if(fid) {
obj.data('target', fid);
obj.data('droptarget', 'folder_'+fid);
// obj.data('target', fid);
// obj.data('droptarget', 'folder_'+fid);
/* Set void afterupload to prevent tons of noty messages */
obj.data('afterupload', '()=>{}');
// obj.data('afterupload', '()=>{}');
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar);
});
}
/* Just reload the parent folder */
@ -1060,6 +1060,11 @@ $(document).ready(function() { /* {{{ */
$(document).on('drop', "#draganddrophandler", function (e) {
$(this).css('border', '0px dotted #0B85A1');
e.preventDefault();
attr_rel = $(this).data('droptarget');
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
@ -1069,7 +1074,7 @@ $(document).ready(function() { /* {{{ */
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems, $(this), $(this));
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this));
}
});
@ -1105,7 +1110,7 @@ $(document).ready(function() { /* {{{ */
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")*/);
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
} else {
/* The data is passed in dataTransfer. The items are meaning less. */
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
@ -1225,7 +1230,7 @@ $(document).ready(function() { /* {{{ */
"label" : "<i class='fa fa-arrow-right'></i> "+trans.upload_new_version,
"class" : "btn-danger",
"callback": function() {
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1'));
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1'));
}
}, {
"label" : trans.cancel,
@ -1320,7 +1325,7 @@ $(document).ready(function() { /* {{{ */
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")*/);
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
}
}
});

View File

@ -949,16 +949,16 @@ function onAddClipboard(ev) { /* {{{ */
}
}
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
SeedDMSUpload.handleFileUpload = function(target_id, target_type, items,obj,statusbar) {
/* target is set for the quick upload area */
var target_id = obj.data('target');
var target_type = 'folder';
// var target_id = obj.data('target');
// var target_type = 'folder';
/* droptarget is set for folders and documents in lists */
var droptarget = obj.data('droptarget');
if(droptarget) {
target_type = droptarget.split("_")[0];
target_id = droptarget.split("_")[1];
}
// var droptarget = obj.data('droptarget');
// if(droptarget) {
// target_type = droptarget.split("_")[0];
// target_id = droptarget.split("_")[1];
// }
var afterupload = obj.data('afterupload');
if(afterupload) {
afteruploadfunc = eval(afterupload);
@ -1011,15 +1011,15 @@ function onAddClipboard(ev) { /* {{{ */
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('command', 'addfolder');
fd.append('name', item.name);
var fid = SeedDMSUpload.addSubFolder(fd);
let fid = SeedDMSUpload.addSubFolder(fd);
if(fid) {
obj.data('target', fid);
obj.data('droptarget', 'folder_'+fid);
// obj.data('target', fid);
// obj.data('droptarget', 'folder_'+fid);
/* Set void afterupload to prevent tons of noty messages */
obj.data('afterupload', '()=>{}');
// obj.data('afterupload', '()=>{}');
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar);
});
}
/* Just reload the parent folder */
@ -1109,6 +1109,11 @@ $(document).ready(function() { /* {{{ */
$(document).on('drop', "#draganddrophandler", function (e) {
$(this).css('border', '0px dotted #0B85A1');
e.preventDefault();
attr_rel = $(this).data('droptarget');
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
@ -1118,7 +1123,7 @@ $(document).ready(function() { /* {{{ */
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems, $(this), $(this));
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this));
}
});
@ -1154,7 +1159,7 @@ $(document).ready(function() { /* {{{ */
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")*/);
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
} else {
/* The data is passed in dataTransfer. The items are meaning less. */
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
@ -1295,7 +1300,7 @@ $(document).ready(function() { /* {{{ */
"label" : "<i class='fa fa-link'></i> "+trans.upload_new_version,
"className" : "btn-danger",
"callback": function() {
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1'));
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1'));
}
}
}
@ -1394,7 +1399,7 @@ $(document).ready(function() { /* {{{ */
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")*/);
SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
}
}
});