summaryrefslogtreecommitdiffstats
path: root/acf2
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-25 20:30:19 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-25 23:28:52 +0200
commit4ff7513fec2df0f079b844c7c558e9ad6c448b16 (patch)
tree2226660ea02f0502fd264f243ecd883f1dc4d415 /acf2
parent878c1bc580d89d70d330eb896d7affc88f776ce0 (diff)
downloadacf2-4ff7513fec2df0f079b844c7c558e9ad6c448b16.tar.bz2
acf2-4ff7513fec2df0f079b844c7c558e9ad6c448b16.tar.xz
resolve reference choices on server side
Diffstat (limited to 'acf2')
-rw-r--r--acf2/model/init.lua16
1 files changed, 15 insertions, 1 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua
index a45197d..27a2e32 100644
--- a/acf2/model/init.lua
+++ b/acf2/model/init.lua
@@ -7,6 +7,7 @@ local M = {}
M.error = require('acf2.error')
local raise = M.error.raise
+local relabel = M.error.relabel
local combination = require('acf2.model.combination')
M.Union = combination.Union
@@ -81,6 +82,19 @@ end
function M.Reference:meta(context)
local res = super(self, M.Reference):meta(context)
res.scope = self:abs_scope(context)
+
+ local txn = context.txn
+ local obj = relabel('system', txn.fetch, txn, res.scope)
+ assert(isinstance(obj, node.Collection))
+ res.choice = {}
+ for k, v in node.pairs(obj) do
+ if isinstance(v, node.TreeNode) then
+ v = node.path(v)
+ v = {value=v, ['ui-value']=pth.name(v), path=true}
+ else v = {value=pth.escape(v), ['ui-value']=v} end
+ table.insert(res.choice, v)
+ end
+
return res
end
@@ -120,7 +134,7 @@ function M.Reference:_validate(context, value)
end
-- TODO check instance type
- M.error.relabel(path, self.follow, self, context, value)
+ relabel(path, self.follow, self, context, value)
return value
end