git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "c7b1dc37"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "a366494c"
git-subrepo: version:  "0.4.6"
  origin:   "???"
  commit:   "???"
Change-Id: Id574ecd4e02e3c4fbf8a1efd49be11c0b6d19a3f
diff --git a/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js b/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js
index 55a8e6b..cd938cd 100644
--- a/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js
+++ b/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js
@@ -1,210 +1,222 @@
-$(document).ready(function() {

-  $(".arrow-toggle").on('click', function(e) { e.preventDefault(); $(this).find('.arrow').toggleClass("animation"); });

-  $("#pushover_delete").click(function() { return confirm(lang.delete_ays); });

-  $(".goto_checkbox").click(function( event ) {

-   $("form[data-id='editalias'] .goto_checkbox").not(this).prop('checked', false);

-    if ($("form[data-id='editalias'] .goto_checkbox:checked").length > 0) {

-      $('#textarea_alias_goto').prop('disabled', true);

-    }

-    else {

-      $("#textarea_alias_goto").removeAttr('disabled');

-    }

-  });

-  $("#disable_sender_check").click(function( event ) {

-    if ($("form[data-id='editmailbox'] #disable_sender_check:checked").length > 0) {

-      $('#editSelectSenderACL').prop('disabled', true);

-      $('#editSelectSenderACL').selectpicker('refresh');

-    }

-    else {

-      $('#editSelectSenderACL').prop('disabled', false);

-      $('#editSelectSenderACL').selectpicker('refresh');

-    }

-  });

-  if ($("form[data-id='editalias'] .goto_checkbox:checked").length > 0) {

-    $('#textarea_alias_goto').prop('disabled', true);

-  }

-

-  $("#mailbox-password-warning-close").click(function( event ) {

-    $('#mailbox-passwd-hidden-info').addClass('hidden');

-    $('#mailbox-passwd-form-groups').removeClass('hidden');

-  });

-  // Sender ACL

-  if ($("#editSelectSenderACL option[value='\*']:selected").length > 0){

-    $("#sender_acl_disabled").show();

-  }

-  $('#editSelectSenderACL').change(function() {

-    if ($("#editSelectSenderACL option[value='\*']:selected").length > 0){

-      $("#sender_acl_disabled").show();

-    }

-    else {

-      $("#sender_acl_disabled").hide();

-    }

-  });

-  // Resources

-  if ($("#editSelectMultipleBookings").val() == "custom") {

-    $("#multiple_bookings_custom_div").show();

-    $('input[name=multiple_bookings]').val($("#multiple_bookings_custom").val());

-  }

-  $("#editSelectMultipleBookings").change(function() {

-    $('input[name=multiple_bookings]').val($("#editSelectMultipleBookings").val());

-    if ($('input[name=multiple_bookings]').val() == "custom") {

-      $("#multiple_bookings_custom_div").show();

-    }

-    else {

-      $("#multiple_bookings_custom_div").hide();

-    }

-  });

-  $("#multiple_bookings_custom").bind("change keypress keyup blur", function() {

-    $('input[name=multiple_bookings]').val($("#multiple_bookings_custom").val());

-  });

-

-  // load tags

-  if ($('#tags').length){

-    var tagsEl = $('#tags').parent().find('.tag-values')[0];

-    console.log($(tagsEl).val())

-    var tags = JSON.parse($(tagsEl).val());

-    $(tagsEl).val("");

-    

-    for (var i = 0; i < tags.length; i++)

-      addTag($('#tags'), tags[i]);

-  }

-});

-

-jQuery(function($){

-  // http://stackoverflow.com/questions/46155/validate-email-address-in-javascript

-  function validateEmail(email) {

-    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

-    return re.test(email);

-  }

-  function draw_wl_policy_domain_table() {

-    $('#wl_policy_domain_table').DataTable({

-      processing: true,

-      serverSide: false,

-      language: lang_datatables,

-      ajax: {

-        type: "GET",

-        url: '/api/v1/get/policy_wl_domain/' + table_for_domain,

-        dataSrc: function(data){

-          $.each(data, function (i, item) {

-            if (!validateEmail(item.object)) {

-              item.chkbox = '<input type="checkbox" data-id="policy_wl_domain" name="multi_select" value="' + item.prefid + '" />';

-            }

-            else {

-              item.chkbox = '<input type="checkbox" disabled title="' + lang_user.spamfilter_table_domain_policy + '" />';

-            }

-          });

-

-          return data;

-        }

-      },

-      columns: [

-          {

-            // placeholder, so checkbox will not block child row toggle

-            title: '',

-            data: null,

-            searchable: false,

-            orderable: false,

-            defaultContent: ''

-          },

-          {

-            title: '',

-            data: 'chkbox',

-            searchable: false,

-            orderable: false,

-            defaultContent: ''

-          },

-          {

-            title: 'ID',

-            data: 'prefid',

-            defaultContent: ''

-          },

-          {

-            title: lang_user.spamfilter_table_rule,

-            data: 'value',

-            defaultContent: ''

-          },

-          {

-            title: 'Scope',

-            data: 'object',

-            defaultContent: ''

-          }

-      ]

-    });

-  }

-  function draw_bl_policy_domain_table() {

-    $('#bl_policy_domain_table').DataTable({

-      processing: true,

-      serverSide: false,

-      language: lang_datatables,

-      ajax: {

-        type: "GET",

-        url: '/api/v1/get/policy_bl_domain/' + table_for_domain,

-        dataSrc: function(data){

-          $.each(data, function (i, item) {

-            if (!validateEmail(item.object)) {

-              item.chkbox = '<input type="checkbox" data-id="policy_bl_domain" name="multi_select" value="' + item.prefid + '" />';

-            }

-            else {

-              item.chkbox = '<input type="checkbox" disabled tooltip="' + lang_user.spamfilter_table_domain_policy + '" />';

-            }

-          });

-

-          return data;

-        }

-      },

-      columns: [

-          {

-            // placeholder, so checkbox will not block child row toggle

-            title: '',

-            data: null,

-            searchable: false,

-            orderable: false,

-            defaultContent: ''

-          },

-          {

-            title: '',

-            data: 'chkbox',

-            searchable: false,

-            orderable: false,

-            defaultContent: ''

-          },

-          {

-            title: 'ID',

-            data: 'prefid',

-            defaultContent: ''

-          },

-          {

-            title: lang_user.spamfilter_table_rule,

-            data: 'value',

-            defaultContent: ''

-          },

-          {

-            title: 'Scope',

-            data: 'object',

-            defaultContent: ''

-          }

-      ]

-    });

-  }

-

-  

-  // detect element visibility changes

-  function onVisible(element, callback) {

-    $(document).ready(function() {

-      element_object = document.querySelector(element);

-      if (element_object === null) return;

-

-      new IntersectionObserver((entries, observer) => {

-        entries.forEach(entry => {

-          if(entry.intersectionRatio > 0) {

-            callback(element_object);

-            observer.disconnect();

-          }

-        });

-      }).observe(element_object);

-    });

-  }

-  // Draw Table if tab is active

-  onVisible("[id^=wl_policy_domain_table]", () => draw_wl_policy_domain_table());

-  onVisible("[id^=bl_policy_domain_table]", () => draw_bl_policy_domain_table());

-});

+$(document).ready(function() {
+  $(".arrow-toggle").on('click', function(e) { e.preventDefault(); $(this).find('.arrow').toggleClass("animation"); });
+  $("#pushover_delete").click(function() { return confirm(lang.delete_ays); });
+  $(".goto_checkbox").click(function( event ) {
+    $("form[data-id='editalias'] .goto_checkbox").not(this).prop('checked', false);
+    if ($("form[data-id='editalias'] .goto_checkbox:checked").length > 0) {
+      $('#textarea_alias_goto').prop('disabled', true);
+    }
+    else {
+      $("#textarea_alias_goto").removeAttr('disabled');
+    }
+  });
+  $("#disable_sender_check").click(function( event ) {
+    if ($("form[data-id='editmailbox'] #disable_sender_check:checked").length > 0) {
+      $('#editSelectSenderACL').prop('disabled', true);
+      $('#editSelectSenderACL').selectpicker('refresh');
+    }
+    else {
+      $('#editSelectSenderACL').prop('disabled', false);
+      $('#editSelectSenderACL').selectpicker('refresh');
+    }
+  });
+  if ($("form[data-id='editalias'] .goto_checkbox:checked").length > 0) {
+    $('#textarea_alias_goto').prop('disabled', true);
+  }
+
+  $("#mailbox-password-warning-close").click(function( event ) {
+    $('#mailbox-passwd-hidden-info').addClass('hidden');
+    $('#mailbox-passwd-form-groups').removeClass('hidden');
+  });
+  // Sender ACL
+  if ($("#editSelectSenderACL option[value='\*']:selected").length > 0){
+    $("#sender_acl_disabled").show();
+  }
+  $('#editSelectSenderACL').change(function() {
+    if ($("#editSelectSenderACL option[value='\*']:selected").length > 0){
+      $("#sender_acl_disabled").show();
+    }
+    else {
+      $("#sender_acl_disabled").hide();
+    }
+  });
+  // Resources
+  if ($("#editSelectMultipleBookings").val() == "custom") {
+    $("#multiple_bookings_custom_div").show();
+    $('input[name=multiple_bookings]').val($("#multiple_bookings_custom").val());
+  }
+  $("#editSelectMultipleBookings").change(function() {
+    $('input[name=multiple_bookings]').val($("#editSelectMultipleBookings").val());
+    if ($('input[name=multiple_bookings]').val() == "custom") {
+      $("#multiple_bookings_custom_div").show();
+    }
+    else {
+      $("#multiple_bookings_custom_div").hide();
+    }
+  });
+  $("#multiple_bookings_custom").bind("change keypress keyup blur", function() {
+    $('input[name=multiple_bookings]').val($("#multiple_bookings_custom").val());
+  });
+
+  // load tags
+  if ($('#tags').length){
+    var tagsEl = $('#tags').parent().find('.tag-values')[0];
+    console.log($(tagsEl).val())
+    var tags = JSON.parse($(tagsEl).val());
+    $(tagsEl).val("");
+
+    for (var i = 0; i < tags.length; i++)
+      addTag($('#tags'), tags[i]);
+  }
+});
+
+jQuery(function($){
+  // http://stackoverflow.com/questions/46155/validate-email-address-in-javascript
+  function validateEmail(email) {
+    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+    return re.test(email);
+  }
+  function draw_wl_policy_domain_table() {
+    $('#wl_policy_domain_table').DataTable({
+      responsive: true,
+      processing: true,
+      serverSide: false,
+      stateSave: true,
+      pageLength: pagination_size,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+      language: lang_datatables,
+      ajax: {
+        type: "GET",
+        url: '/api/v1/get/policy_wl_domain/' + table_for_domain,
+        dataSrc: function(data){
+          $.each(data, function (i, item) {
+            if (!validateEmail(item.object)) {
+              item.chkbox = '<input type="checkbox" class="form-check-input" data-id="policy_wl_domain" name="multi_select" value="' + item.prefid + '" />';
+            }
+            else {
+              item.chkbox = '<input type="checkbox" class="form-check-input" disabled title="' + lang_user.spamfilter_table_domain_policy + '" />';
+            }
+          });
+
+          return data;
+        }
+      },
+      columns: [
+        {
+          // placeholder, so checkbox will not block child row toggle
+          title: '',
+          data: null,
+          searchable: false,
+          orderable: false,
+          defaultContent: ''
+        },
+        {
+          title: '',
+          data: 'chkbox',
+          searchable: false,
+          orderable: false,
+          defaultContent: ''
+        },
+        {
+          title: 'ID',
+          data: 'prefid',
+          defaultContent: ''
+        },
+        {
+          title: lang_user.spamfilter_table_rule,
+          data: 'value',
+          defaultContent: ''
+        },
+        {
+          title: 'Scope',
+          data: 'object',
+          defaultContent: ''
+        }
+      ]
+    });
+  }
+  function draw_bl_policy_domain_table() {
+    $('#bl_policy_domain_table').DataTable({
+      responsive: true,
+      processing: true,
+      serverSide: false,
+      stateSave: true,
+      pageLength: pagination_size,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+      language: lang_datatables,
+      ajax: {
+        type: "GET",
+        url: '/api/v1/get/policy_bl_domain/' + table_for_domain,
+        dataSrc: function(data){
+          $.each(data, function (i, item) {
+            if (!validateEmail(item.object)) {
+              item.chkbox = '<input type="checkbox" class="form-check-input" data-id="policy_bl_domain" name="multi_select" value="' + item.prefid + '" />';
+            }
+            else {
+              item.chkbox = '<input type="checkbox" class="form-check-input" disabled tooltip="' + lang_user.spamfilter_table_domain_policy + '" />';
+            }
+          });
+
+          return data;
+        }
+      },
+      columns: [
+        {
+          // placeholder, so checkbox will not block child row toggle
+          title: '',
+          data: null,
+          searchable: false,
+          orderable: false,
+          defaultContent: ''
+        },
+        {
+          title: '',
+          data: 'chkbox',
+          searchable: false,
+          orderable: false,
+          defaultContent: ''
+        },
+        {
+          title: 'ID',
+          data: 'prefid',
+          defaultContent: ''
+        },
+        {
+          title: lang_user.spamfilter_table_rule,
+          data: 'value',
+          defaultContent: ''
+        },
+        {
+          title: 'Scope',
+          data: 'object',
+          defaultContent: ''
+        }
+      ]
+    });
+  }
+
+
+  // detect element visibility changes
+  function onVisible(element, callback) {
+    $(document).ready(function() {
+      element_object = document.querySelector(element);
+      if (element_object === null) return;
+
+      new IntersectionObserver((entries, observer) => {
+        entries.forEach(entry => {
+          if(entry.intersectionRatio > 0) {
+            callback(element_object);
+            observer.disconnect();
+          }
+        });
+      }).observe(element_object);
+    });
+  }
+  // Draw Table if tab is active
+  onVisible("[id^=wl_policy_domain_table]", () => draw_wl_policy_domain_table());
+  onVisible("[id^=bl_policy_domain_table]", () => draw_bl_policy_domain_table());
+});