2020-08-17 22:44:01 +02:00
|
|
|
<!-- Modal change max email size -->
|
|
|
|
|
<div class="modal fade" id="maxEmailSizeChangeModal" tabindex="-1" role="dialog">
|
|
|
|
|
<div class="modal-dialog">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
2020-11-12 11:42:11 +01:00
|
|
|
<h4 class="modal-title">{{ 'emails.changeMailSizeDialog.title' | tr }}</h4>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
2020-11-12 11:42:11 +01:00
|
|
|
<div ng-bind-html=" 'emails.changeMailSizeDialog.description' | tr "></div>
|
2020-08-20 23:28:43 -07:00
|
|
|
<br>
|
2020-08-17 22:44:01 +02:00
|
|
|
<form name="maxEmailSizeChangeForm" role="form" novalidate ng-submit="maxEmailSize.submit()" autocomplete="off">
|
|
|
|
|
<div class="form-group">
|
Fix SI and Decimal unit usage
SI: For 1000, it is kB, MB, GB
IEC: For 1024, it is KiB, MiB, GiB
JEDEC: For 1024, it is KB, MB (conflicts with SI, of course)
Ultimately, what we decided is for RAM use IEC and for Disk use SI.
This is what docker does and also suggested here -
https://stackoverflow.com/questions/8632269/displaying-file-size-1000b-1kb-or-1024b-1kb
2022-10-13 21:48:03 +02:00
|
|
|
<label class="control-label">{{ 'emails.changeMailSizeDialog.size' | tr }} <b>{{ maxEmailSize.size | prettyDecimalSize }}</b></label>
|
2022-10-13 21:57:12 +02:00
|
|
|
<slider ng-model="maxEmailSize.size" tooltip="hide" min="1000000" max="1000000000" step="1000000"></slider>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<input class="ng-hide" type="submit"/>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-footer">
|
2020-11-12 11:42:11 +01:00
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
|
|
|
|
|
<button type="button" class="btn btn-success" ng-click="maxEmailSize.submit()" ng-disabled="maxEmailSize.size === maxEmailSize.currentSize"><i class="fa fa-circle-notch fa-spin" ng-show="maxEmailSize.busy"></i> {{ 'main.dialog.save' | tr }}</button>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2020-11-19 17:45:16 -08:00
|
|
|
<!-- Modal solr config -->
|
|
|
|
|
<div class="modal fade" id="solrConfigModal" tabindex="-1" role="dialog">
|
|
|
|
|
<div class="modal-dialog">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
|
|
|
|
<h4 class="modal-title">{{ 'emails.solrConfig.title' | tr }}</h4>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
2020-12-02 17:33:54 -08:00
|
|
|
<p ng-bind-html=" 'emails.solrConfig.description' | tr "></p>
|
|
|
|
|
<!-- only show this when user is trying to enable -->
|
|
|
|
|
<p class="has-error" ng-show="!solrConfig.currentConfig.enabled && !solrConfig.enoughMemory">{{ 'emails.solrConfig.notEnoughMemory' | tr }}</p>
|
2020-11-19 17:45:16 -08:00
|
|
|
</div>
|
|
|
|
|
<div class="modal-footer">
|
2022-02-09 16:22:44 +01:00
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.close' | tr }}</button>
|
|
|
|
|
<button type="button" class="btn btn-success" ng-hide="solrConfig.currentConfig.enabled" ng-click="solrConfig.submit(true)" ng-disabled="(!solrConfig.currentConfig.enabled && !solrConfig.enoughMemory) || solrConfig.busy"><i class="fa fa-circle-notch fa-spin" ng-show="solrConfig.busy"></i> {{ 'main.enableAction' | tr }}</button>
|
|
|
|
|
<button type="button" class="btn btn-danger" ng-show="solrConfig.currentConfig.enabled" ng-click="solrConfig.submit(false)" ng-disabled="solrConfig.busy"><i class="fa fa-circle-notch fa-spin" ng-show="solrConfig.busy"></i> {{ 'main.disableAction' | tr }}</button>
|
2020-11-19 17:45:16 -08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2021-10-13 14:22:37 -07:00
|
|
|
<!-- Modal change acl -->
|
|
|
|
|
<div class="modal fade" id="aclChangeModal" tabindex="-1" role="dialog">
|
|
|
|
|
<div class="modal-dialog">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
|
|
|
|
<h4 class="modal-title">{{ 'emails.aclDialog.title' | tr }}</h4>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<form name="aclChangeForm" role="form" novalidate ng-submit="acl.submit()" autocomplete="off">
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label class="control-label">{{ 'emails.aclDialog.dnsblZones' | tr }} <sup><a ng-href="https://docs.cloudron.io/email/#dnsbl" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
|
|
|
|
|
<p class="small">{{ 'emails.aclDialog.dnsblZonesInfo' | tr }}</p>
|
|
|
|
|
<div class="has-error" ng-show="acl.error.dnsblZones">{{ acl.error.dnsblZones }}</div>
|
|
|
|
|
<textarea ng-model="acl.dnsblZones" placeholder="{{ 'emails.aclDialog.dnsblZonesPlaceholder' | tr }}" name="dnsblZones" class="form-control" ng-class="{ 'has-error': !aclChangeForm.dnsblZones.$dirty && acl.error.dnsblZones }" rows="4"></textarea>
|
|
|
|
|
</div>
|
|
|
|
|
<input class="ng-hide" type="submit"/>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-footer">
|
|
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
|
|
|
|
|
<button type="button" class="btn btn-success" ng-click="acl.submit()"><i class="fa fa-circle-notch fa-spin" ng-show="acl.busy"></i> {{ 'main.dialog.save' | tr }}</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2020-08-22 13:01:25 -07:00
|
|
|
<!-- Modal change spam config -->
|
|
|
|
|
<div class="modal fade" id="spamConfigChangeModal" tabindex="-1" role="dialog">
|
2020-08-17 22:44:01 +02:00
|
|
|
<div class="modal-dialog">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
2020-11-12 11:42:11 +01:00
|
|
|
<h4 class="modal-title">{{ 'emails.spamFilterDialog.title' | tr }}</h4>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
2020-08-22 13:01:25 -07:00
|
|
|
<form name="spamConfigChangeForm" role="form" novalidate ng-submit="spamConfig.submit()" autocomplete="off">
|
2020-08-17 22:44:01 +02:00
|
|
|
<div class="form-group">
|
2020-11-12 11:42:11 +01:00
|
|
|
<label class="control-label">{{ 'emails.spamFilterDialog.blacklisteAddresses' | tr }}</label>
|
|
|
|
|
<p class="small">{{ 'emails.spamFilterDialog.blacklisteAddressesInfo' | tr }}</p>
|
2020-08-22 13:01:25 -07:00
|
|
|
<div class="has-error" ng-show="spamConfig.error.blacklist">{{ spamConfig.error.blacklist }}</div>
|
2020-11-12 11:42:11 +01:00
|
|
|
<textarea ng-model="spamConfig.blacklist" placeholder="{{ 'emails.spamFilterDialog.blacklisteAddressesPlaceholder' | tr }}" name="blacklist" class="form-control" ng-class="{ 'has-error': !spamConfigChangeForm.blacklist.$dirty && spamConfig.error.blacklist }" rows="4"></textarea>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
2020-11-12 11:42:11 +01:00
|
|
|
<label class="control-label">{{ 'emails.spamFilterDialog.customRules' | tr }} <sup><a ng-href="https://docs.cloudron.io/email/#custom-spam-filtering-rules" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
|
2020-08-22 13:01:25 -07:00
|
|
|
<div class="has-error" ng-show="spamConfig.error.config">{{ spamConfig.error.config }}</div>
|
2020-11-12 11:42:11 +01:00
|
|
|
<textarea ng-model="spamConfig.config" placeholder="{{ 'emails.spamFilterDialog.customRulesPlaceholder' | tr }}" class="form-control" name="config" ng-class="{ 'has-error': !spamConfigChangeForm.config.$dirty && spamConfig.error.config }" rows="4"></textarea>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<input class="ng-hide" type="submit"/>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-footer">
|
2020-11-12 11:42:11 +01:00
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
|
|
|
|
|
<button type="button" class="btn btn-success" ng-click="spamConfig.submit()"><i class="fa fa-circle-notch fa-spin" ng-show="spamConfig.busy"></i> {{ 'main.dialog.save' | tr }}</button>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2020-02-12 14:51:06 +01:00
|
|
|
|
|
|
|
|
<!-- Test email -->
|
|
|
|
|
<div class="modal fade" id="testEmailModal" tabindex="-1" role="dialog">
|
|
|
|
|
<div class="modal-dialog">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
2020-11-12 23:13:52 +01:00
|
|
|
<h4 class="modal-title">{{ 'emails.testMailDialog.title' | tr:{ domain: testEmail.domain.domain } }}</h4>
|
2020-02-12 14:51:06 +01:00
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<form name="testEmailForm" role="form" novalidate ng-submit="testEmail.submit()" autocomplete="off">
|
|
|
|
|
<fieldset>
|
|
|
|
|
<p class="has-error text-center" ng-show="testEmail.error">{{ testEmail.error.generic }}</p>
|
2020-11-12 23:13:52 +01:00
|
|
|
<p ng-bind-html="'emails.testMailDialog.description' | tr:{ domain: testEmail.domain.domain }"></p>
|
2020-02-12 14:51:06 +01:00
|
|
|
<br/>
|
|
|
|
|
<div class="form-group" ng-class="{ 'has-error': testEmail.error.key }">
|
2020-11-12 11:42:11 +01:00
|
|
|
<label class="control-label" for="inputTestEmailKey">{{ 'emails.testMailDialog.mailTo' | tr }}</label>
|
|
|
|
|
<input type="text" class="form-control" ng-model="testEmail.mailTo" id="inputTestMailTo" name="mailTo" ng-disabled="testEmail.busy" placeholder="{{ 'emails.testMailDialog.mailToPlaceholder' | tr }}" autofocus>
|
2020-02-12 14:51:06 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<input class="ng-hide" type="submit" ng-disabled="testEmailForm.$invalid"/>
|
|
|
|
|
</fieldset>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-footer ">
|
2020-11-12 11:42:11 +01:00
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
|
|
|
|
|
<button type="submit" class="btn btn-outline btn-success pull-right" ng-click="testEmail.submit()" ng-disabled="testEmail.$invalid || testEmail.busy"><i class="fa fa-circle-notch fa-spin" ng-show="testEmail.busy"></i> {{ 'emails.testMailDialog.sendAction' | tr }}</button>
|
2020-02-12 14:51:06 +01:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2021-12-08 11:33:36 -08:00
|
|
|
<div class="content">
|
2020-02-11 21:06:34 +01:00
|
|
|
<div class="text-left">
|
2021-02-18 11:25:38 +01:00
|
|
|
<h1>
|
|
|
|
|
{{ 'emails.title' | tr }}
|
2021-09-26 12:19:32 -07:00
|
|
|
|
2022-08-31 08:45:28 +02:00
|
|
|
<div class="pull-right">
|
|
|
|
|
<a class="btn btn-default" ng-show="user.isAtLeastOwner" href="#/emails-queue">{{ 'emails.action.queue' | tr }}</a>
|
|
|
|
|
<a class="btn btn-default" ng-show="user.isAtLeastOwner" href="#/emails-eventlog">{{ 'eventlog.title' | tr }}</a>
|
2021-09-26 12:19:32 -07:00
|
|
|
</div>
|
2021-02-18 11:25:38 +01:00
|
|
|
</h1>
|
2020-02-11 21:06:34 +01:00
|
|
|
</div>
|
|
|
|
|
|
2023-07-10 21:25:25 +05:30
|
|
|
<!-- domain listing -->
|
2020-02-11 22:07:58 -08:00
|
|
|
<div class="text-left">
|
2020-11-12 11:42:11 +01:00
|
|
|
<h3>{{ 'emails.domains.title' | tr }}</h3>
|
2020-02-11 22:07:58 -08:00
|
|
|
</div>
|
|
|
|
|
|
2021-12-08 11:33:36 -08:00
|
|
|
<div class="card" style="margin-bottom: 15px;">
|
2020-02-11 21:06:34 +01:00
|
|
|
<div class="row ng-hide" ng-hide="ready">
|
|
|
|
|
<div class="col-lg-12 text-center">
|
|
|
|
|
<h2><i class="fa fa-circle-notch fa-spin"></i></h2>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row animateMeOpacity ng-hide" ng-show="ready">
|
|
|
|
|
<div class="col-xs-12">
|
|
|
|
|
<table class="table table-hover" style="margin: 0;">
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
2020-02-12 14:10:21 +01:00
|
|
|
<th style="width: 5%"></th>
|
2020-11-12 11:42:11 +01:00
|
|
|
<th style="width: 30%">{{ 'emails.domains.domain' | tr }}</th>
|
|
|
|
|
<th style="width: 60%">{{ 'emails.domains.config' | tr }}</th>
|
2020-11-11 22:50:57 +01:00
|
|
|
<th style="width: 10%">{{ 'main.actions' | tr }}</th>
|
2020-02-11 21:06:34 +01:00
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<tr ng-repeat="domain in domains">
|
2020-02-12 14:10:21 +01:00
|
|
|
<td>
|
2022-02-16 18:52:34 +01:00
|
|
|
<i class="fa fa-circle" ng-class="{ 'status-active': domain.statusOk, 'status-error': !domain.statusOk }" ng-show="domain.status"></i>
|
2020-02-12 14:10:21 +01:00
|
|
|
<i class="fa fa-circle-notch fa-spin" ng-hide="domain.status"></i>
|
|
|
|
|
</td>
|
2020-02-11 21:06:34 +01:00
|
|
|
<td class="elide-table-cell no-padding">
|
|
|
|
|
<a href="/#/email/{{ domain.domain }}" class="email-domain-list-item">{{ domain.domain }}</a>
|
|
|
|
|
</td>
|
2020-02-20 12:35:51 -08:00
|
|
|
<td class="elide-table-cell no-padding">
|
|
|
|
|
<a href="/#/email/{{ domain.domain }}" class="email-domain-list-item">
|
2023-03-25 12:06:33 +01:00
|
|
|
<span ng-show="domain.inbound && domain.outbound && domain.usage === null">{{ 'main.loadingPlaceholder' | tr }} ...</span>
|
|
|
|
|
<span ng-show="domain.inbound && domain.outbound && domain.usage !== null">{{ 'emails.domains.stats' | tr:{ mailboxCount: domain.mailboxCount, usage: (domain.usage | prettyDecimalSize) } }}</span>
|
2020-11-12 11:42:11 +01:00
|
|
|
<span ng-show="!domain.inbound && domain.outbound">{{ 'emails.domains.outbound' | tr }}</span>
|
|
|
|
|
<span ng-show="!domain.inbound && !domain.outbound">{{ 'emails.domains.disabled' | tr }}</span>
|
2020-02-20 12:35:51 -08:00
|
|
|
</a>
|
|
|
|
|
</td>
|
2020-02-11 21:06:34 +01:00
|
|
|
<td class="text-right no-wrap">
|
2020-11-12 11:42:11 +01:00
|
|
|
<button class="btn btn-xs btn-default" ng-click="testEmail.show(domain)" uib-tooltip="{{ 'emails.domains.testEmailTooltip' | tr }}"><i class="fa fa-paper-plane"></i></button>
|
2020-02-12 14:51:06 +01:00
|
|
|
<a href="/#/email/{{ domain.domain }}" class="btn btn-xs btn-default"><i class="fa fa-pencil-alt"></i></a>
|
2020-02-11 21:06:34 +01:00
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2023-07-10 21:25:25 +05:30
|
|
|
<!-- mailbox sharing -->
|
2023-05-02 14:29:52 +02:00
|
|
|
<div class="text-left section-header" ng-show="user.isAtLeastOwner">
|
2021-12-08 11:33:36 -08:00
|
|
|
<h3>{{ 'emails.mailboxSharing.title' | tr }}</h3>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="card" ng-show="user.isAtLeastOwner" style="margin-bottom: 15px;">
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<p>{{ 'emails.mailboxSharing.description' | tr }}</p>
|
2022-02-16 18:48:22 +01:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-2" style="padding-top: 12px;">
|
|
|
|
|
<i class="fa fa-circle" ng-class="{ 'status-active': mailboxSharing.enabled, 'status-inactive': !mailboxSharing.enabled }"></i> {{ mailboxSharing.enabled ? 'main.statusEnabled' : 'main.statusDisabled' | tr }}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-10 text-right">
|
|
|
|
|
<button class="btn" ng-class="{ 'btn-danger': mailboxSharing.enabled, 'btn-primary': !mailboxSharing.enabled }" ng-click="mailboxSharing.submit()" ng-disabled="mailboxSharing.enable === mailboxSharing.enabled"><i class="fa fa-circle-notch fa-spin" ng-show="mailboxSharing.busy"></i> {{ mailboxSharing.enabled ? ('main.disableAction' | tr) : ('main.enableAction' | tr) }} </button>
|
2021-12-08 11:33:36 -08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2023-07-10 21:25:25 +05:30
|
|
|
<!-- server location -->
|
2023-05-02 14:29:52 +02:00
|
|
|
<div class="text-left section-header" ng-show="user.isAtLeastOwner">
|
2023-07-10 21:25:25 +05:30
|
|
|
<h3>
|
|
|
|
|
{{ 'emails.settings.location' | tr }}
|
|
|
|
|
<div class="btn-group btn-group-sm pull-right">
|
|
|
|
|
<button type="button" class="btn btn-small btn-default dropdown-toggle" ng-show="mailLocation.tasks.length" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" uib-tooltip="{{ 'main.action.showLogs' | tr }}">
|
|
|
|
|
<i class="fas fa-align-left"></i> <span class="caret"></span>
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu">
|
|
|
|
|
<li ng-repeat="task in mailLocation.tasks">
|
2023-07-12 14:33:57 +02:00
|
|
|
<a ng-href="/frontend/logs.html?taskId={{task.id}}" target="_blank" class="text-right">
|
2023-07-10 21:25:25 +05:30
|
|
|
{{ task.ts | prettyLongDate }} <i class="fa" style="margin-left: 20px" ng-class="{ 'status-active fa-check-circle': !task.active && task.success, 'fa-circle-notch fa-spin': task.active, 'status-error fa-times-circle': !task.active && !task.success }"></i>
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</h3>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
|
2023-07-10 21:25:25 +05:30
|
|
|
<div class="card">
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-7">
|
|
|
|
|
<p ng-bind-html="'emails.changeDomainDialog.description' | tr"></p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-5">
|
|
|
|
|
<div class="input-group form-inline">
|
|
|
|
|
<input type="text" class="form-control" ng-model="mailLocation.subdomain" id="mailLocationLocationInput" name="location" placeholder="{{ 'emails.changeDomainDialog.locationPlaceholder' | tr }}" autofocus>
|
|
|
|
|
|
|
|
|
|
<div class="input-group-btn">
|
|
|
|
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
|
|
|
|
<span>{{ (!mailLocation.subdomain ? '' : '.') + mailLocation.domain.domain }}</span>
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu dropdown-menu-right" role="menu">
|
|
|
|
|
<li ng-repeat="domain in domains">
|
|
|
|
|
<a href="" ng-click="mailLocation.domain = domain">{{ domain.domain }}</a>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2020-08-17 22:44:01 +02:00
|
|
|
|
|
|
|
|
<div class="row">
|
2023-07-10 21:25:25 +05:30
|
|
|
<div class="col-md-12" style="margin-bottom: 10px;">
|
|
|
|
|
<div ng-show="mailLocation.busy" class="progress progress-striped active animateMe">
|
|
|
|
|
<div class="progress-bar progress-bar-success" role="progressbar" style="width: {{ mailLocation.percent }}%"></div>
|
|
|
|
|
</div>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
2023-07-10 21:25:25 +05:30
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<p class="text-center text-warning text-bold" ng-show="mailLocation.domain.provider === 'manual'" ng-bind-html="'emails.changeDomainDialog.manualInfo' | tr:{ domain: mailLocation.domain.domain }"></p>
|
|
|
|
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<p ng-show="mailLocation.busy">{{ mailLocation.message }}</p>
|
|
|
|
|
<p ng-hide="mailLocation.busy">
|
|
|
|
|
<div class="has-error" ng-show="!mailLocation.active">{{ mailLocation.errorMessage }}</div>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6 text-right">
|
|
|
|
|
<!-- save is always enabled so that user can "redo" the task -->
|
|
|
|
|
<button class="btn btn-outline btn-primary" ng-click="mailLocation.change()" ng-hide="mailLocation.busy">{{ 'main.dialog.save' | tr }}</button>
|
|
|
|
|
<button class="btn btn-outline btn-danger" ng-click="mailLocation.stop()" ng-show="mailLocation.busy" style="margin-right: 10px">{{ 'main.dialog.cancel' | tr }}</button>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
2023-07-10 21:25:25 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- settings -->
|
|
|
|
|
<div class="text-left section-header" ng-show="user.isAtLeastOwner">
|
|
|
|
|
<h3>{{ 'emails.settings.title' | tr }}</h3>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="card" ng-show="user.isAtLeastOwner" style="margin-bottom: 15px;">
|
|
|
|
|
<p ng-bind-html=" 'emails.settings.info' | tr "></p>
|
|
|
|
|
<div class="row">
|
2020-08-17 22:44:01 +02:00
|
|
|
<div class="col-xs-6">
|
2020-11-12 11:42:11 +01:00
|
|
|
<span class="text-muted">{{ 'emails.settings.maxMailSize' | tr }}</span>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="col-xs-6 text-right">
|
Fix SI and Decimal unit usage
SI: For 1000, it is kB, MB, GB
IEC: For 1024, it is KiB, MiB, GiB
JEDEC: For 1024, it is KB, MB (conflicts with SI, of course)
Ultimately, what we decided is for RAM use IEC and for Disk use SI.
This is what docker does and also suggested here -
https://stackoverflow.com/questions/8632269/displaying-file-size-1000b-1kb-or-1024b-1kb
2022-10-13 21:48:03 +02:00
|
|
|
<span>{{ maxEmailSize.currentSize | prettyDecimalSize }} <a href="" ng-click="maxEmailSize.show()"><i class="fa fa-edit text-small"></i></a></span>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
2021-10-13 14:22:37 -07:00
|
|
|
<div class="col-xs-6">
|
|
|
|
|
<span class="text-muted">{{ 'emails.settings.acl' | tr }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-xs-6 text-right">
|
|
|
|
|
<span>{{ 'emails.settings.aclOverview' | tr:{ dnsblZonesCount: acl.dnsblZonesCount } }} <a href="" ng-click="acl.show()"><i class="fa fa-edit text-small"></i></a></span>
|
|
|
|
|
</div>
|
2020-08-17 22:44:01 +02:00
|
|
|
<div class="col-xs-6">
|
2020-11-12 11:42:11 +01:00
|
|
|
<span class="text-muted">{{ 'emails.settings.spamFilter' | tr }}</span>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="col-xs-6 text-right">
|
2020-11-12 23:13:52 +01:00
|
|
|
<span>{{ 'emails.settings.spamFilterOverview' | tr:{ blacklistCount: spamConfig.acl.blacklist.length } }} <a href="" ng-click="spamConfig.show()"><i class="fa fa-edit text-small"></i></a></span>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
2020-11-19 17:45:16 -08:00
|
|
|
<div class="col-xs-6">
|
|
|
|
|
<span class="text-muted">{{ 'emails.settings.solrFts' | tr }}</span>
|
|
|
|
|
</div>
|
2022-02-09 16:22:44 +01:00
|
|
|
<div class="col-xs-6 text-right" ng-hide="solrConfig.currentConfig">
|
|
|
|
|
<i class="fa fa-circle-notch fa-spin"></i>
|
|
|
|
|
</div>
|
2020-12-02 17:33:54 -08:00
|
|
|
<div class="col-xs-6 text-right" ng-show="solrConfig.currentConfig">
|
2020-12-02 17:16:59 -08:00
|
|
|
<span ng-show="solrConfig.currentConfig.enabled">
|
|
|
|
|
{{ 'emails.settings.solrEnabled' | tr }}
|
|
|
|
|
<span ng-show="solrConfig.running">/ {{ 'emails.settings.solrRunning' | tr }}</span>
|
|
|
|
|
<span ng-hide="solrConfig.running">/ {{ 'emails.settings.solrNotRunning' | tr }}</span>
|
|
|
|
|
</span>
|
2020-11-19 17:45:16 -08:00
|
|
|
<span ng-hide="solrConfig.currentConfig.enabled">{{ 'emails.settings.solrDisabled' | tr }}</span>
|
|
|
|
|
<a href="" ng-click="solrConfig.show()"><i class="fa fa-edit text-small"></i></a>
|
|
|
|
|
</div>
|
2020-08-17 22:44:01 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2020-02-11 21:06:34 +01:00
|
|
|
</div>
|