From 59f4daf91eedd0d5c4ff0ed3f271da8259c2ca9f Mon Sep 17 00:00:00 2001 From: Ghassen Rjab Date: Tue, 14 Nov 2017 03:03:08 +0100 Subject: [PATCH 1/5] Copy cards cross boards --- client/components/cards/cardDetails.jade | 17 ++++++++++++- client/components/cards/cardDetails.js | 31 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index ce93d6fd5..677f62c7b 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -137,8 +137,23 @@ template(name="copyCardPopup") label(for='copy-card-title') {{_ 'title'}}: textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus) = title + +boardsAndLists + +template(name="boardsAndLists") + select.js-select-boards + each boards + if $eq _id currentBoard._id + option(value="{{_id}}" selected) {{_ 'current'}} + else + option(value="{{_id}}") {{title}} label {{_ 'lists'}}: - +boardLists + ul.pop-over-list + each aBoardLists + li + if($eq ../_id _id) + a.disabled {{title}} ({{_ 'current'}}) + else + a.js-select-list= title template(name="cardMembersPopup") ul.pop-over-list.js-card-member-list diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 836a23537..14efca7e5 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -214,12 +214,43 @@ Template.moveCardPopup.events({ }, }); +BlazeComponent.extendComponent({ + onCreated() { + this.selectedBoard = new ReactiveVar(Session.get('currentBoard')); + }, + + boards() { + const boards = Boards.find({ + archived: false, + 'members.userId': Meteor.userId(), + }, { + sort: ['title'], + }); + return boards; + }, + + aBoardLists() { + const board = Boards.findOne(this.selectedBoard.get()); + return board.lists(); + }, + + events() { + return [{ + 'change .js-select-boards' (evt) { + this.selectedBoard.set($(evt.currentTarget).val()); + }, + }]; + }, +}).register('boardsAndLists'); + 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 list = Lists.findOne(card.listId); + card.boardId = list.boardId; const textarea = $(evt.currentTarget).parents('.content').find('textarea'); const title = textarea.val().trim(); // insert new card to the bottom of new list From 5a37ba0d9f504a601b9a0e8942a669c22784b4d8 Mon Sep 17 00:00:00 2001 From: Ghassen Rjab Date: Tue, 14 Nov 2017 03:03:29 +0100 Subject: [PATCH 2/5] Move cards cross boards --- client/components/cards/cardDetails.jade | 2 +- models/cards.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 677f62c7b..ed1df0a81 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -131,7 +131,7 @@ template(name="cardDetailsActionsPopup") li: a.js-more {{_ 'cardMorePopup-title'}} template(name="moveCardPopup") - +boardLists + +boardsAndLists template(name="copyCardPopup") label(for='copy-card-title') {{_ 'title'}}: diff --git a/models/cards.js b/models/cards.js index 5de17c6f3..b6397c9e2 100644 --- a/models/cards.js +++ b/models/cards.js @@ -207,7 +207,11 @@ Cards.mutations({ }, move(listId, sortIndex) { - const mutatedFields = {listId}; + const list = Lists.findOne(listId); + const mutatedFields = { + listId, + boardId: list.boardId, + }; if (sortIndex) { mutatedFields.sort = sortIndex; } From ce4f1589762e82dd9175444eeca4d6d0e2f79d1e Mon Sep 17 00:00:00 2001 From: Ghassen Rjab Date: Tue, 14 Nov 2017 03:25:04 +0100 Subject: [PATCH 3/5] Hide list of boards in Copy|Move cards for Sandstorm users --- client/components/cards/cardDetails.jade | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index ed1df0a81..d772f26a5 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -131,13 +131,19 @@ template(name="cardDetailsActionsPopup") li: a.js-more {{_ 'cardMorePopup-title'}} template(name="moveCardPopup") - +boardsAndLists + if isSandstorm + +boardLists + else + +boardsAndLists template(name="copyCardPopup") label(for='copy-card-title') {{_ 'title'}}: textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus) = title - +boardsAndLists + if isSandstorm + +boardLists + else + +boardsAndLists template(name="boardsAndLists") select.js-select-boards From 9441fb29c9a1bdb6a635e13717fd14039f4a02f1 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 21 Nov 2017 09:07:56 +0200 Subject: [PATCH 4/5] Fix Copy/Move cards. Thanks to thuanpq ! --- client/components/cards/cardDetails.jade | 3 ++- client/components/cards/cardDetails.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index c2ee4e8d2..859b80c39 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -153,11 +153,12 @@ template(name="boardsAndLists") option(value="{{_id}}" selected) {{_ 'current'}} else option(value="{{_id}}") {{title}} + label {{_ 'lists'}}: ul.pop-over-list each aBoardLists li - if($eq ../_id _id) + if $eq ../_id _id a.disabled {{title}} ({{_ 'current'}}) else a.js-select-list= title diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index c358b306b..f13404a5d 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -1,3 +1,5 @@ +const subManager = new SubsManager(); + BlazeComponent.extendComponent({ mixins() { return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar]; @@ -231,13 +233,13 @@ BlazeComponent.extendComponent({ }, aBoardLists() { + subManager.subscribe('board', this.selectedBoard.get()); const board = Boards.findOne(this.selectedBoard.get()); return board.lists(); }, - events() { return [{ - 'change .js-select-boards' (evt) { + 'change .js-select-boards'(evt) { this.selectedBoard.set($(evt.currentTarget).val()); }, }]; From a84db5989849d7853c6cd84959f6a3d327dabb78 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 21 Nov 2017 09:15:16 +0200 Subject: [PATCH 5/5] Copy/Move card to another board in Standalone Wekan. Thanks to GhassenRjab and thuanpq ! Closes #797 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9acedd520..98ae12fe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# Upcoming Wekan release + +This release adds the following new features: + +* [Copy/Move cards to other board in Standalone Wekan](https://github.com/wekan/wekan/pull/1330). + +Thanks to GitHub users GhassenRjab and thuanpq for their contributions. + # v0.55 2017-11-19 Wekan release This release adds the following new features: