diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index a5af18272..57a45ff01 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -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 diff --git a/models/cards.js b/models/cards.js index 4a3497c6a..e30483aa1 100644 --- a/models/cards.js +++ b/models/cards.js @@ -3038,6 +3038,40 @@ const addCronJob = _.debounce( ); if (Meteor.isServer) { + Meteor.methods({ + /** copies a card + *