summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2020-06-16 18:03:20 +0300
committerLauri Ojansivu <x@xet7.org>2020-06-16 18:03:20 +0300
commitb1d1c7c45a08674732fe28edaf53aba9d8bd50b4 (patch)
tree31b7129c96844ea493a38a0d9911f81382516a24
parente4de42d487b8d965276fdb7ce770cf58d562e766 (diff)
parent2353f654deae2aa747a45ce4bf16a5ca91c55e34 (diff)
downloadwekan-b1d1c7c45a08674732fe28edaf53aba9d8bd50b4.tar.gz
wekan-b1d1c7c45a08674732fe28edaf53aba9d8bd50b4.tar.bz2
wekan-b1d1c7c45a08674732fe28edaf53aba9d8bd50b4.zip
Merge branch 'NicoP-S-master'
-rw-r--r--client/components/cards/cardDetails.jade10
-rw-r--r--client/components/cards/cardDetails.js22
-rw-r--r--client/components/cards/minicard.jade4
-rw-r--r--client/components/cards/minicard.styl5
-rw-r--r--models/cards.js37
5 files changed, 55 insertions, 23 deletions
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index 2aa77627..dda95e3e 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -220,8 +220,14 @@ template(name="cardDetails")
+viewer
= getVoteQuestion
if showVotingButtons
- button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") {{_ 'vote-for-it'}}
- button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") {{_ 'vote-against'}}
+ button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}")
+ if voteState
+ i.fa.fa-thumbs-up
+ {{_ 'vote-for-it'}}
+ button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}")
+ if $eq voteState false
+ i.fa.fa-thumbs-down
+ {{_ 'vote-against'}}
//- XXX We should use "editable" to avoid repetiting ourselves
if canModifyCard
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index 11e010d4..a91d9b6e 100644
--- a/client/components/cards/cardDetails.js
+++ b/client/components/cards/cardDetails.js
@@ -38,22 +38,6 @@ BlazeComponent.extendComponent({
Meteor.subscribe('unsaved-edits');
},
- voteState() {
- const card = this.currentData();
- const userId = Meteor.userId();
- let state;
- if (card.vote) {
- if (card.vote.positive) {
- state = _.contains(card.vote.positive, userId);
- if (state === true) return true;
- }
- if (card.vote.negative) {
- state = _.contains(card.vote.negative, userId);
- if (state === true) return false;
- }
- }
- return null;
- },
isWatching() {
const card = this.currentData();
return card.findWatcher(Meteor.userId());
@@ -412,9 +396,9 @@ BlazeComponent.extendComponent({
const forIt = $(e.target).hasClass('js-vote-positive');
let newState = null;
if (
- this.voteState() === null ||
- (this.voteState() === false && forIt) ||
- (this.voteState() === true && !forIt)
+ this.data().voteState() === null ||
+ (this.data().voteState() === false && forIt) ||
+ (this.data().voteState() === true && !forIt)
) {
newState = forIt;
}
diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade
index 8afe1976..03511e0a 100644
--- a/client/components/cards/minicard.jade
+++ b/client/components/cards/minicard.jade
@@ -106,9 +106,9 @@ template(name="minicard")
span.badge-icon.fa.fa-align-left
if getVoteQuestion
.badge.badge-state-image-only(title=getVoteQuestion)
- span.badge-icon.fa.fa-thumbs-up
+ span.badge-icon.fa.fa-thumbs-up(class="{{#if voteState}}text-green{{/if}}")
span.badge-text {{ voteCountPositive }}
- span.badge-icon.fa.fa-thumbs-down
+ span.badge-icon.fa.fa-thumbs-down(class="{{#if $eq voteState false}}text-red{{/if}}")
span.badge-text {{ voteCountNegative }}
if attachments.count
.badge
diff --git a/client/components/cards/minicard.styl b/client/components/cards/minicard.styl
index 7d72a588..03d242ac 100644
--- a/client/components/cards/minicard.styl
+++ b/client/components/cards/minicard.styl
@@ -299,3 +299,8 @@ minicard-color(background, color...)
.minicard-indigo
minicard-color(#4b0082, #ffffff) //White text for better visibility
+
+.text-red
+ color:red
+.text-green
+ color:green
diff --git a/models/cards.js b/models/cards.js
index 2e297d63..1ccc836a 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -1112,6 +1112,21 @@ Cards.helpers({
return Users.find({ _id: { $in: this.vote.negative } });
return [];
},
+ voteState() {
+ const userId = Meteor.userId();
+ let state;
+ if (this.vote) {
+ if (this.vote.positive) {
+ state = _.contains(this.vote.positive, userId);
+ if (state === true) return true;
+ }
+ if (this.vote.negative) {
+ state = _.contains(this.vote.negative, userId);
+ if (state === true) return false;
+ }
+ }
+ return null;
+ },
getId() {
if (this.isLinked()) {
@@ -2374,6 +2389,10 @@ if (Meteor.isServer) {
* @param {boolean} [isOverTime] the new isOverTime field of the card
* @param {string} [customFields] the new customFields value of the card
* @param {string} [color] the new color of the card
+ * @param {Object} [vote] the vote object
+ * @param {string} vote.question the vote question
+ * @param {boolean} vote.public show who voted what
+ * @param {boolean} vote.allowNonBoardMembers allow all logged in users to vote?
* @return_type {_id: string}
*/
JsonRoutes.add(
@@ -2473,6 +2492,24 @@ if (Meteor.isServer) {
{ $set: { color: newColor } },
);
}
+ if (req.body.hasOwnProperty('vote')) {
+ const newVote = req.body.vote;
+ newVote.positive = [];
+ newVote.negative = [];
+ if (!newVote.hasOwnProperty('public')) newVote.public = false;
+ if (!newVote.hasOwnProperty('allowNonBoardMembers'))
+ newVote.allowNonBoardMembers = false;
+
+ Cards.direct.update(
+ {
+ _id: paramCardId,
+ listId: paramListId,
+ boardId: paramBoardId,
+ archived: false,
+ },
+ { $set: { vote: newVote } },
+ );
+ }
if (req.body.hasOwnProperty('labelIds')) {
let newlabelIds = req.body.labelIds;
if (_.isString(newlabelIds)) {