X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fcbi%2Fluasrc%2Fcbi.lua;h=f6a2694b2ca3fa9664291aa6813d0a7eb2e72e99;hp=7c20129be8a1a64404a67b638fefda8a1aa6e087;hb=284f85fb4e185bf743c404161d0a83be858420c6;hpb=e93a3e0c749960deefdde6fb3d0e1a1ee3696b89 diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 7c20129be8..f6a2694b2c 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -74,8 +74,7 @@ function load(cbimap, ...) assert(func, err) - luci.i18n.loadc("cbi") - luci.i18n.loadc("uvl") + luci.i18n.loadc("base") local env = { translate=i18n.translate, @@ -222,22 +221,6 @@ function Node.__init__(self, title, description) self.template = "cbi/node" end --- i18n helper -function Node._i18n(self, config, section, option, title, description) - - -- i18n loaded? - if type(luci.i18n) == "table" then - - local key = config and config:gsub("[^%w]+", "") or "" - - if section then key = key .. "_" .. section:lower():gsub("[^%w]+", "") end - if option then key = key .. "_" .. tostring(option):lower():gsub("[^%w]+", "") end - - self.title = title or luci.i18n.translate( key, option or section or config ) - self.description = description or luci.i18n.translate( key .. "_desc", "" ) - end -end - -- hook helper function Node._run_hooks(self, ...) local f @@ -313,7 +296,6 @@ Map = class(Node) function Map.__init__(self, config, ...) Node.__init__(self, ...) - Node._i18n(self, config, nil, nil, ...) self.config = config self.parsechain = {self.config} @@ -369,6 +351,7 @@ end -- Use optimized UCI writing function Map.parse(self, readinput, ...) self.readinput = (readinput ~= false) + self:_run_hooks("on_parse") if self:formvalue("cbi.skip") then self.state = FORM_SKIP @@ -689,6 +672,10 @@ function SimpleForm.parse(self, readinput, ...) return FORM_SKIP end + if self:formvalue("cbi.cancel") and self:_run_hooks("on_cancel") then + return FORM_DONE + end + if self:submitstate() then Node.parse(self, 1, ...) end @@ -842,9 +829,6 @@ function AbstractSection.option(self, class, option, ...) if instanceof(class, AbstractValue) then local obj = class(self.map, self, option, ...) - - Node._i18n(obj, self.config, self.section or self.sectiontype, option, ...) - self:append(obj) self.fields[option] = obj return obj @@ -1059,7 +1043,6 @@ NamedSection = class(AbstractSection) function NamedSection.__init__(self, map, section, stype, ...) AbstractSection.__init__(self, map, stype, ...) - Node._i18n(self, map.config, section, nil, ...) -- Defaults self.addremove = false @@ -1124,7 +1107,6 @@ TypedSection = class(AbstractSection) function TypedSection.__init__(self, map, type, ...) AbstractSection.__init__(self, map, type, ...) - Node._i18n(self, map.config, type, nil, ...) self.template = "cbi/tsection" self.deps = {} @@ -1283,6 +1265,7 @@ function AbstractValue.__init__(self, map, section, option, ...) self.tag_reqerror = {} self.tag_error = {} self.deps = {} + self.subdeps = {} --self.cast = "string" self.track_missing = false @@ -1613,7 +1596,7 @@ function ListValue.value(self, key, val, ...) table.insert(self.vallist, tostring(val)) for i, deps in ipairs({...}) do - table.insert(self.deps, {add = "-"..key, deps=deps}) + self.subdeps[#self.subdeps + 1] = {add = "-"..key, deps=deps} end end