Copy card at card details copies now attachments

This commit is contained in:
Martin Filser 2022-07-03 22:23:31 +02:00
parent 0553e36bfb
commit e37bf2b51d
2 changed files with 35 additions and 11 deletions

View file

@ -1035,18 +1035,8 @@ class DialogWithBoardSwimlaneList extends BlazeComponent {
const title = textarea.val().trim();
if (title) {
const oldTitle = card.title;
card.title = title;
card.coverId = '';
// insert new card to the top of new list
const minOrder = card.getMinSort(listId, swimlaneId);
card.sort = minOrder - 1;
const newCardId = card.copy(boardId, swimlaneId, listId);
// restore the old card title, otherwise the card title would change in the current view (only temporary)
card.title = oldTitle;
const newCardId = Meteor.call('copyCard', card._id, boardId, swimlaneId, listId, true, {title: title});
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the

View file

@ -3038,6 +3038,40 @@ const addCronJob = _.debounce(
);
if (Meteor.isServer) {
Meteor.methods({
/** copies a card
* <li> this method is needed on the server because attachments can only be copied on the server (access to file system)
* @param card id to copy
* @param boardId copy to this board
* @param swimlandeId copy to this swimlane id
* @param listId copy to this list id
* @param insertAtTop insert the card at the top?
* @param mergeCardValues this values into the copied card
* @return the new card id
*/
copyCard(cardId, boardId, swimlaneId, listId, insertAtTop, mergeCardValues) {
check(cardId, String);
check(boardId, String);
check(swimlaneId, String);
check(listId, String);
check(insertAtTop, Boolean);
check(mergeCardValues, Object);
const card = Cards.findOne({_id: cardId});
Object.assign(card, mergeCardValues);
const sort = card.getSort(listId, swimlaneId, insertAtTop);
if (insertAtTop) {
card.sort = sort - 1;
} else
{
card.sort = sort + 1;
}
const ret = card.copy(boardId, swimlaneId, listId);
return ret;
},
});
// Cards are often fetched within a board, so we create an index to make these
// queries more efficient.
Meteor.startup(() => {