mirror of
https://github.com/wekan/wekan.git
synced 2025-12-17 07:50:12 +01:00
Change upload routine, add upload popup
This commit is contained in:
parent
6cdd464f54
commit
93337c20f8
5 changed files with 56 additions and 13 deletions
|
|
@ -18,6 +18,13 @@ template(name="attachmentDeletePopup")
|
||||||
p {{_ "attachment-delete-pop"}}
|
p {{_ "attachment-delete-pop"}}
|
||||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||||
|
|
||||||
|
template(name="uploadingPopup")
|
||||||
|
p Uploading...
|
||||||
|
p
|
||||||
|
span.upload-percentage 0%
|
||||||
|
div.upload-progress-bar
|
||||||
|
span.upload-size {{fileSize}}
|
||||||
|
|
||||||
template(name="attachmentsGalery")
|
template(name="attachmentsGalery")
|
||||||
.attachments-galery
|
.attachments-galery
|
||||||
each attachments
|
each attachments
|
||||||
|
|
@ -53,3 +60,4 @@ template(name="attachmentsGalery")
|
||||||
unless currentUser.isCommentOnly
|
unless currentUser.isCommentOnly
|
||||||
li.attachment-item.add-attachment
|
li.attachment-item.add-attachment
|
||||||
a.js-add-attachment {{_ 'add-attachment' }}
|
a.js-add-attachment {{_ 'add-attachment' }}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,18 +66,38 @@ Template.previewAttachedImagePopup.helpers({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// For uploading popup
|
||||||
|
|
||||||
|
let uploadFileSize = new ReactiveVar('');
|
||||||
|
let uploadProgress = new ReactiveVar(0);
|
||||||
|
|
||||||
Template.cardAttachmentsPopup.events({
|
Template.cardAttachmentsPopup.events({
|
||||||
'change .js-attach-file'(event) {
|
'change .js-attach-file'(event, instance) {
|
||||||
const card = this;
|
const card = this;
|
||||||
const processFile = f => {
|
const callbacks = {
|
||||||
Utils.processUploadedAttachment(card, f,
|
onBeforeUpload: (err, fileData) => {
|
||||||
(err, attachment) => {
|
Popup.open('uploading')(this.clickEvent);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
onUploaded: (err, attachment) => {
|
||||||
|
console.log('onEnd');
|
||||||
if (attachment && attachment._id && attachment.isImage) {
|
if (attachment && attachment._id && attachment.isImage) {
|
||||||
card.setCover(attachment._id);
|
card.setCover(attachment._id);
|
||||||
}
|
}
|
||||||
Popup.close();
|
Popup.close();
|
||||||
|
},
|
||||||
|
onStart: (error, fileData) => {
|
||||||
|
console.log('fd', fileData);
|
||||||
|
uploadFileSize.set(`${fileData.size} bytes`);
|
||||||
|
},
|
||||||
|
onError: (err, fileObj) => {
|
||||||
|
console.log('Error!', err);
|
||||||
|
},
|
||||||
|
onProgress: (progress, fileData) => {
|
||||||
}
|
}
|
||||||
);
|
};
|
||||||
|
const processFile = f => {
|
||||||
|
Utils.processUploadedAttachment(card, f, callbacks);
|
||||||
};
|
};
|
||||||
|
|
||||||
FS.Utility.eachFile(event, f => {
|
FS.Utility.eachFile(event, f => {
|
||||||
|
|
@ -117,12 +137,22 @@ Template.cardAttachmentsPopup.events({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
'click .js-computer-upload'(event, templateInstance) {
|
'click .js-computer-upload'(event, templateInstance) {
|
||||||
|
this.clickEvent = event;
|
||||||
templateInstance.find('.js-attach-file').click();
|
templateInstance.find('.js-attach-file').click();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
},
|
},
|
||||||
'click .js-upload-clipboard-image': Popup.open('previewClipboardImage'),
|
'click .js-upload-clipboard-image': Popup.open('previewClipboardImage'),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Template.uploadingPopup.onRendered(() => {
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.uploadingPopup.helpers({
|
||||||
|
fileSize: () => {
|
||||||
|
return uploadFileSize.get();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
|
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
|
||||||
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
|
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
|
||||||
let pastedResults = null;
|
let pastedResults = null;
|
||||||
|
|
|
||||||
|
|
@ -225,6 +225,7 @@ Template.editor.onRendered(() => {
|
||||||
$summernote.summernote('insertNode', img);
|
$summernote.summernote('insertNode', img);
|
||||||
};
|
};
|
||||||
const processData = function(fileObj) {
|
const processData = function(fileObj) {
|
||||||
|
// FIXME: Change to new API
|
||||||
Utils.processUploadedAttachment(
|
Utils.processUploadedAttachment(
|
||||||
currentCard,
|
currentCard,
|
||||||
fileObj,
|
fileObj,
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ window.Popup = new (class {
|
||||||
// has one. This allows us to position a sub-popup exactly at the same
|
// has one. This allows us to position a sub-popup exactly at the same
|
||||||
// position than its parent.
|
// position than its parent.
|
||||||
let openerElement;
|
let openerElement;
|
||||||
if (clickFromPopup(evt)) {
|
if (clickFromPopup(evt) && self._getTopStack()) {
|
||||||
openerElement = self._getTopStack().openerElement;
|
openerElement = self._getTopStack().openerElement;
|
||||||
} else {
|
} else {
|
||||||
self._stack = [];
|
self._stack = [];
|
||||||
|
|
|
||||||
|
|
@ -25,12 +25,7 @@ Utils = {
|
||||||
},
|
},
|
||||||
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
|
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
|
||||||
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
|
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
|
||||||
processUploadedAttachment(card, fileObj, callback) {
|
processUploadedAttachment(card, fileObj, callbacks) {
|
||||||
const next = attachment => {
|
|
||||||
if (typeof callback === 'function') {
|
|
||||||
callback(attachment);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (!card) {
|
if (!card) {
|
||||||
return onUploaded();
|
return onUploaded();
|
||||||
}
|
}
|
||||||
|
|
@ -50,7 +45,16 @@ Utils = {
|
||||||
settings.meta.cardId = card._id;
|
settings.meta.cardId = card._id;
|
||||||
}
|
}
|
||||||
settings.meta.userId = Meteor.userId();
|
settings.meta.userId = Meteor.userId();
|
||||||
Attachments.insert(settings).on('end', next);
|
if (typeof callbacks === 'function') {
|
||||||
|
settings.onEnd = callbacks;
|
||||||
|
} else {
|
||||||
|
for (const key in callbacks) {
|
||||||
|
if (key.substring(0, 2) === 'on') {
|
||||||
|
settings[key] = callbacks[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Attachments.insert(settings);
|
||||||
},
|
},
|
||||||
shrinkImage(options) {
|
shrinkImage(options) {
|
||||||
// shrink image to certain size
|
// shrink image to certain size
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue