2022-08-31 08:45:28 +02:00
|
|
|
<div>
|
|
|
|
|
<a href="/#/email" class="back-to-view-link"><i class="fas fa-arrow-left"></i> {{ 'email.backAction' | tr }}</a>
|
|
|
|
|
|
|
|
|
|
<br/>
|
|
|
|
|
|
|
|
|
|
<div class="col-md-10 col-md-offset-1">
|
|
|
|
|
<h1>
|
|
|
|
|
{{ 'emails.queue.title' | tr }}
|
|
|
|
|
|
2024-10-04 21:37:17 +02:00
|
|
|
<a class="btn btn-default btn-outline pull-right" href="/logs.html?id=mail" target="_blank">{{ 'main.action.logs' | tr }}</a>
|
2022-08-31 08:45:28 +02:00
|
|
|
</h1>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
<div class="col-md-10 col-md-offset-1">
|
|
|
|
|
<div class="maillog-filter">
|
|
|
|
|
<input class="form-control" style="width: 200px;" placeholder="{{ 'main.searchPlaceholder' | tr }}" type="text" ng-model="queue.search" ng-model-options="{ debounce: 1000 }" ng-change="queue.updateFilter(true)" />
|
|
|
|
|
<select class="form-control" ng-model="queue.pageItems" ng-options="a.name for a in pageItemCount" ng-change="queue.updateFilter(true)"></select>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="pagination pull-right">
|
2022-09-23 14:12:05 +02:00
|
|
|
<button class="btn btn-default btn-outline" ng-click="queue.reload()"><i class="fas fa-sync-alt" ng-class="{ 'fa-spin': queue.busyRefresh }"></i></button>
|
2022-08-31 08:45:28 +02:00
|
|
|
<button class="btn btn-default btn-outline" ng-click="queue.showPrevPage()" ng-disabled="queue.busy || queue.currentPage <= 1"><i class="fa fa-angle-double-left"></i> {{ 'main.pagination.prev' | tr }}</button>
|
|
|
|
|
<button class="btn btn-default btn-outline" ng-click="queue.showNextPage()" ng-disabled="queue.busy || queue.perPage > queue.items.length">{{ 'main.pagination.next' | tr }} <i class="fa fa-angle-double-right"></i></button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
<div class="col-md-10 col-md-offset-1">
|
|
|
|
|
<div class="card card-block" style="max-width: 100%">
|
|
|
|
|
<div>
|
|
|
|
|
<center ng-show="queue.busy"><h2><i class="fa fa-circle-notch fa-spin"></i></h2></center>
|
|
|
|
|
<table ng-hide="queue.busy" class="table table-hover" style="margin: 0; table-layout:fixed">
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
2022-09-22 19:46:36 +02:00
|
|
|
<th style="width: 15%">{{ 'emails.queue.queueTime' | tr }}</th>
|
2022-09-20 11:16:33 +02:00
|
|
|
<th style="width: 25%">{{ 'emails.queue.mailFrom' | tr }}</th>
|
|
|
|
|
<th style="width: 25%">{{ 'emails.queue.rcptTo' | tr }}</th>
|
|
|
|
|
<th style="width: 30%">{{ 'emails.queue.details' | tr }}</th>
|
2022-09-22 19:46:36 +02:00
|
|
|
<th class="text-right" style="width: 5%">{{ 'main.actions' | tr }}</th>
|
2022-08-31 08:45:28 +02:00
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody ng-hide="queue.items.length">
|
|
|
|
|
<tr>
|
2022-09-23 14:12:05 +02:00
|
|
|
<td colspan="5" class="text-center">
|
2022-08-31 08:45:28 +02:00
|
|
|
<br>
|
|
|
|
|
<br>
|
2022-09-20 11:16:33 +02:00
|
|
|
{{ 'emails.queue.empty' | tr }}
|
2022-08-31 08:45:28 +02:00
|
|
|
<br>
|
|
|
|
|
<br>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
2022-09-20 11:16:33 +02:00
|
|
|
<tbody ng-show="queue.items.length" ng-repeat="item in queue.items">
|
|
|
|
|
<tr ng-click="queue.showItemDetails(item)" class="hand">
|
2022-09-22 19:46:36 +02:00
|
|
|
<td class="no-wrap"><span uib-tooltip="{{ item.queueTime | prettyLongDate }}" class="arrow">{{ item.queueTime | prettyDate }}</span></td>
|
2022-09-20 11:16:33 +02:00
|
|
|
<td class="elide-table-cell">{{ (item.mailFrom | prettyEmailAddresses) || '-' }}</td>
|
|
|
|
|
<td class="elide-table-cell">{{ (item.rcptTo | prettyEmailAddresses) || '-' }}</td>
|
2022-09-22 19:46:36 +02:00
|
|
|
<td class="elide-table-cell">
|
|
|
|
|
<span ng-show="item.queueType === 'delivery'">Delivering</span>
|
|
|
|
|
<span ng-show="item.queueType === 'tempfail'">Retrying in {{ item.nextAttemptTime | prettyFutureDate }}. {{ item.attempts+1 }} attempt(s) so far.</span>
|
|
|
|
|
<span ng-show="item.queueType === 'load'">Loading</span>
|
|
|
|
|
</td>
|
2022-09-20 11:16:33 +02:00
|
|
|
<td class="text-right no-wrap">
|
2022-09-22 19:46:36 +02:00
|
|
|
<!-- resend is broken in haraka -->
|
|
|
|
|
<!-- <button class="btn btn-xs btn-default" ng-click="queue.resend(item)" uib-tooltip="{{ 'emails.queue.resendTooltip' | tr }}"><i class="fa fa-retweet"></i></button> -->
|
2022-09-23 14:12:05 +02:00
|
|
|
<button class="btn btn-xs btn-default" ng-show="item.queueType === 'tempfail'" ng-click="$event.stopPropagation(); queue.discard(item)" uib-tooltip="{{ 'emails.queue.discardTooltip' | tr }}"><i class="fa fa-trash-alt"></i></button>
|
2022-08-31 08:45:28 +02:00
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr ng-show="queue.activeItem === item">
|
|
|
|
|
<td colspan="6">
|
|
|
|
|
<pre class="item-details">{{ item | json }}</pre>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|