diff --git a/data/web/css/build/013-mailcow.css b/data/web/css/build/013-mailcow.css index b4314132..ef4c92f7 100644 --- a/data/web/css/build/013-mailcow.css +++ b/data/web/css/build/013-mailcow.css @@ -78,7 +78,7 @@ .btn-group-xs > .btn, .btn-xs { padding: .25rem .4rem; font-size: .875rem; - line-height: .5; + line-height: 1rem; border-radius: .2rem; } .icon-spin { diff --git a/data/web/css/build/014-responsive.css b/data/web/css/build/014-responsive.css new file mode 100644 index 00000000..a6a52cbd --- /dev/null +++ b/data/web/css/build/014-responsive.css @@ -0,0 +1,203 @@ +.btn-xs-lg>.lang-sm:after { + margin-left: 4px; +} + +.bootstrap-select { + max-width: 350px; +} + +.card-login .apps .btn { + width: auto; + float: left; + margin-right: 10px; + margin-top: auto; +} +.card-login .apps .btn:hover { + margin-top: 1px !important; + border-bottom-width: 3px; +} + +.responsive-tabs .nav-tabs { + display: none; +} + +.dataTables_paginate.paging_simple_numbers .pagination { + display: flex; + flex-wrap: wrap; +} + +@media (min-width: 768px) { + .responsive-tabs .nav-tabs { + display: flex; + } + + .responsive-tabs .card .card-body.collapse { + display: block; + } +} + + +@media (max-width: 767px) { + .responsive-tabs .tab-pane { + display: block !important; + opacity: 1; + } + + .card-login .apps .btn { + width: 100%; + float: none; + margin-bottom: 10px; + } + + .card-login .apps .btn { + border-bottom-width: 4px; + } + + .xs-show { + display: block !important; + } + + .recent-login-success { + font-size: 14px; + margin-top: 10px !important; + } + .pull-xs-right { + float: right !important; + } + .pull-xs-right .dropdown-menu { + right: 0; + left: auto; + } + .text-xs-left { + text-align: left; + } + .text-xs-bold { + font-weight: bold; + } + .text-xs-bold .small { + font-weight: normal; + text-align: justify; + } + .btn.d-block { + width: 100%; + white-space: normal; + } + .btn.btn-xs-half, + .btn.d-block.btn-xs-half { + width: 50%; + } + .btn.btn-xs-third, + .btn.d-block.btn-xs-third { + width: 33.33%; + } + .btn.btn-xs-quart, + .btn.d-block.btn-xs-quart { + width: 25%; + } + .btn.d-block.btn-sm, + .btn-xs-lg { + padding: .5rem 1rem; + line-height: 20px; + } + .input-xs-lg { + height: 47px; + padding: 13px 16px; + } + .btn-group:not(.input-group-btn) { + display: flex; + flex-wrap: wrap; + } + .btn-group.nowrap { + flex-wrap: nowrap; + } + .btn-group.nowrap .dropdown-menu { + width: 100%; + } + .card-login .btn-group { + display: block; + } + .mass-actions-user .btn-group { + float: none; + } + div[class^='mass-actions'] .dropdown-menu, + .card-xs-lg .dropdown-menu, + .dropdown-menu.login { + width: 100%; + } + div[class^='mass-actions'] .btn-group .dropdown-menu { + top: 50%; + } + div[class^='mass-actions'] .btn-group .btn-group .dropdown-menu, + div.mass-actions-quarantine .btn-group .dropdown-menu, + .card-xs-lg .dropdown-menu { + top: 100%; + } + div[class^='mass-actions'] .dropdown-menu>li>a, + .card-xs-lg .dropdown-menu>li>a, + .dropdown-menu.login>li>a { + padding: 8px 20px; + } + div[class^='mass-actions'] .dropdown-header { + font-size: 14px; + font-weight: bold; + } + .top100 { + top: 100% !important; + } + .top33 { + top: 33% !important; + } + .footable-filtering .form { + width: 65%; + } + .btn-xs-lg>.lang-sm:after { + top: 1px; + } + .pagination { + margin-bottom: 5px; + } + .mass-actions-mailbox { + padding: 0; + } + .card-xs-lg .card-header { + height: 66px; + line-height: 47px; + } + .card-xs-lg .btn-group .btn { + padding-right: 5px; + padding-left: 5px; + } + .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) { + width: 100%; + } + .btn-group:not(.bootstrap-select) { + width: auto !important; + } + .bootstrap-select { + max-width: 100%; + } + .bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text { + margin-right: 14px; + white-space: normal; + } + .btn-group > .btn-group { + flex-basis: 100%; + } + .btn-group .btn { + display: flex !important; + align-items: center; + justify-content: center; + } + .btn-group .btn i { + margin-right: 5px; + } + .card-login .btn-group .btn { + display: block !important; + } +} + +@media (max-width: 350px) { + .mailcow-logo img { + max-width: 250px; + } +} diff --git a/data/web/js/build/006-notifications.min.js b/data/web/js/build/006-notifications.min.js index 01e7f309..7837ea5b 100644 --- a/data/web/js/build/006-notifications.min.js +++ b/data/web/js/build/006-notifications.min.js @@ -1 +1 @@ -!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function s(s){var e=!1;return t('[data-notify="container"]').each(function(i,n){var a=t(n),o=a.find('[data-notify="title"]').text().trim(),r=a.find('[data-notify="message"]').html().trim(),l=o===t("
"+s.settings.content.title+"
").html().trim(),d=r===t("
"+s.settings.content.message+"
").html().trim(),g=a.hasClass("alert-"+s.settings.type);return l&&d&&g&&(e=!0),!e}),e}function e(e,n,a){var o={content:{message:"object"==typeof n?n.message:n,title:n.title?n.title:"",icon:n.icon?n.icon:"",url:n.url?n.url:"#",target:n.target?n.target:"-"}};a=t.extend(!0,{},o,a),this.settings=t.extend(!0,{},i,a),this._defaults=i,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&!s(this))&&this.init()}var i={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var t=arguments[0],s=1;s .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[n],this.$ele.addClass("alert-"+i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[n]);break;case"icon":var a=this.$ele.find('[data-notify="icon"]');"class"===t.settings.icon_type.toLowerCase()?a.removeClass(t.settings.content.icon).addClass(i[n]):(a.is("img")||a.find("img"),a.attr("src",i[n]));break;case"progress":var o=t.settings.delay-t.settings.delay*(i[n]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[n]).css("width",i[n]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[n]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[n]);break;default:this.$ele.find('[data-notify="'+n+'"]').html(i[n])}var r=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(r)},close:function(){t.close()}}},buildNotify:function(){var s=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,s.title,s.message,s.url,s.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var s=this,e=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){e=Math.max(e,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),this.settings.newest_on_top===!0&&(e=this.settings.offset.y),i[this.settings.placement.from]=e+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit-","moz-","o-","ms-",""),function(t,e){s.$ele[0].style[e+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),this.settings.newest_on_top===!0&&(e=parseInt(e)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(e)),t.isFunction(s.settings.onShow)&&s.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){s.$ele.removeClass(s.settings.animate.enter),t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)},600)},bind:function(){var s=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){s.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){s.$ele.data("notify-delay",s.settings.delay);var e=setInterval(function(){var t=parseInt(s.$ele.data("notify-delay"))-s.settings.timer;if("false"===s.$ele.data("data-hover")&&"pause"===s.settings.mouse_over||"pause"!=s.settings.mouse_over){var i=(s.settings.delay-t)/s.settings.delay*100;s.$ele.data("notify-delay",t),s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-s.settings.timer&&(clearInterval(e),s.close())},s.settings.timer)}},close:function(){var s=this,e=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),s.reposition(e),t.isFunction(s.settings.onClose)&&s.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(s.settings.onClosed)&&s.settings.onClosed.call(this)}),setTimeout(function(){i||(s.$ele.remove(),s.settings.onClosed&&s.settings.onClosed(s.$ele))},600)},reposition:function(s){var e=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);this.settings.newest_on_top===!0&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(e.settings.placement.from,s),s=parseInt(s)+parseInt(e.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(s){return i=t.extend(!0,{},i,s)},t.notifyClose=function(s){"warning"===s&&(s="danger"),"undefined"==typeof s||"all"===s?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===s||"info"===s||"warning"===s||"danger"===s?t(".alert-"+s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):s?t(s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+s+'"]').find('[data-notify="dismiss"]').trigger("click")},t.notifyCloseExcept=function(s){"warning"===s&&(s="danger"),"success"===s||"info"===s||"warning"===s||"danger"===s?t("[data-notify]").not(".alert-"+s).find('[data-notify="dismiss"]').trigger("click"):t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(h,b,d){var f,e,g={content:{message:"object"==typeof b?b.message:b,title:b.title?b.title:"",icon:b.icon?b.icon:"",url:b.url?b.url:"#",target:b.target?b.target:"-"}};d=a.extend(!0,{},g,d),this.settings=a.extend(!0,{},c,d),this._defaults=c,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),!this.settings.allow_duplicates&&(this.settings.allow_duplicates||(f=this,e=!1,a('[data-notify="container"]').each(function(k,c){var b=a(c),d=b.find('[data-notify="title"]').text().trim(),g=b.find('[data-notify="message"]').html().trim(),h=d===a("
"+f.settings.content.title+"
").html().trim(),i=g===a("
"+f.settings.content.message+"
").html().trim(),j=b.hasClass("alert-"+f.settings.type);return h&&i&&j&&(e=!0),!e}),e))||this.init()}var c={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var b=arguments[0],a=1;a .progress-bar').removeClass("progress-bar-"+a.settings.type),a.settings.type=b[c],this.$ele.addClass("alert-"+b[c]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+b[c]);break;case"icon":var d=this.$ele.find('[data-notify="icon"]');"class"===a.settings.icon_type.toLowerCase()?d.removeClass(a.settings.content.icon).addClass(b[c]):(d.is("img")||d.find("img"),d.attr("src",b[c]));break;case"progress":var g=a.settings.delay-a.settings.delay*(b[c]/100);this.$ele.data("notify-delay",g),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",b[c]).css("width",b[c]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",b[c]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",b[c]);break;default:this.$ele.find('[data-notify="'+c+'"]').html(b[c])}var h=this.$ele.outerHeight()+parseInt(a.settings.spacing)+parseInt(a.settings.offset.y);a.reposition(h)},close:function(){a.close()}}},buildNotify:function(){var b=this.settings.content;this.$ele=a(String.format(this.settings.template,this.settings.type,b.title,b.message,b.url,b.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(!(this.settings.delay<=0)||this.settings.showProgressbar)&&this.settings.showProgressbar||this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var d=this,b=this.settings.offset.y,c={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},e=!1,f=this.settings;switch(a('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){b=Math.max(b,parseInt(a(this).css(f.placement.from))+parseInt(a(this).outerHeight())+parseInt(f.spacing))}),!0===this.settings.newest_on_top&&(b=this.settings.offset.y),c[this.settings.placement.from]=b+"px",this.settings.placement.align){case"left":case"right":c[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":c.left=0,c.right=0}this.$ele.css(c).addClass(this.settings.animate.enter),a.each(Array("webkit-","moz-","o-","ms-",""),function(b,a){d.$ele[0].style[a+"AnimationIterationCount"]=1}),a(this.settings.element).append(this.$ele),!0===this.settings.newest_on_top&&(b=parseInt(b)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(b)),a.isFunction(d.settings.onShow)&&d.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){e=!0}).one(this.animations.end,function(){d.$ele.removeClass(d.settings.animate.enter),a.isFunction(d.settings.onShown)&&d.settings.onShown.call(this)}),setTimeout(function(){e||a.isFunction(d.settings.onShown)&&d.settings.onShown.call(this)},600)},bind:function(){var b=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){b.close()}),this.$ele.mouseover(function(){a(this).data("data-hover","true")}).mouseout(function(){a(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){b.$ele.data("notify-delay",b.settings.delay);var c=setInterval(function(){var a=parseInt(b.$ele.data("notify-delay"))-b.settings.timer;if("false"===b.$ele.data("data-hover")&&"pause"===b.settings.mouse_over||"pause"!=b.settings.mouse_over){var d=(b.settings.delay-a)/b.settings.delay*100;b.$ele.data("notify-delay",a),b.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",d).css("width",d+"%")}a<= -b.settings.timer&&(clearInterval(c),b.close())},b.settings.timer)}},close:function(){var b=this,c=parseInt(this.$ele.css(this.settings.placement.from)),d=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),b.reposition(c),a.isFunction(b.settings.onClose)&&b.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){d=!0}).one(this.animations.end,function(){a(this).remove(),a.isFunction(b.settings.onClosed)&&b.settings.onClosed.call(this)}),setTimeout(function(){d||(b.$ele.remove(),b.settings.onClosed&&b.settings.onClosed(b.$ele))},600)},reposition:function(d){var e=this,b='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',c=this.$ele.nextAll(b);!0===this.settings.newest_on_top&&(c=this.$ele.prevAll(b)),c.each(function(){a(this).css(e.settings.placement.from,d),d=parseInt(d)+parseInt(e.settings.spacing)+a(this).outerHeight()})}}),a.notify=function(a,c){return new b(this,a,c).notify},a.notifyDefaults=function(b){return c=a.extend(!0,{},c,b)},a.notifyClose=function(b){"warning"===b&&(b="danger"),void 0===b||"all"===b?a("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===b||"info"===b||"warning"===b||"danger"===b?a(".alert-"+b+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):b?a(b+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):a('[data-notify-position="'+b+'"]').find('[data-notify="dismiss"]').trigger("click")},a.notifyCloseExcept=function(b){"warning"===b&&(b="danger"),"success"===b||"info"===b||"warning"===b||"danger"===b?a("[data-notify]").not(".alert-"+b).find('[data-notify="dismiss"]').trigger("click"):a("[data-notify]").not(b).find('[data-notify="dismiss"]').trigger("click")}}) \ No newline at end of file diff --git a/data/web/js/build/012-api.js b/data/web/js/build/012-api.js index d979a9b1..89f2aa4a 100644 --- a/data/web/js/build/012-api.js +++ b/data/web/js/build/012-api.js @@ -318,6 +318,7 @@ $(document).ready(function() { // General API delete actions $(document).on('click', "[data-action='delete_selected']", function(e) { + console.log("delete"); e.preventDefault(); var id = $(this).data('id'); // If clicked element #delete_selected has data-item attribute, it is added to "items" @@ -336,6 +337,7 @@ $(document).ready(function() { if (typeof multi_data[id] == "undefined" || multi_data[id] == "") return; data_array = multi_data[id]; api_url = $(this).data('api-url'); + console.log("delete modal"); $(document).on('show.bs.modal', '#ConfirmDeleteModal', function() { $("#ItemsToDelete").empty(); for (var i in data_array) { @@ -343,10 +345,7 @@ $(document).ready(function() { $("#ItemsToDelete").append("
  • " + data_array[i] + "
  • "); } }) - $('#ConfirmDeleteModal').modal({ - backdrop: 'static', - keyboard: false - }) + $('#ConfirmDeleteModal').modal('show') .one('click', '#IsConfirmed', function(e) { if (is_active($('#IsConfirmed'))) { return false; } $.ajax({ diff --git a/data/web/js/build/014-mailcow.js b/data/web/js/build/014-mailcow.js index cdde60e7..6f1682fa 100644 --- a/data/web/js/build/014-mailcow.js +++ b/data/web/js/build/014-mailcow.js @@ -61,8 +61,8 @@ $(document).ready(function() { // remember last navigation pill (function () { 'use strict'; - if ($('a[data-bs-toggle="tab"]').length) { - $('a[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) { + if ($('button[data-bs-toggle="tab"]').length) { + $('button[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) { if ($(this).data('dont-remember') == 1) { return true; } @@ -71,7 +71,7 @@ $(document).ready(function() { if (id) { key += ':' + id; } - localStorage.setItem(key, $(e.target).attr('href')); + localStorage.setItem(key, $(e.target).attr('data-bs-target').substring(1)); }); $('[role="tablist"]').each(function (idx, elem) { var id = $(elem).attr('id'); @@ -81,7 +81,7 @@ $(document).ready(function() { } var lastTab = localStorage.getItem(key); if (lastTab) { - $('[href="' + lastTab + '"]').tab('show'); + $("[id^=" + lastTab + "]").show(); } }); } diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js index 677cd675..e9f12cbf 100644 --- a/data/web/js/site/admin.js +++ b/data/web/js/site/admin.js @@ -53,7 +53,7 @@ jQuery(function($){ $("#show_rspamd_global_filters").click(function() { $.get("inc/ajax/show_rspamd_global_filters.php"); $("#confirm_show_rspamd_global_filters").hide(); - $("#rspamd_global_filters").removeClass("hidden"); + $("#rspamd_global_filters").removeClass("d-none"); }); $("#super_delete").click(function() { return confirm(lang.queue_ays); }); $(".refresh_table").on('click', function(e) { @@ -533,17 +533,13 @@ jQuery(function($){ }); } // Draw Table if tab is active - onVisible("[id^=tab-config-admins]", () => { - draw_admins(); - draw_domain_admins(); - }); - onVisible("[id^=tab-config-oauth2]", () => draw_oauth2_clients()); - onVisible("[id^=tab-config-fwdhosts]", () => draw_fwd_hosts()); - onVisible("[id^=tab-routing]", () => { - draw_relayhosts(); - draw_transport_maps(); - }); - onVisible("[id^=tab-mailq]", () => draw_queue()); + onVisible("[id^=collapse-tab-config-admins]", () => draw_admins()); + onVisible("[id^=collapse-tab-config-dadmins]", () => draw_domain_admins()); + onVisible("[id^=collapse-tab-config-oauth2]", () => draw_oauth2_clients()); + onVisible("[id^=collapse-tab-config-fwdhosts]", () => draw_fwd_hosts()); + onVisible("[id^=collapse-tab-routing]", () => draw_relayhosts()); + onVisible("[id^=collapse-tab-maps]", () => draw_transport_maps()); + onVisible("[id^=collapse-tab-mailq]", () => draw_queue()); $('body').on('click', 'span.footable-toggle', function () { diff --git a/data/web/js/site/debug.js b/data/web/js/site/debug.js index a6b92054..fa01e5aa 100644 --- a/data/web/js/site/debug.js +++ b/data/web/js/site/debug.js @@ -75,6 +75,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/autodiscover/100", @@ -115,6 +116,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/postfix", @@ -147,6 +149,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/watchdog", @@ -183,6 +186,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/api", @@ -223,6 +227,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/ratelimited", @@ -295,6 +300,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/ui", @@ -347,6 +353,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/sasl", @@ -383,6 +390,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/acme", @@ -411,6 +419,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/netfilter", @@ -443,6 +452,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/sogo", @@ -475,6 +485,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order: [[0, 'desc']], ajax: { type: "GET", url: "/api/v1/get/logs/dovecot", @@ -507,11 +518,13 @@ jQuery(function($){ url: '/api/v1/get/rspamd/actions', async: true, success: function(data){ + console.log(data); var total = 0; $(data).map(function(){total += this[1];}); var labels = $.makeArray($(data).map(function(){return this[0] + ' ' + Math.round(this[1]/total * 100) + '%';})); var values = $.makeArray($(data).map(function(){return this[1];})); + console.log(values); var graphdata = { labels: labels, @@ -540,7 +553,7 @@ jQuery(function($){ } }; var chartcanvas = document.getElementById('rspamd_donut'); - Chart.plugins.register('ChartDataLabels'); + Chart.register('ChartDataLabels'); if(typeof chart == 'undefined') { chart = new Chart(chartcanvas.getContext("2d"), { plugins: [ChartDataLabels], @@ -859,12 +872,8 @@ jQuery(function($){ onVisible("[id^=tab-ui]", () => draw_ui_logs()); onVisible("[id^=tab-sasl]", () => draw_sasl_logs()); onVisible("[id^=tab-netfilter-logs]", () => draw_netfilter_logs()); - onVisible("[id^=tab-rspamd-history]", () => draw_rspamd_history()); - - $('a[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) { - var target = $(e.target).attr("href"); - if (target == '#tab-rspamd-history') { - rspamd_pie_graph(); - } + onVisible("[id^=tab-rspamd-history]", () => { + rspamd_pie_graph(); + draw_rspamd_history() }); }); diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js index bd0878aa..0ea3b3d3 100644 --- a/data/web/js/site/mailbox.js +++ b/data/web/js/site/mailbox.js @@ -1195,17 +1195,14 @@ jQuery(function($){ } // Load only if the tab is visible - onVisible("[id^=tab-domains]", () => draw_domain_table()); - onVisible("[id^=tab-mailboxes]", () => draw_mailbox_table()); - onVisible("[id^=tab-resources]", () => draw_resource_table()); - onVisible("[id^=tab-mbox-aliases]", () => draw_alias_table()); - onVisible("[id^=tab-domain-aliases]", () => draw_aliasdomain_table()); - onVisible("[id^=tab-syncjobs]", () => draw_sync_job_table()); - onVisible("[id^=tab-filters]", () => draw_filter_table()); - onVisible("[id^=tab-bcc]", () => { - draw_bcc_table(); - draw_recipient_map_table(); - }); - onVisible("[id^=tab-tls-policy]", () => draw_tls_policy_table()); - + onVisible("[id^=collapse-tab-domains]", () => draw_domain_table()); + onVisible("[id^=collapse-tab-mailboxes]", () => draw_mailbox_table()); + onVisible("[id^=collapse-tab-resources]", () => draw_resource_table()); + onVisible("[id^=collapse-tab-mbox-aliases]", () => draw_alias_table()); + onVisible("[id^=collapse-tab-domain-aliases]", () => draw_aliasdomain_table()); + onVisible("[id^=collapse-tab-syncjobs]", () => draw_sync_job_table()); + onVisible("[id^=collapse-tab-filters]", () => draw_filter_table()); + onVisible("[id^=collapse-tab-bcc]", () => draw_bcc_table()); + onVisible("[id^=collapse-tab-bcc-filters]", () => draw_recipient_map_table()); + onVisible("[id^=collapse-tab-tls-policy]", () => draw_tls_policy_table()); }); diff --git a/data/web/js/site/user.js b/data/web/js/site/user.js index 2375a25c..52440d91 100644 --- a/data/web/js/site/user.js +++ b/data/web/js/site/user.js @@ -538,12 +538,12 @@ jQuery(function($){ } // Load only if the tab is visible - onVisible("[id^=SpamAliases]", () => draw_tla_table()); - onVisible("[id^=Spamfilter]", () => { - draw_wl_policy_mailbox_table(); + onVisible("[id^=collapse-tab-SpamAliases]", () => draw_tla_table()); + onVisible("[id^=collapse-tab-Spamfilter]", () => { draw_bl_policy_mailbox_table(); + draw_wl_policy_mailbox_table() }); - onVisible("[id^=Syncjobs]", () => draw_sync_job_table()); - onVisible("[id^=AppPasswds]", () => draw_app_passwd_table()); + onVisible("[id^=collapse-tab-Syncjobs]", () => draw_sync_job_table()); + onVisible("[id^=collapse-tab-AppPasswds]", () => draw_app_passwd_table()); last_logins('get'); }); diff --git a/data/web/lang/lang.cs.json b/data/web/lang/lang.cs.json index dd7a6826..42e7f4e3 100644 --- a/data/web/lang/lang.cs.json +++ b/data/web/lang/lang.cs.json @@ -87,7 +87,7 @@ "relay_all": "Předávání všech příjemců", "relay_all_info": "Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.", "relay_domain": "Předávání domény", - "relay_transport_info": "
    Info
    U této domény lze pro konkrétní cíl nastavit transportní mapu. Není-li nastavena, použije se MX záznam.", + "relay_transport_info": "
    Info
    U této domény lze pro konkrétní cíl nastavit transportní mapu. Není-li nastavena, použije se MX záznam.", "relay_unknown_only": "Předávat jen neexistující schránky. Doručení do existujících proběhne lokálně.", "relayhost_wrapped_tls_info": "Nepoužívejte prosím porty s aktivním protokolem TLS (většinou port 465).
    \r\nPoužívejte porty bez TLS a pak pošlete příkaz STARTTLS. Pravidlo k vynucení užití TLS lze vytvořit pomocí mapy TLS pravidel.", "select": "Prosím vyberte...", @@ -579,7 +579,7 @@ "relay_all": "Předávání všech příjemců", "relay_all_info": "Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.", "relay_domain": "Předávání domény", - "relay_transport_info": "
    Info
    U této domény lze pro konkrétní cíl nastavit transportní mapu. Není-li nastavena, použije se MX záznam.", + "relay_transport_info": "
    Info
    U této domény lze pro konkrétní cíl nastavit transportní mapu. Není-li nastavena, použije se MX záznam.", "relay_unknown_only": "Předávat jen neexistující schránky. Doručení do existujících proběhne lokálně.", "relayhost": "Předávání podle odesílatele", "remove": "Smazat", @@ -587,7 +587,7 @@ "save": "Uložit změny", "scope": "Rozsah", "sender_acl": "Povolit odesílání jako", - "sender_acl_disabled": "Kontrola odesílatele vypnuta", + "sender_acl_disabled": "Kontrola odesílatele vypnuta", "sender_acl_info": "Má-li uživatel schránky A dovoleno odesílat jako uživatel schránky B, nezobrazuje se adresa odesílatele B v seznamu \"Od\" v SOGo automaticky.
    \r\n Uživatel schránky A musí nejdříve v SOGo vytvořit pověření, jež umožní uživateli B vybrat svou adresu jako odesílatele. Tento mechanismus neplatí pro aliasy.", "sieve_desc": "Krátký popis", "sieve_type": "Typ filtru", @@ -1097,7 +1097,7 @@ "running": "Běží", "save": "Uložit změny", "save_changes": "Uložit změny", - "sender_acl_disabled": "Kontrola odesílatele vypnuta", + "sender_acl_disabled": "Kontrola odesílatele vypnuta", "shared_aliases": "Sdílené aliasy", "shared_aliases_desc": "Na sdílené aliasy se neuplatňuje uživatelské nastavení jako filtr spamu nebo pravidla šifrování. Nastavení filtrování spamu může provádět jen správce pro celou doménu.", "show_sieve_filters": "Zobrazit aktivní sieve filtr uživatele", diff --git a/data/web/lang/lang.da.json b/data/web/lang/lang.da.json index abd25c51..66bf22f6 100644 --- a/data/web/lang/lang.da.json +++ b/data/web/lang/lang.da.json @@ -83,7 +83,7 @@ "relay_all": "Send alle modtagere videre", "relay_all_info": "↪ Hvis du vælger ikke at videresende alle modtagere, skal du tilføje et (\"blind\") postkasse til hver enkelt modtager, der skal videresendes.", "relay_domain": "Send dette domæne videre", - "relay_transport_info": "
    Info
    Du kan definere transportkort til en tilpasset destination for dette domæne. Hvis ikke indstillet, foretages der et MX-opslag.", + "relay_transport_info": "
    Info
    Du kan definere transportkort til en tilpasset destination for dette domæne. Hvis ikke indstillet, foretages der et MX-opslag.", "relay_unknown_only": "Videresend kun ikke-eksisterende postkasser. Eksisterende postkasser leveres lokalt.", "relayhost_wrapped_tls_info": "Vær sød ikke at bruge TLS-indpakkede porte (bruges mest på port 465) .
    \r\nBrug en ikke-pakket port, og udgiv STARTTLS. En TLS-politik til at håndhæve TLS kan oprettes i \"TLS policy maps\".", "select": "Vælg venligst...", @@ -535,7 +535,7 @@ "relay_all": "Send alle modtagere videre", "relay_all_info": "↪ Hvis du vælger ikke for at videresende alle modtagere skal du tilføje en (\"blind\") postkasse til hver enkelt modtager, der skal videresendes.", "relay_domain": "Send dette domæne videre", - "relay_transport_info": "
    Info
    Du kan definere transportkort til en tilpasset destination for dette domæne. Hvis den ikke er indstillet, foretages der et MX-opslag.", + "relay_transport_info": "
    Info
    Du kan definere transportkort til en tilpasset destination for dette domæne. Hvis den ikke er indstillet, foretages der et MX-opslag.", "relay_unknown_only": "Videresend kun ikke-eksisterende postkasser. Eksisterende postkasser leveres lokalt.", "relayhost": "Afsenderafhængige transporter", "remove": "Fjerne", @@ -543,7 +543,7 @@ "save": "Gem ændringer", "scope": "Anvendelsesområde", "sender_acl": "Tillad at sende som", - "sender_acl_disabled": "Afsenderkontrol er deaktiveret", + "sender_acl_disabled": "Afsenderkontrol er deaktiveret", "sender_acl_info": "Hvis postkassebruger A har tilladelse til at sende som postkassebruger B, vises afsenderadressen ikke automatisk som valgbar \"from\" felt i SOGo.
    \r\n Postkassebruger B skal oprette en delegation i SOGo for at tillade postkassebruger A at vælge deres adresse som afsender. For at delegere en postkasse i SOGo skal du bruge menuen (tre prikker) til højre for dit postkassens navn øverst til venstre, mens du er i postvisningen. Denne adfærd gælder ikke for aliasadresser.", "sieve_desc": "Kort beskrivelse", "sieve_type": "Filtertype", @@ -1005,7 +1005,7 @@ "running": "Kører", "save": "Gem ændring", "save_changes": "Gem ændringer", - "sender_acl_disabled": "Afsender tjek er slået fra", + "sender_acl_disabled": "Afsender tjek er slået fra", "shared_aliases": "Delte aliasadresser", "shared_aliases_desc": "Delt alias påvirkes ikke af brugerspecifikke indstillinger såsom spamfilter eller krypteringspolitik. Tilselementnde spamfiltre kan kun foretages af en administrator som en politik, der dækker hele domænet.", "show_sieve_filters": "Vis det aktive brugerfilter", diff --git a/data/web/lang/lang.de.json b/data/web/lang/lang.de.json index d9d64522..2e3288b9 100644 --- a/data/web/lang/lang.de.json +++ b/data/web/lang/lang.de.json @@ -88,7 +88,7 @@ "relay_all": "Alle Empfänger-Adressen relayen", "relay_all_info": "↪ Wenn nicht alle Empfänger-Adressen relayt werden sollen, müssen \"blinde\" Mailboxen für jede Adresse, die relayt werden soll, erstellt werden.", "relay_domain": "Diese Domain relayen", - "relay_transport_info": "
    Info
    Transport-Maps können erstellt werden, um individuelle Ziele für eine Relay-Domain zu definieren.", + "relay_transport_info": "
    Info
    Transport-Maps können erstellt werden, um individuelle Ziele für eine Relay-Domain zu definieren.", "relay_unknown_only": "Nur nicht-lokale Mailboxen relayen. Existente Mailboxen werden weiterhin lokal zugestellt.", "relayhost_wrapped_tls_info": "Bitte keine \"TLS-wrapped Ports\" verwenden (etwa SMTPS via Port 465/tcp).
    \r\nDer Transport wird stattdessen STARTTLS anfordern, um TLS zu verwenden. TLS kann unter \"TLS Policy Maps\" erzwungen werden.", "select": "Bitte auswählen", @@ -607,7 +607,7 @@ "relay_all": "Alle Empfänger-Adressen relayen", "relay_all_info": "↪ Wenn nicht alle Empfänger-Adressen relayt werden sollen, müssen \"blinde\" Mailboxen für jede Adresse, die relayt werden soll, erstellen werden.", "relay_domain": "Diese Domain relayen", - "relay_transport_info": "
    Info
    Transport Maps können erstellt werden, um individuelle Ziele für eine Relay Domain zu definieren.", + "relay_transport_info": "
    Info
    Transport Maps können erstellt werden, um individuelle Ziele für eine Relay Domain zu definieren.", "relay_unknown_only": "Nur nicht-lokale Mailboxen relayen. Existente Mailboxen werden weiterhin lokal zugestellt.", "relayhost": "Senderabhängige Transport Maps", "remove": "Entfernen", @@ -615,7 +615,7 @@ "save": "Änderungen speichern", "scope": "Scope", "sender_acl": "Darf Nachrichten versenden als", - "sender_acl_disabled": "Absenderprüfung deaktiviert", + "sender_acl_disabled": "Absenderprüfung deaktiviert", "sender_acl_info": "Wird einem Mailbox-Benutzer A der Versand als Mailbox-Benutzer B gestattet, so erscheint der Absender nicht automatisch in SOGo zur Auswahl.
    \r\n In SOGo muss zusätzlich eine Delegation eingerichtet werden. Dieses Verhalten trifft nicht auf Alias-Adressen zu.", "sieve_desc": "Kurze Beschreibung", "sieve_type": "Filtertyp", @@ -1125,7 +1125,7 @@ "running": "Wird ausgeführt", "save": "Änderungen speichern", "save_changes": "Änderungen speichern", - "sender_acl_disabled": "Absenderprüfung deaktiviert", + "sender_acl_disabled": "Absenderprüfung deaktiviert", "shared_aliases": "Geteilte Alias-Adressen", "shared_aliases_desc": "Geteilte Alias-Adressen werden nicht bei benutzerdefinierten Einstellungen, wie die des Spam-Filters oder der Verschlüsselungsrichtlinie, berücksichtigt. Entsprechende Spam-Filter können lediglich von einem Administrator vorgenommen werden.", "show_sieve_filters": "Zeige aktiven Filter des Benutzers", diff --git a/data/web/lang/lang.en.json b/data/web/lang/lang.en.json index ef4696a0..9eb4f82b 100644 --- a/data/web/lang/lang.en.json +++ b/data/web/lang/lang.en.json @@ -88,7 +88,7 @@ "relay_all": "Relay all recipients", "relay_all_info": "↪ If you choose not to relay all recipients, you will need to add a (\"blind\") mailbox for every single recipient that should be relayed.", "relay_domain": "Relay this domain", - "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", + "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", "relay_unknown_only": "Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.", "relayhost_wrapped_tls_info": "Please do not use TLS-wrapped ports (mostly used on port 465).
    \r\nUse any non-wrapped port and issue STARTTLS. A TLS policy to enforce TLS can be created in \"TLS policy maps\".", "select": "Please select...", @@ -607,7 +607,7 @@ "relay_all": "Relay all recipients", "relay_all_info": "↪ If you choose not to relay all recipients, you will need to add a (\"blind\") mailbox for every single recipient that should be relayed.", "relay_domain": "Relay this domain", - "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", + "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", "relay_unknown_only": "Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.", "relayhost": "Sender-dependent transports", "remove": "Remove", @@ -615,7 +615,7 @@ "save": "Save changes", "scope": "Scope", "sender_acl": "Allow to send as", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "sender_acl_info": "If mailbox user A is allowed to send as mailbox user B, the sender address is not automatically displayed as selectable \"from\" field in SOGo.
    \r\n Mailbox user B needs to create a delegation in SOGo to allow mailbox user A to select their address as sender. To delegate a mailbox in SOGo, use the menu (three dots) to the right of your mailbox name in the upper left while in mail view. This behaviour does not apply to alias addresses.", "sieve_desc": "Short description", "sieve_type": "Filter type", @@ -1133,7 +1133,7 @@ "running": "Running", "save": "Save changes", "save_changes": "Save changes", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "shared_aliases": "Shared alias addresses", "shared_aliases_desc": "Shared aliases are not affected by user specific settings such as the spam filter or encryption policy. Corresponding spam filters can only be made by an administrator as a domain-wide policy.", "show_sieve_filters": "Show active user sieve filter", diff --git a/data/web/lang/lang.fi.json b/data/web/lang/lang.fi.json index 66e279e2..7ff2877f 100644 --- a/data/web/lang/lang.fi.json +++ b/data/web/lang/lang.fi.json @@ -468,7 +468,7 @@ "save": "Tallenna muutokset", "scope": "Laajuus", "sender_acl": "Salli lähettää nimellä", - "sender_acl_disabled": "Lähettäjän tarkistus on poistettu käytöstä", + "sender_acl_disabled": "Lähettäjän tarkistus on poistettu käytöstä", "sender_acl_info": "Jos postilaatikon käyttäjän A sallitaan lähettävän postilaatikon käyttäjäksi B, lähettäjän osoitetta ei näytetä automaattisesti valittavana \"alkaen\" -kentässä SOGossa.
    \r\nSähkö postilaatikon käyttäjän A on luotava valtuutus SOGoon, jotta sähkö postilaatikon käyttäjä b voi valita osoitteen lähettäjäksi. Tämä käyttäytyminen ei koske alias-osoitteita", "sieve_desc": "Lyhyt kuvaus", "sieve_type": "Suodattimen tyyppi", @@ -831,7 +831,7 @@ "remove": "Poistaa", "running": "Käynnissä", "save_changes": "Tallenna muutokset", - "sender_acl_disabled": "Lähettäjän tarkistus on poistettu käytöstä", + "sender_acl_disabled": "Lähettäjän tarkistus on poistettu käytöstä", "shared_aliases": "Jaetut aliaksen osoitteet", "shared_aliases_desc": "Käyttäjäkohtaiset asetukset, kuten roska posti suodatin tai salaus käytäntö, eivät vaikuta jaettuihin alias-sähköposti tunnuksiin. Vastaavat roska posti suodattimet voi tehdä vain järjestelmänvalvoja verkkoaluelaajuisiksi käytännöiksi.", "show_sieve_filters": "Näytä aktiivisen käyttäjän sieve suodatin", diff --git a/data/web/lang/lang.fr.json b/data/web/lang/lang.fr.json index 085240ee..1dccd121 100644 --- a/data/web/lang/lang.fr.json +++ b/data/web/lang/lang.fr.json @@ -84,7 +84,7 @@ "relay_all": "Relayer tous les destinataires", "relay_all_info": "↪ Si vous choissisez de ne pas relayer tous les destinataires, vous devez ajouter une boîte (\"aveugle\") pour chaque destinataire simple qui doit être relayé.", "relay_domain": "Relayer ce domaine", - "relay_transport_info": "
    Info
    Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. sinon, une recherche MX sera effectuée.", + "relay_transport_info": "
    Info
    Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. sinon, une recherche MX sera effectuée.", "relay_unknown_only": "Relayer uniquement les boîtes inexistantes. Les boîtes existantes seront livrées localement.", "relayhost_wrapped_tls_info": "Veuillez ne pas utiliser des ports TLS wrappés (généralement utilisés sur le port 465).
    \r\nUtilisez n'importe quel port non encapsulé et lancez STARTTLS. Une politique TLS pour appliquer TLS peut être créée dans \"Cartes de politique TLS\".", "select": "Veuillez sélectionner...", @@ -546,7 +546,7 @@ "relay_all": "Relayer tous les destinataires", "relay_all_info": "↪ Si vous ne choissisez pas de relayer tous les destinataires, vous devrez ajouter une boîte (\"aveugle\") pour chaque destinataire qui devrait être relayé.", "relay_domain": "Relayer ce domaine", - "relay_transport_info": "
    Info
    Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. Si elle n’est pas configurée, une recherche MX sera effectuée.", + "relay_transport_info": "
    Info
    Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. Si elle n’est pas configurée, une recherche MX sera effectuée.", "relay_unknown_only": "Relais des boîtes non existantes seulement. Les boîtes existantes seront livrées localement..", "relayhost": "Transports dépendant de l’expéditeur", "remove": "Enlever", @@ -554,7 +554,7 @@ "save": "Enregistrer les modifications", "scope": "Portée", "sender_acl": "Permettre d’envoyer comme", - "sender_acl_disabled": "Le contrôle de l’expéditeur est désactivé", + "sender_acl_disabled": "Le contrôle de l’expéditeur est désactivé", "sender_acl_info": "Si l’utilisateur de la boîte A est autorisé à envoyer en tant qu’utilisateur de la boîte B, l’adresse de l’expéditeur n’est pas automatiquement affichée comme sélectionnable du champ \"from\" dans SOGo.
    \r\n L’utilisateur B de la boîte doit créer une délégation dans Sogo pour permettre à l’utilisateur A de la boîte de sélectionner son adresse comme expéditeur. Pour déléguer une boîte dans Sogo, utilisez le menu (trois points) à droite du nom de votre boîte dans le coin supérieur gauche dans la vue de courrier. Ce comportement ne s’applique pas aux adresses alias.", "sieve_desc": "Description courte", "sieve_type": "Type de filtre", @@ -1019,7 +1019,7 @@ "running": "En fonction", "save": "Sauvegarder les changements", "save_changes": "Sauvegarder les changements", - "sender_acl_disabled": "Le contrôle de l’expéditeur est désactivé", + "sender_acl_disabled": "Le contrôle de l’expéditeur est désactivé", "shared_aliases": "Adresses alias partagées", "shared_aliases_desc": "Les alias partagés ne sont pas affectés par les paramètres spécifiques à l’utilisateur tels que le filtre anti-spam ou la politique de chiffrement. Les filtres anti-spam correspondants ne peuvent être effectués que par un administrateur en tant que politique de domaine.", "show_sieve_filters": "Afficher le filtre de tamis actif de l’utilisateur", diff --git a/data/web/lang/lang.hu.json b/data/web/lang/lang.hu.json index fa702164..c32a04d0 100644 --- a/data/web/lang/lang.hu.json +++ b/data/web/lang/lang.hu.json @@ -328,7 +328,7 @@ "running": "Fut", "save": "Módosítások mentése", "save_changes": "Módosítások mentése", - "sender_acl_disabled": "Küldő ellenőrzése letiltva", + "sender_acl_disabled": "Küldő ellenőrzése letiltva", "shared_aliases": "Megosztott alias címek", "show_sieve_filters": "Aktív felhasználói szűrők megjelenítése", "spam_aliases": "Ideiglenes email alias-ok", diff --git a/data/web/lang/lang.it.json b/data/web/lang/lang.it.json index aa1e4eb0..95bb2da5 100644 --- a/data/web/lang/lang.it.json +++ b/data/web/lang/lang.it.json @@ -86,7 +86,7 @@ "relay_all": "Trasmettere a tutti i destinatari", "relay_all_info": "↪ Se si sceglie di non inviare a tutti i destinatari, è necessario aggiungere una casella di posta (\"blind\") per ogni singolo destinatario a cui deve essere inoltrato.", "relay_domain": "Trasmetti questo dominio", - "relay_transport_info": "
    Info
    Puoi definire mappe di trasporto verso una destinazione a tua scelta per questo dominio. Se non viene impostata, si guarderà il record MX.", + "relay_transport_info": "
    Info
    Puoi definire mappe di trasporto verso una destinazione a tua scelta per questo dominio. Se non viene impostata, si guarderà il record MX.", "relay_unknown_only": "Inoltra solo caselle di posta inesistenti. I messaggi per gli indirizzi esistenti verranno consegnati localmente.", "relayhost_wrapped_tls_info": "Please do not use TLS-wrapped ports (mostly used on port 465).
    \r\nUse any non-wrapped port and issue STARTTLS. A TLS policy to enforce TLS can be created in \"TLS policy maps\".", "select": "Si prega di selezionare...", @@ -579,7 +579,7 @@ "relay_all": "Relay tutti i destinatari", "relay_all_info": "↪ Se si sceglie di non inviare a tutti i destinatari, è necessario aggiungere una casella di posta (\"blind\") per ogni singolo destinatario a cui deve essere inoltrato.", "relay_domain": "Relay dominio", - "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", + "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", "relay_unknown_only": "Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.", "relayhost": "Sender-dependent transports", "remove": "Rimuovi", @@ -587,7 +587,7 @@ "save": "Salva modifiche", "scope": "Scope", "sender_acl": "Consenti di inviare come", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "sender_acl_info": "If mailbox user A is allowed to send as mailbox user B, the sender address is not automatically displayed as selectable \"from\" field in SOGo.
    \r\n Mailbox user B needs to create a delegation in SOGo to allow mailbox user A to select their address as sender. To delegate a mailbox in SOGo, use the menu (three dots) to the right of your mailbox name in the upper left while in mail view. This behaviour does not apply to alias addresses.", "sieve_desc": "Short description", "sieve_type": "Filter type", @@ -1095,7 +1095,7 @@ "running": "In esecuzione", "save": "Salva modifiche", "save_changes": "Salva modifiche", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "shared_aliases": "Indirizzi alias condivisi", "shared_aliases_desc": "Shared aliases are not affected by user specific settings such as the spam filter or encryption policy. Corresponding spam filters can only be made by an administrator as a domain-wide policy.", "show_sieve_filters": "Show active user sieve filter", diff --git a/data/web/lang/lang.ko.json b/data/web/lang/lang.ko.json index 3dd1f446..967d5c4e 100644 --- a/data/web/lang/lang.ko.json +++ b/data/web/lang/lang.ko.json @@ -83,7 +83,7 @@ "relay_all": "모든 수신자에게 릴레이", "relay_all_info": "↪ 모든 수신자에게 릴레이를 하지 않으면, 릴레이 받아야 하는 모든 수신자에게 블라인드 메일함을 만들어야 합니다.", "relay_domain": "Relay this domain", - "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", + "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", "relay_unknown_only": "Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.", "relayhost_wrapped_tls_info": "Please do not use TLS-wrapped ports (mostly used on port 465).
    \r\nUse any non-wrapped port and issue STARTTLS. A TLS policy to enforce TLS can be created in \"TLS policy maps\".", "select": "선택하세요...", @@ -526,7 +526,7 @@ "relay_all": "Relay all recipients", "relay_all_info": "↪ If you choose not to relay all recipients, you will need to add a (\"blind\") mailbox for every single recipient that should be relayed.", "relay_domain": "Relay this domain", - "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", + "relay_transport_info": "
    Info
    You can define transport maps for a custom destination for this domain. If not set, a MX lookup will be made.", "relay_unknown_only": "Relay non-existing mailboxes only. Existing mailboxes will be delivered locally.", "relayhost": "Sender-dependent transports", "remove": "Remove", @@ -534,7 +534,7 @@ "save": "Save changes", "scope": "Scope", "sender_acl": "Allow to send as", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "sender_acl_info": "If mailbox user A is allowed to send as mailbox user B, the sender address is not automatically displayed as selectable \"from\" field in SOGo.
    \r\n Mailbox user B needs to create a delegation in SOGo to allow mailbox user A to select their address as sender. To delegate a mailbox in SOGo, use the menu (three dots) to the right of your mailbox name in the upper left while in mail view. This behaviour does not apply to alias addresses.", "sieve_desc": "Short description", "sieve_type": "Filter type", @@ -955,7 +955,7 @@ "running": "실행중", "save": "변경사항 저장", "save_changes": "변경사항 저장", - "sender_acl_disabled": "Sender check is disabled", + "sender_acl_disabled": "Sender check is disabled", "shared_aliases": "공동 사용 메일 주소 별칭", "shared_aliases_desc": "공동 사용 메일 별칭은 스팸 필터, 암호화 등 사용자의 설정의 영향을 받지 않습니다. 해당 주소의 스팸 필터는 관리자가 도메인 정책 형식으로 만들어야만 적용됩니다.", "show_sieve_filters": "활성화된 사용자 필터 표시", diff --git a/data/web/lang/lang.nl.json b/data/web/lang/lang.nl.json index 8c28fa0a..03d920e4 100644 --- a/data/web/lang/lang.nl.json +++ b/data/web/lang/lang.nl.json @@ -84,7 +84,7 @@ "relay_all": "Forward alle ontvangers", "relay_all_info": "↪ Wanneer er wordt gekozen om niet alle ontvangers te forwarden, dient er per ontvanger een lege mailbox aangemaakt te worden.", "relay_domain": "Forward dit domein", - "relay_transport_info": "
    Info
    Je kunt transport-maps aanmaken om een aangepaste bestemming in te stellen voor dit domein. Zo niet, zal er een MX-lookup plaatsvinden.", + "relay_transport_info": "
    Info
    Je kunt transport-maps aanmaken om een aangepaste bestemming in te stellen voor dit domein. Zo niet, zal er een MX-lookup plaatsvinden.", "relay_unknown_only": "Forward uitsluitend niet-bestaande mailboxen. Bestaande mailboxen zullen lokaal afgeleverd worden.", "relayhost_wrapped_tls_info": "Gebruik geen in TLS verpakte poorten (meestal poort 465).
    Gebruik een reguliere poort en initieer STARTTLS. Beleid om verleuteling te forceren kan worden ingesteld bij \"Globaal versleutelingsbeleid\".", "select": "Selecteer...", @@ -544,7 +544,7 @@ "relay_all": "Forward alle ontvangers", "relay_all_info": "↪ Wanneer er wordt gekozen om niet alle ontvangers te forwarden, dient er per ontvanger een lege mailbox aangemaakt te worden.", "relay_domain": "Forward dit domein", - "relay_transport_info": "
    Info
    Je kunt transport-maps aanmaken om een aangepaste bestemming in te stellen voor dit domein. Zo niet, zal er een MX-lookup plaatsvinden.", + "relay_transport_info": "
    Info
    Je kunt transport-maps aanmaken om een aangepaste bestemming in te stellen voor dit domein. Zo niet, zal er een MX-lookup plaatsvinden.", "relay_unknown_only": "Forward uitsluitend niet-bestaande mailboxen. Bestaande mailboxen zullen lokaal afgeleverd worden.", "relayhost": "Afzendergebonden transport-maps", "remove": "Verwijder", @@ -552,7 +552,7 @@ "save": "Wijzigingen opslaan", "scope": "Scope", "sender_acl": "Sta toe om te verzenden als", - "sender_acl_disabled": "Verzendcontrole is uitgeschakeld", + "sender_acl_disabled": "Verzendcontrole is uitgeschakeld", "sender_acl_info": "Wanneer mailboxgebruiker A toegestaan is te verzenden namens mailboxgebruiker B, zal het verzendadres niet automatisch worden weergegeven in het \"van\"-veld in SOGo. Mailboxgebruiker A dient hiervoor een aparte vermelding te maken in SOGo. Om een mailbox te delegeren in SOGo kan het menu (drie punten) aan de rechterkant van de naam van het mailbox linksboven worden gebruikt in de mailweergave. Dit is niet van toepassing op aliasadressen.", "sieve_desc": "Korte beschrijving", "sieve_type": "Filtertype", @@ -1015,7 +1015,7 @@ "running": "Wordt uitgevoerd", "save": "Sla wijzigingen op", "save_changes": "Wijzigingen opslaan", - "sender_acl_disabled": "Verzendcontrole is uitgeschakeld", + "sender_acl_disabled": "Verzendcontrole is uitgeschakeld", "shared_aliases": "Gedeelde aliasadressen", "shared_aliases_desc": "Een gedeeld aliasadres wordt niet beïnvloed door gebruikersspecifieke instellingen. Een aangepast spamfilter kan eventueel worden ingesteld door een administrator.", "show_sieve_filters": "Toon actieve filters", diff --git a/data/web/lang/lang.ro.json b/data/web/lang/lang.ro.json index 90e8f15d..90e8f9ff 100644 --- a/data/web/lang/lang.ro.json +++ b/data/web/lang/lang.ro.json @@ -88,7 +88,7 @@ "relay_all": "Retransmite toți destinatarii", "relay_all_info": "↪ Dacă alegi să nu retransmiți toți destinatarii, va trebui să adaugi o cutie poștală (\"oarbă\") pentru fiecare destinatar care trebuie retransmis.", "relay_domain": "Retransmite acest domeniu", - "relay_transport_info": "
    Info
    Puteți defini hărți de transport pentru o destinație personalizată pentru acest domeniu. Dacă nu este setat, se va face o căutare MX.", + "relay_transport_info": "
    Info
    Puteți defini hărți de transport pentru o destinație personalizată pentru acest domeniu. Dacă nu este setat, se va face o căutare MX.", "relay_unknown_only": "Releu doar pentru cutiile poștale inexistente. Cutiile poștale existente vor fi livrate local.", "relayhost_wrapped_tls_info": "Vă rugăm să nu utilizați porturi înfășurate TLS (utilizate mai ales pe portul 465).
    \r\nUtilizați orice port neînfășurat și emiteți STARTTLS. O politică TLS pentru impunerea TLS poate fi creată în \"Hărți ale politicii TLS\".", "select": "Te rog selectează...", @@ -583,7 +583,7 @@ "relay_all": "Retransmite toți destinatarii", "relay_all_info": "↪ Dacă alegi să nu retransmiți toți destinatarii, va trebui să adaugi o cutie poștală (\"oarbă\") pentru fiecare destinatar care trebuie retransmis.", "relay_domain": "Acest domeniu este releu", - "relay_transport_info": "
    Info
    Puteți defini hărți de transport pentru o destinație personalizată pentru acest domeniu. Dacă nu este setat, se va face o căutare MX.", + "relay_transport_info": "
    Info
    Puteți defini hărți de transport pentru o destinație personalizată pentru acest domeniu. Dacă nu este setat, se va face o căutare MX.", "relay_unknown_only": "Releu doar pentru cutiile poștale inexistente. Cutiile poștale existente vor fi livrate local.", "relayhost": "Transporturi dependente de expeditor", "remove": "Elimină", @@ -591,7 +591,7 @@ "save": "Salvează modificările", "scope": "Scop", "sender_acl": "Permite trimiterea ca", - "sender_acl_disabled": "Verificarea expeditorului este dezactivată", + "sender_acl_disabled": "Verificarea expeditorului este dezactivată", "sender_acl_info": "Dacă utilizatorului A de căsuță poștală îi este permis să trimită ca utilizatorul B, adresa expeditorului nu este afișată automat ca fiind câmp selectabil \"de la\" în SOGo.
    \r\n Utilizatorul căsuței poștale B trebuie să creeze o delegație în SOGo pentru a permite utilizatorul cutiei poștale A să selecteze adresa ca expeditor. Pentru a delega o cutie poștală în SOGo, utilizați meniul (trei puncte) din dreapta numelui căsuței poștale în stânga sus, în timp ce vă aflați în vizualizarea e-mailului. Acest comportament nu se aplică adreselor alias.", "sieve_desc": "Descriere scurtă", "sieve_type": "Tip filtru", @@ -1107,7 +1107,7 @@ "running": "Funcţionare", "save": "Salvează modificările", "save_changes": "Salvează modificările", - "sender_acl_disabled": "Verificarea expeditorului este dezactivată", + "sender_acl_disabled": "Verificarea expeditorului este dezactivată", "shared_aliases": "Adrese alias partajate", "shared_aliases_desc": "Aliasurile partajate nu sunt afectate de setările specifice utilizatorului, cum ar fi filtrul de spam sau politica de criptare. Filtrele de spam corespondente pot fi efectuate numai de către un administrator ca o politică la nivel de domeniu.", "show_sieve_filters": "Afișează filtrul activ al sitei de utilizatori", diff --git a/data/web/lang/lang.ru.json b/data/web/lang/lang.ru.json index c48d3945..627b3029 100644 --- a/data/web/lang/lang.ru.json +++ b/data/web/lang/lang.ru.json @@ -87,7 +87,7 @@ "relay_all": "Ретрансляция всех получателей", "relay_all_info": "↪Если вы решите не ретранслировать всех получателей, вам нужно будет добавить (\"слепой\") почтовый адрес для каждого получателя, которого следует ретранслировать.", "relay_domain": "Ретрансляция этого домена", - "relay_transport_info": "
    Инфо
    Вы можете настроить собственный транспорт для домена. Если такой настройки нет, то доставка будет выполнена на основе MX записей.", + "relay_transport_info": "
    Инфо
    Вы можете настроить собственный транспорт для домена. Если такой настройки нет, то доставка будет выполнена на основе MX записей.", "relay_unknown_only": "Ретрансляция только не существующих почтовых ящиков. Почта к существующим почтовым ящикам будут доставляться локально.", "relayhost_wrapped_tls_info": "Пожалуйста не используйте TLS порты (в основном это 465 порт).
    \r\nИспользуйте любой не TLS порт который поддерживает STARTTLS. А для защиты от downgrate атак - настройке принудительную политику TLS.", "select": "Пожалуйста, выберите...", @@ -580,7 +580,7 @@ "relay_all": "Ретрансляция всех получателей", "relay_all_info": "↪Если вы решите не ретранслировать всех получателей, вам нужно будет добавить (\"слепой\") почтовый аккаунт для каждого получателя, которого следует ретранслировать.", "relay_domain": "Ретрансляция этого домена", - "relay_transport_info": "
    Инфо
    Вы можете настроить собственный транспорт для домена. Если такой настройки нет, то доставка будет выполнена на основе MX записей.", + "relay_transport_info": "
    Инфо
    Вы можете настроить собственный транспорт для домена. Если такой настройки нет, то доставка будет выполнена на основе MX записей.", "relay_unknown_only": "Ретрансляция только не существующих почтовых ящиков. Почта к существующим почтовым ящикам будут доставляться локально.", "relayhost": "Маршрутизация на основе отправителя", "remove": "Удалить", @@ -588,7 +588,7 @@ "save": "Сохранить изменения", "scope": "Область", "sender_acl": "Разрешить отправлять письма от имени", - "sender_acl_disabled": "Проверка отправителя отключена", + "sender_acl_disabled": "Проверка отправителя отключена", "sender_acl_info": "Учтите, что если пользователю почтового аккаунта A разрешено отправлять от имени пользователя B, то адрес пользователя B не отобразится автоматически в списке \"Отправитель\" при написании писем в SOGo.
    \r\n Пользователь почтового аккаунта B должен создать делегирование в SOGo, чтобы пользователь почтового аккаунта A мог выбрать его адрес в качестве отправителя. Делегирование находится в меню (троеточие) справа от имени почтового аккаунта в окне почты SOGo. Это поведение не относится к псевдонимам.", "sieve_desc": "Краткое описание", "sieve_type": "Тип фильтра", @@ -1098,7 +1098,7 @@ "running": "В процессе", "save": "Сохранить изменения", "save_changes": "Сохранить изменения", - "sender_acl_disabled": "Проверка отправителя отключена", + "sender_acl_disabled": "Проверка отправителя отключена", "shared_aliases": "Общие псевдонимы", "shared_aliases_desc": "На общие псевдонимы не влияют пользовательские настройки, такие как фильтр нежелательной почты, или политика шифрования. Соответствующие фильтры нежелательной почты могут быть созданы только администратором в рамках политики домена.", "show_sieve_filters": "Показать включенные фильтры sieve", diff --git a/data/web/lang/lang.sk.json b/data/web/lang/lang.sk.json index cc605c82..92d65adb 100644 --- a/data/web/lang/lang.sk.json +++ b/data/web/lang/lang.sk.json @@ -87,7 +87,7 @@ "relay_all": "Preposielať všetkým príjemcom", "relay_all_info": "↪ Ak sa rozhodnete nepreposielať ďalej všetkých príjemcov, budete musieť pridať (\"tzv. slepú\") mailovú schránku pre každého príjemcu.", "relay_domain": "Preposielať túto doménu", - "relay_transport_info": "
    Info
    Môžete definovať transportné mapy pre vlastné určenie cieľa pre túto doménu. Ak nie sú nastavené, použije sa MX záznam.", + "relay_transport_info": "
    Info
    Môžete definovať transportné mapy pre vlastné určenie cieľa pre túto doménu. Ak nie sú nastavené, použije sa MX záznam.", "relay_unknown_only": "Preposielať len neexistujúce mailové schránky. Existujúce budú doručené lokálne.", "relayhost_wrapped_tls_info": "Prosím nepoužívajte TLS-wrapped porty (najviac používane na prote 465).
    \r\nPoužite non-wrapped port a STARTTLS. Vynútené TLS pravidlá môžu byť vytvorené v \"TLS mapách\".", "select": "Prosím vyberte...", @@ -582,7 +582,7 @@ "relay_all": "Preposielať všetkých prijemcov", "relay_all_info": "↪ Ak sa rozhodnete nepreposielať všetkých príjemcov, budete musieť pridať (\"tzv. slepú\") mailovú schránku pre každého príjemcu.", "relay_domain": "Preposielať túto doménu", - "relay_transport_info": "
    Info
    Môžete definovať transportné mapy pre vlastné určenie cieľa pre túto doménu. Ak nie sú nastavené, použije sa MX záznam.", + "relay_transport_info": "
    Info
    Môžete definovať transportné mapy pre vlastné určenie cieľa pre túto doménu. Ak nie sú nastavené, použije sa MX záznam.", "relay_unknown_only": "Preposielať len neexistujúce mailové schránky. Existujúce budú doručené lokálne.", "relayhost": "Transporty závislé na odosielateľovi", "remove": "Odstrániť", @@ -590,7 +590,7 @@ "save": "Uložiť zmeny", "scope": "Rozsah", "sender_acl": "Povoliť odosielanie ako", - "sender_acl_disabled": "Kontrola odosielateľa vypnutá", + "sender_acl_disabled": "Kontrola odosielateľa vypnutá", "sender_acl_info": "Ak mailový používateľ A má povolenie poslať ako mailový používateľ B, adresa odosielateľa nieje automaticky viditeľná ako voliteľné \"from\" pole v SOGo.
    \r\n Mailový používateľ B potrebuje vytvoriť delegáciu v SOGo, aby bol schopný mailový používateľ A vybrať jeho adresu ako odosielateľ. Na delegovanie mailovej adresy v SOGo, použite menu (tri bodky) napravo vášho mailového mena v hornom ľavom rohu, v prehľade správ. Toto neplatí pre alias adresy.", "sieve_desc": "Krátky popis", "sieve_type": "Typ filtru", @@ -1105,7 +1105,7 @@ "running": "Beží", "save": "Uložiť zmeny", "save_changes": "Uložiť zmeny", - "sender_acl_disabled": "Kontrola odosielateľa je pozastavená", + "sender_acl_disabled": "Kontrola odosielateľa je pozastavená", "shared_aliases": "Zdieľané alias adresy", "shared_aliases_desc": "Zdieľané aliasy nie sú ovplyvnené používateľskými nastaveniami, ako spam filter alebo šifrovacie pravidlá. Zodpovedajúce spam filtre môžu byť vytvorené len administrátorom podľa podmienok domén.", "show_sieve_filters": "Zobraziť sieve filter aktívneho používateľa", diff --git a/data/web/lang/lang.sv.json b/data/web/lang/lang.sv.json index cd43ba8c..a9389515 100644 --- a/data/web/lang/lang.sv.json +++ b/data/web/lang/lang.sv.json @@ -84,7 +84,7 @@ "relay_all": "Vidarebefordra alla mottagaradresser", "relay_all_info": "↪ Om inte alla mottagare ska vidarebefordras måste (\"blinda\") postlådor skapas för varje adress som ska vidarebefordras.", "relay_domain": "Vidarebefordra denna domän", - "relay_transport_info": "
    Info
    Transportkartor kan skapas för att definiera enskilda destinationer på en relädomän.", + "relay_transport_info": "
    Info
    Transportkartor kan skapas för att definiera enskilda destinationer på en relädomän.", "relay_unknown_only": "Vidarebefodra endast om det saknas en lokal postlåda. Existerar det en postlåda kommer det levereras lokalt.", "relayhost_wrapped_tls_info": "Använd inte TLS-bundna portar (exempelvis SMTPS via port 465).
    \r\nTrafiken kommer istället transporteras med TLS genom att använda STARTTLS. En sådan TLS-policy kan skapas under \"TLS-policyföreskrifter\".", "select": "Välj ...", @@ -560,7 +560,7 @@ "relay_all": "Vidarebefordra alla mottagare", "relay_all_info": "↪ Om inte alla mottagare ska vidarebefordras måste (\"blinda\") postlådor skapas för varje adress som ska vidarebefordras.", "relay_domain": "Relädomän", - "relay_transport_info": "
    Info
    Transportkartor kan skapas för att definiera enskilda destinationer på en relädomän.", + "relay_transport_info": "
    Info
    Transportkartor kan skapas för att definiera enskilda destinationer på en relädomän.", "relay_unknown_only": "Vidarebefodra endast om det saknas en lokal postlåda. Existerar det en postlåda kommer det levereras lokalt.", "relayhost": "Reläserver", "remove": "Ta bort", @@ -568,7 +568,7 @@ "save": "Spara ändringar", "scope": "Omfattning", "sender_acl": "Tillåt att skicka som", - "sender_acl_disabled": "Avsändarkontroll är avaktiverad", + "sender_acl_disabled": "Avsändarkontroll är avaktiverad", "sender_acl_info": "Om användaren A tillåts skicka som användaren B visas inte avsändaradressen automatiskt i \"från\" fältet i SOGo.
    \r\n Användaren B måste skapa en delegation i SOGo för att låta användaren A välja Användaren B's adress som avsändare. För att delegera en postlåda i SOGo, gå till menyn (tre punkter) till höger om ditt namn uppe till vänster i postvyn. Detta gäller inte för aliasadresser.", "sieve_desc": "Kort beskrivning", "sieve_type": "Filtertyp", @@ -1038,7 +1038,7 @@ "running": "Kör", "save": "Spara ändringarna", "save_changes": "Spara ändringar", - "sender_acl_disabled": "Kontrollen av avsändaren är inaktiverad", + "sender_acl_disabled": "Kontrollen av avsändaren är inaktiverad", "shared_aliases": "Delade aliasadresses", "shared_aliases_desc": "Delade aliasadresser påverkas inte av användarspecifika inställningar som skräppostfilter eller krypteringspolicy. Motsvarande skräppostfilter kan endast göras av en administratör som en domänövergripande policy.", "show_sieve_filters": "Visa den aktuella användarens sieve-filter", diff --git a/data/web/lang/lang.zh.json b/data/web/lang/lang.zh.json index 485a4636..94f1d35d 100644 --- a/data/web/lang/lang.zh.json +++ b/data/web/lang/lang.zh.json @@ -83,7 +83,7 @@ "relay_all": "中继所有收件人", "relay_all_info": "↪ 如果选择中继所有收件人,你将需要为每个应该中继的邮件添加一个 (\"盲\") 邮箱。", "relay_domain": "中继这个域名", - "relay_transport_info": "
    你可以为此域名定义传输规则以自定义发件目标主机,否则遵照MX记录发送邮件。", + "relay_transport_info": "
    你可以为此域名定义传输规则以自定义发件目标主机,否则遵照MX记录发送邮件。", "relay_unknown_only": "只为不存在的邮箱地址中继。已存在的邮箱地址则在本地递送。", "relayhost_wrapped_tls_info": "请 不要 使用\"嵌套TLS\"的端口 (大多为端口465).
    \r\n使用其他\"非嵌套\"的端口发起STARTTLS. 你可以在\"TLS策略规则\"中添加强制使用TLS的策略。", "select": "请选择...", @@ -536,7 +536,7 @@ "relay_all": "中继所有收件人", "relay_all_info": "↪ 如果选择中继所有,你将需要为每个应该中继的邮件添加一个 (\"盲\") 邮箱。", "relay_domain": "中继这个域名", - "relay_transport_info": "
    你可以为此域名定义传输规则以自定义发件目标主机,否则遵照MX记录发送邮件。", + "relay_transport_info": "
    你可以为此域名定义传输规则以自定义发件目标主机,否则遵照MX记录发送邮件。", "relay_unknown_only": "只为不存在的邮箱地址中继。已存在的邮箱地址则在本地递送。", "relayhost": "中继传输", "remove": "删除", @@ -544,7 +544,7 @@ "save": "保存更改", "scope": "范围", "sender_acl": "允许发送为", - "sender_acl_disabled": "发件人检查已关闭", + "sender_acl_disabled": "发件人检查已关闭", "sender_acl_info": "如果允许邮箱用户A作为邮箱用户B发送邮件,发件人的地址不会在SOGo中\"来自\"区域自动地作为下拉可选项显示。
    \r\n 邮箱用户B需要添加授权以允许邮箱用户A选择B的地址作为发件人;授权方法为,在SOGo中点击左上方邮箱地址右边的菜单按钮(三个点)并授权。", "sieve_desc": "简短描述", "sieve_type": "过滤器类型", @@ -978,7 +978,7 @@ "running": "运行中", "save": "保存更改", "save_changes": "保存更改", - "sender_acl_disabled": "发件人检查已关闭", + "sender_acl_disabled": "发件人检查已关闭", "shared_aliases": "共享别名地址", "shared_aliases_desc": "用户设置如垃圾过滤器和加密策略等不会应用到共享别名地址。共享别名地址只能应用域名级别的垃圾过滤器且只能被管理员修改。", "show_sieve_filters": "显示启用的用户sieve过滤器", diff --git a/data/web/templates/admin.twig b/data/web/templates/admin.twig index 65d5358d..287a1b21 100644 --- a/data/web/templates/admin.twig +++ b/data/web/templates/admin.twig @@ -1,64 +1,66 @@ {% extends 'base.twig' %} {% block content %} - + +
    +
    +
    + {% include 'admin/tab-config-admins.twig' %} + {# {% include 'admin/tab-ldap.twig' %} #} + {% include 'admin/tab-config-oauth2.twig' %} + {% include 'admin/tab-config-rspamd.twig' %} + {% include 'admin/tab-routing.twig' %} + {% include 'admin/tab-config-dkim.twig' %} + {% include 'admin/tab-config-fwdhosts.twig' %} + {% include 'admin/tab-config-f2b.twig' %} + {% include 'admin/tab-config-quarantine.twig' %} + {% include 'admin/tab-config-quota.twig' %} + {% include 'admin/tab-config-rsettings.twig' %} + {% include 'admin/tab-config-customize.twig' %} + {% include 'admin/tab-config-password-policy.twig' %} + {% include 'admin/tab-sys-mails.twig' %} + {% include 'admin/tab-mailq.twig' %} + {% include 'admin/tab-globalfilter-regex.twig' %} +
    +
    +
    + -
    -
    -
    - {% include 'admin/tab-config-admins.twig' %} - {% include 'admin/tab-ldap.twig' %} - {% include 'admin/tab-config-oauth2.twig' %} - {% include 'admin/tab-config-rspamd.twig' %} - {% include 'admin/tab-routing.twig' %} - {% include 'admin/tab-config-dkim.twig' %} - {% include 'admin/tab-config-fwdhosts.twig' %} - {% include 'admin/tab-config-f2b.twig' %} - {% include 'admin/tab-config-quarantine.twig' %} - {% include 'admin/tab-config-quota.twig' %} - {% include 'admin/tab-config-rsettings.twig' %} - {% include 'admin/tab-config-customize.twig' %} - {% include 'admin/tab-config-password-policy.twig' %} - {% include 'admin/tab-sys-mails.twig' %} - {% include 'admin/tab-mailq.twig' %} - {% include 'admin/tab-globalfilter-regex.twig' %} -
    -
    -
    - {% include 'modals/admin.twig' %}