Merge fixes / improvements
authorSteven Barth <steven@midlink.org>
Sat, 20 Jun 2009 07:14:36 +0000 (07:14 +0000)
committerSteven Barth <steven@midlink.org>
Sat, 20 Jun 2009 07:14:36 +0000 (07:14 +0000)
libs/cbi/luasrc/cbi.lua
libs/web/luasrc/dispatcher.lua

index 0265301..e513053 100644 (file)
@@ -1287,6 +1287,11 @@ function AbstractValue.parse(self, section, novld)
                        else
                                self.error = { [section] = "invalid" }
                        end
+                       if self.section.error then
+                               table.insert(self.section.error[section], "invalid")
+                       else
+                               self.section.error = {[section] = {"invalid"}}
+                       end 
                        self.map.save = false
                end
                if fvalue and not (fvalue == cvalue) then
index 73daeaf..71d2a5c 100644 (file)
@@ -264,7 +264,9 @@ function dispatch(request)
                local user
 
                if sdat then
-                       sdat = loadstring(sdat)()
+                       sdat = loadstring(sdat)
+                       setfenv(sdat, {})
+                       sdat = sdat()
                        if not verifytoken or ctx.urltoken.stok == sdat.token then
                                user = sdat.user
                        end
@@ -657,18 +659,22 @@ local function _cbi(self, ...)
                end
        end
 
+       local function _resolve_path(path)
+               return type(path) == "table" and build_url(unpack(path)) or path
+       end
+
        if config.on_valid_to and state and state > 0 and state < 2 then
-               http.redirect(config.on_valid_to)
+               http.redirect(_resolve_path(config.on_valid_to))
                return
        end
 
        if config.on_changed_to and state and state > 1 then
-               http.redirect(config.on_changed_to)
+               http.redirect(_resolve_path(config.on_changed_to))
                return
        end
 
        if config.on_success_to and state and state > 0 then
-               http.redirect(config.on_success_to)
+               http.redirect(_resolve_path(config.on_success_to))
                return
        end