From e8cfed1f7b7ea159f606e096495406b738c70672 Mon Sep 17 00:00:00 2001 From: Keven Kurz PC Date: Sun, 29 Oct 2017 16:34:49 +0100 Subject: [PATCH 1/3] fixed Members do not get included on board import from WeKan #1255 fixed multiple errors where constants were mistakenly overridden.(or trying to get a property of an object after making sure it doesn't exits) renamed wekanBoard Parameter from createBoardAndLabels for clairity reworked adding admin for imorter --- models/wekanCreator.js | 54 ++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/models/wekanCreator.js b/models/wekanCreator.js index 3cd65fd7e..c77143ca4 100644 --- a/models/wekanCreator.js +++ b/models/wekanCreator.js @@ -133,47 +133,35 @@ export class WekanCreator { } // You must call parseActions before calling this one. - createBoardAndLabels(wekanBoard) { + createBoardAndLabels(boardToImport) { const boardToCreate = { - archived: wekanBoard.archived, - color: wekanBoard.color, + archived: boardToImport.archived, + color: boardToImport.color, // very old boards won't have a creation activity so no creation date - createdAt: this._now(wekanBoard.createdAt), + createdAt: this._now(boardToImport.createdAt), labels: [], - members: [{ - userId: Meteor.userId(), - isAdmin: true, - isActive: true, - isCommentOnly: false, - }], + members: [], // Standalone Export has modifiedAt missing, adding modifiedAt to fix it - modifiedAt: this._now(wekanBoard.modifiedAt), - permission: wekanBoard.permission, - slug: getSlug(wekanBoard.title) || 'board', + modifiedAt: this._now(boardToImport.modifiedAt), + permission: boardToImport.permission, + slug: getSlug(boardToImport.title) || 'board', stars: 0, - title: wekanBoard.title, + title: boardToImport.title, }; // now add other members - if(wekanBoard.members) { - wekanBoard.members.forEach((wekanMember) => { - const wekanId = wekanMember.userId; - // do we have a mapping? - if(this.members[wekanId]) { - const wekanId = this.members[wekanId]; - // do we already have it in our list? - const wekanMember = boardToCreate.members.find((wekanMember) => wekanMember.userId === wekanId); - if(!wekanMember) { - boardToCreate.members.push({ - userId: wekanId, - isAdmin: wekanMember.isAdmin, - isActive: true, - isCommentOnly: false, - }); - } - } + if(boardToImport.members) { + boardToImport.members.forEach((wekanMember) => { + // do we already have it in our list? + const foundWekanMember = boardToCreate.members.find((member) => member.wekanId === wekanMember.wekanId); + if(!foundWekanMember) + boardToCreate.members.push({ + ... wekanMember, + userId: wekanMember.wekanId, + ...Meteor.userId() === wekanMember.wekanId ? {isAdmin: true} : {}, // make impoter admin + }); }); } - wekanBoard.labels.forEach((label) => { + boardToImport.labels.forEach((label) => { const labelToCreate = { _id: Random.id(6), color: label.color, @@ -192,7 +180,7 @@ export class WekanCreator { boardId, createdAt: this._now(), source: { - id: wekanBoard.id, + id: boardToImport.id, system: 'Wekan', }, // We attribute the import to current user, From 81d00a94719ff9e395d789c6c862f2fd81f54613 Mon Sep 17 00:00:00 2001 From: Keven Kurz PC Date: Sun, 29 Oct 2017 17:36:31 +0100 Subject: [PATCH 2/3] Covered case of no admin and no self mapping. Now importer is always admin of the imported board so that no undeletable boards can be created. --- models/wekanCreator.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/models/wekanCreator.js b/models/wekanCreator.js index c77143ca4..ae8e32ca5 100644 --- a/models/wekanCreator.js +++ b/models/wekanCreator.js @@ -140,7 +140,13 @@ export class WekanCreator { // very old boards won't have a creation activity so no creation date createdAt: this._now(boardToImport.createdAt), labels: [], - members: [], + members: [{ + userId: Meteor.userId(), + wekanId: Meteor.userId(), + isActive: true, + isAdmin: true, + isCommentOnly: false, + }], // Standalone Export has modifiedAt missing, adding modifiedAt to fix it modifiedAt: this._now(boardToImport.modifiedAt), permission: boardToImport.permission, @@ -152,12 +158,10 @@ export class WekanCreator { if(boardToImport.members) { boardToImport.members.forEach((wekanMember) => { // do we already have it in our list? - const foundWekanMember = boardToCreate.members.find((member) => member.wekanId === wekanMember.wekanId); - if(!foundWekanMember) + if(!boardToCreate.members.some((member) => member.wekanId === wekanMember.wekanId)) boardToCreate.members.push({ ... wekanMember, userId: wekanMember.wekanId, - ...Meteor.userId() === wekanMember.wekanId ? {isAdmin: true} : {}, // make impoter admin }); }); } From 0c34cb97a71d6043764431b68a4397b737e11494 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 31 Oct 2017 06:48:15 +0200 Subject: [PATCH 3/3] Fixed Members do not get included on board import from Wekan. Thanks to Tentoe ! Closes #1255 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d32d5a5ce..eb45bec2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ This release adds the following new features: * [Permit editing WIP limit](https://github.com/wekan/wekan/pull/1312); * [Image attachment resize on smaller screens and swipebox](https://github.com/wekan/wekan/pull/1315). -Thanks to GitHub users brooksbecton, nztqa and ocdtrekkie for their contributions. +and fixes the following bugs: + +* [Members do not get included on board import from Wekan](https://github.com/wekan/wekan/pull/1316). + +Thanks to GitHub users brooksbecton, nztqa, ocdtrekkie and Tentoe for their contributions. # v0.51 2017-10-25 Wekan release