diff options
-rw-r--r-- | client/components/boards/boardHeader.js | 2 | ||||
-rw-r--r-- | models/export.js | 28 | ||||
-rw-r--r-- | server/lib/utils.js | 21 |
3 files changed, 17 insertions, 34 deletions
diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js index acf40f44..fb19d9c6 100644 --- a/client/components/boards/boardHeader.js +++ b/client/components/boards/boardHeader.js @@ -19,7 +19,7 @@ Template.boardMenuPopup.helpers({ exportUrl() { const boardId = Session.get('currentBoard'); const loginToken = Accounts._storedLoginToken(); - return Meteor.absoluteUrl(`api/boards/${boardId}?authToken=${loginToken}`); + return FlowRouter.url(`api/boards/${boardId}?authToken=${loginToken}`); }, exportFilename() { const boardId = Session.get('currentBoard'); diff --git a/models/export.js b/models/export.js index 3d8ee99e..b774cf15 100644 --- a/models/export.js +++ b/models/export.js @@ -2,8 +2,10 @@ if(Meteor.isServer) { // todo XXX once we have a real API in place, move that route there // todo XXX also share the route definition between the client and the server - // so that we could use something like ApiRoutes.path('boards/export', boardId) - // on the client instead of copy/pasting the route path manually between the client and the server. + // so that we could use something like + // `ApiRoutes.path('boards/export', boardId)`` + // on the client instead of copy/pasting the route path manually between the + // client and the server. /* * This route is used to export the board FROM THE APPLICATION. * If user is already logged-in, pass loginToken as param "authToken": @@ -29,8 +31,8 @@ if(Meteor.isServer) { if(exporter.canExport(user)) { JsonRoutes.sendResult(res, 200, exporter.build()); } else { - // we could send an explicit error message, but on the other hand the only way to - // get there is by hacking the UI so let's keep it raw. + // we could send an explicit error message, but on the other hand the only + // way to get there is by hacking the UI so let's keep it raw. JsonRoutes.sendResult(res, 403); } }); @@ -54,14 +56,16 @@ class Exporter { result.comments = CardComments.find(byBoard, noBoardId).fetch(); result.activities = Activities.find(byBoard, noBoardId).fetch(); // for attachments we only export IDs and absolute url to original doc - result.attachments = Attachments.find(byBoard).fetch().map((attachment) => { return { - _id: attachment._id, - cardId: attachment.cardId, - url: Meteor.absoluteUrl(Utils.stripLeadingSlash(attachment.url())), - };}); + result.attachments = Attachments.find(byBoard).fetch().map((attachment) => { + return { + _id: attachment._id, + cardId: attachment.cardId, + url: FlowRouter.url(attachment.url()), + }; + }); - // we also have to export some user data - as the other elements only include id - // but we have to be careful: + // we also have to export some user data - as the other elements only + // include id but we have to be careful: // 1- only exports users that are linked somehow to that board // 2- do not export any sensitive information const users = {}; @@ -88,7 +92,7 @@ class Exporter { result.users = Users.find(byUserIds, userFields).fetch().map((user) => { // user avatar is stored as a relative url, we export absolute if(user.profile.avatarUrl) { - user.profile.avatarUrl = Meteor.absoluteUrl(Utils.stripLeadingSlash(user.profile.avatarUrl)); + user.profile.avatarUrl = FlowRouter.url(user.profile.avatarUrl); } return user; }); diff --git a/server/lib/utils.js b/server/lib/utils.js index a6a84f90..b59671fb 100644 --- a/server/lib/utils.js +++ b/server/lib/utils.js @@ -5,24 +5,3 @@ allowIsBoardAdmin = function(userId, board) { allowIsBoardMember = function(userId, board) { return board && board.hasMember(userId); }; - -// todo XXX not really server-specific, -// so move it to a common (client+server) lib? -Utils = { - /** - * If text starts with a / will remove it. - * @param text - */ - stripLeadingSlash(text) { - // we need an actual text string - if (!text) { - return text; - } - // if starting with slash - if (text[0] === '/') { - return text.slice(1); - } - // otherwise leave untouched - return text; - }, -}; |