diff options
-rw-r--r-- | client/components/activities/activities.js | 4 | ||||
-rw-r--r-- | client/components/users/userHeader.jade | 17 | ||||
-rw-r--r-- | client/components/users/userHeader.js | 13 | ||||
-rwxr-xr-x | i18n/en.i18n.json | 3 | ||||
-rw-r--r-- | models/users.js | 21 | ||||
-rw-r--r-- | server/publications/activities.js | 8 |
6 files changed, 57 insertions, 9 deletions
diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 0bd6a272..6600849c 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -12,10 +12,12 @@ BlazeComponent.extendComponent({ const capitalizedMode = Utils.capitalize(mode); const id = Session.get(`current${capitalizedMode}`); const limit = this.page.get() * activitiesPerPage; + const user = Meteor.user(); + const hideSystem = user ? user.hasHiddenSystemMessages() : false; if (id === null) return; - this.subscribe('activities', mode, id, limit, () => { + this.subscribe('activities', mode, id, limit, hideSystem, () => { this.loadNextPageLocked = false; // If the sibear peak hasn't increased, that mean that there are no more diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade index ce8cf1af..f7f6222a 100644 --- a/client/components/users/userHeader.jade +++ b/client/components/users/userHeader.jade @@ -12,10 +12,11 @@ template(name="memberMenuPopup") ul.pop-over-list with currentUser li: a.js-edit-profile {{_ 'edit-profile'}} - li: a.js-change-avatar {{_ 'edit-avatar'}} - li: a.js-change-password {{_ 'changePasswordPopup-title'}} - li: a.js-change-language {{_ 'changeLanguagePopup-title'}} - li: a.js-edit-notification {{_ 'editNotificationPopup-title'}} + li: a.js-change-settings {{_ 'change-settings'}} + li: a.js-change-avatar {{_ 'edit-avatar'}} + li: a.js-change-password {{_ 'changePasswordPopup-title'}} + li: a.js-change-language {{_ 'changeLanguagePopup-title'}} + li: a.js-edit-notification {{_ 'editNotificationPopup-title'}} hr ul.pop-over-list li: a.js-logout {{_ 'log-out'}} @@ -63,3 +64,11 @@ template(name="changeLanguagePopup") = name if isCurrentLanguage i.fa.fa-check + +template(name="changeSettingsPopup") + ul.pop-over-list + li + a.js-toggle-system-messages + | {{_ 'hide-system-messages'}} + if hiddenSystemMessages + i.fa.fa-check diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 17d9eb5f..1c390395 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -5,6 +5,7 @@ Template.headerUserBar.events({ Template.memberMenuPopup.events({ 'click .js-edit-profile': Popup.open('editProfile'), + 'click .js-change-settings': Popup.open('changeSettings'), 'click .js-change-avatar': Popup.open('changeAvatar'), 'click .js-change-password': Popup.open('changePassword'), 'click .js-change-language': Popup.open('changeLanguage'), @@ -89,3 +90,15 @@ Template.changeLanguagePopup.events({ evt.preventDefault(); }, }); + +Template.changeSettingsPopup.helpers({ + hiddenSystemMessages() { + return Meteor.user().hasHiddenSystemMessages(); + }, +}); + +Template.changeSettingsPopup.events({ + 'click .js-toggle-system-messages'() { + Meteor.call('toggleSystemMessages'); + }, +}); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 54e6b394..6e2098c4 100755 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -104,10 +104,12 @@ "change-avatar": "Change Avatar", "change-password": "Change Password", "change-permissions": "Change permissions", + "change-settings": "Change Settings", "changeAvatarPopup-title": "Change Avatar", "changeLanguagePopup-title": "Change Language", "changePasswordPopup-title": "Change Password", "changePermissionsPopup-title": "Change Permissions", + "changeSettingsPopup-title": "Change Settings", "click-to-star": "Click to star this board.", "click-to-unstar": "Click to unstar this board.", "clipboard" : "Clipboard or drag & drop", @@ -181,6 +183,7 @@ "filter-to-selection": "Filter to selection", "fullname": "Full Name", "header-logo-title": "Go back to your boards page.", + "hide-system-messages": "Hide system messages", "home": "Home", "import": "Import", "import-board": "import from Trello", diff --git a/models/users.js b/models/users.js index bdc5ddfe..a65a2566 100644 --- a/models/users.js +++ b/models/users.js @@ -59,6 +59,10 @@ Users.attachSchema(new SimpleSchema({ type: String, optional: true, }, + 'profile.hiddenSystemMessages': { + type: Boolean, + optional: true, + }, 'profile.initials': { type: String, optional: true, @@ -151,6 +155,11 @@ Users.helpers({ return _.contains(notifications, activityId); }, + hasHiddenSystemMessages() { + const profile = this.profile || {}; + return profile.hiddenSystemMessages || false; + }, + getEmailBuffer() { const {emailBuffer = []} = this.profile; return emailBuffer; @@ -231,6 +240,14 @@ Users.mutations({ this.addTag(tag); }, + toggleSystem(value = false) { + return { + $set: { + 'profile.hiddenSystemMessages': !value, + }, + }; + }, + addNotification(activityId) { return { $addToSet: { @@ -278,6 +295,10 @@ Meteor.methods({ Users.update(this.userId, {$set: { username }}); } }, + toggleSystemMessages() { + const user = Meteor.user(); + user.toggleSystem(user.hasHiddenSystemMessages()); + }, }); if (Meteor.isServer) { diff --git a/server/publications/activities.js b/server/publications/activities.js index 38c61ebf..14459bf8 100644 --- a/server/publications/activities.js +++ b/server/publications/activities.js @@ -3,16 +3,16 @@ // 2. The card activity tab // We use this publication to paginate for these two publications. -Meteor.publish('activities', (kind, id, limit) => { +Meteor.publish('activities', (kind, id, limit, hideSystem) => { check(kind, Match.Where((x) => { return ['board', 'card'].indexOf(x) !== -1; })); check(id, String); check(limit, Number); + check(hideSystem, Boolean); - return Activities.find({ - [`${kind}Id`]: id, - }, { + const selector = (hideSystem) ? {$and: [{activityType: 'addComment'}, {[`${kind}Id`]: id}]} : {[`${kind}Id`]: id}; + return Activities.find(selector, { limit, sort: {createdAt: -1}, }); |