Vulcan/packages/telescope-notifications/lib/herald.js

122 lines
2.9 KiB
JavaScript
Raw Normal View History

2014-10-07 13:45:48 +09:00
Meteor.startup(function () {
Herald.collection.deny({
update: ! can.editById,
remove: ! can.editById
});
2014-10-07 13:45:48 +09:00
// disable all email notifications when "emailNotifications" is set to false
if (getSetting('emailNotifications', true)) {
Herald.settings.overrides.email = false;
} else {
Herald.settings.overrides.email = true;
};
});
2014-10-02 16:42:31 -04:00
var commentEmail = function (userToNotify) {
var notification = this;
// put in setTimeout so it doesn't hold up the rest of the method
Meteor.setTimeout(function () {
notificationEmail = buildEmailNotification(notification);
sendEmail(getEmail(userToNotify), notificationEmail.subject, notificationEmail.html);
}, 1);
}
var getCommenterProfileUrl = function (comment) {
var user = Meteor.users.findOne(comment.userId);
if(user) {
return getProfileUrl(user);
} else {
return getProfileUrlById(comment.userId)
}
}
var getAuthor = function (comment) {
var user = Meteor.users.findOne(comment.userId);
if(user) {
return getUserName(user);
} else {
return comment.author;
}
}
2014-10-02 16:42:31 -04:00
Herald.addCourier('newPost', {
media: {
email: {
emailRunner: function (user) {
var p = getPostProperties(this.data);
var subject = p.postAuthorName+' has created a new post: '+p.postTitle;
var html = buildEmailTemplate(getEmailTemplate('emailNewPost')(p));
sendEmail(getEmail(user), subject, html);
}
}
}
// message: function (user) { return 'email template?' }
});
Herald.addCourier('newComment', {
media: {
onsite: {},
email: {
emailRunner: commentEmail
}
},
message: {
default: function (user) {
return Blaze.toHTML(Blaze.With(this, function(){
return Template[getTemplate('notificationNewComment')]
}));
}
},
transform: {
profileUrl: function () {
return getCommenterProfileUrl(this.data.comment);
2014-10-02 16:42:31 -04:00
},
postCommentUrl: function () {
return '/posts/'+ this.data.post._id;
},
author: function () {
return getAuthor(this.data.comment);
2014-10-02 16:42:31 -04:00
},
postTitle: function () {
return this.data.post.title;
},
url: function () {
return /comments/ + this.comment._id;
}
}
});
Herald.addCourier('newReply', {
media: {
onsite: {},
email: {
emailRunner: commentEmail
}
},
message: {
default: function (user) {
return Blaze.toHTML(Blaze.With(this, function(){
return Template[getTemplate('notificationNewReply')]
}));
}
},
transform: {
profileUrl: function () {
return getCommenterProfileUrl(this.data.comment);
2014-10-02 16:42:31 -04:00
},
postCommentUrl: function () {
return '/posts/'+ this.data.post._id;
},
author: function () {
return getAuthor(this.data.comment);
2014-10-02 16:42:31 -04:00
},
postTitle: function () {
return this.data.post.title;
},
url: function () {
return /comments/ + this.parentComment._id;
}
}
});