diff options
-rw-r--r-- | acf2/model/init.lua | 1 | ||||
-rw-r--r-- | acf2/model/node.lua | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua index bc0dc47..376ec64 100644 --- a/acf2/model/init.lua +++ b/acf2/model/init.lua @@ -206,6 +206,7 @@ function M.Collection:init(params, itype) self.iparams = { destroy=self.destroy, editable=self:_editable(), + key=self.key, layout=self.layout, required=self.required, ui_member=self.ui_member diff --git a/acf2/model/node.lua b/acf2/model/node.lua index d9d095d..711680e 100644 --- a/acf2/model/node.lua +++ b/acf2/model/node.lua @@ -1,5 +1,5 @@ --[[ -Copyright (c) 2012-2013 Kaarle Ritvanen +Copyright (c) 2012-2014 Kaarle Ritvanen See LICENSE file for license details --]] @@ -264,7 +264,17 @@ function M.Collection:init(context, params, dtype) if not params.editable then raise(mt.path, 'Collection is not editable') end + mt.check_removable(k, v) + + if params.key then + local kf = M.BoundMember(self, k, params.key) + if kf:normalize(k) ~= k then + raise(mt.path, 'Invalid member name: '..k) + end + kf:validate(k) + end + mt.member(k):save(v) end end |