aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/af83/decorator.rb5
-rw-r--r--lib/af83/enhanced_decorator.rb7
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