mirror of
https://github.com/wekan/wekan.git
synced 2025-04-24 14:08:31 -04:00
Add two way binding of activities, comments, and attachments
This commit is contained in:
parent
49c415f023
commit
74a01691e3
4 changed files with 46 additions and 10 deletions
|
@ -21,11 +21,18 @@ BlazeComponent.extendComponent({
|
||||||
'submit .js-new-comment-form'(evt) {
|
'submit .js-new-comment-form'(evt) {
|
||||||
const input = this.getInput();
|
const input = this.getInput();
|
||||||
const text = input.val().trim();
|
const text = input.val().trim();
|
||||||
|
const card = this.currentData();
|
||||||
|
let boardId = card.boardId;
|
||||||
|
let cardId = card._id;
|
||||||
|
if (card.isImportedCard()) {
|
||||||
|
boardId = Cards.findOne(card.importedId).boardId;
|
||||||
|
cardId = card.importedId;
|
||||||
|
}
|
||||||
if (text) {
|
if (text) {
|
||||||
CardComments.insert({
|
CardComments.insert({
|
||||||
text,
|
text,
|
||||||
boardId: this.currentData().boardId,
|
boardId,
|
||||||
cardId: this.currentData()._id,
|
cardId,
|
||||||
});
|
});
|
||||||
resetCommentInput(input);
|
resetCommentInput(input);
|
||||||
Tracker.flush();
|
Tracker.flush();
|
||||||
|
|
|
@ -57,8 +57,13 @@ Template.cardAttachmentsPopup.events({
|
||||||
const card = this;
|
const card = this;
|
||||||
FS.Utility.eachFile(evt, (f) => {
|
FS.Utility.eachFile(evt, (f) => {
|
||||||
const file = new FS.File(f);
|
const file = new FS.File(f);
|
||||||
file.boardId = card.boardId;
|
if (card.isImportedCard()) {
|
||||||
file.cardId = card._id;
|
file.boardId = Cards.findOne(card.importedId).boardId;
|
||||||
|
file.cardId = card.importedId;
|
||||||
|
} else {
|
||||||
|
file.boardId = card.boardId;
|
||||||
|
file.cardId = card._id;
|
||||||
|
}
|
||||||
file.userId = Meteor.userId();
|
file.userId = Meteor.userId();
|
||||||
|
|
||||||
const attachment = Attachments.insert(file);
|
const attachment = Attachments.insert(file);
|
||||||
|
|
|
@ -181,19 +181,33 @@ Cards.helpers({
|
||||||
},
|
},
|
||||||
|
|
||||||
isAssigned(memberId) {
|
isAssigned(memberId) {
|
||||||
return _.contains(this.members, memberId);
|
return _.contains(this.getMembers(), memberId);
|
||||||
},
|
},
|
||||||
|
|
||||||
activities() {
|
activities() {
|
||||||
return Activities.find({cardId: this._id}, {sort: {createdAt: -1}});
|
if (this.isImportedCard()) {
|
||||||
|
return Activities.find({cardId: this.importedId}, {sort: {createdAt: -1}});
|
||||||
|
} else if (this.isImportedBoard()) {
|
||||||
|
return Activities.find({boardId: this.importedId}, {sort: {createdAt: -1}});
|
||||||
|
} else {
|
||||||
|
return Activities.find({cardId: this._id}, {sort: {createdAt: -1}});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
comments() {
|
comments() {
|
||||||
return CardComments.find({cardId: this._id}, {sort: {createdAt: -1}});
|
if (this.isImportedCard()) {
|
||||||
|
return CardComments.find({cardId: this.importedId}, {sort: {createdAt: -1}});
|
||||||
|
} else {
|
||||||
|
return CardComments.find({cardId: this._id}, {sort: {createdAt: -1}});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
attachments() {
|
attachments() {
|
||||||
return Attachments.find({cardId: this._id}, {sort: {uploadedAt: -1}});
|
if (this.isImportedCard()) {
|
||||||
|
return Attachments.find({cardId: this.importedId}, {sort: {uploadedAt: -1}});
|
||||||
|
} else {
|
||||||
|
return Attachments.find({cardId: this._id}, {sort: {uploadedAt: -1}});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
cover() {
|
cover() {
|
||||||
|
|
|
@ -99,8 +99,18 @@ Meteor.publishRelations('board', function(boardId) {
|
||||||
// And in the meantime our code below works pretty well -- it's not even a
|
// And in the meantime our code below works pretty well -- it's not even a
|
||||||
// hack!
|
// hack!
|
||||||
this.cursor(Cards.find({ boardId }), function(cardId, card) {
|
this.cursor(Cards.find({ boardId }), function(cardId, card) {
|
||||||
this.cursor(Cards.find({_id: card.importedId}));
|
if (card.type === 'cardType-importedCard') {
|
||||||
this.cursor(Boards.find({_id: card.importedId}));
|
const impCardId = card.importedId;
|
||||||
|
this.cursor(Cards.find({ _id: impCardId }));
|
||||||
|
this.cursor(CardComments.find({ cardId: impCardId }));
|
||||||
|
this.cursor(Activities.find({ cardId: impCardId }));
|
||||||
|
this.cursor(Attachments.find({ cardId: impCardId }));
|
||||||
|
this.cursor(Checklists.find({ cardId: impCardId }));
|
||||||
|
this.cursor(ChecklistItems.find({ cardId: impCardId }));
|
||||||
|
} else if (card.type === 'cardType-importedBoard') {
|
||||||
|
this.cursor(Boards.find({ _id: card.importedId}));
|
||||||
|
}
|
||||||
|
this.cursor(Activities.find({ cardId }));
|
||||||
this.cursor(CardComments.find({ cardId }));
|
this.cursor(CardComments.find({ cardId }));
|
||||||
this.cursor(Attachments.find({ cardId }));
|
this.cursor(Attachments.find({ cardId }));
|
||||||
this.cursor(Checklists.find({ cardId }));
|
this.cursor(Checklists.find({ cardId }));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue