libs/web: move ifattr() and attr() helpers into dispatcher scope to make them avilable to all templates, remove duplicate exports in cbi tempalte scope
This commit is contained in:
parent
8c9aef1b2d
commit
e12b8dbc1f
2 changed files with 19 additions and 24 deletions
|
@ -1325,29 +1325,8 @@ end
|
|||
function AbstractValue.render(self, s, scope)
|
||||
if not self.optional or self.section:has_tabs() or self:cfgvalue(s) or self:formcreated(s) then
|
||||
scope = scope or {}
|
||||
scope.section = s
|
||||
scope.cbid = self:cbid(s)
|
||||
scope.striptags = luci.util.striptags
|
||||
scope.pcdata = luci.util.pcdata
|
||||
|
||||
scope.ifattr = function(cond,key,val)
|
||||
if cond then
|
||||
return string.format(
|
||||
' %s="%s"', tostring(key),
|
||||
luci.util.pcdata(tostring( val
|
||||
or scope[key]
|
||||
or (type(self[key]) ~= "function" and self[key])
|
||||
or "" ))
|
||||
)
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
scope.attr = function(...)
|
||||
return scope.ifattr( true, ... )
|
||||
end
|
||||
|
||||
scope.section = s
|
||||
scope.cbid = self:cbid(s)
|
||||
Node.render(self, scope)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -281,6 +281,20 @@ function dispatch(request)
|
|||
assert(media, "No valid theme found")
|
||||
end
|
||||
|
||||
local function ifattr(cond, key, val)
|
||||
if cond then
|
||||
local env = getfenv(1)
|
||||
return string.format(
|
||||
' %s="%s"', tostring(key),
|
||||
luci.util.pcdata(tostring( val
|
||||
or (type(env[key]) ~= "function" and env[key])
|
||||
or "" ))
|
||||
)
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
tpl.context.viewns = setmetatable({
|
||||
write = luci.http.write;
|
||||
include = function(name) tpl.Template(name):render(getfenv(2)) end;
|
||||
|
@ -290,7 +304,9 @@ function dispatch(request)
|
|||
pcdata = util.pcdata;
|
||||
media = media;
|
||||
theme = fs.basename(media);
|
||||
resource = luci.config.main.resourcebase
|
||||
resource = luci.config.main.resourcebase;
|
||||
ifattr = ifattr;
|
||||
attr = function(...) return ifattr(true, ...) end
|
||||
}, {__index=function(table, key)
|
||||
if key == "controller" then
|
||||
return build_url()
|
||||
|
|
Loading…
Reference in a new issue