|
|
|
@ -1,49 +1,61 @@ |
|
|
|
|
Template.attachmentsGalery.events({ |
|
|
|
|
'click .js-add-attachment': Popup.open('cardAttachments'), |
|
|
|
|
'click .js-confirm-delete': Popup.afterConfirm( |
|
|
|
|
'attachmentDelete', |
|
|
|
|
function() { |
|
|
|
|
Attachments.remove(this._id); |
|
|
|
|
Popup.close(); |
|
|
|
|
}, |
|
|
|
|
), |
|
|
|
|
// If we let this event bubble, FlowRouter will handle it and empty the page
|
|
|
|
|
// content, see #101.
|
|
|
|
|
'click .js-download'(event) { |
|
|
|
|
event.stopPropagation(); |
|
|
|
|
}, |
|
|
|
|
'click .js-add-cover'() { |
|
|
|
|
Cards.findOne(this.cardId).setCover(this._id); |
|
|
|
|
}, |
|
|
|
|
'click .js-remove-cover'() { |
|
|
|
|
Cards.findOne(this.cardId).unsetCover(); |
|
|
|
|
Template.attachmentsGalery.events({}); |
|
|
|
|
|
|
|
|
|
BlazeComponent.extendComponent({ |
|
|
|
|
isBoardAdmin() { |
|
|
|
|
return Meteor.user().isBoardAdmin(); |
|
|
|
|
}, |
|
|
|
|
'click .js-preview-image'(event) { |
|
|
|
|
Popup.open('previewAttachedImage').call(this, event); |
|
|
|
|
// when multiple thumbnails, if click one then another very fast,
|
|
|
|
|
// we might get a wrong width from previous img.
|
|
|
|
|
// when popup reused, onRendered() won't be called, so we cannot get there.
|
|
|
|
|
// here make sure to get correct size when this img fully loaded.
|
|
|
|
|
const img = $('img.preview-large-image')[0]; |
|
|
|
|
if (!img) return; |
|
|
|
|
const rePosPopup = () => { |
|
|
|
|
const w = img.width; |
|
|
|
|
const h = img.height; |
|
|
|
|
// if the image is too large, we resize & center the popup.
|
|
|
|
|
if (w > 300) { |
|
|
|
|
$('div.pop-over').css({ |
|
|
|
|
width: w + 20, |
|
|
|
|
position: 'absolute', |
|
|
|
|
left: (window.innerWidth - w) / 2, |
|
|
|
|
top: (window.innerHeight - h) / 2, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
const url = $(event.currentTarget).attr('src'); |
|
|
|
|
if (img.src === url && img.complete) rePosPopup(); |
|
|
|
|
else img.onload = rePosPopup; |
|
|
|
|
|
|
|
|
|
events() { |
|
|
|
|
return [ |
|
|
|
|
{ |
|
|
|
|
'click .js-add-attachment': Popup.open('cardAttachments'), |
|
|
|
|
'click .js-confirm-delete': Popup.afterConfirm( |
|
|
|
|
'attachmentDelete', |
|
|
|
|
function() { |
|
|
|
|
Attachments.remove(this._id); |
|
|
|
|
Popup.close(); |
|
|
|
|
}, |
|
|
|
|
), |
|
|
|
|
// If we let this event bubble, FlowRouter will handle it and empty the page
|
|
|
|
|
// content, see #101.
|
|
|
|
|
'click .js-download'(event) { |
|
|
|
|
event.stopPropagation(); |
|
|
|
|
}, |
|
|
|
|
'click .js-add-cover'() { |
|
|
|
|
Cards.findOne(this.cardId).setCover(this._id); |
|
|
|
|
}, |
|
|
|
|
'click .js-remove-cover'() { |
|
|
|
|
Cards.findOne(this.cardId).unsetCover(); |
|
|
|
|
}, |
|
|
|
|
'click .js-preview-image'(event) { |
|
|
|
|
Popup.open('previewAttachedImage').call(this, event); |
|
|
|
|
// when multiple thumbnails, if click one then another very fast,
|
|
|
|
|
// we might get a wrong width from previous img.
|
|
|
|
|
// when popup reused, onRendered() won't be called, so we cannot get there.
|
|
|
|
|
// here make sure to get correct size when this img fully loaded.
|
|
|
|
|
const img = $('img.preview-large-image')[0]; |
|
|
|
|
if (!img) return; |
|
|
|
|
const rePosPopup = () => { |
|
|
|
|
const w = img.width; |
|
|
|
|
const h = img.height; |
|
|
|
|
// if the image is too large, we resize & center the popup.
|
|
|
|
|
if (w > 300) { |
|
|
|
|
$('div.pop-over').css({ |
|
|
|
|
width: w + 20, |
|
|
|
|
position: 'absolute', |
|
|
|
|
left: (window.innerWidth - w) / 2, |
|
|
|
|
top: (window.innerHeight - h) / 2, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
const url = $(event.currentTarget).attr('src'); |
|
|
|
|
if (img.src === url && img.complete) rePosPopup(); |
|
|
|
|
else img.onload = rePosPopup; |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
]; |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
}).register('attachmentsGalery'); |
|
|
|
|
|
|
|
|
|
Template.previewAttachedImagePopup.events({ |
|
|
|
|
'click .js-large-image-clicked'() { |
|
|
|
|