Import boards in Sandstorm

This commit is contained in:
Ghassen Rjab 2017-07-24 23:56:51 +01:00
parent f34ef01de9
commit d2b1a837e6
8 changed files with 29 additions and 4 deletions

View file

@ -14,6 +14,7 @@ Template.boardMenuPopup.events({
FlowRouter.go('home'); FlowRouter.go('home');
}), }),
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'), 'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
}); });
Template.boardMenuPopup.helpers({ Template.boardMenuPopup.helpers({

View file

@ -15,6 +15,8 @@ template(name="importTextarea")
p: label(for='import-textarea') {{_ instruction}} p: label(for='import-textarea') {{_ instruction}}
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus) textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
| {{jsonText}} | {{jsonText}}
if isSandstorm
p.warning {{_ 'import-sandstorm-warning'}}
input.primary.wide(type="submit" value="{{_ 'import'}}") input.primary.wide(type="submit" value="{{_ 'import'}}")
template(name="importMapMembers") template(name="importMapMembers")

View file

@ -68,10 +68,12 @@ BlazeComponent.extendComponent({
this.importedData.get(), this.importedData.get(),
additionalData, additionalData,
this.importSource, this.importSource,
Session.get('fromBoard'),
(err, res) => { (err, res) => {
if (err) { if (err) {
this.setError(err.error); this.setError(err.error);
} else { } else {
Session.set('fromBoard', null);
Utils.goBoardId(res); Utils.goBoardId(res);
} }
} }

View file

@ -84,6 +84,9 @@ FlowRouter.route('/import/:source', {
name: 'import', name: 'import',
triggersEnter: [AccountsTemplates.ensureSignedIn], triggersEnter: [AccountsTemplates.ensureSignedIn],
action(params) { action(params) {
if (Session.get('currentBoard')) {
Session.set('fromBoard', Session.get('currentBoard'));
}
Session.set('currentBoard', null); Session.set('currentBoard', null);
Session.set('currentCard', null); Session.set('currentCard', null);
Session.set('importSource', params.source); Session.set('importSource', params.source);

View file

@ -206,8 +206,10 @@
"home": "Home", "home": "Home",
"import": "Import", "import": "Import",
"import-board": "import board", "import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello", "import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan", "import-board-title-wekan": "Import board from Wekan",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello", "from-trello": "From Trello",
"from-wekan": "From Wekan", "from-wekan": "From Wekan",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.", "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",

View file

@ -2,10 +2,11 @@ import { TrelloCreator } from './trelloCreator';
import { WekanCreator } from './wekanCreator'; import { WekanCreator } from './wekanCreator';
Meteor.methods({ Meteor.methods({
importBoard(board, data, importSource) { importBoard(board, data, importSource, currentBoard) {
check(board, Object); check(board, Object);
check(data, Object); check(data, Object);
check(importSource, String); check(importSource, String);
check(currentBoard, Match.Maybe(String));
let creator; let creator;
switch (importSource) { switch (importSource) {
case 'trello': case 'trello':
@ -23,6 +24,6 @@ Meteor.methods({
// authorized) nothing to check, everyone can import boards in their account // authorized) nothing to check, everyone can import boards in their account
// 3. create all elements // 3. create all elements
return creator.create(board); return creator.create(board, currentBoard);
}, },
}); });

View file

@ -488,7 +488,14 @@ export class TrelloCreator {
} }
} }
create(board) { create(board, currentBoardId) {
// TODO : Make isSandstorm variable global
const isSandstorm = Meteor.settings && Meteor.settings.public &&
Meteor.settings.public.sandstorm;
if (isSandstorm && currentBoardId) {
const currentBoard = Boards.findOne(currentBoardId);
currentBoard.archive();
}
this.parseActions(board.actions); this.parseActions(board.actions);
const boardId = this.createBoardAndLabels(board); const boardId = this.createBoardAndLabels(board);
this.createLists(board.lists, boardId); this.createLists(board.lists, boardId);

View file

@ -478,7 +478,14 @@ export class WekanCreator {
} }
} }
create(board) { create(board, currentBoardId) {
// TODO : Make isSandstorm variable global
const isSandstorm = Meteor.settings && Meteor.settings.public &&
Meteor.settings.public.sandstorm;
if (isSandstorm && currentBoardId) {
const currentBoard = Boards.findOne(currentBoardId);
currentBoard.archive();
}
this.parseActivities(board); this.parseActivities(board);
const boardId = this.createBoardAndLabels(board); const boardId = this.createBoardAndLabels(board);
this.createLists(board.lists, boardId); this.createLists(board.lists, boardId);