Browse Source

UI-2467: Now offer an option to delete or unassign the conferences when deleting an user from SmartPBX

4.3
Jean-Roch Maitre 9 years ago
parent
commit
76a02a90b5
3 changed files with 68 additions and 16 deletions
  1. +5
    -1
      i18n/en-US.json
  2. +56
    -15
      submodules/users/users.js
  3. +7
    -0
      views/users-deleteDialog.html

+ 5
- 1
i18n/en-US.json View File

@ -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."
}
},


+ 56
- 15
submodules/users/users.js View File

@ -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);
});
});
},


+ 7
- 0
views/users-deleteDialog.html View File

@ -10,6 +10,13 @@
<i class="help-popover fa fa-question-circle fa-lg" data-original-title="{{ i18n.users.deleteDialog.deleteDevicesHelp }}" data-placement="left" data-toggle="tooltip"></i>
</div>
<div>
{{#monsterCheckbox i18n.users.deleteDialog.deleteConferences }}
<input id="delete_conferences" type="checkbox"></input>
{{/monsterCheckbox}}
<i class="help-popover fa fa-question-circle fa-lg" data-original-title="{{ i18n.users.deleteDialog.deleteConferencesHelp }}" data-placement="left" data-toggle="tooltip"></i>
</div>
<div class="dialog-text">
{{#compare user.priv_level "===" "admin"}}
{{ i18n.users.deleteDialog.headerAdmin }}


Loading…
Cancel
Save