luci-base: support option aliases in luci.cbi
authorJo-Philipp Wich <jo@mein.io>
Thu, 7 Jun 2018 06:49:51 +0000 (08:49 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 8 Jun 2018 05:25:54 +0000 (07:25 +0200)
commit4cca96ef091857b6bfe839d7612da00745c530b6
tree3ed53be5405a8f08de78e0a739e2a09598504435
parent501f1a900883e1a958940ef40645e94e5ec41752
luci-base: support option aliases in luci.cbi

AbstractValue descendants may now specify a new optional property `alias`
which refers to a uci option to read/write/remove that differs from the
option name itself.

This is mainly useful for widgets that are toggled based on dependencies,
e.g. for alternating between SingleValue and MultiValue, but which are
intented to write into the same uci option.

Such a setup was previously possible already by overriding the .cfgvalue(),
.write() and .remove() callbacks with custom implementations, but that
required a lot of boiler plate code and was rather fragile.

With the `alias` property, CBI now takes care of the details and tracks
aliased fields within a section accordingly.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/luasrc/cbi.lua