diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-12 21:52:55 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-25 09:02:57 +0200 |
commit | 506736171d38cb045b7e7f86210b4e5aee5c28b6 (patch) | |
tree | 9a65cdd08fcf5748c55ffc51d23afcee035af111 | |
parent | 271d8d08c08c1bbae92cc643491e7787ba204e8b (diff) | |
download | aconf-506736171d38cb045b7e7f86210b4e5aee5c28b6.tar.bz2 aconf-506736171d38cb045b7e7f86210b4e5aee5c28b6.tar.xz |
model: context-dependent editability of collections
-rw-r--r-- | aconf/model/field.lua | 8 | ||||
-rw-r--r-- | aconf/model/init.lua | 1 |
2 files changed, 6 insertions, 3 deletions
diff --git a/aconf/model/field.lua b/aconf/model/field.lua index 80f08c5..658aa7f 100644 --- a/aconf/model/field.lua +++ b/aconf/model/field.lua @@ -17,6 +17,7 @@ local super = object.super local util = require('aconf.util') local map = util.map local setdefaults = util.setdefaults +local update = util.update M.Member = class() @@ -122,7 +123,7 @@ function M.Field:_choice(context) return self.choice end function M.Field:meta(context) assert(self.dtype) local choice = self:_choice(context) - return util.update( + return update( super(self, M.Field):meta(context), { type=self.dtype, @@ -309,6 +310,7 @@ function M.TreeNode:init(params) super(self, M.TreeNode):init( setdefaults(params, {detail=true, widget='link'}) ) + self.iparams = {} end function M.TreeNode:topology(context) @@ -324,7 +326,9 @@ function M.TreeNode:load(context, options) options or {}, 'create', self.create ) or self:_load(context) ) then return end - return self.itype(context, self.iparams) + return self.itype( + context, update({editable=self:_editable(context)}, self.iparams) + ) end function M.TreeNode:save(context, value) diff --git a/aconf/model/init.lua b/aconf/model/init.lua index a4c7a4b..e58d2f0 100644 --- a/aconf/model/init.lua +++ b/aconf/model/init.lua @@ -208,7 +208,6 @@ function M.Collection:init(params, itype) self.itype = itype or node.Collection self.iparams = { destroy=self.destroy, - editable=self:_editable(), key=self.key, layout=self.layout, required=self.required, |