Forráskód Böngészése

Merge branch 'export-import-sandstorm' of https://github.com/GhassenRjab/wekan into GhassenRjab-export-import-sandstorm

Lauri Ojansivu 8 éve
szülő
commit
fe2163a546

+ 7 - 0
client/components/boards/boardArchive.js

@@ -18,6 +18,13 @@ BlazeComponent.extendComponent({
   events() {
     return [{
       '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();
         board.restore();
         Utils.goBoardId(board._id);

+ 13 - 2
client/components/boards/boardHeader.jade

@@ -71,6 +71,12 @@ template(name="boardHeaderBar")
               title="{{_ 'log-in'}}")
               i.fa.fa-sign-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(
           title="{{#if Filter.isActive}}{{_ 'filter-on-desc'}}{{else}}{{_ 'filter'}}{{/if}}"
@@ -113,6 +119,11 @@ template(name="boardMenuPopup")
         li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
         li: a.js-archive-board {{_ 'archive-board'}}
         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")
   ul.pop-over-list
@@ -197,9 +208,9 @@ template(name="createBoard")
 template(name="chooseBoardSource")
   ul.pop-over-list
     li
-      a(href="{{pathFor 'import/trello'}}") {{_ 'from-trello'}}
+      a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
     li
-      a(href="{{pathFor 'import/wekan'}}") {{_ 'from-wekan'}}
+      a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
 
 template(name="boardChangeTitlePopup")
   form

+ 4 - 0
client/components/boards/boardHeader.js

@@ -14,6 +14,7 @@ Template.boardMenuPopup.events({
     FlowRouter.go('home');
   }),
   'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
+  'click .js-import-board': Popup.open('chooseBoardSource'),
 });
 
 Template.boardMenuPopup.helpers({
@@ -76,6 +77,9 @@ BlazeComponent.extendComponent({
       'click .js-open-board-menu': Popup.open('boardMenu'),
       'click .js-change-visibility': Popup.open('boardChangeVisibility'),
       'click .js-watch-board': Popup.open('boardChangeWatch'),
+      'click .js-open-archived-board'() {
+        Modal.open('archivedBoards');
+      },
       'click .js-open-filter-view'() {
         Sidebar.setView('filter');
       },

+ 2 - 0
client/components/import/import.jade

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

+ 2 - 0
client/components/import/import.js

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

+ 3 - 0
config/router.js

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

+ 2 - 0
i18n/en.i18n.json

@@ -206,8 +206,10 @@
     "home": "Home",
     "import": "Import",
     "import-board": "import board",
+    "import-board-c": "Import board",
     "import-board-title-trello": "Import board from Trello",
     "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-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.",

+ 3 - 2
models/import.js

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

+ 8 - 1
models/trelloCreator.js

@@ -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);
     const boardId = this.createBoardAndLabels(board);
     this.createLists(board.lists, boardId);

+ 8 - 1
models/wekanCreator.js

@@ -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);
     const boardId = this.createBoardAndLabels(board);
     this.createLists(board.lists, boardId);