mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 23:40:13 +01:00
Merge branch 'export-import-sandstorm' of https://github.com/GhassenRjab/wekan into GhassenRjab-export-import-sandstorm
This commit is contained in:
commit
fe2163a546
10 changed files with 52 additions and 6 deletions
|
|
@ -18,6 +18,13 @@ BlazeComponent.extendComponent({
|
||||||
events() {
|
events() {
|
||||||
return [{
|
return [{
|
||||||
'click .js-restore-board'() {
|
'click .js-restore-board'() {
|
||||||
|
// TODO : Make isSandstorm variable global
|
||||||
|
const isSandstorm = Meteor.settings && Meteor.settings.public &&
|
||||||
|
Meteor.settings.public.sandstorm;
|
||||||
|
if (isSandstorm && Session.get('currentBoard')) {
|
||||||
|
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||||
|
currentBoard.archive();
|
||||||
|
}
|
||||||
const board = this.currentData();
|
const board = this.currentData();
|
||||||
board.restore();
|
board.restore();
|
||||||
Utils.goBoardId(board._id);
|
Utils.goBoardId(board._id);
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,12 @@ template(name="boardHeaderBar")
|
||||||
i.fa.fa-sign-in
|
i.fa.fa-sign-in
|
||||||
span {{_ 'log-in'}}
|
span {{_ 'log-in'}}
|
||||||
|
|
||||||
|
if isSandstorm
|
||||||
|
if currentUser
|
||||||
|
a.board-header-btn.js-open-archived-board
|
||||||
|
i.fa.fa-archive
|
||||||
|
span {{_ 'archives'}}
|
||||||
|
|
||||||
a.board-header-btn.js-open-filter-view(
|
a.board-header-btn.js-open-filter-view(
|
||||||
title="{{#if Filter.isActive}}{{_ 'filter-on-desc'}}{{else}}{{_ 'filter'}}{{/if}}"
|
title="{{#if Filter.isActive}}{{_ 'filter-on-desc'}}{{else}}{{_ 'filter'}}{{/if}}"
|
||||||
class="{{#if Filter.isActive}}emphasis{{/if}}")
|
class="{{#if Filter.isActive}}emphasis{{/if}}")
|
||||||
|
|
@ -113,6 +119,11 @@ template(name="boardMenuPopup")
|
||||||
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
|
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
|
||||||
li: a.js-archive-board {{_ 'archive-board'}}
|
li: a.js-archive-board {{_ 'archive-board'}}
|
||||||
li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
|
li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
|
||||||
|
if isSandstorm
|
||||||
|
hr
|
||||||
|
ul.pop-over-list
|
||||||
|
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
|
||||||
|
li: a.js-import-board {{_ 'import-board-c'}}
|
||||||
|
|
||||||
template(name="boardVisibilityList")
|
template(name="boardVisibilityList")
|
||||||
ul.pop-over-list
|
ul.pop-over-list
|
||||||
|
|
@ -197,9 +208,9 @@ template(name="createBoard")
|
||||||
template(name="chooseBoardSource")
|
template(name="chooseBoardSource")
|
||||||
ul.pop-over-list
|
ul.pop-over-list
|
||||||
li
|
li
|
||||||
a(href="{{pathFor 'import/trello'}}") {{_ 'from-trello'}}
|
a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
|
||||||
li
|
li
|
||||||
a(href="{{pathFor 'import/wekan'}}") {{_ 'from-wekan'}}
|
a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
|
||||||
|
|
||||||
template(name="boardChangeTitlePopup")
|
template(name="boardChangeTitlePopup")
|
||||||
form
|
form
|
||||||
|
|
|
||||||
|
|
@ -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({
|
||||||
|
|
@ -76,6 +77,9 @@ BlazeComponent.extendComponent({
|
||||||
'click .js-open-board-menu': Popup.open('boardMenu'),
|
'click .js-open-board-menu': Popup.open('boardMenu'),
|
||||||
'click .js-change-visibility': Popup.open('boardChangeVisibility'),
|
'click .js-change-visibility': Popup.open('boardChangeVisibility'),
|
||||||
'click .js-watch-board': Popup.open('boardChangeWatch'),
|
'click .js-watch-board': Popup.open('boardChangeWatch'),
|
||||||
|
'click .js-open-archived-board'() {
|
||||||
|
Modal.open('archivedBoards');
|
||||||
|
},
|
||||||
'click .js-open-filter-view'() {
|
'click .js-open-filter-view'() {
|
||||||
Sidebar.setView('filter');
|
Sidebar.setView('filter');
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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.",
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue