$(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 = ''; } else { item.chkbox = ''; } }); 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 = ''; } else { item.chkbox = ''; } }); 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()); });