From 1ef1fb2cfe36f6ea4c772b05e047bfd8fe9a7f28 Mon Sep 17 00:00:00 2001 From: mira-t Date: Wed, 21 Mar 2018 11:26:27 +1300 Subject: [PATCH] Toggle user caller id strategy (#48) * Allow toggle via config between two caller id selection methods This only affects caller ID for users. If monster.config.whitelabel.allowAnyOwnedNumberAsCallerID is falsy, the old way of assigning caller ID will be activated i.e. users can only have their caller ID set to numbers assigned to them, otherwise the main number is used. If monster.config.whitelabel.allowAnyOwnedNumberAsCallerID is truthy, the user can also have any number owned by the account used as their caller ID. * Add automatic eslint fixes * Eslint fix: make mixed user of && and || tidier --- i18n/en-US.json | 2 ++ submodules/users/users.js | 36 +++++++++++++++++++++++++----- views/users-feature-caller_id.html | 16 ++++++++++--- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/i18n/en-US.json b/i18n/en-US.json index 0dd627f..09cf394 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -671,6 +671,8 @@ "caller_id": { "title": "Caller-ID Number", "dropdownLabel": "Show my Caller-Id Number as", + "currentCallerIdLabel": "Current Caller-ID: ", + "none": "None", "headline": "User Caller-ID Number Settings", "help": "If you don't enable this feature, the Caller-ID displayed by default will be the one configured on the Main Number of this account." }, diff --git a/submodules/users/users.js b/submodules/users/users.js index 37c5321..945886c 100644 --- a/submodules/users/users.js +++ b/submodules/users/users.js @@ -1369,7 +1369,24 @@ define(function(require) { }); template.on('click', '.feature[data-feature="caller_id"]', function() { - self.usersRenderCallerId(currentUser); + if (monster.config.whitelabel && monster.config.whitelabel.allowAnyOwnedNumberAsCallerID) { + self.usersListNumbers(function(accountNumbers) { + var numberChoices = accountNumbers.numbers, + phoneNumber; + for (phoneNumber in numberChoices) { + numberChoices[monster.util.formatPhoneNumber(phoneNumber)] = $.extend(true, {}, numberChoices[phoneNumber]); + if (phoneNumber !== monster.util.formatPhoneNumber(phoneNumber)) { + delete numberChoices[phoneNumber]; + } + } + if (currentUser.caller_id && currentUser.caller_id.external && currentUser.caller_id.external.number) { + currentUser.caller_id.external.number = monster.util.formatPhoneNumber(currentUser.caller_id.external.number); + } + self.usersRenderCallerId(currentUser, numberChoices); + }); + } else { + self.usersRenderCallerId(currentUser); + } }); template.on('click', '.feature[data-feature="call_forward"]', function() { @@ -1999,10 +2016,19 @@ define(function(require) { }); }, - usersRenderCallerId: function(currentUser) { + usersRenderCallerId: function(currentUser, numberChoices) { var self = this, - featureTemplate = $(monster.template(self, 'users-feature-caller_id', currentUser)), - switchFeature = featureTemplate.find('.switch-state'); + allowAnyOwnedNumberAsCallerID = monster.config.whitelabel && monster.config.whitelabel.allowAnyOwnedNumberAsCallerID ? true : false, + templateUser = $.extend(true, {allowAnyOwnedNumberAsCallerID: allowAnyOwnedNumberAsCallerID}, currentUser), + featureTemplate, + switchFeature; + + if (numberChoices && monster.config.whitelabel && monster.config.whitelabel.allowAnyOwnedNumberAsCallerID) { + templateUser.caller_id.numberChoices = numberChoices; + } + + featureTemplate = $(monster.template(self, 'users-feature-caller_id', templateUser)); + switchFeature = featureTemplate.find('.switch-state'); featureTemplate.find('.cancel-link').on('click', function() { popup.dialog('close').remove(); @@ -2041,7 +2067,7 @@ define(function(require) { }); }); - if (currentUser.extra.listCallerId.length > 0) { + if (currentUser.extra.listCallerId.length > 0 || (monster.config.whitelabel && monster.config.whitelabel.allowAnyOwnedNumberAsCallerID)) { var popup = monster.ui.dialog(featureTemplate, { title: currentUser.extra.mapFeatures.caller_id.title, position: ['center', 20] diff --git a/views/users-feature-caller_id.html b/views/users-feature-caller_id.html index fe7fe97..a8369c7 100644 --- a/views/users-feature-caller_id.html +++ b/views/users-feature-caller_id.html @@ -11,11 +11,21 @@
+ {{#if allowAnyOwnedNumberAsCallerID }} + {{ i18n.users.caller_id.currentCallerIdLabel }} + {{#if caller_id.external.number }}{{ caller_id.external.number }}{{else}}{{i18n.users.caller_id.none}}{{/if}}
+ {{/if}} {{ i18n.users.caller_id.dropdownLabel }} {{#monsterText}}