]> git.mxchange.org Git - friendica.git/commitdiff
create factory
authorJakobus Schürz <jakobus.schuerz@schuerz.at>
Wed, 15 Mar 2023 03:47:20 +0000 (04:47 +0100)
committerJakobus Schürz <jakobus.schuerz@schuerz.at>
Sun, 19 Mar 2023 17:52:45 +0000 (18:52 +0100)
view/js/dropzone-factory.js [new file with mode: 0644]

diff --git a/view/js/dropzone-factory.js b/view/js/dropzone-factory.js
new file mode 100644 (file)
index 0000000..fe6c444
--- /dev/null
@@ -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);
+               })
+       };
+}
+