diff --git a/i18n/en-US.json b/i18n/en-US.json index 783218c..3cb176c 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -695,7 +695,11 @@ "deleteUserName": "Delete \"{{variable}}\"", "proceed": "Proceed", "deleteDevices": "Also remove this user's devices from the system", - "deleteDevicesHelp": "If you leave this option unchecked, we'll just unassign these devices and they will show up in the list of Spare Devices" + "deleteDevicesHelp": "If you leave this option unchecked, we'll just unassign these devices and they will show up in the list of Spare Devices", + "__comment": "UI-2467: also remove conferences when deleting a user from smartpbx", + "__version": "4.0", + "deleteConferences": "Also remove this user's conferences from the system", + "deleteConferencesHelp": "If you leave this option unchecked, you won't be able to use the user's conference number anywhere else, as it will still be used by that conference." } }, diff --git a/submodules/users/users.js b/submodules/users/users.js index 3666edb..cd82349 100644 --- a/submodules/users/users.js +++ b/submodules/users/users.js @@ -428,9 +428,10 @@ define(function(require){ monster.ui.tooltips(dialogTemplate); dialogTemplate.find('#confirm_button').on('click', function() { - var removeDevices = dialogTemplate.find('#delete_devices').is(':checked'); + var removeDevices = dialogTemplate.find('#delete_devices').is(':checked'), + removeConferences = dialogTemplate.find('#delete_conferences').is(':checked'); - self.usersDelete(user.id, removeDevices, function(data) { + self.usersDelete(user.id, removeDevices, removeConferences, function(data) { popup.dialog('close').remove(); callback && callback(data); @@ -2870,7 +2871,7 @@ define(function(require){ }, /* Utils */ - usersDelete: function(userId, removeDevices, callback) { + usersDelete: function(userId, removeDevices, removeConferences, callback) { var self = this; monster.parallel({ @@ -2888,6 +2889,11 @@ define(function(require){ self.usersListCallflowsUser(userId, function(data) { callback(null, data); }); + }, + conferences: function(callback) { + self.usersListConferences(userId, function(data) { + callback(null, data); + }); } }, function(error, results) { @@ -2908,6 +2914,12 @@ define(function(require){ }); }); + listFnDelete.push(function(callback) { + self.usersRemoveBulkConferences(results.conferences, removeConferences, function() { + callback(null, ''); + }); + }); + _.each(results.callflows, function(callflow) { /* @@ -3693,6 +3705,19 @@ define(function(require){ }); }, + usersUnassignConference: function(conferenceId, callback) { + var self = this; + + self.usersGetConference(conferenceId, function(conference) { + conference.name = 'Unassigned ' + conference.name; + delete conference.owner_id; + + self.usersUpdateConference(conference, function(conference) { + callback && callback(conference); + }); + }); + }, + usersUpdateConference: function(conference, callback) { var self = this; @@ -4144,6 +4169,8 @@ define(function(require){ conference_numbers: [] }; + monster.util.dataFlags.add({ source: 'smartpbx'}, baseConference); + baseConference = $.extend(true, {}, baseConference, data.conference); self.usersListConferences(data.user.id, function(conferences) { @@ -4295,24 +4322,38 @@ define(function(require){ } }, + usersRemoveBulkConferences: function(conferences, forceDelete, callback) { + var self = this, + listRequests = []; + + _.each(conferences, function(conference) { + listRequests.push(function(subCallback) { + if(forceDelete) { + self.usersDeleteConference(conference.id, function(data) { + subCallback(null, data); + }); + } + else { + self.usersUnassignConference(conference.id, function(data) { + subCallback(null, data); + }); + } + }); + }); + + monster.parallel(listRequests, function(err, results) { + callback && callback(results); + }); + }, + usersDeleteConferencing: function(userId, globalCallback) { var self = this; monster.parallel({ conferences: function(callback) { self.usersListConferences(userId, function(conferences) { - var listRequests = []; - - _.each(conferences, function(conference) { - listRequests.push(function(subCallback) { - self.usersDeleteConference(conference.id, function(data) { - subCallback(null, data); - }); - }); - }); - - monster.parallel(listRequests, function(err, results) { - callback && callback(results); + self.usersRemoveBulkConferences(conferences, true, function(results) { + callback && callback(null, results); }); }); }, diff --git a/views/users-deleteDialog.html b/views/users-deleteDialog.html index 330c82f..07f60e0 100644 --- a/views/users-deleteDialog.html +++ b/views/users-deleteDialog.html @@ -10,6 +10,13 @@ +