git subrepo clone https://github.com/mailcow/mailcow-dockerized.git mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "a832becb"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "a832becb"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: If5be2d621a211e164c9b6577adaa7884449f16b5
diff --git a/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js b/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js
new file mode 100644
index 0000000..1626d4b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/js/site/edit.js
@@ -0,0 +1,141 @@
+$(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');

+  });

+});

+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();

+  }

+});

+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();

+  }

+});

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

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

+});

+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() {

+    ft_wl_policy_mailbox_table = FooTable.init('#wl_policy_domain_table', {

+      "columns": [

+        {"name":"chkbox","title":"","style":{"maxWidth":"40px","width":"40px"},"filterable": false,"sortable": false,"type":"html"},

+        {"name":"prefid","style":{"maxWidth":"40px","width":"40px"},"title":"ID","filterable": false,"sortable": false},

+        {"sorted": true,"name":"value","title":lang_user.spamfilter_table_rule},

+        {"name":"object","title":"Scope"}

+      ],

+      "empty": lang_user.empty,

+      "rows": $.ajax({

+        dataType: 'json',

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

+        jsonp: false,

+        error: function () {

+          console.log('Cannot draw mailbox policy wl table');

+        },

+        success: 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 + '" />';

+            }

+          });

+        }

+      }),

+      "paging": {

+        "enabled": true,

+        "limit": 5,

+        "size": pagination_size

+      },

+      "sorting": {

+        "enabled": true

+      }

+    });

+  }

+  function draw_bl_policy_domain_table() {

+    ft_bl_policy_mailbox_table = FooTable.init('#bl_policy_domain_table', {

+      "columns": [

+        {"name":"chkbox","title":"","style":{"maxWidth":"40px","width":"40px"},"filterable": false,"sortable": false,"type":"html"},

+        {"name":"prefid","style":{"maxWidth":"40px","width":"40px"},"title":"ID","filterable": false,"sortable": false},

+        {"sorted": true,"name":"value","title":lang_user.spamfilter_table_rule},

+        {"name":"object","title":"Scope"}

+      ],

+      "empty": lang_user.empty,

+      "rows": $.ajax({

+        dataType: 'json',

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

+        jsonp: false,

+        error: function () {

+          console.log('Cannot draw mailbox policy bl table');

+        },

+        success: 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 + '" />';

+            }

+          });

+        }

+      }),

+      "paging": {

+        "enabled": true,

+        "limit": 5,

+        "size": pagination_size

+      },

+      "sorting": {

+        "enabled": true

+      }

+    });

+  }

+  draw_wl_policy_domain_table();

+  draw_bl_policy_domain_table();

+});
\ No newline at end of file