diff options
author | Helge Mader <ma@dev.tdt.de> | 2020-02-25 09:56:58 +0100 |
---|---|---|
committer | Helge Mader <ma@dev.tdt.de> | 2020-03-03 16:12:10 +0100 |
commit | c949d116b09c93c6c8076a69fa260c96818a761a (patch) | |
tree | 56e51d6de62c83228323ba94a7567dcc675cd427 /modules/luci-mod-network/htdocs | |
parent | 95804e5eaf917b2026f50ec262c3bae711a6b317 (diff) |
luci-mod-network: extended interfaces.js for check if new interface is createable
Signed-off-by: Helge Mader <ma@dev.tdt.de>
Diffstat (limited to 'modules/luci-mod-network/htdocs')
-rw-r--r-- | modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js index 80acd7c77..5cc452c9f 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js @@ -760,24 +760,35 @@ return L.view.extend({ 'class': 'cbi-button cbi-button-positive important', 'click': ui.createHandlerFn(this, function(ev) { var nameval = name.isValid('_new_') ? name.formvalue('_new_') : null, - protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null; + protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null, + protoclass = protoval ? network.getProtocol(protoval) : null; if (nameval == null || protoval == null || nameval == '' || protoval == '') return; - return m.save(function() { - var section_id = uci.add('network', 'interface', nameval); + return protoclass.isCreateable(nameval).then(function(checkval) { + if (checkval != null) { + ui.addNotification(null, + E('p', _('New interface for "%s" can not be created: %s').format(protoclass.getI18n(), checkval))); + ui.hideModal(); + return; + } - uci.set('network', section_id, 'proto', protoval); + return m.save(function() { + var section_id = uci.add('network', 'interface', nameval); - if (ifname_single.isActive('_new_')) { - uci.set('network', section_id, 'ifname', ifname_single.formvalue('_new_')); - } - else if (ifname_multi.isActive('_new_')) { - uci.set('network', section_id, 'type', 'bridge'); - uci.set('network', section_id, 'ifname', L.toArray(ifname_multi.formvalue('_new_')).join(' ')); - } - }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval)); + uci.set('network', section_id, 'proto', protoval); + + if (ifname_single.isActive('_new_')) { + uci.set('network', section_id, 'ifname', ifname_single.formvalue('_new_')); + } + else if (ifname_multi.isActive('_new_')) { + uci.set('network', section_id, 'type', 'bridge'); + uci.set('network', section_id, 'ifname', L.toArray(ifname_multi.formvalue('_new_')).join(' ')); + } + }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval)); + + }); }) }, _('Create interface')) ]) |