luci-mod-admin-full: fixes for usbport LED triggers
The previous commit erroneously used "ports" instead of "port" as name for the option widget, causing wrong uci values to be written. Also work around some cbi idiosyncrasies regarding MultiValue widgets which prevented rendering the correct initial selection state. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
46fd88ec6c
commit
5f80115b2c
1 changed files with 26 additions and 5 deletions
|
@ -7,10 +7,11 @@ local sysfs_path = "/sys/class/leds/"
|
|||
local leds = {}
|
||||
|
||||
local fs = require "nixio.fs"
|
||||
local util = require "nixio.util"
|
||||
local nu = require "nixio.util"
|
||||
local util = require "luci.util"
|
||||
|
||||
if fs.access(sysfs_path) then
|
||||
leds = util.consume((fs.dir(sysfs_path)))
|
||||
leds = nu.consume((fs.dir(sysfs_path)))
|
||||
end
|
||||
|
||||
if #leds == 0 then
|
||||
|
@ -110,12 +111,32 @@ function usbdev.remove(self, section)
|
|||
end
|
||||
|
||||
|
||||
usbport = s:option(MultiValue, "ports", translate("USB Ports"))
|
||||
usbport = s:option(MultiValue, "port", translate("USB Ports"))
|
||||
usbport:depends("trigger", "usbport")
|
||||
usbport.rmempty = true
|
||||
usbport.widget = "checkbox"
|
||||
usbport.cast = "table"
|
||||
usbport.size = 1
|
||||
|
||||
function usbport.valuelist(self, section)
|
||||
local port, ports = nil, {}
|
||||
for port in util.imatch(m.uci:get("system", section, "port")) do
|
||||
local b, n = port:match("^usb(%d+)-port(%d+)$")
|
||||
if not (b and n) then
|
||||
b, n = port:match("^(%d+)-(%d+)$")
|
||||
end
|
||||
if b and n then
|
||||
ports[#ports+1] = "usb%u-port%u" %{ tonumber(b), tonumber(n) }
|
||||
end
|
||||
end
|
||||
return ports
|
||||
end
|
||||
|
||||
function usbport.validate(self, value)
|
||||
return type(value) == "string" and { value } or value
|
||||
end
|
||||
|
||||
|
||||
for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*/manufacturer") do
|
||||
local id = p:match("%d+-%d+")
|
||||
local mf = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/manufacturer") or "?"
|
||||
|
@ -123,8 +144,8 @@ for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*/manufacturer") do
|
|||
usbdev:value(id, "%s (%s - %s)" %{ id, mf, pr })
|
||||
end
|
||||
|
||||
for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*") do
|
||||
local bus, port = p:match("(%d+)-(%d+)")
|
||||
for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do
|
||||
local bus, port = p:match("usb(%d+)-port(%d+)")
|
||||
if bus and port then
|
||||
usbport:value("usb%u-port%u" %{ tonumber(bus), tonumber(port) },
|
||||
"Hub %u, Port %u" %{ tonumber(bus), tonumber(port) })
|
||||
|
|
Loading…
Reference in a new issue