diff options
Diffstat (limited to 'acf2/model/field.lua')
-rw-r--r-- | acf2/model/field.lua | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/acf2/model/field.lua b/acf2/model/field.lua index 6587cdc..57c558f 100644 --- a/acf2/model/field.lua +++ b/acf2/model/field.lua @@ -158,6 +158,12 @@ function M.Field:_validate(context, value) return save end +function M.Field:check_editable(context) + if not self:editable(context) then + raise(context.path, 'Is not editable') + end +end + function M.Field:check_required(context) if self.required then raise(context.path, 'Required value not set') end end @@ -167,16 +173,14 @@ function M.Field:normalize(context, value) return value end function M.Field:validate(context, value) end function M.Field:save(context, value) - if not self:editable(context) then - raise(context.path, 'Is not editable') - end + self:check_editable(context) self:_save(context, self:_validate(context, value)) end function M.Field:_save(context, value) context.txn:set(context.addr, value) end function M.Field:validate_saved(context) - self:save(context, self:load(context)) + if self:editable(context) then self:save(context, self:load(context)) end end @@ -265,6 +269,8 @@ function M.TreeNode:load(context, options) end function M.TreeNode:save(context, value) + self:check_editable(context) + local path = context.path if value == path then return end |