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 @@