-
-
{{ mailboxes.edit.error.message }}
+
{{ mailboxes.edit.error.message }}
+
+
-
+
@@ -328,10 +353,9 @@
{{ mailbox.ownerDisplayName }}
-
- {{ mailbox.aliases }}
+ {{ alias.name + '@' + alias.domain }}
|
-
+ |
{{ mailbox.usage | prettyMailSize }}
|
diff --git a/src/views/email.js b/src/views/email.js
index c7737b8d2..cae90b107 100644
--- a/src/views/email.js
+++ b/src/views/email.js
@@ -2,6 +2,7 @@
/* global angular:false */
/* global $:false */
+/* global asyncForEach */
angular.module('Application').controller('EmailController', ['$scope', '$location', '$timeout', '$routeParams', 'Client', function ($scope, $location, $timeout, $routeParams, Client) {
Client.onReady(function () { if (!Client.getUserInfo().isAtLeastAdmin) $location.path('/'); });
@@ -16,6 +17,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
$scope.config = Client.getConfig();
$scope.apps = Client.getInstalledApps();
$scope.users = [];
+ $scope.incomingDomains = [];
$scope.domain = null;
$scope.adminDomain = null;
@@ -315,7 +317,22 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
error: null,
name: '',
owner: null,
- aliases: '',
+ incomingDomains: [],
+ aliases: [],
+
+ addAlias: function (event) {
+ event.preventDefault();
+
+ $scope.mailboxes.edit.aliases.push({
+ name: '',
+ domain: domainName
+ });
+ },
+
+ delAlias: function (event, index) {
+ event.preventDefault();
+ $scope.mailboxes.edit.aliases.splice(index, 1);
+ },
show: function (mailbox) {
$scope.mailboxes.edit.name = mailbox.name;
@@ -336,9 +353,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
return;
}
- var aliases = $scope.mailboxes.edit.aliases.split(' ').map(function (a) { return a.trim(); }).filter(function (a) { return !!a; });
-
- Client.setAliases($scope.domain.domain, $scope.mailboxes.edit.name, aliases, function (error) {
+ Client.setAliases($scope.domain.domain, $scope.mailboxes.edit.name, $scope.mailboxes.edit.aliases, function (error) {
if (error) {
$scope.mailboxes.edit.error = error;
$scope.mailboxes.edit.busy = false;
@@ -349,7 +364,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
$scope.mailboxes.edit.error = null;
$scope.mailboxes.edit.name = '';
$scope.mailboxes.edit.owner = null;
- $scope.mailboxes.edit.aliases = '';
+ $scope.mailboxes.edit.aliases = [];
$scope.mailboxes.refresh();
$('#mailboxEditModal').modal('hide');
@@ -397,7 +412,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
if (error) return callback(error);
$scope.mailboxes.mailboxes = mailboxes.map(function (m) {
- m.aliases = aliases.filter(function (a) { return a.aliasTarget === m.name; }).map(function (a) { return a.name; }).join(' ');
+ m.aliases = aliases.filter(function (a) { return a.aliasName === m.name && a.aliasDomain === m.domain; }).map(function (a) { return { name: a.name, domain: a.domain }; });
m.owner = $scope.users.find(function (u) { return u.id === m.ownerId; }); // owner may not exist
m.ownerDisplayName = m.owner ? m.owner.display : ''; // this meta property is set when we get the user list
@@ -671,17 +686,22 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio
$scope.users = users;
- Client.getDomain(domainName, function (error, result) {
+ Client.getDomains(function (error, result) {
if (error) return console.error('Unable to get view domain.', error);
- $scope.domain = result;
+ $scope.domain = result.filter(function (d) { return d.domain === domainName; })[0];
+ $scope.adminDomain = result.filter(function (d) { return d.domain === $scope.config.adminDomain; })[0];
+ $scope.refreshDomain();
- Client.getDomain($scope.config.adminDomain, function (error, result) {
- if (error) return console.error('Unable to get admin domain.', error);
+ asyncForEach(result, function (domain, iteratorDone) {
+ Client.getMailConfigForDomain(domain.domain, function (error, mailConfig) {
+ if (error) return console.error('Failed to fetch mail config for domain', domain.domain, error);
- $scope.adminDomain = result;
-
- $scope.refreshDomain();
+ if (mailConfig.enabled) $scope.incomingDomains.push(domain);
+ iteratorDone();
+ });
+ }, function iteratorDone(error) {
+ if (error) return console.error(error);
$scope.ready = true;
});
|