// SPDX-License-Identifier: AGPL-3.0-or-later /** * @licstart The following is the entire license notice for the JavaScript * code in this page. * * This file is part of FreedomBox. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * @licend The above is the entire license notice for the JavaScript code * in this page. */ jQuery(function($) { function ip_required(required, ip_version, fields) { var prefix = '#id_' + ip_version + '_'; for (var i = 0; i < fields.length; i++) { $(prefix + fields[i]).prop("required", required); } } function ip_readonly(readonly, ip_version, fields) { var prefix = '#id_' + ip_version + '_'; for (var i = 0; i < fields.length; i++) { $(prefix + fields[i]).prop("readOnly", readonly); if (readonly) { $(prefix + fields[i]).val(""); $(prefix + fields[i]).prop("required", false); } } } function on_ipv4_method_change() { var selected = $("input[name=ipv4_method]:checked"); if (selected.prop("value") == "manual") { ip_required(true, 'ipv4', ['address']); ip_readonly(false, 'ipv4', ['address', 'netmask', 'gateway', 'dns', 'second_dns' ]); } else if (selected.prop("value") == "shared") { ip_required(false, 'ipv4', ['address']); ip_readonly(false, 'ipv4', ['address', 'netmask']); ip_readonly(true, 'ipv4', ['gateway', 'dns', 'second_dns']); } else if (selected.prop("value") == "auto") { ip_readonly(true, 'ipv4', ['address', 'netmask', 'gateway']); ip_readonly(false, 'ipv4', ['dns', 'second_dns']); } else { ip_readonly(true, 'ipv4', ['address', 'netmask', 'gateway', 'dns', 'second_dns' ]); } } function on_ipv6_method_change() { var selected = $("input[name=ipv6_method]:checked"); if (selected.prop("value") == "manual") { ip_required(true, 'ipv6', ['address', 'prefix']); ip_readonly(false, 'ipv6', ['address', 'prefix', 'gateway', 'dns', 'second_dns' ]); } else if (selected.prop("value") == "auto" || $("#id_ipv6_method").prop("value") == "dhcp") { ip_readonly(true, 'ipv6', ['address', 'prefix', 'gateway']); ip_readonly(false, 'ipv6', ['dns', 'second_dns']); } else { ip_readonly(true, 'ipv6', ['address', 'prefix', 'gateway', 'dns', 'second_dns' ]); } } $("#id_name").focus(); $("input[name=ipv4_method]").change(on_ipv4_method_change).change(); $("input[name=ipv6_method]").change(on_ipv6_method_change).change(); $('#id_show_password').change(function() { // Changing type attribute from password to text is prevented by // most browsers. Making a new form field works. new_type = 'password'; if ($('#id_show_password').prop('checked')) new_type = 'text'; $('#id_password').replaceWith( $('#id_password').clone().attr('type', new_type)); }); });