diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/af83/decorator.rb | 5 | ||||
| -rw-r--r-- | lib/af83/enhanced_decorator.rb | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/af83/decorator.rb b/lib/af83/decorator.rb index 80958fa02..d2e049857 100644 --- a/lib/af83/decorator.rb +++ b/lib/af83/decorator.rb @@ -196,6 +196,7 @@ class AF83::Decorator < ModelDecorator end enabled = enabled && check_policy(@options[:_policy]) if @options[:_policy].present? + enabled = enabled && check_feature(@options[:_feature]) if @options[:_feature].present? enabled end @@ -204,6 +205,10 @@ class AF83::Decorator < ModelDecorator @context.check_policy policy end + def check_feature(feature) + @context.check_feature feature + end + def errors "Missing attributes: #{@missing_attributes.to_sentence}" end diff --git a/lib/af83/enhanced_decorator.rb b/lib/af83/enhanced_decorator.rb index 91a377f8c..4ade0980b 100644 --- a/lib/af83/enhanced_decorator.rb +++ b/lib/af83/enhanced_decorator.rb @@ -28,7 +28,7 @@ module AF83::EnhancedDecorator def parse_options args options = {} - %i(weight primary secondary footer on action actions policy if groups group).each do |k| + %i(weight primary secondary footer on action actions policy feature if groups group).each do |k| options[k] = args.delete(k) if args.has_key?(k) end link_options = args.dup @@ -54,6 +54,7 @@ module AF83::EnhancedDecorator link_options[:_if] = options.delete(:if) link_options[:_policy] = options.delete(:policy) + link_options[:_feature] = options.delete(:feature) [options, link_options] end end @@ -79,4 +80,8 @@ module AF83::EnhancedDecorator method = "#{policy}?" h.policy(_object).send(method) end + + def check_feature feature + h.has_feature? feature + end end |
