From e12b8dbc1f8d4a0d820d89ab8ade4bc6f740bb63 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 26 Oct 2011 02:17:45 +0000 Subject: [PATCH] libs/web: move ifattr() and attr() helpers into dispatcher scope to make them avilable to all templates, remove duplicate exports in cbi tempalte scope --- libs/web/luasrc/cbi.lua | 25 ++----------------------- libs/web/luasrc/dispatcher.lua | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/libs/web/luasrc/cbi.lua b/libs/web/luasrc/cbi.lua index 86658d7020..8b9805f047 100644 --- a/libs/web/luasrc/cbi.lua +++ b/libs/web/luasrc/cbi.lua @@ -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 diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index c1e8d990f7..b1ed62b82f 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -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() -- 2.30.2