|  | @@ -459,26 +459,9 @@ BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  }).register('boardsAndLists');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -function cloneCheckList(_id, checklist) {
 | 
	
		
			
				|  |  | -  'use strict';
 | 
	
		
			
				|  |  | -  const checklistId = checklist._id;
 | 
	
		
			
				|  |  | -  checklist.cardId = _id;
 | 
	
		
			
				|  |  | -  checklist._id = null;
 | 
	
		
			
				|  |  | -  const newChecklistId = Checklists.insert(checklist);
 | 
	
		
			
				|  |  | -  ChecklistItems.find({checklistId}).forEach(function(item) {
 | 
	
		
			
				|  |  | -    item._id = null;
 | 
	
		
			
				|  |  | -    item.checklistId = newChecklistId;
 | 
	
		
			
				|  |  | -    item.cardId = _id;
 | 
	
		
			
				|  |  | -    ChecklistItems.insert(item);
 | 
	
		
			
				|  |  | -  });
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  Template.copyCardPopup.events({
 | 
	
		
			
				|  |  |    'click .js-done'() {
 | 
	
		
			
				|  |  |      const card = Cards.findOne(Session.get('currentCard'));
 | 
	
		
			
				|  |  | -    const oldId = card._id;
 | 
	
		
			
				|  |  | -    card._id = null;
 | 
	
		
			
				|  |  |      const lSelect = $('.js-select-lists')[0];
 | 
	
		
			
				|  |  |      card.listId = lSelect.options[lSelect.selectedIndex].value;
 | 
	
		
			
				|  |  |      const slSelect = $('.js-select-swimlanes')[0];
 | 
	
	
		
			
				|  | @@ -493,38 +476,13 @@ Template.copyCardPopup.events({
 | 
	
		
			
				|  |  |      if (title) {
 | 
	
		
			
				|  |  |        card.title = title;
 | 
	
		
			
				|  |  |        card.coverId = '';
 | 
	
		
			
				|  |  | -      const _id = Cards.insert(card);
 | 
	
		
			
				|  |  | +      const _id = card.copy();
 | 
	
		
			
				|  |  |        // 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
 | 
	
		
			
				|  |  |        // card will disappear instantly.
 | 
	
		
			
				|  |  |        // See https://github.com/wekan/wekan/issues/80
 | 
	
		
			
				|  |  |        Filter.addException(_id);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      // copy checklists
 | 
	
		
			
				|  |  | -      let cursor = Checklists.find({cardId: oldId});
 | 
	
		
			
				|  |  | -      cursor.forEach(function() {
 | 
	
		
			
				|  |  | -        cloneCheckList(_id, arguments[0]);
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // copy subtasks
 | 
	
		
			
				|  |  | -      cursor = Cards.find({parentId: oldId});
 | 
	
		
			
				|  |  | -      cursor.forEach(function() {
 | 
	
		
			
				|  |  | -        'use strict';
 | 
	
		
			
				|  |  | -        const subtask = arguments[0];
 | 
	
		
			
				|  |  | -        subtask.parentId = _id;
 | 
	
		
			
				|  |  | -        subtask._id = null;
 | 
	
		
			
				|  |  | -        /* const newSubtaskId = */ Cards.insert(subtask);
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // copy card comments
 | 
	
		
			
				|  |  | -      cursor = CardComments.find({cardId: oldId});
 | 
	
		
			
				|  |  | -      cursor.forEach(function () {
 | 
	
		
			
				|  |  | -        'use strict';
 | 
	
		
			
				|  |  | -        const comment = arguments[0];
 | 
	
		
			
				|  |  | -        comment.cardId = _id;
 | 
	
		
			
				|  |  | -        comment._id = null;
 | 
	
		
			
				|  |  | -        CardComments.insert(comment);
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  |        Popup.close();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
	
		
			
				|  | @@ -561,9 +519,8 @@ Template.copyChecklistToManyCardsPopup.events({
 | 
	
		
			
				|  |  |          Filter.addException(_id);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // copy checklists
 | 
	
		
			
				|  |  | -        let cursor = Checklists.find({cardId: oldId});
 | 
	
		
			
				|  |  | -        cursor.forEach(function() {
 | 
	
		
			
				|  |  | -          cloneCheckList(_id, arguments[0]);
 | 
	
		
			
				|  |  | +        Checklists.find({cardId: oldId}).forEach((ch) => {
 | 
	
		
			
				|  |  | +          ch.copy(_id);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // copy subtasks
 | 
	
	
		
			
				|  | @@ -577,13 +534,8 @@ Template.copyChecklistToManyCardsPopup.events({
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // copy card comments
 | 
	
		
			
				|  |  | -        cursor = CardComments.find({cardId: oldId});
 | 
	
		
			
				|  |  | -        cursor.forEach(function () {
 | 
	
		
			
				|  |  | -          'use strict';
 | 
	
		
			
				|  |  | -          const comment = arguments[0];
 | 
	
		
			
				|  |  | -          comment.cardId = _id;
 | 
	
		
			
				|  |  | -          comment._id = null;
 | 
	
		
			
				|  |  | -          CardComments.insert(comment);
 | 
	
		
			
				|  |  | +        CardComments.find({cardId: oldId}).forEach((cmt) => {
 | 
	
		
			
				|  |  | +          cmt.copy(_id);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        Popup.close();
 |