Skip to content

Commit

Permalink
Describe file uploads when notifying by email
Browse files Browse the repository at this point in the history
Closes #7976
  • Loading branch information
sampaiodiego committed Nov 22, 2017
1 parent b4f04c7 commit 5135a84
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 10 deletions.
4 changes: 4 additions & 0 deletions packages/rocketchat-i18n/i18n/en.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1930,6 +1930,10 @@
"Username_is_already_in_here": "`@%s` is already in here.",
"Username_is_not_in_this_room": "The user `#%s` is not in this room.",
"Username_Placeholder": "Please enter usernames...",
"User_sent_a_message_on_channel": "<strong>__username__</strong> sent a message on <strong>__channel__</strong>:",
"User_uploaded_a_file_on_channel": "<strong>__username__</strong> uploaded a file on <strong>__channel__</strong>:",
"User_sent_a_message_to_you": "<strong>__username__</strong> sent you a message:",
"User_uploaded_a_file_to_you": "<strong>__username__</strong> sent you a file:",
"Username_title": "Register username",
"Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ wants to start OTR. Do you want to accept?",
"Users": "Users",
Expand Down
4 changes: 4 additions & 0 deletions packages/rocketchat-i18n/i18n/pt.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1246,6 +1246,10 @@
"User_removed": "Usuário removido",
"User_removed_by": "Usuário <em>__user_removed__</em> removido da conversa por <em>__user_by__</em>.",
"User_Settings": "Configurações do Usuário",
"User_sent_a_message_on_channel": "<strong>__username__</strong> enviou uma mensagem em <strong>__channel__</strong>:",
"User_uploaded_a_file_on_channel": "<strong>__username__</strong> enviou um arquivo em <strong>__channel__</strong>:",
"User_sent_a_message_to_you": "<strong>__username__</strong> enviou uma mensagem para você:",
"User_uploaded_a_file_to_you": "<strong>__username__</strong> enviou um arquivo para você:",
"User_unmuted_by": "<em>__user_by__</em> permitiu que <em>__user_unmuted__</em> fale na sala.",
"User_unmuted_in_room": "Usuário pode falar na sala",
"User_updated_successfully": "Usuário atualizado com sucesso",
Expand Down
79 changes: 70 additions & 9 deletions packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,57 @@
import moment from 'moment';
import s from 'underscore.string';

function getEmailContent({ messageContent, message, user, room }) {
const lng = user && user.language || RocketChat.settings.get('language') || 'en';

const roomName = `#${ RocketChat.settings.get('UI_Allow_room_names_with_special_chars') ? room.fname || room.name : room.name }`;

const userName = RocketChat.settings.get('UI_Use_Real_Name') ? message.u.name || message.u.username : message.u.username;

const header = TAPi18n.__(room.t === 'd' ? 'User_sent_a_message_to_you' : 'User_sent_a_message_on_channel', {
username: userName,
channel: roomName,
lng
});

if (messageContent) {
return `${ header }<br/><br/>${ messageContent }`;
}

if (message.file) {
const fileHeader = TAPi18n.__(room.t === 'd' ? 'User_uploaded_a_file_to_you' : 'User_uploaded_a_file_on_channel', {
username: userName,
channel: roomName,
lng
});

let content = `${ TAPi18n.__('Attachment_File_Uploaded') }: ${ message.file.name }`;

if (message.attachments && message.attachments.length === 1 && message.attachments[0].description !== '') {
content += `<br/><br/>${ message.attachments[0].description }`;
}

return `${ fileHeader }<br/><br/>${ content }`;
}

if (message.attachments.length > 0) {
const [ attachment ] = message.attachments;

let content = '';

if (attachment.title) {
content += `${ attachment.title }<br/>`;
}
if (attachment.text) {
content += `${ attachment.text }<br/>`;
}

return `${ header }<br/><br/>${ content }`;
}

return header;
}

RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
// skips this callback if the message was edited
if (message.editedAt) {
Expand All @@ -26,19 +77,23 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
};

const divisorMessage = '<hr style="margin: 20px auto; border: none; border-bottom: 1px solid #dddddd;">';
let messageHTML = s.escapeHTML(message.msg);

message = RocketChat.callbacks.run('renderMessage', message);
if (message.tokens && message.tokens.length > 0) {
message.tokens.forEach((token) => {
token.text = token.text.replace(/([^\$])(\$[^\$])/gm, '$1$$$2');
messageHTML = messageHTML.replace(token.token, token.text);
});
let messageHTML;

if (message.msg !== '') {
messageHTML = s.escapeHTML(message.msg);
message = RocketChat.callbacks.run('renderMessage', message);
if (message.tokens && message.tokens.length > 0) {
message.tokens.forEach((token) => {
token.text = token.text.replace(/([^\$])(\$[^\$])/gm, '$1$$$2');
messageHTML = messageHTML.replace(token.token, token.text);
});
}
messageHTML = messageHTML.replace(/\n/gm, '<br/>');
}

const header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || '');
let footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
messageHTML = messageHTML.replace(/\n/gm, '<br/>');

const usersToSendEmail = {};
if (room.t === 'd') {
Expand Down Expand Up @@ -166,11 +221,17 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
}
user.emails.some((email) => {
if (email.verified) {
const content = getEmailContent({
messageContent: messageHTML,
message,
user,
room
});
email = {
to: email.address,
from: RocketChat.settings.get('From_Email'),
subject: emailSubject,
html: header + messageHTML + divisorMessage + (linkByUser[user._id] || defaultLink) + footer
html: header + content + divisorMessage + (linkByUser[user._id] || defaultLink) + footer
};
// If direct reply enabled, email content with headers
if (RocketChat.settings.get('Direct_Reply_Enable')) {
Expand Down
12 changes: 11 additions & 1 deletion packages/rocketchat-lib/server/models/Users.js
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,17 @@ Find users to send a message by email if:
'emails.verified': true
};

return this.find(query, { fields: { name: 1, username: 1, emails: 1, 'settings.preferences.emailNotificationMode': 1 } });
const options = {
fields: {
name: 1,
username: 1,
emails: 1,
'settings.preferences.emailNotificationMode': 1,
language: 1
}
};

return this.find(query, options);
}
}

Expand Down

0 comments on commit 5135a84

Please sign in to comment.