aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/compliance_controls_controller.rb6
-rw-r--r--app/decorators/compliance_control_decorator.rb14
-rw-r--r--lib/af83/decorator.rb6
3 files changed, 26 insertions, 0 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index dfbecaa71..73dc18f59 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -8,6 +8,12 @@ class ComplianceControlsController < ChouetteController
@sti_subclasses = ComplianceControl.subclasses
end
+ def show
+ show! do
+ @compliance_control = @compliance_control.decorate
+ end
+ end
+
def new
if params[:sti_class].blank?
flash[:notice] = I18n.t("compliance_controls.errors.mandatory_control_type")
diff --git a/app/decorators/compliance_control_decorator.rb b/app/decorators/compliance_control_decorator.rb
index a0445faa2..c57a7ccc7 100644
--- a/app/decorators/compliance_control_decorator.rb
+++ b/app/decorators/compliance_control_decorator.rb
@@ -1,4 +1,6 @@
class ComplianceControlDecorator < AF83::Decorator
+ decorates ComplianceControl
+
with_instance_decorator do |instance_decorator|
instance_decorator.show_action_link do |l|
l.content h.t('compliance_control_sets.actions.show')
@@ -30,4 +32,16 @@ class ComplianceControlDecorator < AF83::Decorator
l.data confirm: h.t('compliance_controls.actions.destroy_confirm')
end
end
+
+ define_instance_class_method :predicate do
+ object_class.predicate
+ end
+
+ define_instance_class_method :prerequisite do
+ object_class.prerequisite
+ end
+
+ define_instance_class_method :dynamic_attributes do
+ object_class.dynamic_attributes
+ end
end
diff --git a/lib/af83/decorator.rb b/lib/af83/decorator.rb
index 1b9574053..f990555fe 100644
--- a/lib/af83/decorator.rb
+++ b/lib/af83/decorator.rb
@@ -32,6 +32,12 @@ class AF83::Decorator < ModelDecorator
instance_decorator.send(:define_method, method_name, &block)
end
+ # Defines a class method on the decorated object's class. These
+ # can be called like `object.class.my_method`.
+ def self.define_instance_class_method method_name, &block
+ instance_decorator.send(:define_singleton_method, method_name, &block)
+ end
+
class ActionLinks
attr_reader :options