From 03ee97171d36078bdd1d32a8cb6f037288c98964 Mon Sep 17 00:00:00 2001 From: Joris Tirado Date: Wed, 15 Apr 2015 17:56:35 -0700 Subject: [PATCH] UI-1353: Add directory support for the virtual receptionist --- i18n/en-US.json | 5 +++- i18n/fr-FR.json | 3 ++- submodules/strategy/strategy.js | 45 +++++++++++++++++++++++++++++---- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/i18n/en-US.json b/i18n/en-US.json index 87bf9aa..452dd1c 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -698,7 +698,10 @@ "user": "Users", "device": "Devices", "ring_group": "Groups", - "voicemail": "Voicemail Boxes" + "voicemail": "Voicemail Boxes", + "__comment": "UI-1353: Add directory support for the virtual receptionist", + "__version": "v3.20_s4", + "directory": "Directory" }, "confirmMessages": { "deleteHoliday": "This holiday will be permanently deleted. Continue?", diff --git a/i18n/fr-FR.json b/i18n/fr-FR.json index abc4942..5973b5c 100644 --- a/i18n/fr-FR.json +++ b/i18n/fr-FR.json @@ -657,7 +657,8 @@ "user": "Utilisateurs", "device": "Téléphones", "ring_group": "Groupes", - "voicemail": "Répondeurs" + "voicemail": "Répondeurs", + "directory": "Annuaire" }, "confirmMessages": { "deleteHoliday": "Ces vacances seront supprimées. Continuer?", diff --git a/submodules/strategy/strategy.js b/submodules/strategy/strategy.js index a450f4e..3517ec6 100644 --- a/submodules/strategy/strategy.js +++ b/submodules/strategy/strategy.js @@ -68,6 +68,11 @@ define(function(require){ monster.pub('common.numbers.getListFeatures', function(features) { callback(null, features); }); + }, + directories: function (callback) { + self.strategyListDirectories(function (directories) { + callback(null, directories); + }); } }, function(err, results) { @@ -1256,7 +1261,7 @@ define(function(require){ popup = monster.ui.dialog(template, { title: self.i18n.active().strategy.popup.title+" - "+label}); var menuLineContainer = template.find('.menu-block .left .content'), - popupCallEntities = $.extend(true, {}, strategyData.callEntities, { voicemail: strategyData.voicemails }); + popupCallEntities = $.extend(true, {}, strategyData.callEntities, { voicemail: strategyData.voicemails }, { directory: strategyData.directories }); _.each(strategyData.callflows[name].flow.children, function(val, key) { menuLineContainer.append(monster.template(self, 'strategy-menuLine', { @@ -1417,7 +1422,7 @@ define(function(require){ container.find('.add-menu-line a').on('click', function(e) { e.preventDefault(); - var popupCallEntities = $.extend(true, {}, strategyData.callEntities, { voicemail: strategyData.voicemails }), + var popupCallEntities = $.extend(true, {}, strategyData.callEntities, { voicemail: strategyData.voicemails }, { directory: strategyData.directories }), menuLine = $(monster.template(self, 'strategy-menuLine', { callEntities: self.strategyGetCallEntitiesDropdownData(popupCallEntities) })), icon = menuLine.find('.target-select option:selected').parents('optgroup').data('icon'); @@ -1605,6 +1610,7 @@ define(function(require){ } switch(entityType) { + case 'directory': case 'user': case 'device': case 'voicemail': @@ -1657,6 +1663,9 @@ define(function(require){ }; switch(group.groupType) { + case 'directory': + group.groupIcon = 'icon-book'; + break; case 'user': group.groupIcon = 'icon-user'; break; @@ -1672,9 +1681,18 @@ define(function(require){ } group.entities.sort(function(a,b) { return (a.name.toLowerCase() > b.name.toLowerCase()); }); - if(group.groupType === "user") { - results.splice(0, 0, group); - } else { + if(group.groupType === 'directory') { + results.unshift(group); + } + else if (group.groupType === 'user') { + if (results[0].groupType === 'directory') { + results.splice(1, 0, group); + } + else { + results.unshift(group); + } + } + else { results.push(group); } }); @@ -2402,6 +2420,23 @@ define(function(require){ }); }, + strategyListDirectories: function(callbackSuccess, callbackError) { + var self = this; + + self.callApi({ + resource: 'directory.list', + data: { + accountId: self.accountId + }, + success: function(data, status) { + callbackSuccess && callbackSuccess(data.data); + }, + error: function(data, status) { + callbackError && callbackError(); + } + }); + }, + _strategyOnCurrentAccountUpdated: function(accountData) { var self = this; $('#strategy_custom_hours_timezone').text(timezone.formatTimezone(accountData.timezone));