// VARIABLES let ns_groups = null; let hosting_options = null; let current_domain = ''; let current_id = 0; let domain_contacts_langstrs = {}; let dd_main_loaded = false; let dd_ns_loaded = false; let dd_contacts_loaded = false; let dd_epp_loaded = false; let renew_domain_form_is_made = false; let curr_domain_id = 0; let domainlisting_lastchecked = null; let domains_filter_object = {}; let domains_object = {}; let domain_row_strings = {}; let domains_filter_soon_date_start = 0; let domains_filter_soon_date_end = 0; let idprotection_cost = 0; let idprotection_text = ''; let table_data = getDomainTableColumnData(); let domain_action = ''; let tld_list = []; let default_domain_filters = {}; // LISTENERS $(document).on('change', '.table-row-checkbox', function() { let show_bulk_action = false; $('.table-row-checkbox').each(function(i, obj) { if ($(obj).is(':checked')) { show_bulk_action = true; } }); if (show_bulk_action) { $('#bulk-actions-selection').show(); $('#filters-actions').hide(); bulkActionFix(); } else { $('#bulk-actions-selection').hide(); $('#filters-actions').show(); } }); $(document).on('change', '#blankCheckbox', function (e) { let isChecked = false; if ($(this).is(':checked')) { isChecked = true; $('#bulk-actions-selection').show(); $('#filters-actions').hide(); } else { $('#bulk-actions-selection').hide(); $('#filters-actions').show(); } $('.table-row-checkbox:enabled').each(function(i, obj) { $(obj).prop('checked', isChecked); }); if (isChecked) { bulkActionFix(); } }); $(document).on('change', '#domain_list_page_limit', function() { if ('All' == $('#domain_list_page_limit').val()) { domains_filter_object.limit = 'All'; } else { domains_filter_object.limit = parseInt($('#domain_list_page_limit').val()); } domains_filter_object.page = 1; addDomainListingRows(); window.scrollTo({top: 0, behavior: 'smooth'}); }); $(document).on('change', '.domains-filter-opt-date', domainListingFilters); $(document).on('click', '.domains-filter-opt input', domainListingFilters); $(document).on('click', '#domain_listing_pagination_ul a.page-link', function() { let current_page = $('#domain_listing_pagination_ul li.page-item.active').first().attr('name'); let new_page = $(this).parent().attr('name'); if (current_page != new_page) { if ('Previous' == new_page) { new_page = parseInt(current_page); new_page--; } else if ('Next' == new_page) { new_page = parseInt(current_page); new_page++; } domains_filter_object.page = parseInt(new_page); addDomainListingRows(false); window.scrollTo({top: 0, behavior: 'smooth'}); } }); $(document).on('click', '.table-domains .sort-header', function() { let sort = $(this).data('sort'); let order_class = 'fa-arrow-up'; if (sort == domains_filter_object.sort) { if ('asc' == domains_filter_object.order) { domains_filter_object.order = 'desc'; order_class = 'fa-arrow-down'; } else { domains_filter_object.order = 'asc'; } } else { domains_filter_object.sort = sort; domains_filter_object.order = 'asc'; } $('.table-domains .sort-header').each(function(i, obj) { $(obj).find('i').removeClass(['fa-arrow-up', 'fa-arrow-down']); }); $(this).find('i').addClass(order_class); domains_filter_object.page = 1; sortDomainRows(); window.scrollTo({top: 0, behavior: 'smooth'}); }); $(document).on('search keyup', '#table_search', function() { domains_filter_object.page = 1; addDomainListingRows(false); }); $(document).on('change', '.bulk-privacy-protection-radio', function (e) { if (!$("input[name='managePrivacyProtection']:checked").val()) { $('#bulk_privacy_protection_btn').attr('disabled', true); } else { if ($('#enablePrivacyProtection').is(':checked') && parseFloat($('#bulk_privacy_protection_btn').val()) > 0) { $('#bulk_privacy_protection_btn').text($('#bulk_privacy_protection_btn').data('text-buy') + ' $' + $('#bulk_privacy_protection_btn').val()); } else { $('#bulk_privacy_protection_btn').text($('#bulk_privacy_protection_btn').data('text-apply')); } $('#bulk_privacy_protection_btn').attr('disabled', false); } }); $(document).on('change', '.bulk-auto-renew-radio', function (e) { if (!$("input[name='manageBulkAutoRenew']:checked").val()) { $('#bulk_auto_renew_btn').attr('disabled', true); } else { $('#bulk_auto_renew_btn').attr('disabled', false); } }); $(document).on('change', '.bulk-reg-lock-radio', function (e) { if (!$("input[name='manageRegistraLock']:checked").val()) { $('#bulk_reglock_btn').attr('disabled', true); } else { $('#bulk_reglock_btn').attr('disabled', false); } }); $(document).on('click', '#whcNameservers', function (e) { $('#connect-details').show(); $('#future_ns').show(); $('#custom-nameservers').hide(); $('#button-apply-ns').prop( "disabled", false ); }); $(document).on('click', '#customNameservers', function (e) { $('#custom-nameservers').show(); $('#future_ns').hide(); $('#connect-details').hide(); $('#button-apply-ns').prop( "disabled", false ); }); $(document).on('change', '#hosting-select', function (e) { let inputs = ''; for (const [key, value] of Object.entries(ns_groups[$(this).val()])) { inputs += ``; }; $('#future_ns_rows').html(inputs); let extra_data = $(this).find(':selected').data('extra'); $('.pre-change-warning').hide(); $('#ns_warning_' + extra_data).show(); }); $(document).on('click', '.domain-details-modal', function (e) { let target = $(this).attr('data-target').replace('#', ''); let data = {show_modal: target}; pushState(data, null, '/nca/domains/' + current_domain + '/' + domain_actions[target]); if ('privatenameservers' == domain_actions[target]) { getPrivateNs(); } }); // let dom load prior to event handler being set $(function() { $(document).on('hidden.bs.modal', '#transferAway', function (e) { $('#eppCode').prop('type', 'password'); $('#showEPPCode').show(); $('#copyEPPCode').hide(); }); $(document).on('hidden.bs.modal', '#bulkRegistrarLock', function (e) { $('.bulk-reg-lock-radio').prop('checked', false); }); }); $(document).on('change', '#allContactType', function (e) { if ($('#allContactType').is(':checked')) { $('#editContactInfoTabs').hide(); $('#registrant-tab').tab('show'); } else { $('#editContactInfoTabs').show(); } }); $(document).on('change', '#allDomainContactType', function (e) { if ($('#allDomainContactType').is(':checked')) { $('#editDomainContactInfoTabs').hide(); $('#registrant-tab').tab('show'); } else { $('#editDomainContactInfoTabs').show(); } }); $(document).on('click', '#showEPPCode', function (e) { $('#eppCode').prop('type', 'text'); $('#showEPPCode').hide(); if (dd_epp_loaded) { $('#copyEPPCode').show(); } else { $('#loadEPPCode').show(); getEPPCode($('#loadEPPCode').val()); } }); $(document).on('click', '#copyEPPCode', function (e) { navigator.clipboard.writeText($('#eppCode').val()); $('#copyEPPCode').attr('title', base_strings.nca_copied).tooltip('_fixTitle').tooltip('show'); setTimeout( function() { $('#copyEPPCode').attr('title', base_strings.nca_copy).tooltip('_fixTitle'); if ($('#copyEPPCode').is(":hover")) { $('#copyEPPCode').tooltip('show'); } }, 10000); }); $(document).on('mouseout', '#copyEPPCode', function (e) { $('#copyEPPCode').tooltip('hide'); }); $(document).on('click', '.domain-listing-columns', function (e) { let col_id = $(this).attr('id').replace('_check', ''); let col_display = $(this).is(':checked'); let col_index = 0; $('#domain_listing_headers td').each(function(){ if ($(this).attr('id') && $(this).attr('id') == col_id) { col_index = $('#domain_listing_headers td').index(this) + 1; } }); if (col_index) { if (col_display) { $(`.table-domains td:nth-child(${col_index})`).show(); } else { $(`.table-domains td:nth-child(${col_index})`).hide(); } } updateDomainTableColumns(false); }); $(document).on('click', '#saveContactInfo_btn', function() { let data = $('#editContactInfoForm').serializeArray(); let domain_contacts = ''; $('#saveContactInfo_btn_cancel').attr('disabled', true); $('#saveContactInfo_btn').hide(); $('#saveContactInfo_btn_spinner').show(); let hide_modal = true; $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'updateDomainContacts', nca_action: 'nca_domains_contacts', token: token, data: data }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { if ('0' != res) { let response = JSON.parse(res); if (response.err_code) { if (9 == response.err_code) { showErrorAlertMsg(response.err_str, 0, response.err_code); } else if(5 === response.err_code) { let err = JSON.parse(response.err_str); let err_msg = ''; $(err['error']).each(function(i, domain) { err_msg += `
  • ${$('#contact-'+domain).html()}
  • `; }); $('#contact_error_domain').html(err_msg); $('#domain_contact_error').removeClass('hide'); hide_modal = false; } else { showErrorAlertMsg('', 0, response.err_code); } } else { let contacts_obj = {}; let use_all = false; for (const [key, value] of Object.entries(data)) { if ('allContactType' == value.name && 'on' == value.value) { use_all = true; } let name_vals = value.name.split('-'); if (['registrant', 'admin', 'technical', 'billing'].includes(name_vals[0])) { if (!contacts_obj[name_vals[0]]) { contacts_obj[name_vals[0]] = {}; } contacts_obj[name_vals[0]][name_vals[1]] = value.value; } } if (use_all) { for (const [key, value] of Object.entries(contacts_obj)) { if ('registrant' != key) { contacts_obj[key] = contacts_obj['registrant']; } } } $('#domain_contact_info').html(buildDomainContactsHtml(contacts_obj)); showSuccessAlert('nca_domain_contact_successful'); } } else { showErrorAlertMsg(base_strings.dm2_err_msg); } $('#saveContactInfo_btn_cancel').attr('disabled', false); $('#saveContactInfo_btn').show(); $('#saveContactInfo_btn_spinner').hide(); if(hide_modal){ $('#editContactInfo').modal('hide'); } } }); }); $(document).on('click', '#domains_table_tbody .form-check-input', function (e) { if (!domainlisting_lastchecked) { domainlisting_lastchecked = this; return; } if (e.shiftKey) { let $chkboxes = $('#domains_table_tbody .form-check-input'); let start = $chkboxes.index(this); let end = $chkboxes.index(domainlisting_lastchecked); $chkboxes.slice(Math.min(start,end), Math.max(start,end)+ 1).prop('checked', domainlisting_lastchecked.checked); } domainlisting_lastchecked = this; }); $(document).on('click', '.customSwitch-privacyProtection', function(e) { let status = $(this).is(':checked'); let domainId = $(this).attr('data-domainid'); let domain_data = {}; domain_data[$(this).data('domainid')] = status == true ? 1 : 0; if (status === true && idprotection_cost > 0) { Swal.fire({ title: base_strings.domainnameprivacy, text: idprotection_text, showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: $(this).attr('data-buybutton'), cancelButtonText: base_strings.cancel }).then((result) => { if (result.value) { setUXMapData('domain_privacy_confirm_purchase'); setPrivacyProtectionStatus(domain_data, true); } else{ $('#privacySwitch' + domainId).prop('checked', false); } }) }else{ setPrivacyProtectionStatus(domain_data, true); } }); $(document).on('click', '#customSwitch-registrarLock', function(e) { let status = $('#customSwitch-registrarLock').is(':checked'); if (false == status) { $('#customSwitch-registrarLock').popover('show'); e.preventDefault(); return false; } let domain_data = {}; $('#customSwitch-registrarLock').attr('disabled', true); domain_data[$('#customSwitch-registrarLock').data('domainid')] = status == true ? 1 : 0; setRegistrarLockStatus(domain_data, true); }); $(document).on('click', '#reglockpopoveraccept', function(e) { let domain_data = {}; $('#customSwitch-registrarLock').prop('checked', false); $('#customSwitch-registrarLock').attr('disabled', true); domain_data[$('#customSwitch-registrarLock').data('domainid')] = status == true ? 1 : 0; setRegistrarLockStatus(domain_data, true); }); $(document).on('click', '#reglockpopovercancel, #reglockpopoveraccept', function(e) { $('#customSwitch-registrarLock').popover('hide'); }); // FUNCTIONS function loadDomainDetails(domain, id = 0) { if (window.event.ctrlKey ?? false) { let a = document.createElement("a"); a.href = `/nca/domains/${domain}?id=${id}`; let evt = document.createEvent("MouseEvents"); //the tenth parameter of initMouseEvent sets ctrl key evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); a.dispatchEvent(evt); } else if (window.event.shiftKey ?? false) { let a = document.createElement('a'); a.href = `/nca/domains/${domain}?id=${id}`; let evt = document.createEvent('MouseEvents'); //the twelfth parameter of initMouseEvent sets ctrl key evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null); a.dispatchEvent(evt); } else { let data = {id: id}; pushState(data, null, '/nca/domains/' + domain); loadDomainData({domainid: id}); } } function viewAllDomains() { window.history.replaceState({domainid: current_id}, null); current_domain = ''; current_id = 0; pushState(null, null, '/nca/domains'); loadDomainData({init_load: 1}); } function buildFullDomainListingView(args) { let langs = args.langstrs; default_domain_filters = args.default_domain_filters; domains_filter_object.sort = 'domain'; domains_filter_object.order = 'asc'; domains_filter_object.status = ['Active']; domains_filter_object.status_soon = false; domains_filter_object.auto_renew = []; domains_filter_object.privacy = []; domains_filter_object.extension = []; domains_filter_object.exipire_after = 0; domains_filter_object.exipire_after_date = ''; domains_filter_object.page = 1; domains_filter_object.limit = 10; domains_filter_object = updateFilterObjects(domains_filter_object); domains_filter_object.auto_renew.forEach((val, idx) => { if (['0', '1'].includes(val)) { domains_filter_object.auto_renew[idx] = parseInt(val); } }); domains_filter_object.privacy.forEach((val, idx) => { if (['0', '1'].includes(val)) { domains_filter_object.privacy[idx] = parseInt(val); } }); domains_object = args.data; domain_row_strings = args.domain_listing_row_strs; domains_filter_soon_date_start = Date.parse(args.domains_filter_soon_date_start); domains_filter_soon_date_end = Date.parse(args.domains_filter_soon_date_end); domains_object.forEach((domain) => { domain.nextduedate_compare = Date.parse(domain.nextduedate); if (!domain.hasOwnProperty('nameservers')) { domain.nameservers = ['
    ']; domain.nameservers_lastchecked = ''; } }); addDomainListingRows(false); dd_main_loaded = false; dd_ns_loaded = false; dd_contacts_loaded = false; dd_epp_loaded = false; curr_domain_id = 0; idprotection_cost = args.idprotection_cost; idprotection_text = args.idprotection_text; if (ns_groups == null) { ns_groups = args.ns_groups; } if (hosting_options == null) { hosting_options = args.hosting_options; } if (args['domain_contacts_langstrs']) { domain_contacts_langstrs = args['domain_contacts_langstrs']; } if (args['errsuccess_langstrs']) { errsuccess_langstrs = specialCharFix(args['errsuccess_langstrs']); } if (!args.data.length) { setView(domains_noDomains(args, langs)); $('.skeleton-loader-table').remove(); return false; } args.table_data = table_data; Object.keys(args.tlds).forEach((key) => { tld_list.push(args.tlds[key]); }); domainQueryFilters(); setView(domains_domainListing(args, langs)); sortDomainRows(false); setDomainsFilterSpan(); $('#domains_listing_container #nca_pagination_total_count').text(args.data.length); orderDomainTableColumns(true); let sort_class = 'fa-arrow-up'; if ('desc' == domains_filter_object.order) { sort_class = 'fa-arrow-down'; } $(`div[data-sort="${domains_filter_object.sort}"]`).find('i').addClass(sort_class); if ($('#changeNameservers').length) { $('#changeNameservers').remove(); } $('#main').append(modals_changeNS(args, langs)); if (!$('#editContactInfo').length) { $('#main').append(modals_domainContactsUpdate(args, domain_contacts_langstrs)); } if (!$('#bulkRegistrarLock').length) { $('#main').append(modals_domainRegLock(args, langs)); } if (!$('#bulkPrivacyProtection').length) { $('#main').append(modals_privacyProtection(args, langs)); } if (!$('#bulkAutoRenewDomains').length) { $('#main').append(modals_bulkAutoRenewDomains(args, langs)); } if (url_filter.get('s') === 'renew') { resetFilters(); domains_filter_object.limit = 'All'; domains_filter_object.status_soon = true; domains_filter_object.offset = 0; domains_filter_object.to_limit = args.data.length; domains_filter_object.final_page = 1; domains_filter_object.current_page = 1; domains_filter_object.sort = 'nextduedate_compare'; domains_filter_object.order = 'asc'; sortDomainRows(false); setDomainsFilterSpan(); } $('.skeleton-loader').show(); $('.skeleton-loaded').hide(); $('.skeleton-loader-table').remove(); $('[data-toggle="tooltip"]').tooltip(); $('#domain_listing_headers td').each(function(){ if ($(this).attr('id') && $(this).is(':visible')) { $(`#${$(this).attr('id')}_check`).prop('checked', true) } }); $('#columns ul').sortable({ update: function(event, ui) { updateDomainTableColumns(); orderDomainTableColumns(); } }); } function sortDomainRows(save_filters = true) { domains_object.sort(function(a, b) { let left = a; let right = b; if ('desc' == domains_filter_object.order) { left = b; right = a; } if ('string' == typeof left[domains_filter_object.sort]) { return left[domains_filter_object.sort].localeCompare(right[domains_filter_object.sort]); } else if ('object' == typeof left[domains_filter_object.sort]) { if (!left[domains_filter_object.sort][0]) { return 0; } return left[domains_filter_object.sort][0].localeCompare(right[domains_filter_object.sort][0]); } else { return left[domains_filter_object.sort] - right[domains_filter_object.sort]; } }); addDomainListingRows(save_filters); } function addDomainListingRows(save_filters = true) { let domains_rows = ''; let rows_found_count = 0; let filter_limit = domains_filter_object.limit == 'All' ? domains_object.length + 1 : domains_filter_object.limit; let offset = (domains_filter_object.page - 1) * filter_limit; let min = Math.min((offset + filter_limit), domains_object.length); let rows_set_count = offset; let search_string = ''; if ($('#table_search').length) { if ('' != $('#table_search').val()) { search_string = $('#table_search').val().toLowerCase(); } else if (null != url_filter.get('search')) { $('#table_search').val(url_filter.get('search')); search_string = url_filter.get('search').toLowerCase(); } url_filter.delete('search'); } domains_object.forEach((domain) => { let add_row = true; let renew_disabled = ['Active', 'Grace', 'Redemption'].includes(domain.status) ? '' : 'disabled'; let privacy_disabled = ['Active', 'Grace'].includes(domain.status) ? '' : 'disabled'; let id_protection_toggle_state = domain.idprotection ? 'checked' : ''; let tooltip_text = idprotection_text; if (!domain.idprotection_support) { id_protection_toggle_state = 'disabled'; tooltip_text = domain_row_strings.nca_privacy_protection_not_supported_text; } if (domain.unpaid_idprotection_invoice) { id_protection_toggle_state = 'disabled'; tooltip_text = domain_row_strings.nca_privacy_protection_unpaid_invoice; tooltip_text = tooltip_text.replace(':idprotection_invoice_id', domain.unpaid_idprotection_invoice.invoiceid); } domain.renew_disabled = renew_disabled; domain.privacy_disabled = privacy_disabled; domain.id_protection_toggle_state = id_protection_toggle_state; domain.tooltip_text = tooltip_text; if (domains_filter_object.status.length && !domains_filter_object.status.includes('All')) { if (!domains_filter_object.status.includes(domain.status)) { add_row = false; } } if (domains_filter_object.status_soon) { if (!['Active', 'Grace', 'Redemption'].includes(domain.status)) { add_row = false; } else if (!(domain.nextduedate_compare > domains_filter_soon_date_start && domain.nextduedate_compare <= domains_filter_soon_date_end)) { add_row = false; } } if (domains_filter_object.auto_renew.length && !domains_filter_object.auto_renew.includes('All')) { if (!domains_filter_object.auto_renew.includes(domain.donotrenew)) { add_row = false; } } if (domains_filter_object.privacy.length && !domains_filter_object.privacy.includes('All')) { if (!domains_filter_object.privacy.includes(domain.idprotection)) { add_row = false; } } if (domains_filter_object.extension.length && !domains_filter_object.extension.includes('All')) { if (!domains_filter_object.extension.includes(domain.extension)) { add_row = false; } } if (domains_filter_object.exipire_after && !(domain.nextduedate_compare > domains_filter_object.exipire_after)) { add_row = false; } if ('' != search_string) { if ($('#domain_listing_ns_col').is(':visible')) { if (!(domain.domain.toLowerCase().includes(search_string) || domain.nameservers.filter((ns) => ns.toLowerCase().includes(search_string)).length)) { add_row = false; } } else { if (!domain.domain.toLowerCase().includes(search_string)) { add_row = false; } } } if (add_row) { if (rows_found_count >= offset && rows_set_count < min) { domain.table_data = table_data; domains_rows += domains_domainListingRow(domain); rows_set_count++; } rows_found_count++; } }); domains_filter_object.from_limit = rows_found_count === 0 ? 0 : offset + 1; domains_filter_object.to_limit = Math.min(min, rows_found_count); domains_filter_object.filter_count = rows_found_count; domains_filter_object.final_page = domains_filter_object.limit != 'All' ? Math.ceil(domains_filter_object.filter_count / domains_filter_object.limit) : 1; $('.domain-list-row').remove(); $('#domains_listing_container #domain_listing_pagination_ul').html(createPagination(domains_filter_object.page, domains_filter_object.final_page, base_strings.nca_previous, base_strings.nca_next)); $('#domains_listing_container #nca_pagination_from_limit').text(domains_filter_object.from_limit); $('#domains_listing_container #nca_pagination_to_limit').text(domains_filter_object.to_limit); $('#domains_listing_container #nca_pagination_filter_count').text(domains_filter_object.filter_count); $('#domains_table_tbody').append(domains_rows); $('[data-toggle="tooltip"]').tooltip(); if (rows_found_count === 0) { $('#domains_table_tbody #noResults').show(); } else { $('#domains_table_tbody #noResults').hide(); } setDomainQueryFilterString(); if (save_filters) { saveFilters(domains_filter_object); } } function buildDomainDetails(args, domain_action) { args['langstrs'].dm2_upto_rules = args['langstrs'].dm2_upto_rules.replace(':x', args['max_domain_forwarders']); let template_data = args; let langs = args['langstrs']; let tld = args.domain_data.domain.split('.').pop(); let id_protection_toggle_state = ''; let tooltip_lang_var = 'nca_privacy_protection_text'; if (!args['domain_data'].idprotection_support) { id_protection_toggle_state = 'disabled'; tooltip_lang_var = 'nca_privacy_protection_not_supported_text'; } else { if (args['domain_data'].idprotection) { id_protection_toggle_state = 'checked'; } if (args['domain_data'].unpaid_idprotection_invoice) { id_protection_toggle_state = 'disabled'; tooltip_lang_var = 'nca_privacy_protection_unpaid_invoice'; } } dd_main_loaded = false; dd_ns_loaded = false; dd_contacts_loaded = false; dd_epp_loaded = false; if (ns_groups == null) { ns_groups = args.ns_groups; } if (hosting_options == null) { hosting_options = args.hosting_options; } current_id = args['domain_data'].id; curr_domain_id = args['domain_data'].id; dm2_current_id = args['domain_data'].id; dm2_current_domain = args['domain_data'].domain; max_email_forwarders = args['max_email_forwarders']; max_domain_forwarders = args['max_domain_forwarders']; current_email_forwarders = args['email_forwarders'].length; if (args['domain_contacts_langstrs']) { domain_contacts_langstrs = args['domain_contacts_langstrs']; } if (args['errsuccess_langstrs']) { errsuccess_langstrs = specialCharFix(args['errsuccess_langstrs']); } if (args['swal_langstrs']) { swal_langstrs = args['swal_langstrs']; } let privacy_protection_small_text = (args['domain_data'].donotrenew == 0 ? langs.nca_renews_on : langs.nca_expires_on) + ' ' + args['domain_data'].nextduedate; if ('.ca' == args['domain_data'].domain.substr(-3)) { privacy_protection_small_text = langs.nca_included_forever; } template_data.tld = tld; template_data.id_protection_toggle_state = id_protection_toggle_state; template_data.tooltip_lang_var = tooltip_lang_var; template_data.privacy_protection_small_text = privacy_protection_small_text; setView(domains_domainDetails(template_data, langs)); $('#premiumDNSUpsell').remove(); $('#main').append(modals_premiumDNSUpsell({ domain: args.domain_data.domain, lang: args.lang, premium_dns_pricing: args.premium_dns_pricing }, langs)); $('#editDomainContactInfo').remove(); $('#main').append(modals_domainContactsUpdate(args.domain_data, args.domain_contacts_langstrs)); args.domain_data.view_type = 'domain'; addModals(args, langs); $('#bulk_contacts_label').html(base_strings.ns_wizard_You_selected + ' ' + current_domain + ''); $('#bulk_contacts_label').show(); $('#bulk_contacts_collapse').hide(); if ('Active' != args.domain_data.status) { switch (args.domain_data.status) { case 'Grace': $('.status-1').addClass('disabled status-disabled'); $('.status-1').attr('disabled', true); $('.status-1').attr('onclick', ''); break; case 'Redemption': $('.status-1').addClass('disabled status-disabled'); $('.status-1').attr('disabled', true); $('.status-1').attr('onclick', ''); $('.status-2').addClass('disabled status-disabled'); $('.status-2').attr('disabled', true); $('.status-2').attr('onclick', ''); break; default: $('.status-1').addClass('disabled status-disabled'); $('.status-1').attr('disabled', true); $('.status-1').attr('onclick', ''); $('.status-2').addClass('disabled status-disabled'); $('.status-2').attr('disabled', true); $('.status-2').attr('onclick', ''); $('.status-3').addClass('disabled status-disabled'); $('.status-3').attr('disabled', true); $('.status-3').attr('onclick', ''); } } getDomainLockStatus(args['domain_data'].id); getNameServers(args['domain_data'].id); getNameserverStatus(args['domain_data'].id, args['domain_data'].domain); getDomainForwardingZoneStatus(args['domain_data'].id, args['domain_data'].domain); getEmailForwardingZoneStatus(args['domain_data'].id, args['domain_data'].domain); getDomainContacts(args['domain_data'].id, true); $('#edit_contact_domain_ids').val(args['domain_data'].id); if(tld === 'ca') { getHideWhoIsInfo(args.domain_data.domain); $('#hide-whois').removeClass('hide'); } $('.skeleton-loader').show(); $('.skeleton-loaded').hide(); if (domain_url_paths.includes(domain_action) ) { for (const [key, value] of Object.entries(domain_actions)) { if (domain_action == value) { $('#' + key).modal('show'); if ('privatenameservers' == domain_action) { getPrivateNs(); } } } } $('#bulk_ns_label').html(base_strings.ns_wizard_You_selected + ' ' + current_domain + ''); $('#bulk_ns_label').show(); $('#bulk_ns_collapse').hide(); $('#button-apply-ns').val(0); $('[data-toggle="tooltip"]').tooltip(); line_counter(); refresh_mg_container(args['zone']); } function resetFilters() { $('[id^=span_]').each(function() { $(this).remove(); }); $('.multiselect-menu input').each(function() { if ('checkbox' == $(this).attr('type')) { $(this).prop('checked', false); } }); $('#filter_expire').val(''); domains_filter_object.auto_renew = []; domains_filter_object.extension = []; domains_filter_object.privacy = []; domains_filter_object.status = []; domains_filter_object.status_soon = false; domains_filter_object.exipire_after = 0; domains_filter_object.exipire_after_date = ''; domains_filter_object.page = 1; $('#table_search').val(''); addDomainListingRows(); } function setDomainsFilterSpan() { for (const [key, value] of Object.entries(domains_filter_object.auto_renew)) { domainsFilterSpanItem('filter_autoRenew', value); } for (const [key, value] of Object.entries(domains_filter_object.extension)) { domainsFilterSpanItem('filter_extension', value); } for (const [key, value] of Object.entries(domains_filter_object.privacy)) { domainsFilterSpanItem('filter_privacyProtection', value); } for (const [key, value] of Object.entries(domains_filter_object.status)) { domainsFilterSpanItem('filter_status', value); } if (domains_filter_object.status_soon) { domainsFilterSpanItem('filter_status', 'Soon'); } if (domains_filter_object.exipire_after) { domainsFilterSpanItem('filter_expire', domains_filter_object.exipire_after_date); } } function domainsFilterSpanItem(select_id, val) { val = String(val); let selected_filter = $(`#${select_id}`).data('filter'); let text = ''; let span_id = 'span_' + select_id; let checkbox_id = (select_id + '_' + val).replaceAll(' ', '_').replaceAll('.', ''); if ('exipire_after' != selected_filter && 'string' == typeof val) { span_id += '_' + val.replaceAll('.', ''); } span_id = span_id.replaceAll(' ', '_'); if ($(`#${select_id}`).attr('name')) { text = $(`#${select_id}`).attr('name') + ': '; } if ('filter_expire' == select_id) { text += val; } else { text += $('#' + select_id + '_' + val.replaceAll(' ', '_').replaceAll('.', '')).siblings('span').text(); } $('#' + checkbox_id).prop('checked', true); let span_data = { span_id: span_id, selected_filter: selected_filter, val: val, span_id: span_id, text: text }; $('#active-filters').append(domains_domainFilterSpan(span_data)); } function clearFilterSpan(filter_id) { let selected_filter = $(`#${filter_id}`).data('filter'); let selected_val = $(`#${filter_id}`).data('value'); let checkbox_id = filter_id.replaceAll('span_', ''); $(`#${filter_id}`).remove(); $('#' + checkbox_id).prop('checked', false); if (['auto_renew', 'privacy'].includes(selected_filter)) { selected_val = parseInt(selected_val); } if ('status' == selected_filter && 'Soon' == selected_val) { domains_filter_object.status_soon = false; } else if ('exipire_after' == selected_filter) { domains_filter_object.exipire_after = 0; domains_filter_object.exipire_after_date = ''; $('#filter_expire').val(''); } else { let index = domains_filter_object[selected_filter].indexOf(selected_val); if (index !== -1) { domains_filter_object[selected_filter].splice(index, 1); } } domains_filter_object.page = 1; addDomainListingRows(); window.scrollTo({top: 0, behavior: 'smooth'}); } function addCustomNsRow() { let row_number = $('#custom_ns_rows input').length + 1; $('#custom_ns_rows').append(``); if (row_number >= 5) { $('#addExtraNSRow').hide(); } } function singleChangeNS(domain, domain_id) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getNSGroup', nca_action: 'nca_domains_getns', token: token, domain: domain, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); $('#hosting-select').val($('#hosting-select option:first').val()); $('#future_ns_rows').html(''); $('#ns_warning_addons').hide(); $('#ns_warning_aliases').hide(); if (!response.err_code && response.data.length && ns_groups.hasOwnProperty(response.data[0].ns_group)) { let html = ''; ns_groups[response.data[0].ns_group].forEach(item => { html += ``; }); $('#future_ns_rows').html(html); $(`#ns_warning_${response.data[0].extra_domains_group}`).show(); } $('#bulk_ns_label').html(base_strings.ns_wizard_You_selected + ' ' + domain + ''); $('#bulk_ns_label').show(); $('#bulk_ns_collapse').hide(); $('#button-apply-ns').val(0); $('#changeNameservers').modal('show'); } }); } function bulkChangeNS() { $('#hosting-select').val($('#hosting-select option:first').val()); $('#future_ns_rows').html(''); $('#ns_warning_addons').hide(); $('#ns_warning_aliases').hide(); if (hosting_options.length && ns_groups.hasOwnProperty(hosting_options[0].ns_group)) { let html = ''; ns_groups[hosting_options[0].ns_group].forEach(item => { html += ``; }); $('#future_ns_rows').html(html); $(`#ns_warning_${hosting_options[0].extra_domains_group}`).show(); } let checked_count = $('.table-row-checkbox:checked').length; let bulk_domain_data = bulkActionDomainsData(); if (1 == checked_count) { let html = base_strings.ns_wizard_You_selected + ' ' + $('.table-row-checkbox:checked').attr('data-domainname') + ''; $('#bulk_ns_label').html(html); $('#bulk_ns_label').show(); $('#bulk_ns_collapse').hide(); } else { let html = ` ${base_strings.ns_wizard_You_selected} . `; $('#bulk_ns_collapse').html(html); $('#nsBulkList').html(bulk_domain_data['html']); $('#bulk_ns_collapse').show(); $('#bulk_ns_label').hide(); $('#button-apply-ns').val(bulk_domain_data['id_arr']); } $('#changeNameservers').modal('show'); } function changeNS() { let button_apply_html = $('#button-apply-ns').html(); $('#button-apply-ns').html(''); $('#button-apply-ns').prop( "disabled", true ); let url = urls.change_ns; let ids = []; let domain = ''; let domain_id = 0; if (0 != $('#button-apply-ns').val()) { url = urls.change_bulk_ns; ids = $('#button-apply-ns').val().split(','); } else { domain = $('#ns_change_modal').text(); domain_id = $('#ns_change_modal').attr('value'); } let ns_group = ''; let connect_domain = ''; let ns = ''; if ($('#customNameservers').is(':checked')) { ns_group = 'custom'; ns = []; $('#custom_ns_rows').children('input').each(function (i) { if ('' != this.value) { ns[i] = this.value; } }); } else { ns_group = $('#hosting-select').val(); connect_domain = $('#hosting-select').find('option:selected').attr('data-domain'); ns = ns_groups[ns_group]; } $.ajax({ method: 'post', url: url, data: { action: 'set', domain: domain, domain_id : domain_id, ids: ids, ns_group: ns_group, connect_domain: connect_domain, ns: ns }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { $('#button-apply-ns').html(button_apply_html); $('#button-apply-ns').prop( "disabled", false ); let data = JSON.parse(res); if( data['err_code'] !== 0 ) { if (data['forbidden']) { showErrorAlertMsg(data.err_str, 0, data.err_code > 10 ? data.err_code : 0); } else { let err_str = ''; if (data['err_str']) { err_str = data['err_str']; } else if (data['error']) { err_str = data['error']; } else if (data['errors']) { err_str = errsuccess_langstrs.nca_domains_failed + '

    '; for (const [key, value] of Object.entries(data['errors'])) { err_str += key + ': ' + value + '
    '; } } showErrorAlertMsg(err_str, true, data.err_code > 10 ? data.err_code : 0); } } else { showSuccessAlert('d2_domain_ns_updated'); if ($('#nslist').length) { let html = ''; ns.forEach(function (item) { html += `
  • ${item}
  • `; }); $('#nslist').html(html); getNameserverStatus(current_id, current_domain); } } $('#changeNameservers').modal('toggle'); } }); } function updateAutoRenew(domain_id) { let autorenew = $('#customSwitch' + domain_id).is(':checked') ? 1 : 0; $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'setAutoRenew', nca_action: 'nca_domains_autorenew', autorenew: autorenew, token: token, domain_id: domain_id, }, error: () => { showErrorAlertMsg('', 0, 10); resetToggleSwitch('customSwitch' + domain_id, autorenew); }, success: (res) => { if ('1' == res) { showSuccessAlert(1 == autorenew ? 'nca_auto_renew_enabled' : 'nca_auto_renew_disabled'); } else { let data = JSON.parse(res); if(9 == data['err_code']) { showErrorAlertMsg(data.err_str, 0, data.err_code); } else { showErrorAlertMsg('', 0, data.err_code ?? 0); } resetToggleSwitch('customSwitch' + domain_id, autorenew); } } }); } function resetToggleSwitch(switch_id, new_val) { let reset_value = true; if (1 == new_val) { reset_value = false; } $('#' + switch_id).prop('checked', reset_value); } function getDomainLockStatus(domain_id) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getLockStatus', nca_action: 'nca_domains_domainlock', token: token, domain_id: domain_id, }, error: () => { showErrorAlertMsg('', 0, 10); $('#customSwitch-registrarLock').prop( "disabled", true ); }, success: (res) => { if ('0' != res) { let data = JSON.parse(res); if ('locked' == data['lockstatus']) { $('#customSwitch-registrarLock').prop( "checked", true ); } } else { $('#customSwitch-registrarLock').prop( "disabled", true ); } dd_main_loaded = true; domainDetailsLoaded(); } }); } function setBulkAutoRenew() { let autorenew = $('#enableBulkAutoRenew').is(':checked') ? 1 : 0; let bulkDomainData = {}; $('#bulk_auto_renew_btn').hide(); $('#bulk_auto_renew_btn_spinner').show(); $('.table-row-checkbox:checked').each(function(i, obj) { bulkDomainData[$(obj).attr('data-domainid')] = $(obj).attr('data-domainname'); }); $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'bulkSetAutoRenew', nca_action: 'nca_domains_autorenew', token: token, autorenew: autorenew, domains: bulkDomainData, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { $('#bulkAutoRenewDomains').modal('hide'); $('.bulk-auto-renew-radio').prop('checked', false); $('#bulk_auto_renew_btn').attr('disabled', true); $('#bulk_auto_renew_btn_spinner').hide(); $('#bulk_auto_renew_btn').show(); let response = JSON.parse(res); let errors = ''; Object.entries(bulkDomainData).forEach(([key, val]) => { if (Object.hasOwn(response, key)) { errors += `
    ${val}`; } else { $('#customSwitch' + key).prop('checked', autorenew); } }); if (Object.keys(response).length) { showErrorAlertMsg(response.err_str + errors, true, response.err_code ?? 0); } else { showSuccessAlertMsg(base_strings.changessavedsuccessfully); } } }); } function setPrivacyProtectionStatus(domain_data = {}, domain_details = false) { let domains = {}; if (!domain_details) { let lockstatus = $('#enablePrivacyProtection').is(':checked') ? 1 : 0; let empty_err = $('#bulk_privacy_protection_btn').data('text-invoice-exists'); $('.table-row-checkbox:checked').each(function(i, obj) { let current_element = domains_object.find(element => element.id == $(obj).attr('data-domainid')); if (!current_element.unpaid_idprotection_invoice && current_element.idprotection_support) { empty_err = $('#bulk_privacy_protection_btn').data('text-pp-active'); if (!(lockstatus && current_element.idprotection)) { domain_data[$(obj).attr('data-domainid')] = lockstatus; domains[$(obj).attr('data-domainid')] = $(obj).attr('data-domainname'); } } }); if ($.isEmptyObject(domain_data)) { $('#bulkPrivacyProtection').modal('hide'); showErrorAlertMsg(empty_err); return false; } $('#bulk_privacy_protection_btn').hide(); $('#bulk_privacy_protection_btn_spinner').show(); } $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'updateIdProtection', nca_action: 'nca_domains_idprotection', token: token, domain_data: domain_data }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let output = JSON.parse(res); output.swal_langstrs = specialCharFix(output.swal_langstrs); $('#bulkPrivacyProtection').modal('hide'); $('.bulk-privacy-protection-radio').prop('checked', false); $('#bulk_privacy_protection_btn').attr('disabled', true); $('#bulk_privacy_protection_btn_spinner').hide(); $('#bulk_privacy_protection_btn').show(); let failed_domains = []; if (typeof output.data != "undefined") { for (const [key, value] of Object.entries(output.data)) { let privacy_toggled_on = value.status_set == 1 ? true : false; $('#privacySwitch' + key).prop('checked', privacy_toggled_on); if ('success' != value.result) { failed_domains.push(domains[key]); } } } if (typeof output.idprotection_invoice_id != "undefined" && output.idprotection_invoice_id != 0) { // Privacy protection not free window.location.href = '/nca/account/billing/invoices/' + output.idprotection_invoice_id; } if (failed_domains.length > 0) { showErrorAlert('nca_domains_failed', 'nca_domains_failed: '+ failed_domains.join(', ')); } else { showSuccessAlert('nca_idprotection_updated'); } } }); } function setRegistrarLockStatus(domain_data = {}, domain_details = false) { let domains = {}; if (!domain_details) { let lockstatus = $('#enableRegistrarLock').is(':checked') ? 1 : 0; $('.table-row-checkbox:checked').each(function(i, obj) { domain_data[$(obj).attr('data-domainid')] = lockstatus; domains[$(obj).attr('data-domainid')] = $(obj).attr('data-domainname'); }); $('#bulk_reglock_btn').hide(); $('#bulk_reglock_btn_spinner').show(); } $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'setLockStatus', nca_action: 'nca_domains_domainlock', token: token, domain_data: domain_data }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let data = JSON.parse(res); if (data.err_code) { if (9 == data.err_code) { showErrorAlertMsg(data.err_str, 0, data.err_code); } else { showErrorAlertMsg('', 0, data.err_code); } if (domain_details) { $('#customSwitch-registrarLock').prop('checked', !$('#customSwitch-registrarLock').val()); $('#customSwitch-registrarLock').attr('disabled', false); } return false; } if (domain_details) { for (const [key, value] of Object.entries(data)) { if ('success' != value.result && current_id == key) { $('#customSwitch-registrarLock').prop('checked', value.status_set == 1 ? false : true); showErrorAlertMsg(base_strings.dm2_err_msg); } else { showSuccessAlert('nca_domain_lock_updated'); } $('#customSwitch-registrarLock').attr('disabled', false); } } else { $('#bulkRegistrarLock').modal('hide'); $('.bulk-reg-lock-radio').prop('checked', false); $('#bulk_reglock_btn').attr('disabled', true); $('#bulk_reglock_btn_spinner').hide(); $('#bulk_reglock_btn').show(); let failed_domains = []; for (const [key, value] of Object.entries(data)) { if ('success' != value.result) { failed_domains.push(domains[key]); } } if (failed_domains.length > 0) { showErrorAlert('nca_domains_failed', 'nca_domains_failed: '+ failed_domains.join(', ')); } else { showSuccessAlert('nca_domain_lock_updated'); } } } }); } function getNameServers(domain_id) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getNS', nca_action: 'nca_domains_getns', token: token, domain_id: domain_id, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { if (!$('#changeNameservers_btn').hasClass('status-disabled')) { $('#changeNameservers_btn').prop('disabled', false); } if ('0' != res) { let data = JSON.parse(res); setNameservers(data['ns']); } dd_ns_loaded = true; domainDetailsLoaded(); } }); } function getDomainContacts(domain_id, list_info) { let domain_contacts = ''; if (!list_info) { $('#editDomainContactTabsSkeleton').show(); $('#editDomainContactTabs').hide(); $('#editDomainContactInfo').modal('show'); } $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getDomainContacts', nca_action: 'nca_domains_contacts', token: token, domain_id: domain_id, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { if ('0' != res) { let data = JSON.parse(res); domain_contacts = data['contacts']; if (list_info) { if(data['api_response']['result'] == 'error' || data['api_response']['na']) { let err_msg = `
    ${data['api_response']['err_msg']}
    `; $(err_msg).insertBefore('#domain_contact_info'); $('#editContactInfo_btn').addClass('status-disabled'); } else { $('#domain_contact_info').html(buildDomainContactsHtml(data['contacts'])); } if (!$('#editContactInfo_btn').hasClass('status-disabled')) { $('#editContactInfo_btn').prop('disabled', false); } dd_contacts_loaded = true; domainDetailsLoaded(); } } buildDomainContactEditModal(domain_id, list_info); } }); } function buildDomainContactEditModal(domain_id, list_info = false) { let url = '/clientarea.php?action=domaincontacts&systpl=nca&domainid='+domain_id; $('#domain_contact_error').addClass('hide'); $('#editDomainContactTabsSkeleton').show(); $('#editDomainContactTabs').hide(); $('#allDomainContactType').prop( 'checked', true ); $.ajax({ method: 'get', url: url, data: {}, error: () => { if(!list_info || domain_action == 'contacts') { showErrorAlertMsg(base_strings.dm2_err_msg); } }, success: (data) => { let response = ''; try { response = JSON.parse(data); } catch (e) { if(!list_info || domain_action == 'contacts') { $('#editDomainContactInfo').modal('hide'); showErrorAlertMsg(base_strings.dm2_err_msg); } return; } $('#bulk_edit_contacts').hide(); $('#editDomainContactTabs').html(domains_editContactForm(response)); $('#editDomainContactTabsSkeleton').hide(); $('#editDomainContactTabs').show(); telCountryCodeDropdown('#editDomainContactTabs'); } }); } function buildBulkDomainContactEditModal(domain_ids) { let url = '/clientarea.php?systpl=nca&action=bulkdomain#contactinfo'; $('#domain_contact_error').addClass('hide'); $('#editDomainContactTabsSkeleton').show(); $('#editDomainContactTabs').hide(); $('#allDomainContactType').prop('checked', true); $('#editDomainContactInfo').modal('show'); $.ajax({ method: 'post', url: url, data: { 'update' : 'contactinfo', 'domids' : domain_ids.split(','), 'nca_action' : 'get', }, error: () => { showErrorAlertMsg(base_strings.dm2_err_msg); }, success: (data) => { let response = ''; try { response = JSON.parse(data); } catch (e) { $('#editDomainContactInfo').modal('hide'); showErrorAlertMsg(base_strings.dm2_err_msg); return; } if(response.changenotpossible) { $('#editDomainContactInfo').modal('hide'); showErrorAlertMsg(response.changenotpossible); return; } $('#editDomainContactTabs').html(domains_editContactForm(response)); $('#editDomainContactTabsSkeleton').hide(); $('#editDomainContactTabs').show(); telCountryCodeDropdown('#editDomainContactTabs'); } }); } function getHideWhoIsInfo(domain) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getHideWhoIsInfo', nca_action: 'nca_domains_contacts', token: token, domain: domain, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); if(response.success) { $('#customSwitch-hideWhois').attr('checked', response.data.hideWhois); } else { showErrorAlertMsg('', 0, response.err_code ?? 0); } } }); } function updateHideWhoIsInfo(domain) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'updatetHideWhoIsInfo', nca_action: 'nca_domains_contacts', token: token, domain: domain, privacy: $('#customSwitch-hideWhois').prop('checked') ? "1" : "0", }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); if(response.success) { showSuccessAlertMsg('Whois information updated') } else { $('#customSwitch-hideWhois').prop('checked', (!$('#customSwitch-hideWhois').is(':checked'))); showErrorAlertMsg('', 0, response.err_code ?? 0); } } }); } function getEPPCode(domain_id) { $.ajax({ method: 'post', url: '/nca/nca_api.php', data: { whc_action: 'getEPPCode', nca_action: 'nca_domains_eppcode', token: token, domain_id: domain_id, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let data = JSON.parse(res); if ('success' == data['result']) { $('#eppCode').val(data['eppcode']); } else { $('#eppCode').val(''); $('#transferAway').modal('hide'); showErrorAlertMsg(errsuccess_langstrs.domaingeteppcodefailure, 0, data.err_code ?? 0); } dd_epp_loaded = true; $('#loadEPPCode').hide(); $('#copyEPPCode').show(); } }); } function bulkEditDomainContacts() { let checked_count = $('.table-row-checkbox:checked').length; let bulk_domain_data = bulkActionDomainsData(); if (1 == checked_count) { let html = base_strings.ns_wizard_You_selected + ' ' + $('.table-row-checkbox:checked').attr('data-domainname') + ''; $('#bulk_contacts_label').html(html); $('#bulk_contacts_label').show(); $('#bulk_contacts_collapse').hide(); } else { let html = ` ${base_strings.ns_wizard_You_selected} . `; $('#bulk_contacts_collapse').html(html); $('#contactsList').html(bulk_domain_data['html']); $('#bulk_contacts_collapse').show(); $('#bulk_contacts_label').hide(); } $('#edit_contact_domain_ids').val(bulk_domain_data['id_str']); buildBulkDomainContactEditModal(bulk_domain_data['id_str']); } function bulkPrivacyProtection() { let checked_count = $('.table-row-checkbox:checked').length; let total_cost = 0; if (1 == checked_count) { let current_element = domains_object.find(element => element.id == $('.table-row-checkbox:checked').attr('data-domainid')); if (current_element.unpaid_idprotection_invoice) { showErrorAlertMsg($('#bulk_privacy_protection_btn').data('text-invoice-exists') + '. ' + base_strings.nca_invoice + ' #' + current_element.unpaid_idprotection_invoice.invoiceid); return false; } else if (!current_element.idprotection_support) { showErrorAlertMsg($('#bulk_privacy_protection_btn').data('text-not-supported')); return false; } if (!current_element.idprotection) { total_cost += parseFloat(current_element.idprotection_cost); } let html = base_strings.ns_wizard_You_selected + ' ' + $('.table-row-checkbox:checked').attr('data-domainname') + ''; $('#bulk_privacy_protection_label').html(html); $('#bulk_privacy_protection_label').show(); $('#bulk_privacy_protection_collapse').hide(); } else { let bulk_domain_data = bulkActionDomainsData(true); if (0 == bulk_domain_data.total_count) { showErrorAlertMsg($('#bulk_privacy_protection_btn').data('text-exists-not-supported')); return false; } let html = ` ${base_strings.ns_wizard_You_selected} . `; total_cost = bulk_domain_data.total_cost; $('#bulk_privacy_protection_collapse').html(html); $('#privacyProtectionList').html(bulk_domain_data['html']); $('#bulk_privacy_protection_collapse').show(); $('#bulk_privacy_protection_label').hide(); } $('#bulk_privacy_protection_btn').val(total_cost); $('#bulk_privacy_protection_btn').text($('#bulk_privacy_protection_btn').data('text-apply')); $('#enablePrivacyProtection').prop('checked', false); $('#disablePrivacyProtection').prop('checked', false); $('#bulk_privacy_protection_btn').attr('disabled', true); $('#bulkPrivacyProtection').modal('show'); } function bulkAutoRenew() { let checked_count = $('.table-row-checkbox:checked').length; if (1 == checked_count) { let html = base_strings.ns_wizard_You_selected + ' ' + $('.table-row-checkbox:checked').attr('data-domainname') + ''; $('#bulk_auto_renew_label').html(html); $('#bulk_auto_renew_label').show(); $('#bulk_auto_renew_collapse').hide(); } else { let bulk_domain_data = bulkActionDomainsData(); let html = ` ${base_strings.ns_wizard_You_selected} . `; $('#bulk_auto_renew_collapse').html(html); $('#bulkAutoRenewList').html(bulk_domain_data['html']); $('#bulk_auto_renew_collapse').show(); $('#bulk_auto_renew_label').hide(); } $('#bulkAutoRenewDomains').modal('show'); } function bulkRegLock() { let checked_count = $('.table-row-checkbox:checked').length; if (1 == checked_count) { let html = base_strings.ns_wizard_You_selected + ' ' + $('.table-row-checkbox:checked').attr('data-domainname') + ''; $('#bulk_reglock_label').html(html); $('#bulk_reglock_label').show(); $('#bulk_reglock_collapse').hide(); } else { let bulk_domain_data = bulkActionDomainsData(); let html = ` ${base_strings.ns_wizard_You_selected} . `; $('#bulk_reglock_collapse').html(html); $('#registrarLockList').html(bulk_domain_data['html']); $('#bulk_reglock_collapse').show(); $('#bulk_reglock_label').hide(); } $('#bulkRegistrarLock').modal('show'); } function bulkActionDomainsData(privacy = false) { let data = {}; let total_cost = 0; let total_count = 0; let id_arr = []; let id_str = ''; let html = ''; data['total_cost'] = total_cost; data['total_count'] = total_count; data['id_arr'] = id_arr; data['id_str'] = id_str; data['html'] = html; return data; } function addModals(data, langstrs) { let modals_html = ''; if ($('#changeNameservers').length) { $('#changeNameservers').remove(); } $('#main').append(modals_changeNS(data, langstrs)); if (!$('#privateNameservers').length) { modals_html += modals_privateNS(data, langstrs); } if ($('#addDomainForwarding').length) { $('#addDomainForwarding').remove(); } modals_html += modals_domainForwarding(data, langstrs); if ($('#addEmailForwarding').length) { $('#addEmailForwarding').remove(); } modals_html += modals_emailForwarding(data, langstrs); if (!$('#editDomainContactInfo').length) { modals_html += modals_domainContactsUpdate(data, domain_contacts_langstrs); modals_html += buildDomainContactEditModal(isDefined(data.domain_data.id)); } if (!$('#transferAway').length) { modals_html += modals_EPPCode(data, langstrs); } else { $('#eppCode').val('********'); $('#loadEPPCode').val(data.domain_data.id); } if ($('#advancedDnsManager').length) { $('#advancedDnsManager').remove(); } modals_html += modals_advancedDNS(data, langstrs); $('#main').append(modals_html); switch (data['domain_forwarding'].type) { case 1: $('#invisibleDomainForwarder').get(0).click(); break; case 2: $('#rewriteDomainForwarder').get(0).click(); break; case 0: default: $('#visibleDomainForwarder').get(0).click(); break; } } function domainDetailsLoaded() { if (dd_main_loaded && dd_ns_loaded && dd_contacts_loaded) { $('.skeleton-loading').each(function(i, obj) { $(obj).remove(); }); $('.skeleton-loader').hide(); $('.skeleton-loaded').show(); } } function getDomainContactTitle(key) { if (key.toLowerCase().includes('regist') || key.toLowerCase().includes('owner')) { return domain_contacts_langstrs.nca_registrant; } else if (key.toLowerCase().includes('admin')) { return domain_contacts_langstrs.nca_admin; } else if (key.toLowerCase().includes('tech')) { return domain_contacts_langstrs.nca_tech; } else if (key.toLowerCase().includes('bill')) { return domain_contacts_langstrs.nca_billing; } return ''; } function buildDomainContactsHtml(data, langs = {}) { let html = ''; for (const [key, value] of Object.entries(data)) { let group_title = getDomainContactTitle(key); html += `
    ${group_title}

    ${isDefined(value.name, value.Name)}
    ${isDefined(value.company, value.Company)}
    ${isDefined(value.address, value.Address)}
    ${isDefined(value.city, value.City)}
    ${isDefined(value.postcode, value.Postcode)} ${isDefined(value.country, value.Country)}
    ${isDefined(value.phone, value['Phone Number'])}
    ${isDefined(value.email, value.Email)}

    `; } return html; } function getPrivateNs() { $.ajax({ method: 'post', url: '/domains/api/hosts.php', data: { action: 'getHosts', domain: current_domain, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { if (res == 'null') { $('#pns_skel_loader').hide(); return false; } let response = JSON.parse(res); if (response.error) { $('#privateNameservers').modal('hide'); showErrorAlertMsg(response.error); return false; } $('#pns_skel_loader').hide(); $('#privateNSTableRows').html(modals_privateNSRows(response)); } }); } function deletePrivateNS(ele, host, ip) { $(ele).attr('disabled', true); $(ele).prev().attr('disabled', true); $.ajax({ method: 'post', url: '/domains/api/hosts.php', data: { action: 'delete', domain: current_domain, host: host, ip: ip, }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); if (response.error) { $('#privateNameservers').modal('hide'); showErrorAlertMsg(response.error); return false; } $('#privateNameservers').modal('hide'); showSuccessAlertMsg(base_strings.changessavedsuccessfully); } }); } function savePrivateNS() { if ('' == $('#privateNameserverHost').val() || !isValidUrl($('#privateNameserverHost').val() + '.' + current_domain)) { $('#privateNameserverHost').addClass('is-invalid'); $('#privateNameserverHostFeedback').show(); return false; } $('#privateNameserverHost').removeClass('is-invalid'); $('#privateNameserverHostFeedback').hide(); if ('' == $('#privateNameserverIP').val() || (!isValidIPaddress($('#privateNameserverIP').val()) && !isValidIPv6address($('#privateNameserverIP').val()))) { $('#privateNameserverIP').addClass('is-invalid'); $('#privateNameserverIPFeedback').show(); return false; } $('#privateNameserverIP').removeClass('is-invalid'); $('#privateNameserverIPFeedback').hide(); $('#privateNameserverSpinner').show(); $('#privateNameserverAdd').hide(); $.ajax({ method: 'post', url: '/domains/api/hosts.php', data: { action: 'create', domain: current_domain, host: $('#privateNameserverHost').val(), ip: $('#privateNameserverIP').val(), }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); if (response.error) { $('#privateNameservers').modal('hide'); showErrorAlertMsg(response.error); return false; } $('#privateNameservers').modal('hide'); showSuccessAlertMsg(base_strings.changessavedsuccessfully); } }); } function editPrivateNS(ele, host, ip) { $('#private_ns_edit_loader').show(); $('#private_ns_editor').hide(); $(ele).attr('disabled', true); $(ele).next().attr('disabled', true); $('#privateNameserverEdit').data('host', host); $('#privateNameserverEdit').data('ip', ip); $('#privateNameserverHost').val(host); $('#privateNameserverIP').val(ip); $('#privateNameserverEdit').show(); $('#privateNameserverAdd').hide(); setTimeout( function() { $('#private_ns_editor').show(); $('#private_ns_edit_loader').hide(); }, 500); } function savePrivateNSEdit() { if ('' == $('#privateNameserverHost').val() || !isValidUrl($('#privateNameserverHost').val() + '.' + current_domain)) { $('#privateNameserverHost').addClass('is-invalid'); $('#privateNameserverHostFeedback').show(); return false; } $('#privateNameserverHost').removeClass('is-invalid'); $('#privateNameserverHostFeedback').hide(); if ('' == $('#privateNameserverIP').val() || !isValidIPaddress($('#privateNameserverIP').val())) { $('#privateNameserverIP').addClass('is-invalid'); $('#privateNameserverIPFeedback').show(); return false; } $('#privateNameserverIP').removeClass('is-invalid'); $('#privateNameserverIPFeedback').hide(); $('#privateNameserverSpinner').show(); $('#privateNameserverEdit').hide(); $.ajax({ method: 'post', url: '/domains/api/hosts.php', data: { action: 'update', domain: current_domain, host: $('#privateNameserverHost').val(), ip: $('#privateNameserverIP').val(), current_host: $('#privateNameserverEdit').data('host'), current_ip: $('#privateNameserverEdit').data('ip'), }, error: () => { showErrorAlertMsg('', 0, 10); }, success: (res) => { let response = JSON.parse(res); if (response.error) { $('#privateNameservers').modal('hide'); showErrorAlertMsg(response.error); return false; } $('#privateNameservers').modal('hide'); showSuccessAlertMsg(base_strings.changessavedsuccessfully); } }); } function bulkActionFix() { let hasGrace = false; let hasRedemption = false; let count = 0; $('.table-row-checkbox:checked').each(function(i, obj) { count++; if ('Redemption' == $(obj).data('domainstatus')) { hasRedemption = true; } else if ('Grace' == $(obj).data('domainstatus')) { hasGrace = true; } }); $('.limitedBulkActionRedemption, .limitedBulkActionGrace').attr('disabled', false); $('.tool-tip').tooltip('disable'); if (count && (hasRedemption || hasGrace)) { if (hasRedemption) { $('.limitedBulkActionRedemption').attr('disabled', true); } else if (hasGrace) { $('.limitedBulkActionGrace').attr('disabled', true); } $('.tool-tip').each(function() { if ($(this).children(':first-child').is(':disabled')) { $(this).tooltip('enable'); } }); } } function domainListingFilters() { let selected_filter = 'exipire_after' == $(this).data('filter') ? $(this).data('filter') : $(this).parent().parent().data('filter'); let select_id = 'filter_expire' == $(this).attr('id') ? $(this).attr('id') : $(this).parent().parent().attr('id'); let val = $(this).val(); let text = ''; let span_id = 'span_' + select_id; if ('exipire_after' != selected_filter) { span_id += '_' + val.replaceAll('.', ''); } span_id = span_id.replaceAll(' ', '_'); if ((!$(this).is(':checked') && 'All' != val && 'span_filter_expire' != span_id) || ('span_filter_expire' == span_id && '' == val)) { clearFilterSpan(span_id); return; } if ('All' == val) { domains_filter_object[selected_filter] = []; $(`[id^=span_${select_id}]`).each(function() { $(this).remove(); }); $(`[id^=${select_id}_]`).each(function() { $(this).prop('checked', false); }); } else { if ($(`#${select_id}`).attr('name')) { text = $(`#${select_id}`).attr('name') + ': '; } if ('filter_expire' == select_id) { text += val; } else { text += $('#' + select_id + '_' + val.replaceAll(' ', '_').replaceAll('.', '')).siblings('span').text(); } if (['auto_renew', 'privacy'].includes(selected_filter)) { val = parseInt(val); } if ('exipire_after' == selected_filter) { domains_filter_object.exipire_after_date = val; domains_filter_object.exipire_after = Date.parse(val); $('#span_filter_expire').remove(); } else if ('status' == selected_filter && 'Soon' == val) { domains_filter_object.status_soon = true; } else if (!domains_filter_object[selected_filter].includes(val)) { domains_filter_object[selected_filter].push(val); } if (!$(`#${span_id}`).length) { let span_data = { span_id: span_id, selected_filter: selected_filter, val: val, span_id: span_id, text: text }; $('#active-filters').append(domains_domainFilterSpan(span_data)); } } domains_filter_object.page = 1; addDomainListingRows(); window.scrollTo({top: 0, behavior: 'smooth'}); } /** * Updates the table_data global variable based on the order of UI elements that are drop and draggable. * Also, the visible is set based on the UI checkbox elements being checked or not. * Once table_data is set, we call the function saveDomainTableColumnData() to save the data to the users browser. * If the argument update_table is set, we also set the rows of the table and reset the pagination to the first page. * @param update_table */ function updateDomainTableColumns(update_table = true) { table_data = []; $('#columns li').each((index, obj) => { table_data.push({column: $(obj).data('table-col'), visible: $(obj).find('input').is(':checked')}); }); saveDomainTableColumnData(); if (update_table) { domains_filter_object.page = 1; sortDomainRows(); } } /** * Extracts current table header html for each column that can be edited, and replaces them with the html in the correct order. * If the argument hide_columns is set to true, it will also hide the header column. The row data is hidden separately else where in the code. * @param hide_columns */ function orderDomainTableColumns(hide_columns = false) { let headerHtml = {}; $('.sortable-header').each((index, obj) => { headerHtml[$(obj).attr('id').replace('domain_listing_', '')] = $(obj)[0].outerHTML; }) table_data.forEach(function (item, index) { $('.sortable-header')[index].outerHTML = headerHtml[item.column]; if (hide_columns && !item.visible) { $('#domain_listing_' + item.column).hide(); } }); } /** * Saves domain listing column data to a cookie in the users browser */ function saveDomainTableColumnData() { const d = new Date(); d.setTime(d.getTime() + (90 * 24 * 60 * 60 * 1000)); let expires = "expires="+d.toUTCString(); document.cookie = 'nca_domains_table_data=' + JSON.stringify(table_data) + ';' + expires + ';path=/'; } /** * Sets default column data or reads data from a cookie if it exists, for domain listing table * @returns {[{visible: boolean, column: string},{visible: boolean, column: string},{visible: boolean, column: string},{visible: boolean, column: string},{visible: boolean, column: string}]} */ function getDomainTableColumnData() { let name = 'nca_domains_table_data='; let ca = document.cookie.split(';'); let data = [ {column: 'status', visible: true}, {column: 'renew', visible: true}, {column: 'privacy', visible: true}, {column: 'expiry', visible: true}, {column: 'ns', visible: false}, ]; for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { data = JSON.parse(c.substring(name.length, c.length)); } } return data; } function domainQueryFilters() { let page = parseInt(url_filter.get('page')); if (page <= domains_filter_object.final_page) { domains_filter_object.page = page; } let limit = url_filter.get('limit'); if ('All' == limit) { domains_filter_object.limit = 'All'; } else { limit = parseInt(limit); if (limit && [10, 25, 50].includes(limit)) { domains_filter_object.limit = limit; } } let sort = url_filter.get('sort'); if (sort && ['domain', 'status', 'donotrenew', 'idprotection', 'nextduedate_compare', 'nameservers'].includes(sort)) { domains_filter_object.sort = sort; } let order = url_filter.get('order'); if (order && ['asc', 'desc'].includes(order)) { domains_filter_object.order = order; } let status = url_filter.get('status'); if (null != status) { domains_filter_object.status = []; status = decodeURIComponent(status).split(','); status.forEach((item) => { item = item.replaceAll('_', ' '); item = upperCaseFirstAll(item); if (['Active', 'Grace', 'Pending', 'Pending Registration', 'Pending Transfer', 'Redemption'].includes(item)) { domains_filter_object.status.push(item); } }); } let status_soon = url_filter.get('status_soon'); if (null != status_soon) { if ('true' == status_soon) { domains_filter_object.status_soon = true; } else { domains_filter_object.status_soon = false; } } let auto_renew = url_filter.get('auto_renew'); if (null != auto_renew) { domains_filter_object.auto_renew = []; if ('true' == auto_renew) { domains_filter_object.auto_renew.push(0); } else { domains_filter_object.auto_renew.push(1); } } let privacy = url_filter.get('privacy'); if (null != privacy) { domains_filter_object.privacy = []; if ('true' == privacy) { domains_filter_object.privacy.push(1); } else { domains_filter_object.privacy.push(0); } } let extension = url_filter.get('extension'); if (null != extension) { domains_filter_object.extension = []; extension = decodeURIComponent(extension).split(','); extension.forEach((item) => { if (tld_list.includes(item)) { domains_filter_object.extension.push('.' + item); } }); } } function setDomainQueryFilterString() { let query_string = ''; if (domains_filter_object.page > 1) { query_string += 'page=' + domains_filter_object.page + '&'; } if (domains_filter_object.limit != default_domain_filters.limit) { query_string += 'limit=' + domains_filter_object.limit + '&'; } if (domains_filter_object.sort != default_domain_filters.sort) { query_string += 'sort=' + domains_filter_object.sort + '&'; } if (domains_filter_object.order != default_domain_filters.order) { query_string += 'order=' + domains_filter_object.order + '&'; } if (domains_filter_object.status.length) { query_string += 'status='; domains_filter_object.status.forEach((item) => { query_string += item.toLowerCase().replaceAll(' ', '_') + ','; }); query_string = query_string.replace(/,\s*$/, '&'); } if (domains_filter_object.status_soon) { query_string += 'status_soon=true&'; } if (1 == domains_filter_object.auto_renew.length) { if (0 == domains_filter_object.auto_renew[0]) { query_string += 'auto_renew=true&'; } else { query_string += 'auto_renew=false&'; } } if (1 == domains_filter_object.auto_renew.length) { if (1 == domains_filter_object.auto_renew[0]) { query_string += 'privacy=true&'; } else { query_string += 'privacy=false&'; } } if (domains_filter_object.extension.length) { query_string += 'extension='; domains_filter_object.extension.forEach((item) => { query_string += item.replaceAll('.', '') + ','; }); query_string = query_string.replace(/,\s*$/, '&'); } if ($('#table_search').val()) { query_string += 'search=' + $('#table_search').val() + '&'; } query_string = query_string.replace(/&\s*$/, ''); if (query_string) { query_string = '?' + query_string; } window.history.replaceState('', '', window.location.pathname + query_string); } function updateContactStateValue(from_id, to_id) { $(to_id).val($(from_id).val()); } function setDomainListingNS(data) { if (!data.hasOwnProperty('nameservers')) { return false; } if (!$('#domains_listing_container').length) { setTimeout(() => { setDomainListingNS(data); }, 1000); return false; } domains_object.forEach((domain) => { if (data.nameservers.hasOwnProperty(domain.domain)) { domain.nameservers = data.nameservers[domain.domain][0].ns; domain.nameservers.sort(function(a,b) { return a.localeCompare(b); }) domain.nameservers.sort(function(a,b) { return a.length -b.length; }) domain.nameservers_lastchecked = base_strings.nca_last_checked + ': ' + data.nameservers[domain.domain][0].last_check; } else { domain.nameservers = []; domain.nameservers_lastchecked; } }); addDomainListingRows(false); }