Import single card: create an 'importCard' activity entry

This commit is contained in:
Xavier Priour 2015-10-14 19:54:40 +02:00 committed by Maxime Quandalle
parent 4b99ce2aa2
commit 7d57ce896b
4 changed files with 35 additions and 8 deletions

View file

@ -26,6 +26,9 @@ template(name="boardActivities")
if($eq activityType 'createCard')
| {{{_ 'activity-added' cardLink boardLabel}}}.
if($eq activityType 'importCard')
| {{{_ 'activity-imported' cardLink boardLabel sourceLink}}}.
if($eq activityType 'archivedCard')
| {{{_ 'activity-archived' cardLink}}}.
@ -72,6 +75,8 @@ template(name="cardActivities")
+memberName(user=user)
if($eq activityType 'createCard')
| {{_ 'activity-added' cardLabel list.title}}.
if($eq activityType 'importCard')
| {{{_ 'activity-imported' cardLabel list.title sourceLink}}}.
if($eq activityType 'joinMember')
if($eq currentUser._id member._id)
| {{_ 'activity-joined' cardLabel}}.

View file

@ -60,6 +60,13 @@ BlazeComponent.extendComponent({
}, card.title));
},
sourceLink() {
const source = this.currentData().source;
return source && Blaze.toHTML(HTML.A({
href: source.url,
}, source.system));
},
memberLink() {
return Blaze.toHTMLWithData(Template.memberName, {
user: this.currentData().member(),

View file

@ -7,6 +7,7 @@
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",

View file

@ -41,16 +41,17 @@ Meteor.methods({
// 3. map all fields for the card to create
const dateOfImport = new Date();
const cardToCreate = {
title: trelloCard.name,
description: trelloCard.desc,
listId: list._id,
boardId: list.boardId,
userId: Meteor.userId(),
sort: sortIndex,
archived: trelloCard.closed,
boardId: list.boardId,
// this is a default date, we'll fetch the actual one from the actions array
createdAt: dateOfImport,
dateLastActivity: dateOfImport,
description: trelloCard.desc,
listId: list._id,
sort: sortIndex,
title: trelloCard.name,
// XXX use the original user?
userId: Meteor.userId(),
};
// 4. find actual creation date
@ -84,7 +85,20 @@ Meteor.methods({
// 6. insert new card into list
const cardId = Cards.direct.insert(cardToCreate);
// XXX then add import activity
Activities.direct.insert({
activityType: 'importCard',
boardId: cardToCreate.boardId,
cardId: cardId,
createdAt: dateOfImport,
listId: cardToCreate.listId,
source: {
id: trelloCard.id,
system: 'Trello',
url: trelloCard.url,
},
// we attribute the import to current user, not the one from the original card
userId: Meteor.userId(),
});
// 7. parse actions and add comments
trelloCard.actions.forEach((currentAction) => {
@ -94,6 +108,7 @@ Meteor.methods({
cardId: cardId,
createdAt: currentAction.date,
text: currentAction.data.text,
// XXX use the original comment user instead
userId: Meteor.userId(),
};
const commentId = CardComments.direct.insert(commentToCreate);
@ -106,7 +121,6 @@ Meteor.methods({
userId: commentToCreate.userId,
});
}
// XXX add other type of activities?
});
return cardId;
},