diff --git a/data/web/css/build/013-mailcow.css b/data/web/css/build/013-mailcow.css
index 67034709..c49a8463 100644
--- a/data/web/css/build/013-mailcow.css
+++ b/data/web/css/build/013-mailcow.css
@@ -67,7 +67,7 @@
height: 44px;
display: flex;
align-items: center;
- margin: 0 10px;
+ padding: 0 10px !important;
}
.navbar-fixed-bottom .navbar-collapse,
.navbar-fixed-top .navbar-collapse {
@@ -267,6 +267,10 @@ code {
.dtr-title {
width: 20%;
}
+table.dataTable>tbody>tr.child ul.dtr-details>li {
+ border-bottom: 1px solid rgba(239, 239, 239, 0.129);
+ padding: 0.5em 0;
+}
.tag-box {
display: flex;
@@ -291,7 +295,7 @@ code {
}
.tag-input {
margin-left: 10px;
- border: 0;
+ border: 0 !important;
flex: 1;
height: 24px;
min-width: 150px;
diff --git a/data/web/css/site/admin.css b/data/web/css/site/admin.css
index bff4f204..e49046b0 100644
--- a/data/web/css/site/admin.css
+++ b/data/web/css/site/admin.css
@@ -25,7 +25,6 @@ body.modal-open {
}
.mass-actions-admin {
user-select: none;
- padding:10px 0 10px 0;
}
.inputMissingAttr {
border-color: #FF4136;
diff --git a/data/web/css/site/debug.css b/data/web/css/site/debug.css
index 39c3a866..6e15c2b0 100644
--- a/data/web/css/site/debug.css
+++ b/data/web/css/site/debug.css
@@ -26,7 +26,6 @@
}
.mass-actions-debug {
user-select: none;
- padding:10px 0 10px 10px;
}
.inputMissingAttr {
border-color: #FF4136;
diff --git a/data/web/css/site/edit.css b/data/web/css/site/edit.css
index e8fb819d..b0d93839 100644
--- a/data/web/css/site/edit.css
+++ b/data/web/css/site/edit.css
@@ -21,7 +21,6 @@
}
.mass-actions-user {
user-select: none;
- padding:10px 0 10px 0;
}
.inputMissingAttr {
border-color: #FF4136;
diff --git a/data/web/css/site/mailbox.css b/data/web/css/site/mailbox.css
index 4822a6fd..f62ead31 100644
--- a/data/web/css/site/mailbox.css
+++ b/data/web/css/site/mailbox.css
@@ -32,7 +32,6 @@
}
.mass-actions-mailbox {
user-select: none;
- padding:10px 0 10px 10px;
}
.inputMissingAttr {
border-color: #FF4136;
diff --git a/data/web/css/site/quarantine.css b/data/web/css/site/quarantine.css
index 36346965..98a74d66 100644
--- a/data/web/css/site/quarantine.css
+++ b/data/web/css/site/quarantine.css
@@ -35,7 +35,6 @@
.mass-actions-quarantine {
user-select: none;
- padding: 10px;
}
.inputMissingAttr {
diff --git a/data/web/css/site/user.css b/data/web/css/site/user.css
index 27a438ca..b1148d5f 100644
--- a/data/web/css/site/user.css
+++ b/data/web/css/site/user.css
@@ -21,7 +21,6 @@
}
.mass-actions-user {
user-select: none;
- padding:10px 0;
}
.inputMissingAttr {
border-color: #FF4136;
diff --git a/data/web/js/build/014-mailcow.js b/data/web/js/build/014-mailcow.js
index fa66d023..154b80c2 100644
--- a/data/web/js/build/014-mailcow.js
+++ b/data/web/js/build/014-mailcow.js
@@ -303,7 +303,7 @@ $(document).ready(function() {
if (!Array.isArray(value_tags)) value_tags = [];
if (value_tags.includes(tag)) return;
- $(' ' + tag + '').insertBefore('.tag-input').click(function(){
+ $(' ' + tag + '').insertBefore('.tag-input').click(function(){
var del_tag = unescapeHtml($(this).text());
var del_tags = [];
try {
diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js
index 5cf447fd..8350e92d 100644
--- a/data/web/js/site/mailbox.js
+++ b/data/web/js/site/mailbox.js
@@ -236,17 +236,19 @@ jQuery(function($){
if (Array.isArray(item.tags)){
var tags = '';
for (var i = 0; i < item.tags.length; i++)
- tags += ' ' + escapeHtml(item.tags[i]) + '';
+ tags += ' ' + escapeHtml(item.tags[i]) + '';
item.tags = tags;
+ } else {
+ item.tags = '';
}
if (item.backupmx == 1) {
if (item.relay_unknown_only == 1) {
- item.domain_name = '
Relay Non-Local
' + item.domain_name;
+ item.domain_name = 'Relay Non-Local
' + item.domain_name;
} else if (item.relay_all_recipients == 1) {
- item.domain_name = 'Relay All
' + item.domain_name;
+ item.domain_name = 'Relay All
' + item.domain_name;
} else {
- item.domain_name = 'Relay
' + item.domain_name;
+ item.domain_name = 'Relay
' + item.domain_name;
}
}
});
@@ -325,6 +327,17 @@ jQuery(function($){
title: lang.domain_admins,
data: 'domain_admins'
},
+ {
+ title: 'Tags',
+ data: 'tags'
+ },
+ {
+ title: lang.active,
+ data: 'active',
+ render: function (data, type) {
+ return 1==data?'':(0==data?'':2==data&&'—');
+ }
+ },
{
title: lang.action,
data: 'action',
@@ -415,8 +428,10 @@ jQuery(function($){
if (Array.isArray(item.tags)){
var tags = '';
for (var i = 0; i < item.tags.length; i++)
- tags += ' ' + escapeHtml(item.tags[i]) + '';
+ tags += ' ' + escapeHtml(item.tags[i]) + '';
item.tags = tags;
+ } else {
+ item.tags = '';
}
});
@@ -508,6 +523,10 @@ jQuery(function($){
title: lang.msg_num,
data: 'messages'
},
+ {
+ title: 'Tags',
+ data: 'tags'
+ },
{
title: lang.active,
data: 'active',
@@ -535,11 +554,11 @@ jQuery(function($){
dataSrc: function(json){
$.each(json, function (i, item) {
if (item.multiple_bookings == '0') {
- item.multiple_bookings = '' + lang.booking_0_short + '';
+ item.multiple_bookings = '' + lang.booking_0_short + '';
} else if (item.multiple_bookings == '-1') {
- item.multiple_bookings = '' + lang.booking_lt0_short + '';
+ item.multiple_bookings = '' + lang.booking_lt0_short + '';
} else {
- item.multiple_bookings = '' + lang.booking_custom_short + ' (' + item.multiple_bookings + ')';
+ item.multiple_bookings = '' + lang.booking_custom_short + ' (' + item.multiple_bookings + ')';
}
item.action = '' +
'
' + lang.edit + '' +
@@ -627,9 +646,9 @@ jQuery(function($){
item.local_dest = escapeHtml(item.local_dest);
item.bcc_dest = escapeHtml(item.bcc_dest);
if (item.type == 'sender') {
- item.type = '
' + lang.bcc_sender_map + '';
+ item.type = '
' + lang.bcc_sender_map + '';
} else {
- item.type = '
' + lang.bcc_rcpt_map + '';
+ item.type = '
' + lang.bcc_rcpt_map + '';
}
});
@@ -877,7 +896,7 @@ jQuery(function($){
item.private_comment = '-';
}
if (item.is_catch_all == 1) {
- item.address = '
' + lang.catch_all + '
' + escapeHtml(item.address);
+ item.address = '
' + lang.catch_all + '
' + escapeHtml(item.address);
}
else {
item.address = escapeHtml(item.address);
@@ -886,10 +905,10 @@ jQuery(function($){
item.goto = '⤷
';
}
else if (item.goto == "spam@localhost") {
- item.goto = '
' + lang.goto_spam + '';
+ item.goto = '
' + lang.goto_spam + '';
}
else if (item.goto == "ham@localhost") {
- item.goto = '
' + lang.goto_ham + '';
+ item.goto = '
' + lang.goto_ham + '';
}
if (item.in_primary_domain !== "") {
item.domain = '
' + item.domain;
@@ -984,7 +1003,7 @@ jQuery(function($){
'
';
item.chkbox = '';
if(item.parent_is_backupmx == '1') {
- item.target_domain = '' + item.target_domain + ' ' + lang.alias_domain_backupmx + '
';
+ item.target_domain = '' + item.target_domain + ' ' + lang.alias_domain_backupmx + '
';
} else {
item.target_domain = '' + item.target_domain + '';
}
@@ -1073,9 +1092,9 @@ jQuery(function($){
'';
item.chkbox = '';
if (item.is_running == 1) {
- item.is_running = '' + lang.running + '';
+ item.is_running = '' + lang.running + '';
} else {
- item.is_running = '' + lang.waiting + '';
+ item.is_running = '' + lang.waiting + '';
}
if (!item.last_run > 0) {
item.last_run = lang.waiting;
@@ -1180,12 +1199,12 @@ jQuery(function($){
dataSrc: function(json){
$.each(json, function (i, item) {
if (item.active == 1) {
- item.active = '' + lang.active + '';
+ item.active = '' + lang.active + '';
} else {
- item.active = '' + lang.inactive + '';
+ item.active = '' + lang.inactive + '';
}
item.script_data = '' + escapeHtml(item.script_data) + '
'
- item.filter_type = '' + item.filter_type.charAt(0).toUpperCase() + item.filter_type.slice(1).toLowerCase() + '
'
+ item.filter_type = '' + item.filter_type.charAt(0).toUpperCase() + item.filter_type.slice(1).toLowerCase() + '
'
item.action = '' +
'
' + lang.edit + '' +
'
' + lang.remove + '' +
diff --git a/data/web/js/site/qhandler.js b/data/web/js/site/qhandler.js
index 31ac569c..4fcc9634 100644
--- a/data/web/js/site/qhandler.js
+++ b/data/web/js/site/qhandler.js
@@ -46,11 +46,11 @@ jQuery(function($){
}
if (typeof data.score !== 'undefined' && typeof data.action !== 'undefined') {
if (data.action === "add header") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.junk_folder + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.junk_folder + '');
} else if (data.action === "reject") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rejected + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rejected + '');
} else if (data.action === "rewrite subject") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rewrite_subject + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rewrite_subject + '');
}
}
if (typeof data.recipients !== 'undefined') {
diff --git a/data/web/js/site/quarantine.js b/data/web/js/site/quarantine.js
index 3deae87b..7848ebe7 100644
--- a/data/web/js/site/quarantine.js
+++ b/data/web/js/site/quarantine.js
@@ -31,16 +31,16 @@ jQuery(function($){
item.score = '-';
}
if (item.virus_flag > 0) {
- item.virus = '
' + lang.high_danger + '';
+ item.virus = '
' + lang.high_danger + '';
} else {
- item.virus = '
' + lang.neutral_danger + '';
+ item.virus = '
' + lang.neutral_danger + '';
}
if (item.action === "reject") {
- item.rspamdaction = '
' + lang.rejected + '';
+ item.rspamdaction = '
' + lang.rejected + '';
} else if (item.action === "add header") {
- item.rspamdaction = '
' + lang.junk_folder + '';
+ item.rspamdaction = '
' + lang.junk_folder + '';
} else if (item.action === "rewrite subject") {
- item.rspamdaction = '
' + lang.rewrite_subject + '';
+ item.rspamdaction = '
' + lang.rewrite_subject + '';
}
if(item.notified > 0) {
item.notified = '✔';
@@ -192,11 +192,11 @@ jQuery(function($){
}
if (typeof data.score !== 'undefined' && typeof data.action !== 'undefined') {
if (data.action == "add header") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.junk_folder + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.junk_folder + '');
} else if (data.action == "reject") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rejected + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rejected + '');
} else if (data.action == "rewrite subject") {
- $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rewrite_subject + '');
+ $('#qid_detail_score').append('
' + data.score + ' - ' + lang.rewrite_subject + '');
}
}
if (typeof data.recipients !== 'undefined') {
diff --git a/data/web/js/site/user.js b/data/web/js/site/user.js
index 4ad3fbcb..8a6994b5 100644
--- a/data/web/js/site/user.js
+++ b/data/web/js/site/user.js
@@ -101,7 +101,7 @@ jQuery(function($){
$.each(data.sasl, function (i, item) {
var datetime = new Date(item.datetime.replace(/-/g, "/"));
var local_datetime = datetime.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
- var service = '
' + item.service.toUpperCase() + '
';
+ var service = '
' + item.service.toUpperCase() + '
';
var app_password = item.app_password ? '
' + escapeHtml(item.app_password_name || "App") + '' : '';
var real_rip = item.real_rip.startsWith("Web") ? item.real_rip : '
' + item.real_rip + "";
var ip_location = item.location ? '
' : '';
@@ -221,9 +221,9 @@ jQuery(function($){
item.chkbox = '
';
}
if (item.is_running == 1) {
- item.is_running = '
' + lang.running + '';
+ item.is_running = '
' + lang.running + '';
} else {
- item.is_running = '
' + lang.waiting + '';
+ item.is_running = '
' + lang.waiting + '';
}
if (!item.last_run > 0) {
item.last_run = lang.waiting;
diff --git a/data/web/templates/edit/domain.twig b/data/web/templates/edit/domain.twig
index 735b41a1..81d04d6e 100644
--- a/data/web/templates/edit/domain.twig
+++ b/data/web/templates/edit/domain.twig
@@ -23,12 +23,12 @@
-