diff options
author | Ted Trask <ttrask01@yahoo.com> | 2012-02-23 15:27:32 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2012-02-23 15:27:32 +0000 |
commit | 94e98d227ef5e21485bafd859b23d5d709ba79a8 (patch) | |
tree | f783f44685aaa33c0c127b992f74aad965deefad /app/acf_cli-controller.lua | |
parent | efdd93c695574329b3d98455a0a88320a1c79d5b (diff) | |
download | acf-core-94e98d227ef5e21485bafd859b23d5d709ba79a8.tar.bz2 acf-core-94e98d227ef5e21485bafd859b23d5d709ba79a8.tar.xz |
Removed controllerfunction.lua and moved handle_form and handle_clientdata into mvc.lua
mvc.lua has generic versions of the functions, overridden in acf_www and acf_cli with customizations
Diffstat (limited to 'app/acf_cli-controller.lua')
-rw-r--r-- | app/acf_cli-controller.lua | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/app/acf_cli-controller.lua b/app/acf_cli-controller.lua index e68dfe9..beb83b3 100644 --- a/app/acf_cli-controller.lua +++ b/app/acf_cli-controller.lua @@ -47,3 +47,67 @@ end logevent = function ( ... ) os.execute ( "logger \"" .. ... .. "\"" ) end + +-- FIXME - remove the haserl specific stuff +handle_clientdata = function(form, clientdata) + form.errtxt = nil + for n,value in pairs(form.value) do + value.errtxt = nil + local name = n + if name:find("%.") and not clientdata[name] then + -- If the name has a '.' in it, haserl will interpret it as a table + local actualval = clientdata + for entry in name:gmatch("[^%.]+") do + if tonumber(entry) then + actualval = actualval[tonumber(entry)] + else + actualval = actualval[entry] + end + if not actualval then break end + end + clientdata[name] = actualval + end + if value.type == "group" then + handle_clientdata(value, clientdata[name]) + elseif value.type == "boolean" then + value.value = (clientdata[name] ~= nil) and (clientdata[name] ~= "false") + elseif value.type == "multi" then + if clientdata[name] == nil then + -- for cli we use name[num] as the name + clientdata[name] = {} + for n,val in pairs(clientdata) do + if string.find(n, "^"..name.."%[%d+%]$") then + clientdata[name][tonumber(string.match(n, "%[(%d+)%]$"))] = val + end + end + end + -- FIXME this is because multi selects don't work in haserl + local oldtable = clientdata[name] or {} + -- Assume it's a sparse array, and remove blanks + local newtable={} + for x=1,table.maxn(oldtable) do + if oldtable[x] then + newtable[#newtable + 1] = oldtable[x] + end + end + value.value = newtable + elseif value.type == "list" then + value.value = {} + if clientdata[name] and clientdata[name] ~= "" then + -- for www we use \r separated list + for ip in string.gmatch(clientdata[name].."\n", "%s*([^\n]*%S)%s*\n") do + table.insert(value.value, ip) + end + else + -- for cli we use name[num] as the name + for n,val in pairs(clientdata) do + if string.find(n, "^"..name.."%[%d+%]$") then + value.value[tonumber(string.match(n, "%[(%d+)%]$"))] = val + end + end + end + else + value.value = clientdata[name] or value.value + end + end +end |