mirror of
https://github.com/wekan/wekan.git
synced 2026-02-28 10:54:07 +01:00
Bug fix: bug#2589 #2575, Add Features: allowing user to insert/paste link, image, video
This commit is contained in:
parent
9ed0c3029f
commit
71d1d9ad98
4 changed files with 186 additions and 110 deletions
|
|
@ -86,7 +86,7 @@ Template.cardAttachmentsPopup.events({
|
|||
reader.onload = function(e) {
|
||||
const dataurl = e && e.target && e.target.result;
|
||||
if (dataurl !== undefined) {
|
||||
shrinkImage({
|
||||
Utils.shrinkImage({
|
||||
dataurl,
|
||||
maxSize: MAX_IMAGE_PIXEL,
|
||||
ratio: COMPRESS_RATIO,
|
||||
|
|
@ -118,59 +118,9 @@ Template.cardAttachmentsPopup.events({
|
|||
'click .js-upload-clipboard-image': Popup.open('previewClipboardImage'),
|
||||
});
|
||||
|
||||
const MAX_IMAGE_PIXEL = Meteor.settings.public.MAX_IMAGE_PIXEL;
|
||||
const COMPRESS_RATIO = Meteor.settings.public.IMAGE_COMPRESS_RATIO;
|
||||
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
|
||||
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
|
||||
let pastedResults = null;
|
||||
const shrinkImage = function(options) {
|
||||
// shrink image to certain size
|
||||
const dataurl = options.dataurl,
|
||||
callback = options.callback,
|
||||
toBlob = options.toBlob;
|
||||
let canvas = document.createElement('canvas'),
|
||||
image = document.createElement('img');
|
||||
const maxSize = options.maxSize || 1024;
|
||||
const ratio = options.ratio || 1.0;
|
||||
const next = function(result) {
|
||||
image = null;
|
||||
canvas = null;
|
||||
if (typeof callback === 'function') {
|
||||
callback(result);
|
||||
}
|
||||
};
|
||||
image.onload = function() {
|
||||
let width = this.width,
|
||||
height = this.height;
|
||||
let changed = false;
|
||||
if (width > height) {
|
||||
if (width > maxSize) {
|
||||
height *= maxSize / width;
|
||||
width = maxSize;
|
||||
changed = true;
|
||||
}
|
||||
} else if (height > maxSize) {
|
||||
width *= maxSize / height;
|
||||
height = maxSize;
|
||||
changed = true;
|
||||
}
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
|
||||
if (changed === true) {
|
||||
const type = 'image/jpeg';
|
||||
if (toBlob) {
|
||||
canvas.toBlob(next, type, ratio);
|
||||
} else {
|
||||
next(canvas.toDataURL(type, ratio));
|
||||
}
|
||||
} else {
|
||||
next(changed);
|
||||
}
|
||||
};
|
||||
image.onerror = function() {
|
||||
next(false);
|
||||
};
|
||||
image.src = dataurl;
|
||||
};
|
||||
|
||||
Template.previewClipboardImagePopup.onRendered(() => {
|
||||
// we can paste image from clipboard
|
||||
|
|
@ -182,7 +132,7 @@ Template.previewClipboardImagePopup.onRendered(() => {
|
|||
};
|
||||
if (MAX_IMAGE_PIXEL) {
|
||||
// if has size limitation on image we shrink it before uploading
|
||||
shrinkImage({
|
||||
Utils.shrinkImage({
|
||||
dataurl: results.dataURL,
|
||||
maxSize: MAX_IMAGE_PIXEL,
|
||||
ratio: COMPRESS_RATIO,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue