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