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:
Jo-Philipp Wich 2011-10-26 02:17:45 +00:00
parent 8c9aef1b2d
commit e12b8dbc1f
2 changed files with 19 additions and 24 deletions

View file

@ -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

View file

@ -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()