diff --git a/src/js/index.js b/src/js/index.js
index 56578a0fa..646ce8051 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -81,6 +81,9 @@ app.config(['$routeProvider', function ($routeProvider) {
}).when('/email', {
controller: 'EmailsController',
templateUrl: 'views/emails.html?<%= revision %>'
+ }).when('/emails-eventlog', {
+ controller: 'EmailsEventlogController',
+ templateUrl: 'views/emails-eventlog.html?<%= revision %>'
}).when('/email/:domain', {
controller: 'EmailController',
templateUrl: 'views/email.html?<%= revision %>'
diff --git a/src/theme.scss b/src/theme.scss
index b3339951d..2c8c7414c 100644
--- a/src/theme.scss
+++ b/src/theme.scss
@@ -557,6 +557,9 @@ multiselect {
.maillog-filter {
display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 2px;
.form-control {
display: inline-block;
diff --git a/src/views/emails-eventlog.html b/src/views/emails-eventlog.html
new file mode 100644
index 000000000..09ccdc947
--- /dev/null
+++ b/src/views/emails-eventlog.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ {{ 'emails.eventlog.time' | tr }} |
+ {{ 'emails.eventlog.details' | tr }} |
+
+
+
+
+
+
+
+ {{ 'emails.eventlog.empty' | tr }}
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+ {{ eventlog.ts | prettyDate }} |
+
+ {{ 'emails.eventlog.type.bounceInfo' | tr:eventlog }}
+ {{ 'emails.eventlog.type.deferredInfo' | tr:eventlog }}
+
+ {{ 'emails.eventlog.type.inboundInfo' | tr:eventlog }}
+ {{ 'emails.eventlog.type.outboundInfo' | tr:eventlog }}
+
+ {{ 'emails.eventlog.type.receivedInfo' | tr:eventlog }}
+ {{ 'emails.eventlog.type.deliveredInfo' | tr:eventlog }}
+ {{ 'emails.eventlog.type.deniedInfo' | tr:eventlog }}
+ {{ 'emails.eventlog.type.spamFilterTrainedInfo' | tr:eventlog }}
+ |
+
+
+
+ {{ eventlog | json }}
+ |
+
+
+
+
+
+
+
diff --git a/src/views/emails-eventlog.js b/src/views/emails-eventlog.js
new file mode 100644
index 000000000..d9df4c245
--- /dev/null
+++ b/src/views/emails-eventlog.js
@@ -0,0 +1,81 @@
+'use strict';
+
+/* global $ */
+/* global angular */
+
+angular.module('Application').controller('EmailsEventlogController', ['$scope', '$location', '$translate', '$timeout', 'Client', function ($scope, $location, $translate, $timeout, Client) {
+ Client.onReady(function () { if (!Client.getUserInfo().isAtLeastOwner) $location.path('/'); });
+
+ $scope.ready = false;
+ $scope.config = Client.getConfig();
+ $scope.user = Client.getUserInfo();
+
+ $scope.pageItemCount = [
+ { name: $translate.instant('main.pagination.perPageSelector', { n: 20 }), value: 20 },
+ { name: $translate.instant('main.pagination.perPageSelector', { n: 50 }), value: 50 },
+ { name: $translate.instant('main.pagination.perPageSelector', { n: 100 }), value: 100 }
+ ];
+
+ $scope.activityTypes = [
+ { name: 'Bounce', value: 'bounce' },
+ { name: 'Deferred', value: 'deferred' },
+ { name: 'Delivered', value: 'delivered' },
+ { name: 'Denied', value: 'denied' },
+ { name: 'Queued', value: 'queued' },
+ { name: 'Received', value: 'received' },
+ ];
+
+ $scope.activity = {
+ busy: true,
+ eventLogs: [],
+ activeEventLog: null,
+ currentPage: 1,
+ perPage: 20,
+ pageItems: $scope.pageItemCount[0],
+ selectedTypes: [],
+ search: '',
+
+ refresh: function () {
+ $scope.activity.busy = true;
+
+ var types = $scope.activity.selectedTypes.map(function (a) { return a.value; }).join(',');
+
+ Client.getMailEventLogs($scope.activity.search, types, $scope.activity.currentPage, $scope.activity.pageItems.value, function (error, result) {
+ if (error) return console.error('Failed to fetch mail eventlogs.', error);
+
+ $scope.activity.busy = false;
+
+ $scope.activity.eventLogs = result;
+ });
+ },
+
+ showNextPage: function () {
+ $scope.activity.currentPage++;
+ $scope.activity.refresh();
+ },
+
+ showPrevPage: function () {
+ if ($scope.activity.currentPage > 1) $scope.activity.currentPage--;
+ else $scope.activity.currentPage = 1;
+ $scope.activity.refresh();
+ },
+
+ showEventLogDetails: function (eventLog) {
+ if ($scope.activity.activeEventLog === eventLog) $scope.activity.activeEventLog = null;
+ else $scope.activity.activeEventLog = eventLog;
+ },
+
+ updateFilter: function (fresh) {
+ if (fresh) $scope.activity.currentPage = 1;
+ $scope.activity.refresh();
+ }
+ };
+
+ Client.onReady(function () {
+ $scope.ready = true;
+
+ $scope.activity.refresh();
+ });
+
+ $('.modal-backdrop').remove();
+}]);
diff --git a/src/views/emails.html b/src/views/emails.html
index d378888a4..0f6dbd1f2 100644
--- a/src/views/emails.html
+++ b/src/views/emails.html
@@ -166,7 +166,7 @@
{{ 'emails.title' | tr }}
@@ -275,95 +275,4 @@
-
-
-
-
{{ 'emails.eventlog.title' | tr }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
- {{ 'emails.eventlog.time' | tr }} |
- {{ 'emails.eventlog.details' | tr }} |
-
-
-
-
- |
-
- |
-
-
-
-
-
-
-
- {{ 'emails.eventlog.empty' | tr }}
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
-
- |
- {{ eventlog.ts | prettyDate }} |
-
- {{ 'emails.eventlog.type.bounceInfo' | tr:eventlog }}
- {{ 'emails.eventlog.type.deferredInfo' | tr:eventlog }}
-
- {{ 'emails.eventlog.type.inboundInfo' | tr:eventlog }}
- {{ 'emails.eventlog.type.outboundInfo' | tr:eventlog }}
-
- {{ 'emails.eventlog.type.receivedInfo' | tr:eventlog }}
- {{ 'emails.eventlog.type.deliveredInfo' | tr:eventlog }}
- {{ 'emails.eventlog.type.deniedInfo' | tr:eventlog }}
- {{ 'emails.eventlog.type.spamFilterTrainedInfo' | tr:eventlog }}
- |
-
-
-
- {{ eventlog | json }}
- |
-
-
-
-
-
-
-
diff --git a/src/views/emails.js b/src/views/emails.js
index fdfefe9e9..d7ce487c6 100644
--- a/src/views/emails.js
+++ b/src/views/emails.js
@@ -10,67 +10,6 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
$scope.user = Client.getUserInfo();
$scope.domains = [];
- $scope.pageItemCount = [
- { name: $translate.instant('main.pagination.perPageSelector', { n: 20 }), value: 20 },
- { name: $translate.instant('main.pagination.perPageSelector', { n: 50 }), value: 50 },
- { name: $translate.instant('main.pagination.perPageSelector', { n: 100 }), value: 100 }
- ];
-
- $scope.activityTypes = [
- { name: 'Bounce', value: 'bounce' },
- { name: 'Deferred', value: 'deferred' },
- { name: 'Delivered', value: 'delivered' },
- { name: 'Denied', value: 'denied' },
- { name: 'Queued', value: 'queued' },
- { name: 'Received', value: 'received' },
- ];
-
- $scope.activity = {
- busy: true,
- eventLogs: [],
- activeEventLog: null,
- currentPage: 1,
- perPage: 20,
- pageItems: $scope.pageItemCount[0],
- selectedTypes: [],
- search: '',
-
- refresh: function () {
- $scope.activity.busy = true;
-
- var types = $scope.activity.selectedTypes.map(function (a) { return a.value; }).join(',');
-
- Client.getMailEventLogs($scope.activity.search, types, $scope.activity.currentPage, $scope.activity.pageItems.value, function (error, result) {
- if (error) return console.error('Failed to fetch mail eventlogs.', error);
-
- $scope.activity.busy = false;
-
- $scope.activity.eventLogs = result;
- });
- },
-
- showNextPage: function () {
- $scope.activity.currentPage++;
- $scope.activity.refresh();
- },
-
- showPrevPage: function () {
- if ($scope.activity.currentPage > 1) $scope.activity.currentPage--;
- else $scope.activity.currentPage = 1;
- $scope.activity.refresh();
- },
-
- showEventLogDetails: function (eventLog) {
- if ($scope.activity.activeEventLog === eventLog) $scope.activity.activeEventLog = null;
- else $scope.activity.activeEventLog = eventLog;
- },
-
- updateFilter: function (fresh) {
- if (fresh) $scope.activity.currentPage = 1;
- $scope.activity.refresh();
- }
- };
-
// this is required because we need to rewrite the MAIL_SERVER_NAME env var
$scope.reconfigureEmailApps = function () {
var installedApps = Client.getInstalledApps();
@@ -421,8 +360,6 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
$scope.domains = domains;
$scope.ready = true;
- if ($scope.user.role === 'owner') $scope.activity.refresh();
-
$scope.mailLocation.refresh();
$scope.maxEmailSize.refresh();
$scope.spamConfig.refresh();