diff options
-rw-r--r-- | .eslintrc.json | 4 | ||||
-rw-r--r-- | CHANGELOG.md | 11 | ||||
-rw-r--r-- | client/components/main/layouts.js | 12 | ||||
-rw-r--r-- | client/components/sidebar/sidebar.js | 2 | ||||
-rw-r--r-- | client/components/users/userHeader.js | 14 | ||||
-rw-r--r-- | models/boards.js | 10 | ||||
-rw-r--r-- | models/cardComments.js | 8 | ||||
-rw-r--r-- | models/cards.js | 10 | ||||
-rw-r--r-- | models/checklists.js | 8 | ||||
-rw-r--r-- | models/integrations.js | 14 | ||||
-rw-r--r-- | models/lists.js | 8 | ||||
-rw-r--r-- | models/swimlanes.js | 8 | ||||
-rw-r--r-- | models/trelloCreator.js | 26 | ||||
-rw-r--r-- | models/users.js | 12 | ||||
-rw-r--r-- | sandstorm.js | 6 |
15 files changed, 88 insertions, 65 deletions
diff --git a/.eslintrc.json b/.eslintrc.json index a6d651a5..8bd678b3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -129,6 +129,8 @@ "Integrations": true, "HTTP": true, "AccountSettings": true, - "Announcements": true + "Announcements": true, + "Swimlanes": true, + "Npm": true } } diff --git a/CHANGELOG.md b/CHANGELOG.md index a7bd8b16..e4eab854 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Fix lint errors related to sandstorm](https://github.com/wekan/wekan/commit/0a16147470246c8f49bb918f5ddc7bb2e54fba14); +- [Add Swimlanes to globals](https://github.com/wekan/wekan/commit/373e9782dcf87a9c1169b5d1f8175ce14e4898c9); +- [Fix lint errors related to trello creator](https://github.com/wekan/wekan/commit/951a0db380d60f3d948ae38d50b85a54983a51de); +- [Fix lint errors related to language names](https://github.com/wekan/wekan/commit/c0d33d97f2c8d4e9371a03d4ad3022df3ed64d3d). + +Thanks to GitHub user GhassenRjab for contributions. + # v0.77 2018-02-23 Wekan release This release adds the following new features: diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index df22fc14..f12718a7 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -17,10 +17,14 @@ Template.userFormsLayout.onRendered(() => { Template.userFormsLayout.helpers({ languages() { return _.map(TAPi18n.getLanguages(), (lang, code) => { - return { - tag: code, - name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name, - }; + const tag = code; + let name = lang.name; + if (lang.name === 'br') { + name = 'Brezhoneg'; + } else if (lang.name === 'ig') { + name = 'Igbo'; + } + return { tag, name }; }).sort(function(a, b) { if (a.name === b.name) { return 0; diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js index e4a7c409..bff96dcb 100644 --- a/client/components/sidebar/sidebar.js +++ b/client/components/sidebar/sidebar.js @@ -156,7 +156,7 @@ Template.memberPopup.events({ }), 'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => { const boardId = Session.get('currentBoard'); - Meteor.call('quitBoard', boardId, (err, ret) => { + Meteor.call('quitBoard', boardId, () => { Popup.close(); FlowRouter.go('home'); }); diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 96c8c95e..be7d4dcb 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -114,10 +114,16 @@ Template.changePasswordPopup.onRendered(function () { Template.changeLanguagePopup.helpers({ languages() { return _.map(TAPi18n.getLanguages(), (lang, code) => { - return { - tag: code, - name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name, - }; + // Same code in /client/components/main/layouts.js + // TODO : Make code reusable + const tag = code; + let name = lang.name; + if (lang.name === 'br') { + name = 'Brezhoneg'; + } else if (lang.name === 'ig') { + name = 'Igbo'; + } + return { tag, name }; }).sort(function (a, b) { if (a.name === b.name) { return 0; diff --git a/models/boards.js b/models/boards.js index 55b0711c..8a7ae1aa 100644 --- a/models/boards.js +++ b/models/boards.js @@ -608,7 +608,7 @@ if (Meteor.isServer) { //BOARDS REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res, next) { + JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res) { try { Authentication.checkLoggedIn(req.userId); const paramUserId = req.params.userId; @@ -638,7 +638,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards', function (req, res) { try { Authentication.checkUserId(req.userId); JsonRoutes.sendResult(res, { @@ -659,7 +659,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards/:id', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:id', function (req, res) { try { const id = req.params.id; Authentication.checkBoardAccess(req.userId, id); @@ -677,7 +677,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/boards', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards', function (req, res) { try { Authentication.checkUserId(req.userId); const id = Boards.insert({ @@ -708,7 +708,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res) { try { Authentication.checkUserId(req.userId); const id = req.params.id; diff --git a/models/cardComments.js b/models/cardComments.js index 4d802748..b6cb10fa 100644 --- a/models/cardComments.js +++ b/models/cardComments.js @@ -87,7 +87,7 @@ if (Meteor.isServer) { //CARD COMMENT REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; @@ -111,7 +111,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; @@ -130,7 +130,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; @@ -160,7 +160,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; diff --git a/models/cards.js b/models/cards.js index 9b0969ec..544afca5 100644 --- a/models/cards.js +++ b/models/cards.js @@ -433,7 +433,7 @@ if (Meteor.isServer) { } //LISTS REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res) { const paramBoardId = req.params.boardId; const paramListId = req.params.listId; Authentication.checkBoardAccess(req.userId, paramBoardId); @@ -449,7 +449,7 @@ if (Meteor.isServer) { }); }); - JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) { const paramBoardId = req.params.boardId; const paramListId = req.params.listId; const paramCardId = req.params.cardId; @@ -460,7 +460,7 @@ if (Meteor.isServer) { }); }); - JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res) { Authentication.checkUserId(req.userId); const paramBoardId = req.params.boardId; const paramListId = req.params.listId; @@ -493,7 +493,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) { + JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) { Authentication.checkUserId(req.userId); const paramBoardId = req.params.boardId; const paramCardId = req.params.cardId; @@ -527,7 +527,7 @@ if (Meteor.isServer) { }); - JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) { Authentication.checkUserId(req.userId); const paramBoardId = req.params.boardId; const paramListId = req.params.listId; diff --git a/models/checklists.js b/models/checklists.js index 907ad7e8..7eb0a24f 100644 --- a/models/checklists.js +++ b/models/checklists.js @@ -258,7 +258,7 @@ if (Meteor.isServer) { //CARD COMMENT REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) { try { Authentication.checkUserId( req.userId); const paramCardId = req.params.cardId; @@ -280,7 +280,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramChecklistId = req.params.checklistId; @@ -298,7 +298,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) { try { Authentication.checkUserId( req.userId); const paramCardId = req.params.cardId; @@ -329,7 +329,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramCommentId = req.params.commentId; diff --git a/models/integrations.js b/models/integrations.js index 1be6af17..1062b93b 100644 --- a/models/integrations.js +++ b/models/integrations.js @@ -59,7 +59,7 @@ Integrations.allow({ //INTEGRATIONS REST API if (Meteor.isServer) { // Get all integrations in board - JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res) { try { const paramBoardId = req.params.boardId; Authentication.checkBoardAccess(req.userId, paramBoardId); @@ -79,7 +79,7 @@ if (Meteor.isServer) { }); // Get a single integration in board - JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res) { try { const paramBoardId = req.params.boardId; const paramIntId = req.params.intId; @@ -99,7 +99,7 @@ if (Meteor.isServer) { }); // Create a new integration - JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res) { try { const paramBoardId = req.params.boardId; Authentication.checkBoardAccess(req.userId, paramBoardId); @@ -126,7 +126,7 @@ if (Meteor.isServer) { }); // Edit integration data - JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res, next) { + JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res) { try { const paramBoardId = req.params.boardId; const paramIntId = req.params.intId; @@ -174,7 +174,7 @@ if (Meteor.isServer) { }); // Delete subscribed activities - JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) { try { const paramBoardId = req.params.boardId; const paramIntId = req.params.intId; @@ -198,7 +198,7 @@ if (Meteor.isServer) { }); // Add subscribed activities - JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) { try { const paramBoardId = req.params.boardId; const paramIntId = req.params.intId; @@ -222,7 +222,7 @@ if (Meteor.isServer) { }); // Delete integration - JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res) { try { const paramBoardId = req.params.boardId; const paramIntId = req.params.intId; diff --git a/models/lists.js b/models/lists.js index 7333db94..6f6996cb 100644 --- a/models/lists.js +++ b/models/lists.js @@ -201,7 +201,7 @@ if (Meteor.isServer) { //LISTS REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res) { try { const paramBoardId = req.params.boardId; Authentication.checkBoardAccess( req.userId, paramBoardId); @@ -224,7 +224,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res) { try { const paramBoardId = req.params.boardId; const paramListId = req.params.listId; @@ -242,7 +242,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; @@ -265,7 +265,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; diff --git a/models/swimlanes.js b/models/swimlanes.js index 68cd77da..72ef3f36 100644 --- a/models/swimlanes.js +++ b/models/swimlanes.js @@ -131,7 +131,7 @@ if (Meteor.isServer) { //SWIMLANE REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res) { try { const paramBoardId = req.params.boardId; Authentication.checkBoardAccess( req.userId, paramBoardId); @@ -154,7 +154,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) { + JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) { try { const paramBoardId = req.params.boardId; const paramSwimlaneId = req.params.swimlaneId; @@ -172,7 +172,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res, next) { + JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; @@ -195,7 +195,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) { try { Authentication.checkUserId( req.userId); const paramBoardId = req.params.boardId; diff --git a/models/trelloCreator.js b/models/trelloCreator.js index 2d85ee71..89e48a16 100644 --- a/models/trelloCreator.js +++ b/models/trelloCreator.js @@ -401,19 +401,19 @@ export class TrelloCreator { } createSwimlanes(boardId) { - const swimlaneToCreate = { - archived: false, - boardId, - // We are being defensing here by providing a default date (now) if the - // creation date wasn't found on the action log. This happen on old - // Wekan boards (eg from 2013) that didn't log the 'createList' action - // we require. - createdAt: this._now(), - title: 'Default', - }; - const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate); - Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}}); - this.swimlane = swimlaneId; + const swimlaneToCreate = { + archived: false, + boardId, + // We are being defensing here by providing a default date (now) if the + // creation date wasn't found on the action log. This happen on old + // Wekan boards (eg from 2013) that didn't log the 'createList' action + // we require. + createdAt: this._now(), + title: 'Default', + }; + const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate); + Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}}); + this.swimlane = swimlaneId; } createChecklists(trelloChecklists) { diff --git a/models/users.js b/models/users.js index 88a0627b..da8ca77c 100644 --- a/models/users.js +++ b/models/users.js @@ -600,7 +600,7 @@ if (Meteor.isServer) { // USERS REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/user', function(req, res, next) { + JsonRoutes.add('GET', '/api/user', function(req, res) { try { Authentication.checkLoggedIn(req.userId); const data = Meteor.users.findOne({ _id: req.userId}); @@ -618,7 +618,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/users', function (req, res, next) { + JsonRoutes.add('GET', '/api/users', function (req, res) { try { Authentication.checkUserId(req.userId); JsonRoutes.sendResult(res, { @@ -636,7 +636,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('GET', '/api/users/:id', function (req, res, next) { + JsonRoutes.add('GET', '/api/users/:id', function (req, res) { try { Authentication.checkUserId(req.userId); const id = req.params.id; @@ -653,7 +653,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('PUT', '/api/users/:id', function (req, res, next) { + JsonRoutes.add('PUT', '/api/users/:id', function (req, res) { try { Authentication.checkUserId(req.userId); const id = req.params.id; @@ -696,7 +696,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('POST', '/api/users/', function (req, res, next) { + JsonRoutes.add('POST', '/api/users/', function (req, res) { try { Authentication.checkUserId(req.userId); const id = Accounts.createUser({ @@ -720,7 +720,7 @@ if (Meteor.isServer) { } }); - JsonRoutes.add('DELETE', '/api/users/:id', function (req, res, next) { + JsonRoutes.add('DELETE', '/api/users/:id', function (req, res) { try { Authentication.checkUserId(req.userId); const id = req.params.id; diff --git a/sandstorm.js b/sandstorm.js index bb3e5011..3dcbf03c 100644 --- a/sandstorm.js +++ b/sandstorm.js @@ -22,9 +22,9 @@ const sandstormBoard = { if (isSandstorm && Meteor.isServer) { const fs = require('fs'); - const pathParts = process.cwd().split("/"); - var path = pathParts.join("/"); - const Capnp = Npm.require(path + "../../../node_modules/capnp.js"); + const pathParts = process.cwd().split('/'); + const path = pathParts.join('/'); + const Capnp = Npm.require(`${path}../../../node_modules/capnp.js`); const Package = Capnp.importSystem('sandstorm/package.capnp'); const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp'); const Identity = Capnp.importSystem('sandstorm/identity.capnp'); |