summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2017-11-21 09:16:28 +0200
committerLauri Ojansivu <x@xet7.org>2017-11-21 09:16:28 +0200
commit06afa1ae35cc00efbe517b30b27c06a18910dffc (patch)
tree4af6cf633c5d88501e1daa4c34cc9439ad5b62d5
parentdfd0b2194746208c85b16fd485e7ca6f0cc34b57 (diff)
parenta84db5989849d7853c6cd84959f6a3d327dabb78 (diff)
downloadwekan-06afa1ae35cc00efbe517b30b27c06a18910dffc.tar.gz
wekan-06afa1ae35cc00efbe517b30b27c06a18910dffc.tar.bz2
wekan-06afa1ae35cc00efbe517b30b27c06a18910dffc.zip
Merge branch 'GhassenRjab-feature/copy-move-cards-x-boards' into devel
Copy/Move card to another board in Standalone Wekan. Thanks to GhassenRjab and thuanpq ! Closes #797
-rw-r--r--CHANGELOG.md8
-rw-r--r--client/components/cards/cardDetails.jade26
-rw-r--r--client/components/cards/cardDetails.js33
-rw-r--r--models/cards.js6
4 files changed, 70 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9acedd52..98ae12fe 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:
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index b6572251..859b80c3 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -132,14 +132,36 @@ template(name="cardDetailsActionsPopup")
li: a.js-more {{_ 'cardMorePopup-title'}}
template(name="moveCardPopup")
- +boardLists
+ 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
+ if isSandstorm
+ +boardLists
+ else
+ +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 3825bda8..f13404a5 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];
@@ -215,12 +217,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() {
+ subManager.subscribe('board', this.selectedBoard.get());
+ 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
diff --git a/models/cards.js b/models/cards.js
index 5de17c6f..b6397c9e 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;
}