diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index f4cd71713..8e0ee517c 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -767,7 +767,7 @@ $(document).ready( function() { function onAddClipboard(ev) { /* {{{ */ ev.preventDefault(); - var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text")); + var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text/json")); source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; @@ -1004,16 +1004,7 @@ function onAddClipboard(ev) { /* {{{ */ } } - SeedDMSUpload.handleUrlUpload = function(target_id, target_type, url, obj) { - var afterupload = obj.data('afterupload'); - if(afterupload) { - afteruploadfunc = eval(afterupload); - } else { - afteruploadfunc = function() { - if(target_id == seeddms_folder) - $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } - } + SeedDMSUpload.handleUrlUpload = function(target_id, target_type, url, obj, status, afteruploadfunc) { if(target_type == 'folder' && target_id) { var fd = new FormData(); fd.append('targettype', target_type); @@ -1040,7 +1031,6 @@ function onAddClipboard(ev) { /* {{{ */ theme: 'defaultTheme', timeout: 1500 }); - // $("div.ajax[data-action='folderList']").trigger('update', {folderid: target_id}); // if(editBtnLabel) // status.statusbar.after($('' + editBtnLabel + '')); if(afteruploadfunc) { @@ -1058,19 +1048,73 @@ function onAddClipboard(ev) { /* {{{ */ } } }); + } else if(target_type == 'document' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'updateremotedocument'); + fd.append('remoteurl', url); + } else if(target_type == 'attachment' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'addremotefile'); + fd.append('remoteurl', url); } } - 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'; - /* 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]; -// } + /* Upload a new file into a folder, as a new document version, or as + * a new attachment + */ + SeedDMSUpload.handleFileUpload = function(target_id, target_type, file, obj, statusbar, afteruploadfunc) { + if(file.size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + if (target_type == "folder") { + fd.append('folderid', target_id); + fd.append('command', 'uploaddocument'); + } else if (target_type == "document") { + fd.append('documentid', target_id); + fd.append('command', 'updatedocument'); + } else if (target_type == "attachment") { + fd.append('documentid', target_id); + fd.append('command', 'addfile'); + } + fd.append('formtoken', obj.data('uploadformtoken')); + if (typeof obj.data('comment') !== 'undefined') { + fd.append('comment', obj.data('comment')); + } + if (typeof obj.data('keywords') !== 'undefined') { + fd.append('keywords', obj.data('keywords')); + } + fd.append('userfile', file); + SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); + SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); + + statusbar.parent().show(); + var status = new SeedDMSUpload.createStatusbar(statusbar); + status.setFileNameSize(file.name,file.size); + SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); + } else { + noty({ + text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + + /* Upload several files (of type FileSystemEntry) as new documents + * into a folder, or as attachments, or as a new document version. + * items may contain elements of type FileSystemFileEntry or + * FileSystemDirectoryEntry. + */ + SeedDMSUpload.handleFilesUpload = function(target_id, target_type, items, obj, statusbar) { var afterupload = obj.data('afterupload'); if(afterupload) { afteruploadfunc = eval(afterupload); @@ -1082,40 +1126,10 @@ function onAddClipboard(ev) { /* {{{ */ } if(target_type == 'folder' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('folderid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - if (typeof obj.data('comment') !== 'undefined') { - fd.append('comment', obj.data('comment')); - } - if (typeof obj.data('keywords') !== 'undefined') { - fd.append('keywords', obj.data('keywords')); - } - fd.append('userfile', file); - 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(); - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } else if(item.isDirectory) { var fd = new FormData(); @@ -1131,7 +1145,7 @@ function onAddClipboard(ev) { /* {{{ */ // obj.data('afterupload', '()=>{}'); var dirReader = item.createReader(); dirReader.readEntries(function(entries) { - SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar); + SeedDMSUpload.handleFilesUpload(fid, 'folder', entries, obj, statusbar); }); } /* Just reload the parent folder */ @@ -1142,62 +1156,19 @@ function onAddClipboard(ev) { /* {{{ */ } } else if(target_type == 'document' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'updatedocument'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status); - $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } } } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'addfile'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status, function(){ - $("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id}); - }); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, function(){$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});}); }); } } @@ -1229,11 +1200,20 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; + var afterupload = $(this).data('afterupload'); + if(afterupload) { + afteruploadfunc = eval(afterupload); + } else { + afteruploadfunc = function() { + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } + } var items = e.originalEvent.dataTransfer.items; - newitems = []; + newsysfiles = []; + newfile = null; if(items.length > 0) { - divupload = $(this); /* Dropping an image from a web page will result in several items, containing * the image as a file, the url with type text/uri-list and text/plain, * the image tag with type text/html. @@ -1242,16 +1222,29 @@ $(document).ready(function() { /* {{{ */ // console.log('kind: '+item.kind); // console.log('type: '+item.type); if (item.kind === "file" && item.webkitGetAsEntry()) { - newitems.push(item.webkitGetAsEntry()); - } else if (item.kind === "string" && item.type === "text/uri-list") { - item.getAsString((s) => { - console.log("string: "+s); - SeedDMSUpload.handleUrlUpload(target_id, target_type, s, divupload); - }); + newsysfiles.push(item.webkitGetAsEntry()); + } else if (item.kind === "file" && (f = item.getAsFile())) { + newfile = f; + } + } + if (newsysfiles.length > 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newsysfiles, $(this), $(this)); + } else if (newfile) { + SeedDMSUpload.handleFileUpload(target_id, target_type, newfile, $(this), $(this), afteruploadfunc); + } else { + /* Do a second iteration because getAsString() seems to be aysnc */ + for (const item of items) { + if (item.kind === "string" && item.type === "text/uri-list") { + item.getAsString((s) => { + try { + url = new URL(s); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(this), null, afteruploadfunc); + } catch(e) { + } + }); + } } } - if (newitems) - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this)); } }); @@ -1280,109 +1273,123 @@ $(document).ready(function() { /* {{{ */ files = e.originalEvent.dataTransfer.files; items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - /* check for files, because items has an entry if no file was dropped */ - if(files.length > 0) { -// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - newitems = []; - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(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")); - source_type = source_info.type; - source_id = source_info.id; - formtoken = source_info.formtoken; -// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); - if(source_type == 'document') { - var bootbox_message = trans.confirm_move_document; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog(bootbox_message, [{ - "label" : " "+trans.move_document, - "class" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + try { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + // console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_document, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; - // document.location = url; - } else if(source_type == 'folder' && source_id != target_id) { - var bootbox_message = trans.confirm_move_folder; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog(bootbox_message, [{ - "label" : " "+trans.move_folder, - "class" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-folder-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_folder, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; - // document.location = url; + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } catch(e) { + } + try { + url = new URL(e.originalEvent.dataTransfer.getData("text")); + console.log(url.href); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(e.currentTarget), $('div.statusbar-container h1')); + } catch(e) { } } } else if(target_type == 'document') { @@ -1502,7 +1509,7 @@ $(document).ready(function() { /* {{{ */ for (var i=0; i' + editBtnLabel + '')); if(afteruploadfunc) { @@ -1107,19 +1097,73 @@ function onAddClipboard(ev) { /* {{{ */ } } }); + } else if(target_type == 'document' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'updateremotedocument'); + fd.append('remoteurl', url); + } else if(target_type == 'attachment' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'addremotefile'); + fd.append('remoteurl', url); } } - 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'; - /* 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]; -// } + /* Upload a new file into a folder, as a new document version, or as + * a new attachment + */ + SeedDMSUpload.handleFileUpload = function(target_id, target_type, file, obj, statusbar, afteruploadfunc) { + if(file.size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + if (target_type == "folder") { + fd.append('folderid', target_id); + fd.append('command', 'uploaddocument'); + } else if (target_type == "document") { + fd.append('documentid', target_id); + fd.append('command', 'updatedocument'); + } else if (target_type == "attachment") { + fd.append('documentid', target_id); + fd.append('command', 'addfile'); + } + fd.append('formtoken', obj.data('uploadformtoken')); + if (typeof obj.data('comment') !== 'undefined') { + fd.append('comment', obj.data('comment')); + } + if (typeof obj.data('keywords') !== 'undefined') { + fd.append('keywords', obj.data('keywords')); + } + fd.append('userfile', file); + SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); + SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); + + statusbar.parent().show(); + var status = new SeedDMSUpload.createStatusbar(statusbar); + status.setFileNameSize(file.name,file.size); + SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); + } else { + noty({ + text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + + /* Upload several files (of type FileSystemEntry) as new documents + * into a folder, or as attachments, or as a new document version. + * items may contain elements of type FileSystemFileEntry or + * FileSystemDirectoryEntry. + */ + SeedDMSUpload.handleFilesUpload = function(target_id, target_type, items, obj, statusbar) { var afterupload = obj.data('afterupload'); if(afterupload) { afteruploadfunc = eval(afterupload); @@ -1131,40 +1175,10 @@ function onAddClipboard(ev) { /* {{{ */ } if(target_type == 'folder' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('folderid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - if (typeof obj.data('comment') !== 'undefined') { - fd.append('comment', obj.data('comment')); - } - if (typeof obj.data('keywords') !== 'undefined') { - fd.append('keywords', obj.data('keywords')); - } - fd.append('userfile', file); - 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(); - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } else if(item.isDirectory) { var fd = new FormData(); @@ -1180,7 +1194,7 @@ function onAddClipboard(ev) { /* {{{ */ // obj.data('afterupload', '()=>{}'); var dirReader = item.createReader(); dirReader.readEntries(function(entries) { - SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar); + SeedDMSUpload.handleFilesUpload(fid, 'folder', entries, obj, statusbar); }); } /* Just reload the parent folder */ @@ -1191,62 +1205,19 @@ function onAddClipboard(ev) { /* {{{ */ } } else if(target_type == 'document' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'updatedocument'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status); - $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } } } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'addfile'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status, function(){ - $("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id}); - }); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, function(){$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});}); }); } } @@ -1278,11 +1249,20 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; + var afterupload = $(this).data('afterupload'); + if(afterupload) { + afteruploadfunc = eval(afterupload); + } else { + afteruploadfunc = function() { + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } + } var items = e.originalEvent.dataTransfer.items; - newitems = []; + newsysfiles = []; + newfile = null; if(items.length > 0) { - divupload = $(this); /* Dropping an image from a web page will result in several items, containing * the image as a file, the url with type text/uri-list and text/plain, * the image tag with type text/html. @@ -1291,16 +1271,29 @@ $(document).ready(function() { /* {{{ */ // console.log('kind: '+item.kind); // console.log('type: '+item.type); if (item.kind === "file" && item.webkitGetAsEntry()) { - newitems.push(item.webkitGetAsEntry()); - } else if (item.kind === "string" && item.type === "text/uri-list") { - item.getAsString((s) => { - console.log("string: "+s); - SeedDMSUpload.handleUrlUpload(target_id, target_type, s, divupload); - }); + newsysfiles.push(item.webkitGetAsEntry()); + } else if (item.kind === "file" && (f = item.getAsFile())) { + newfile = f; + } + } + if (newsysfiles.length > 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newsysfiles, $(this), $(this)); + } else if (newfile) { + SeedDMSUpload.handleFileUpload(target_id, target_type, newfile, $(this), $(this), afteruploadfunc); + } else { + /* Do a second iteration because getAsString() seems to be aysnc */ + for (const item of items) { + if (item.kind === "string" && item.type === "text/uri-list") { + item.getAsString((s) => { + try { + url = new URL(s); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(this), null, afteruploadfunc); + } catch(e) { + } + }); + } } } - if (newitems) - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this)); } }); @@ -1329,121 +1322,135 @@ $(document).ready(function() { /* {{{ */ files = e.originalEvent.dataTransfer.files; items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - /* check for files, because items has an entry if no file was dropped */ - if(files.length > 0) { -// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - newitems = []; - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(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")); - source_type = source_info.type; - source_id = source_info.id; - formtoken = source_info.formtoken; -// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); - if(source_type == 'document') { - var bootbox_message = trans.confirm_move_document; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog({ - "message" : bootbox_message, - "buttons" : { - "cancel" : { - "label" : trans.cancel, - "className" : "btn-secondary", - "callback": function() { - } - }, - "move" : { - "label" : " "+trans.move_document, - "className" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); + try { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + // console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog({ + "message" : bootbox_message, + "buttons" : { + "cancel" : { + "label" : trans.cancel, + "className" : "btn-secondary", + "callback": function() { + } + }, + "move" : { + "label" : " "+trans.move_document, + "className" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } } } - } - }); + }); - url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; - // document.location = url; - } else if(source_type == 'folder' && source_id != target_id) { - var bootbox_message = trans.confirm_move_folder; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog({ - "message" : bootbox_message, - "buttons" : { - "cancel" : { - "label" : trans.cancel, - "className" : "btn-secondary", - "callback": function() { - } - }, - "move" : { - "label" : " "+trans.move_folder, - "className" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-folder-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog({ + "message" : bootbox_message, + "buttons" : { + "cancel" : { + "label" : trans.cancel, + "className" : "btn-secondary", + "callback": function() { + } + }, + "move" : { + "label" : " "+trans.move_folder, + "className" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } } } - } - }); + }); - url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; - // document.location = url; + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } catch(e) { + } + try { + url = new URL(e.originalEvent.dataTransfer.getData("text")); + console.log(url.href); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(e.currentTarget), $('div.statusbar-container h1')); + } catch(e) { } } } else if(target_type == 'document') { @@ -1477,14 +1484,14 @@ $(document).ready(function() { /* {{{ */ "label" : " "+trans.upload_new_version, "className" : "btn-danger", "callback": function() { - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')); + SeedDMSUpload.handleFilesUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')); } } } }); } } else { - var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; @@ -1576,7 +1583,7 @@ $(document).ready(function() { /* {{{ */ for (var i=0; i