Add ui bits to add mailboxes

This commit is contained in:
Johannes Zellner
2018-04-05 21:00:33 +02:00
parent bbe351161f
commit a0dbcc9bb3
2 changed files with 82 additions and 42 deletions

View File

@@ -129,7 +129,47 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
};
$scope.mailboxes = {
users: [],
mailboxes: [],
add: {
busy: false,
name: '',
owner: null,
submit: function () {
$scope.mailboxes.add.busy = true;
Client.addMailbox($scope.selectedDomain.domain, $scope.mailboxes.add.name, $scope.mailboxes.add.owner.id, function (error) {
$scope.mailboxes.add.busy = false;
if (error) return console.error(error);
$scope.mailboxes.add.name = '';
$scope.mailboxes.add.owner = null;
$scope.mailboxes.refresh();
});
}
},
refresh: function () {
Client.getMailboxes($scope.selectedDomain.domain, function (error, mailboxes) {
if (error) return console.error(error);
Client.listAliases($scope.selectedDomain.domain, function (error, aliases) {
if (error) return console.error(error);
$scope.mailboxes.mailboxes = mailboxes.map(function (m) {
m.aliases = aliases.filter(function (a) { return a.ownerId === m.id; }).map(function (a) { return a.name; }).join(',');
m.owner = $scope.users.find(function (u) { return u.id === m.ownerId; });
m.orig = {};
m.orig.owner = m.owner;
m.orig.aliases = m.aliases;
return m;
});
});
});
},
submit: function (user) {
user.busy = true;
@@ -363,26 +403,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
$scope.selectedDomain.mailConfig = mailConfig;
$scope.selectedDomain.mailStatus = {};
// mailboxes
Client.getMailboxes($scope.selectedDomain.domain, function (error, mailboxes) {
if (error) return console.error(error);
Client.listAliases($scope.selectedDomain.domain, function (error, aliases) {
if (error) return console.error(error);
var enabledUsers = mailboxes.map(function (m) { return m.name; });
$scope.mailboxes.users = $scope.users.filter(function (u) { return !!u.username; }).map(function (u) {
u.mailboxEnabled = (enabledUsers.indexOf(u.username) !== -1);
u.aliases = aliases.filter(function (a) { return a.ownerId === u.id; }).map(function (a) { return a.name; }).join(',');
u.orig = {};
u.orig.mailboxEnabled = u.mailboxEnabled;
u.orig.aliases = u.aliases;
return u;
});
});
});
$scope.mailboxes.refresh();
// mailinglists/groups
Client.getGroups(function (error, groups) {
@@ -434,7 +455,11 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
Client.getUsers(function (error, users) {
if (error) return console.error('Unable to get user listing.', error);
$scope.users = users;
// ensure we have a display value available
$scope.users = users.map(function (u) {
u.display = u.username || u.email;
return u;
});
Client.getDomains(function (error, domains) {
if (error) return console.error('Unable to get domain listing.', error);