From a38b4c6a834ccf84c045de7d06f0058058056bdb Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Tue, 5 Sep 2017 13:30:38 +0200 Subject: Added copy card functionality --- client/components/cards/cardDetails.js | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'client/components') diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 401a35ec..7c6c3ce7 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -157,6 +157,7 @@ Template.cardDetailsActionsPopup.events({ 'click .js-start-date': Popup.open('editCardStartDate'), 'click .js-due-date': Popup.open('editCardDueDate'), 'click .js-move-card': Popup.open('moveCard'), + 'click .js-copy-card': Popup.open('copyCard'), 'click .js-move-card-to-top' (evt) { evt.preventDefault(); const minOrder = _.min(this.list().cards().map((c) => c.sort)); @@ -206,6 +207,50 @@ Template.moveCardPopup.events({ }, }); +Template.copyCardPopup.events({ + 'click .js-select-list' (evt) { + const card = Cards.findOne(Session.get('currentCard')); + const oldId = card._id; + card._id = null; + card.listId = this._id; + const textarea = $(evt.currentTarget).parents('.content').find('textarea'); + const title = textarea.val().trim(); + // insert new card to the bottom of new list + card.sort = Lists.findOne(this._id).cards().count(); + + if (title) { + card.title = title; + const _id = Cards.insert(card); + // 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() { + 'use strict'; + const checklist = arguments[0]; + checklist.cardId = _id; + checklist._id = null; + Checklists.insert(checklist); + }); + + // 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(); + } + }, +}); + Template.cardMorePopup.events({ 'click .js-copy-card-link-to-clipboard' () { // Clipboard code from: -- cgit v1.2.3-1-g7c22