luci-mod-network: predicate the display of dnsmasq and odhcpd tabs
authorPaul Donald <[email protected]>
Wed, 29 Oct 2025 20:37:54 +0000 (21:37 +0100)
committerPaul Donald <[email protected]>
Wed, 29 Oct 2025 20:37:54 +0000 (21:37 +0100)
First check the features are installed. Further, verify that some sections
exist which some GUI functions depend on.

Signed-off-by: Paul Donald <[email protected]>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

index ccb7624a73f86097a56f045a7dbeaa1a66700797..b886c38e2a86a0fb1add3704879802df58d4348d 100644 (file)
@@ -207,9 +207,11 @@ return view.extend({
                m = new form.Map('dhcp', _('DHCP'));
                m.tabbed = true;
 
-               this.add_dnsmasq_cfg(m, networks);
+               if (L.hasSystemFeature('dnsmasq'))
+                       this.add_dnsmasq_cfg(m, networks);
 
-               this.add_odhcpd_cfg(m);
+               if (L.hasSystemFeature('odhcpd'))
+                       this.add_odhcpd_cfg(m);
 
                this.add_leases_cfg(m, hosts, duids, pools, macdata);
 
@@ -309,11 +311,11 @@ return view.extend({
                        const sections = this.cfgsections();
 
                        return Promise.resolve(renderTask).then(function(nodes) {
-                               if (sections.length < 2) {
+                               if (sections.length == 1) {
                                        nodes.querySelector('#cbi-dhcp-dnsmasq > h3').remove();
                                        nodes.querySelector('#cbi-dhcp-dnsmasq > .cbi-section-remove').remove();
                                }
-                               else {
+                               else if (sections.length > 1) {
                                        nodes.querySelectorAll('#cbi-dhcp-dnsmasq > .cbi-section-remove').forEach(function(div, i) {
                                                const section = uci.get('dhcp', sections[i]);
                                                const hline = div.nextElementSibling;