Merge branch 'easy-image-attach' into jakob-new

This commit is contained in:
Jakobus Schürz 2023-03-15 05:58:14 +01:00
commit 8f307da4b9
5 changed files with 70 additions and 42 deletions

View file

@ -1141,7 +1141,7 @@ function photos_content(App $a)
'$qcomment' => $qcomment,
'$rand_num' => Crypto::randomDigits(12),
// Dropzone
'$max_imagesize' => floor(Strings::getBytesFromShorthand(DI::config()->get('system', 'maximagesize')) / 1000000),
'$max_imagesize' => floor(\Friendica\Util\Strings::getBytesFromShorthand(DI::config()->get('system', 'maximagesize')) / 1000000),
]);
}
}

View file

@ -242,7 +242,7 @@ class Compose extends BaseModule
]),
// Dropzone
'$max_imagesize' => floor(Strings::getBytesFromShorthand(DI::config()->get('system', 'maximagesize')) / 1000000),
'$max_imagesize' => floor(\Friendica\Util\Strings::getBytesFromShorthand(DI::config()->get('system', 'maximagesize')) / 1000000),
]);
}
}

View file

@ -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);
})
};
}

View file

@ -67,45 +67,8 @@
<script>
Dropzone.autoDiscover = false;
var dropzone{{$id}} = new Dropzone( '#dropzone-{{$id}}', {
paramName: 'userfile', // The name that will be used to transfer the file
maxFilesize: {{$max_imagesize}}, // MB
url: '/media/photo/upload?response=url&album=',
accept: function(file, done) {
done();
},
init: function() {
this.on('success', function(file, serverResponse) {
var target = $('#comment-edit-text-{{$id}}')
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) {
// 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(){
dropzone{{$id}}.removeFile(file);
},5000);
});
},
});
// Enables Copy&Paste for this dropzone
$('#dropzone-{{$id}}').on('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
dropzone{{$id}}.addFile(item.getAsFile())
}
})
$('[id=comment-{{$id}}]').on('click', function() {
dzFactory.setupDropzone('#dropzone-{{$id}}', $('#comment-edit-text-{{$id}}'), {{$max_imagesize}});
$('[id=comment-{{$id}}]').prop('click', null).off('click')
});
</script>

View file

@ -140,6 +140,8 @@
{{/if}}
<script type="text/javascript" src="view/theme/frio/js/textedit.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="vendor/enyo/dropzone/dist/min/dropzone.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/js/dropzone-factory.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript"> var dzFactory = new DzFactory();</script>
{{* Include the strings which are needed for some js functions (e.g. translation)
They are loaded into the html <head> so that js functions can use them *}}