summaryrefslogtreecommitdiffstats
path: root/aconf/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-12 21:52:55 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-25 09:02:57 +0200
commit506736171d38cb045b7e7f86210b4e5aee5c28b6 (patch)
tree9a65cdd08fcf5748c55ffc51d23afcee035af111 /aconf/model
parent271d8d08c08c1bbae92cc643491e7787ba204e8b (diff)
downloadaconf-506736171d38cb045b7e7f86210b4e5aee5c28b6.tar.bz2
aconf-506736171d38cb045b7e7f86210b4e5aee5c28b6.tar.xz
model: context-dependent editability of collections
Diffstat (limited to 'aconf/model')
-rw-r--r--aconf/model/field.lua8
-rw-r--r--aconf/model/init.lua1
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,