summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/boards/boardHeader.js16
-rw-r--r--client/components/sidebar/sidebar.jade20
-rw-r--r--client/components/sidebar/sidebar.js19
-rw-r--r--models/settings.js8
-rw-r--r--models/trelloCreator.js27
5 files changed, 59 insertions, 31 deletions
diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js
index dc553134..be0146ec 100644
--- a/client/components/boards/boardHeader.js
+++ b/client/components/boards/boardHeader.js
@@ -33,22 +33,6 @@ Template.boardMenuPopup.events({
'click .js-card-settings': Popup.open('boardCardSettings'),
});
-Template.boardMenuPopup.helpers({
- exportUrl() {
- const params = {
- boardId: Session.get('currentBoard'),
- };
- const queryParams = {
- authToken: Accounts._storedLoginToken(),
- };
- return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
- },
- exportFilename() {
- const boardId = Session.get('currentBoard');
- return `wekan-export-board-${boardId}.json`;
- },
-});
-
Template.boardChangeTitlePopup.events({
submit(event, templateInstance) {
const newTitle = templateInstance
diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade
index 901fe99f..6bfedc9c 100644
--- a/client/components/sidebar/sidebar.jade
+++ b/client/components/sidebar/sidebar.jade
@@ -298,10 +298,11 @@ template(name="boardMenuPopup")
if currentUser.isBoardAdmin
hr
ul.pop-over-list
- li
- a(href="{{exportUrl}}", download="{{exportFilename}}")
- i.fa.fa-share-alt
- | {{_ 'export-board'}}
+ if withApi
+ li
+ a(href="{{exportUrl}}", download="{{exportFilename}}")
+ i.fa.fa-share-alt
+ | {{_ 'export-board'}}
li
a.js-outgoing-webhooks
i.fa.fa-globe
@@ -326,11 +327,12 @@ template(name="boardMenuPopup")
if isSandstorm
hr
ul.pop-over-list
- li
- a(href="{{exportUrl}}", download="{{exportFilename}}")
- i.fa.fa-share-alt
- i.fa.fa-sign-out
- | {{_ 'export-board'}}
+ if withApi
+ li
+ a(href="{{exportUrl}}", download="{{exportFilename}}")
+ i.fa.fa-share-alt
+ i.fa.fa-sign-out
+ | {{_ 'export-board'}}
li
a.js-import-board
i.fa.fa-share-alt
diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js
index baf57114..78b47a48 100644
--- a/client/components/sidebar/sidebar.js
+++ b/client/components/sidebar/sidebar.js
@@ -196,14 +196,14 @@ Template.boardMenuPopup.events({
},
'click .js-change-board-color': Popup.open('boardChangeColor'),
'click .js-change-language': Popup.open('changeLanguage'),
- 'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
+ 'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function () {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
currentBoard.archive();
// XXX We should have some kind of notification on top of the page to
// confirm that the board was successfully archived.
FlowRouter.go('home');
}),
- 'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
+ 'click .js-delete-board': Popup.afterConfirm('deleteBoard', function () {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Popup.close();
Boards.remove(currentBoard._id);
@@ -215,7 +215,18 @@ Template.boardMenuPopup.events({
'click .js-card-settings': Popup.open('boardCardSettings'),
});
+
+Template.boardMenuPopup.onCreated(function () {
+ this.apiEnabled = new ReactiveVar(false);
+ Meteor.call('_isApiEnabled', (e, result) => {
+ this.apiEnabled.set(result)
+ })
+})
+
Template.boardMenuPopup.helpers({
+ withApi() {
+ return Template.instance().apiEnabled.get()
+ },
exportUrl() {
const params = {
boardId: Session.get('currentBoard'),
@@ -237,7 +248,7 @@ Template.memberPopup.events({
Popup.close();
},
'click .js-change-role': Popup.open('changePermissions'),
- 'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
+ 'click .js-remove-member': Popup.afterConfirm('removeMember', function () {
const boardId = Session.get('currentBoard');
const memberId = this.userId;
Cards.find({ boardId, members: memberId }).forEach(card => {
@@ -578,7 +589,7 @@ BlazeComponent.extendComponent({
'subtext-with-parent',
'no-parent',
];
- options.forEach(function(element) {
+ options.forEach(function (element) {
if (element !== value) {
$(`#${element} ${MCB}`).toggleClass(CKCLS, false);
$(`#${element}`).toggleClass(CKCLS, false);
diff --git a/models/settings.js b/models/settings.js
index 63bcd7f3..0d671aa4 100644
--- a/models/settings.js
+++ b/models/settings.js
@@ -198,6 +198,10 @@ if (Meteor.isServer) {
return process.env.CAS_ENABLED === 'true';
}
+ function isApiEnabled() {
+ return process.env.WITH_API === 'true';
+ }
+
Meteor.methods({
sendInvitation(emails, boards) {
check(emails, [String]);
@@ -314,6 +318,10 @@ if (Meteor.isServer) {
return isCasEnabled();
},
+ _isApiEnabled() {
+ return isApiEnabled();
+ },
+
// Gets all connection methods to use it in the Template
getAuthenticationsEnabled() {
return {
diff --git a/models/trelloCreator.js b/models/trelloCreator.js
index cb1a6a67..48dce7eb 100644
--- a/models/trelloCreator.js
+++ b/models/trelloCreator.js
@@ -1,4 +1,4 @@
-const DateString = Match.Where(function(dateAsString) {
+const DateString = Match.Where(function (dateAsString) {
check(dateAsString, String);
return moment(dateAsString, moment.ISO_8601).isValid();
});
@@ -285,6 +285,29 @@ export class TrelloCreator {
cardToCreate.members = wekanMembers;
}
}
+ // add vote
+ if (card.idMembersVoted) {
+ // Trello only know's positive votes
+ const positiveVotes = [];
+ card.idMembersVoted.forEach(trelloId => {
+ if (this.members[trelloId]) {
+ const wekanId = this.members[trelloId];
+ // we may map multiple Trello members to the same wekan user
+ // in which case we risk adding the same user multiple times
+ if (!positiveVotes.find(wId => wId === wekanId)) {
+ positiveVotes.push(wekanId);
+ }
+ }
+ return true;
+ })
+ if (positiveVotes.length > 0) {
+ cardToCreate.vote = {
+ question: cardToCreate.title,
+ positive: positiveVotes,
+ }
+ }
+ }
+
// insert card
const cardId = Cards.direct.insert(cardToCreate);
// keep track of Trello id => Wekan id
@@ -345,7 +368,7 @@ export class TrelloCreator {
// so we make it server only, and let UI catch up once it is done, forget about latency comp.
const self = this;
if (Meteor.isServer) {
- file.attachData(att.url, function(error) {
+ file.attachData(att.url, function (error) {
file.boardId = boardId;
file.cardId = cardId;
file.userId = self._user(att.idMemberCreator);