From 4eaaa9e2eee777286afe0adb039c5fcb595a8a98 Mon Sep 17 00:00:00 2001 From: "sarbakaninc\\sbegin" Date: Thu, 14 Sep 2017 10:54:07 -0400 Subject: [PATCH 1/7] first draft. Setting works, translation in progress --- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + packages/rocketchat-i18n/i18n/fr.i18n.json | 1 + packages/rocketchat-livechat/app/client/views/livechatWindow.js | 1 + packages/rocketchat-livechat/app/client/views/messages.js | 2 +- packages/rocketchat-livechat/config.js | 1 + packages/rocketchat-livechat/server/lib/Livechat.js | 1 + packages/rocketchat-livechat/server/methods/getInitialData.js | 2 ++ 7 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 9413c0c42a0e..f246e8fe12bb 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1625,6 +1625,7 @@ "Shared_Location": "Shared Location", "Should_be_a_URL_of_an_image": "Should be a URL of an image.", "Should_exists_a_user_with_this_username": "The user must already exist.", + "Show_agent_email": "Show agent email", "Show_all": "Show all", "Show_more": "Show more", "show_offline_users": "show offline users", diff --git a/packages/rocketchat-i18n/i18n/fr.i18n.json b/packages/rocketchat-i18n/i18n/fr.i18n.json index 6822866138a6..e1c022e2bc6f 100644 --- a/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -1253,6 +1253,7 @@ "Shared_Location": "Position partagée", "Should_be_a_URL_of_an_image": "Doit être l'URL d'une image.", "Should_exists_a_user_with_this_username": "L'utilisateur doit déjà exister.", + "Show_agent_email": "Afficher le email de l'agent", "Show_all": "Afficher tout", "Show_more": "Afficher plus", "show_offline_users": "montrer les utilisateur hors-ligne", diff --git a/packages/rocketchat-livechat/app/client/views/livechatWindow.js b/packages/rocketchat-livechat/app/client/views/livechatWindow.js index fcbe88f9587d..a05e85931901 100644 --- a/packages/rocketchat-livechat/app/client/views/livechatWindow.js +++ b/packages/rocketchat-livechat/app/client/views/livechatWindow.js @@ -108,6 +108,7 @@ Template.livechatWindow.onCreated(function() { Livechat.online = true; Livechat.transcript = result.transcript; Livechat.transcriptMessage = result.transcriptMessage; + Livechat.showAgentEmail = result.showAgentEmail; } Livechat.videoCall = result.videoCall; Livechat.registrationForm = result.registrationForm; diff --git a/packages/rocketchat-livechat/app/client/views/messages.js b/packages/rocketchat-livechat/app/client/views/messages.js index 9c0fe36b43e9..ded1236fae5d 100644 --- a/packages/rocketchat-livechat/app/client/views/messages.js +++ b/packages/rocketchat-livechat/app/client/views/messages.js @@ -73,7 +73,7 @@ Template.messages.helpers({ agentData.name = agent.name; } - if (agent.emails && agent.emails[0] && agent.emails[0].address) { + if (Livechat.showAgentEmail && agent.emails && agent.emails[0] && agent.emails[0].address) { agentData.email = agent.emails[0].address; } diff --git a/packages/rocketchat-livechat/config.js b/packages/rocketchat-livechat/config.js index 014dfef94013..01209c3448f3 100644 --- a/packages/rocketchat-livechat/config.js +++ b/packages/rocketchat-livechat/config.js @@ -68,6 +68,7 @@ Meteor.startup(function() { RocketChat.settings.add('Livechat_registration_form', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_preregistration_form' }); RocketChat.settings.add('Livechat_allow_switching_departments', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Allow_switching_departments' }); + RocketChat.settings.add('Livechat_show_agent_email', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_agent_email' }); RocketChat.settings.add('Livechat_guest_count', 1, { type: 'int', group: 'Livechat' }); RocketChat.settings.add('Livechat_Room_Count', 1, { diff --git a/packages/rocketchat-livechat/server/lib/Livechat.js b/packages/rocketchat-livechat/server/lib/Livechat.js index 42a1d5c1400a..5fafac859e42 100644 --- a/packages/rocketchat-livechat/server/lib/Livechat.js +++ b/packages/rocketchat-livechat/server/lib/Livechat.js @@ -235,6 +235,7 @@ RocketChat.Livechat = { 'Livechat_title', 'Livechat_title_color', 'Livechat_enabled', + 'Livechat_show_agent_email', 'Livechat_registration_form', 'Livechat_allow_switching_departments', 'Livechat_offline_title', diff --git a/packages/rocketchat-livechat/server/methods/getInitialData.js b/packages/rocketchat-livechat/server/methods/getInitialData.js index 9054de51728e..69d1015dd7f9 100644 --- a/packages/rocketchat-livechat/server/methods/getInitialData.js +++ b/packages/rocketchat-livechat/server/methods/getInitialData.js @@ -15,6 +15,7 @@ Meteor.methods({ offlineSuccessMessage: null, offlineUnavailableMessage: null, displayOfflineForm: null, + showAgentEmail: null, videoCall: null }; @@ -40,6 +41,7 @@ Meteor.methods({ info.color = initSettings.Livechat_title_color; info.enabled = initSettings.Livechat_enabled; info.registrationForm = initSettings.Livechat_registration_form; + info.showAgentEmail = initSettings.Livechat_show_agent_email; info.offlineTitle = initSettings.Livechat_offline_title; info.offlineColor = initSettings.Livechat_offline_title_color; info.offlineMessage = initSettings.Livechat_offline_message; From 7460a5b4c4a08a81d643ba060f45b6b5a4ec7013 Mon Sep 17 00:00:00 2001 From: "sarbakaninc\\sbegin" Date: Thu, 14 Sep 2017 14:57:00 -0400 Subject: [PATCH 2/7] indentation fix --- packages/rocketchat-livechat/server/methods/getInitialData.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-livechat/server/methods/getInitialData.js b/packages/rocketchat-livechat/server/methods/getInitialData.js index 69d1015dd7f9..ba32b6f37fba 100644 --- a/packages/rocketchat-livechat/server/methods/getInitialData.js +++ b/packages/rocketchat-livechat/server/methods/getInitialData.js @@ -15,7 +15,7 @@ Meteor.methods({ offlineSuccessMessage: null, offlineUnavailableMessage: null, displayOfflineForm: null, - showAgentEmail: null, + showAgentEmail: null, videoCall: null }; @@ -41,7 +41,7 @@ Meteor.methods({ info.color = initSettings.Livechat_title_color; info.enabled = initSettings.Livechat_enabled; info.registrationForm = initSettings.Livechat_registration_form; - info.showAgentEmail = initSettings.Livechat_show_agent_email; + info.showAgentEmail = initSettings.Livechat_show_agent_email; info.offlineTitle = initSettings.Livechat_offline_title; info.offlineColor = initSettings.Livechat_offline_title_color; info.offlineMessage = initSettings.Livechat_offline_message; From 90e7652d547abb56b6c26597a7af6a05f7210ca0 Mon Sep 17 00:00:00 2001 From: icosamuel Date: Mon, 2 Oct 2017 15:27:42 -0400 Subject: [PATCH 3/7] explicitly added the showAgentEmail value to LiveChat obj --- packages/rocketchat-livechat/app/client/lib/_livechat.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/rocketchat-livechat/app/client/lib/_livechat.js b/packages/rocketchat-livechat/app/client/lib/_livechat.js index eb94f7b84974..32221f3150b5 100644 --- a/packages/rocketchat-livechat/app/client/lib/_livechat.js +++ b/packages/rocketchat-livechat/app/client/lib/_livechat.js @@ -26,6 +26,7 @@ this.Livechat = new (class Livechat { this._widgetOpened = new ReactiveVar(false); this._ready = new ReactiveVar(false); this._agent = new ReactiveVar(); + this._showAgentEmail = new ReactiveVar(true); this.stream = new Meteor.Streamer('livechat-room'); @@ -107,6 +108,9 @@ this.Livechat = new (class Livechat { get agent() { return this._agent.get(); } + get showAgentEmail() { + return this._showAgentEmail.get(); + } set online(value) { this._online.set(value); @@ -175,6 +179,9 @@ this.Livechat = new (class Livechat { set agent(agentData) { this._agent.set(agentData); } + set showAgentEmail(value) { + this._showAgentEmail.set(value); + } ready() { this._ready.set(true); From b7fb327862c80b6b178bc25511afc965708abf17 Mon Sep 17 00:00:00 2001 From: icosamuel Date: Mon, 2 Oct 2017 16:12:24 -0400 Subject: [PATCH 4/7] Added the possibility of changing the showAgentEmail parameter from the livechat-management window. No longer need to be an admin. --- .../client/views/app/livechatAppearance.html | 9 +++++++ .../client/views/app/livechatAppearance.js | 25 +++++++++++++++++++ .../server/methods/saveAppearance.js | 1 + .../server/publications/livechatAppearance.js | 1 + 4 files changed, 36 insertions(+) diff --git a/packages/rocketchat-livechat/client/views/app/livechatAppearance.html b/packages/rocketchat-livechat/client/views/app/livechatAppearance.html index 5003b79a9604..3a5e1f3e4360 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatAppearance.html +++ b/packages/rocketchat-livechat/client/views/app/livechatAppearance.html @@ -17,6 +17,15 @@

{{_ "Settings"}}

+
+ +
+ + + + +
+
{{_ "Livechat_offline"}} diff --git a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js index 1a5bc68f3f68..08f95582d1e7 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js +++ b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js @@ -25,6 +25,9 @@ Template.livechatAppearance.helpers({ color() { return Template.instance().color.get(); }, + showAgentEmail() { + return Template.instance().showAgentEmail.get(); + }, title() { return Template.instance().title.get(); }, @@ -46,6 +49,16 @@ Template.livechatAppearance.helpers({ sampleOfflineSuccessMessage() { return Template.instance().offlineSuccessMessage.get().replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1
$2'); }, + showAgentEmailFormTrueChecked() { + if (Template.instance().showAgentEmail.get()) { + return 'checked'; + } + }, + showAgentEmailFormFalseChecked() { + if (!Template.instance().showAgentEmail.get()) { + return 'checked'; + } + }, displayOfflineFormTrueChecked() { if (Template.instance().displayOfflineForm.get()) { return 'checked'; @@ -155,6 +168,7 @@ Template.livechatAppearance.onCreated(function() { this.title = new ReactiveVar(null); this.color = new ReactiveVar(null); + this.showAgentEmail = new ReactiveVar(null); this.displayOfflineForm = new ReactiveVar(null); this.offlineUnavailableMessage = new ReactiveVar(null); this.offlineMessage = new ReactiveVar(null); @@ -171,6 +185,10 @@ Template.livechatAppearance.onCreated(function() { const setting = LivechatAppearance.findOne('Livechat_title_color'); this.color.set(setting && setting.value); }); + this.autorun(() => { + const setting = LivechatAppearance.findOne('Livechat_show_agent_email'); + this.showAgentEmail.set(setting && setting.value); + }); this.autorun(() => { const setting = LivechatAppearance.findOne('Livechat_display_offline_form'); this.displayOfflineForm.set(setting && setting.value); @@ -221,6 +239,9 @@ Template.livechatAppearance.events({ const settingTitleColor = LivechatAppearance.findOne('Livechat_title_color'); instance.color.set(settingTitleColor && settingTitleColor.value); + const settingShowAgentEmail = LivechatAppearance.findOne('Livechat_show_agent_email'); + instance.showAgentEmail.set(settingShowAgentEmail && settingShowAgentEmail.value); + const settingDiplayOffline = LivechatAppearance.findOne('Livechat_display_offline_form'); instance.displayOfflineForm.set(settingDiplayOffline && settingDiplayOffline.value); @@ -251,6 +272,10 @@ Template.livechatAppearance.events({ _id: 'Livechat_title_color', value: instance.color.get() }, + { + _id: 'Livechat_show_agent_email', + value: instance.showAgentEmail.get() + }, { _id: 'Livechat_display_offline_form', value: instance.displayOfflineForm.get() diff --git a/packages/rocketchat-livechat/server/methods/saveAppearance.js b/packages/rocketchat-livechat/server/methods/saveAppearance.js index 35031b9714c0..69fc5287f38d 100644 --- a/packages/rocketchat-livechat/server/methods/saveAppearance.js +++ b/packages/rocketchat-livechat/server/methods/saveAppearance.js @@ -7,6 +7,7 @@ Meteor.methods({ const validSettings = [ 'Livechat_title', 'Livechat_title_color', + 'Livechat_show_agent_email', 'Livechat_display_offline_form', 'Livechat_offline_form_unavailable', 'Livechat_offline_message', diff --git a/packages/rocketchat-livechat/server/publications/livechatAppearance.js b/packages/rocketchat-livechat/server/publications/livechatAppearance.js index 1d5a22766dec..abb3aee63b37 100644 --- a/packages/rocketchat-livechat/server/publications/livechatAppearance.js +++ b/packages/rocketchat-livechat/server/publications/livechatAppearance.js @@ -12,6 +12,7 @@ Meteor.publish('livechat:appearance', function() { $in: [ 'Livechat_title', 'Livechat_title_color', + 'Livechat_show_agent_email', 'Livechat_display_offline_form', 'Livechat_offline_form_unavailable', 'Livechat_offline_message', From 9ab051e1e6ff55de77620d03951f6e42f10237e1 Mon Sep 17 00:00:00 2001 From: samuel begin Date: Wed, 25 Oct 2017 16:24:05 -0400 Subject: [PATCH 5/7] Changed to avoid sending the emails to the client when the agents infos are sent --- packages/rocketchat-livechat/app/client/lib/_livechat.js | 7 ------- .../rocketchat-livechat/app/client/views/livechatWindow.js | 1 - packages/rocketchat-livechat/app/client/views/messages.js | 2 +- packages/rocketchat-livechat/server/lib/Livechat.js | 2 +- .../rocketchat-livechat/server/methods/getInitialData.js | 2 -- packages/rocketchat-livechat/server/models/Users.js | 7 +++++-- 6 files changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/rocketchat-livechat/app/client/lib/_livechat.js b/packages/rocketchat-livechat/app/client/lib/_livechat.js index 32221f3150b5..eb94f7b84974 100644 --- a/packages/rocketchat-livechat/app/client/lib/_livechat.js +++ b/packages/rocketchat-livechat/app/client/lib/_livechat.js @@ -26,7 +26,6 @@ this.Livechat = new (class Livechat { this._widgetOpened = new ReactiveVar(false); this._ready = new ReactiveVar(false); this._agent = new ReactiveVar(); - this._showAgentEmail = new ReactiveVar(true); this.stream = new Meteor.Streamer('livechat-room'); @@ -108,9 +107,6 @@ this.Livechat = new (class Livechat { get agent() { return this._agent.get(); } - get showAgentEmail() { - return this._showAgentEmail.get(); - } set online(value) { this._online.set(value); @@ -179,9 +175,6 @@ this.Livechat = new (class Livechat { set agent(agentData) { this._agent.set(agentData); } - set showAgentEmail(value) { - this._showAgentEmail.set(value); - } ready() { this._ready.set(true); diff --git a/packages/rocketchat-livechat/app/client/views/livechatWindow.js b/packages/rocketchat-livechat/app/client/views/livechatWindow.js index a05e85931901..fcbe88f9587d 100644 --- a/packages/rocketchat-livechat/app/client/views/livechatWindow.js +++ b/packages/rocketchat-livechat/app/client/views/livechatWindow.js @@ -108,7 +108,6 @@ Template.livechatWindow.onCreated(function() { Livechat.online = true; Livechat.transcript = result.transcript; Livechat.transcriptMessage = result.transcriptMessage; - Livechat.showAgentEmail = result.showAgentEmail; } Livechat.videoCall = result.videoCall; Livechat.registrationForm = result.registrationForm; diff --git a/packages/rocketchat-livechat/app/client/views/messages.js b/packages/rocketchat-livechat/app/client/views/messages.js index ded1236fae5d..9c0fe36b43e9 100644 --- a/packages/rocketchat-livechat/app/client/views/messages.js +++ b/packages/rocketchat-livechat/app/client/views/messages.js @@ -73,7 +73,7 @@ Template.messages.helpers({ agentData.name = agent.name; } - if (Livechat.showAgentEmail && agent.emails && agent.emails[0] && agent.emails[0].address) { + if (agent.emails && agent.emails[0] && agent.emails[0].address) { agentData.email = agent.emails[0].address; } diff --git a/packages/rocketchat-livechat/server/lib/Livechat.js b/packages/rocketchat-livechat/server/lib/Livechat.js index 5fafac859e42..131d30abf50c 100644 --- a/packages/rocketchat-livechat/server/lib/Livechat.js +++ b/packages/rocketchat-livechat/server/lib/Livechat.js @@ -235,7 +235,6 @@ RocketChat.Livechat = { 'Livechat_title', 'Livechat_title_color', 'Livechat_enabled', - 'Livechat_show_agent_email', 'Livechat_registration_form', 'Livechat_allow_switching_departments', 'Livechat_offline_title', @@ -417,6 +416,7 @@ RocketChat.Livechat = { postData.visitor.phone = visitor.phone[0].phoneNumber; } + // sticitte que ca se passe ? if (agent.emails && agent.emails.length > 0) { postData.agent.email = agent.emails[0].address; } diff --git a/packages/rocketchat-livechat/server/methods/getInitialData.js b/packages/rocketchat-livechat/server/methods/getInitialData.js index ba32b6f37fba..9054de51728e 100644 --- a/packages/rocketchat-livechat/server/methods/getInitialData.js +++ b/packages/rocketchat-livechat/server/methods/getInitialData.js @@ -15,7 +15,6 @@ Meteor.methods({ offlineSuccessMessage: null, offlineUnavailableMessage: null, displayOfflineForm: null, - showAgentEmail: null, videoCall: null }; @@ -41,7 +40,6 @@ Meteor.methods({ info.color = initSettings.Livechat_title_color; info.enabled = initSettings.Livechat_enabled; info.registrationForm = initSettings.Livechat_registration_form; - info.showAgentEmail = initSettings.Livechat_show_agent_email; info.offlineTitle = initSettings.Livechat_offline_title; info.offlineColor = initSettings.Livechat_offline_title_color; info.offlineMessage = initSettings.Livechat_offline_message; diff --git a/packages/rocketchat-livechat/server/models/Users.js b/packages/rocketchat-livechat/server/models/Users.js index 75cd14114d79..c1202ab527ab 100644 --- a/packages/rocketchat-livechat/server/models/Users.js +++ b/packages/rocketchat-livechat/server/models/Users.js @@ -283,15 +283,18 @@ RocketChat.models.Users.getAgentInfo = function(agentId) { const query = { _id: agentId }; - + const options = { fields: { name: 1, username: 1, - emails: 1, customFields: 1 } }; + if(RocketChat.settings.get('Livechat_show_agent_email')){ + options.fields.emails = 1; + } + return this.findOne(query, options); }; From b426ff833f80b9c354367b12ff77321b5ec19614 Mon Sep 17 00:00:00 2001 From: samuel begin Date: Wed, 25 Oct 2017 16:27:27 -0400 Subject: [PATCH 6/7] small cleanup --- packages/rocketchat-livechat/server/lib/Livechat.js | 1 - packages/rocketchat-livechat/server/models/Users.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/rocketchat-livechat/server/lib/Livechat.js b/packages/rocketchat-livechat/server/lib/Livechat.js index 131d30abf50c..42a1d5c1400a 100644 --- a/packages/rocketchat-livechat/server/lib/Livechat.js +++ b/packages/rocketchat-livechat/server/lib/Livechat.js @@ -416,7 +416,6 @@ RocketChat.Livechat = { postData.visitor.phone = visitor.phone[0].phoneNumber; } - // sticitte que ca se passe ? if (agent.emails && agent.emails.length > 0) { postData.agent.email = agent.emails[0].address; } diff --git a/packages/rocketchat-livechat/server/models/Users.js b/packages/rocketchat-livechat/server/models/Users.js index c1202ab527ab..1017084c0f2c 100644 --- a/packages/rocketchat-livechat/server/models/Users.js +++ b/packages/rocketchat-livechat/server/models/Users.js @@ -283,7 +283,7 @@ RocketChat.models.Users.getAgentInfo = function(agentId) { const query = { _id: agentId }; - + const options = { fields: { name: 1, From cc284108ba78d2aba5da49322d15d467502bb8b2 Mon Sep 17 00:00:00 2001 From: samuel begin Date: Wed, 25 Oct 2017 16:35:44 -0400 Subject: [PATCH 7/7] spaces --- packages/rocketchat-livechat/server/models/Users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rocketchat-livechat/server/models/Users.js b/packages/rocketchat-livechat/server/models/Users.js index 1017084c0f2c..f449128c070d 100644 --- a/packages/rocketchat-livechat/server/models/Users.js +++ b/packages/rocketchat-livechat/server/models/Users.js @@ -292,7 +292,7 @@ RocketChat.models.Users.getAgentInfo = function(agentId) { } }; - if(RocketChat.settings.get('Livechat_show_agent_email')){ + if (RocketChat.settings.get('Livechat_show_agent_email')) { options.fields.emails = 1; }