From d39781023eff8550b09021e586ea61b4daee278f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakobus=20Sch=C3=BCrz?= Date: Wed, 15 Mar 2023 04:47:20 +0100 Subject: [PATCH] create factory --- view/js/dropzone-factory.js | 63 +++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 view/js/dropzone-factory.js diff --git a/view/js/dropzone-factory.js b/view/js/dropzone-factory.js new file mode 100644 index 000000000..fe6c4448b --- /dev/null +++ b/view/js/dropzone-factory.js @@ -0,0 +1,63 @@ +var DzFactory = function () { + this.createDropzone = function(element, target, maxImagesize) { + return new Dropzone( element, { + paramName: 'userfile', // The name that will be used to transfer the file + maxFilesize: maxImagesize, // MB + url: '/media/photo/upload?response=url&album=', + accept: function(file, done) { + done(); + }, + init: function() { + this.on('success', function(file, serverResponse) { + var _target = $(target) + var resp = $(serverResponse).find('div#content').text() + if (_target.setRangeText) { + //if setRangeText function is supported by current browser + _target.setRangeText(' ' + $.trim(resp) + ' ') + } else { + _target.focus() + document.execCommand('insertText', false /*no UI*/, ' ' + $.trim(resp) + ' '); + } + }); + this.on('complete', function(file) { + var dz = this; + // Remove just uploaded file from dropzone, makes interface more clear. + // Image can be seen in posting-preview + // We need preview to get optical feedback about upload-progress. + // you see success, when the bb-code link for image is inserted + setTimeout(function(){ + dz.removeFile(file); + },5000); + }); + }, + paste: function(event){ + const items = (event.clipboardData || event.originalEvent.clipboardData).items; + items.forEach((item) => { + if (item.kind === 'file') { + // adds the file to your dropzone instance + dz.addFile(item.getAsFile()) + } + }) + }, + }); + }; + + this.copyPaste = function(event, dz) { + const items = (event.clipboardData || event.originalEvent.clipboardData).items; + items.forEach((item) => { + if (item.kind === 'file') { + // adds the file to your dropzone instance + dz.addFile(item.getAsFile()) + } + }) + }; + + this.setupDropzone = function(element, target, maxImagesize) { + var dropzone = this.createDropzone(element, target, maxImagesize) + $(element).on('paste', function(event) { + + dzFactory.copyPaste(event, dropzone); + }) + }; +} +