diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-01 11:42:41 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-03 23:30:18 +0200 |
commit | d919f0e44851501e8a8cca8b8c59f48e00910abc (patch) | |
tree | ffa859a7117abf203d2b3a218bac2dfdafe8b4f0 /acf2/model/init.lua | |
parent | 4fd4280e0fdef0903a4ce00debb3f94c67c52d41 (diff) | |
download | aconf-d919f0e44851501e8a8cca8b8c59f48e00910abc.tar.bz2 aconf-d919f0e44851501e8a8cca8b8c59f48e00910abc.tar.xz |
present choices in relative forms for reference sets
Diffstat (limited to 'acf2/model/init.lua')
-rw-r--r-- | acf2/model/init.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua index 17f9ff4..62f114b 100644 --- a/acf2/model/init.lua +++ b/acf2/model/init.lua @@ -55,6 +55,7 @@ local isinstance = object.isinstance local super = object.super local pth = require('acf2.path') +local update = require('acf2.util').update local stringy = require('stringy') @@ -66,6 +67,7 @@ function M.Reference:init(params) if not params.widget then params.widget = 'reference' end super(self, M.Reference):init(params) self.dtype = 'reference' + self.dereference = true if not self.scope then self.scope = '/' end end @@ -90,8 +92,11 @@ function M.Reference:meta(context) for k, v in node.pairs(obj) do if isinstance(v, node.TreeNode) then v = node.path(v) + local name = pth.name(v) v = not pth.is_subordinate(context.path, v) and { - value=v, ['ui-value']=pth.name(v), path=true + value=self.dereference and v or pth.escape(name), + ['ui-value']=name, + ref=v } or nil else v = {value=pth.escape(v), ['ui-value']=v} end if v then table.insert(res.choice, v) end @@ -107,7 +112,9 @@ end function M.Reference:load(context, options) local ref = super(self, M.Reference):load(context) return ( - (not options or options.dereference ~= false) and context.txn and ref + update( + options or {}, {dereference=self.dereference} + ).dereference and context.txn and ref ) and self:follow(context, ref) or ref end |