diff options
| author | Xinhui | 2017-09-19 12:33:36 +0200 | 
|---|---|---|
| committer | Xinhui | 2017-09-19 14:49:14 +0200 | 
| commit | 7110330a7e154fb8d746f6b15e12c7b42c6c00dc (patch) | |
| tree | 31776b0be922c48cf9e9dc22cad070499a8f0770 | |
| parent | e04f9b2c9c97c1732b713fb959e44561335c0f00 (diff) | |
| download | chouette-core-7110330a7e154fb8d746f6b15e12c7b42c6c00dc.tar.bz2 | |
Compliance Control decorator
Refs #4543
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 16 | ||||
| -rw-r--r-- | app/decorators/compliance_control_decorator.rb | 25 | 
2 files changed, 41 insertions, 0 deletions
| diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index d198f2cdb..dad9b935a 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -1,7 +1,16 @@  class ComplianceControlsController < BreadcrumbController +  include PolicyChecker    defaults resource_class: ComplianceControl    belongs_to :compliance_control_set +  def index +    index! do |format| +      format.html { +        @compliance_controls = decorate_compliance_controls(@compliance_controls) +      } +    end +  end +    def create      create!(notice: t('notice.compliance_control.created'))    end @@ -16,6 +25,13 @@ class ComplianceControlsController < BreadcrumbController    end    private +  def decorate_compliance_controls(compliance_controls) +    ModelDecorator.decorate( +      compliance_controls, +      with: ComplianceControlDecorator, +    ) +  end +    def compliance_control_params      params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes)    end diff --git a/app/decorators/compliance_control_decorator.rb b/app/decorators/compliance_control_decorator.rb new file mode 100644 index 000000000..38b968ad1 --- /dev/null +++ b/app/decorators/compliance_control_decorator.rb @@ -0,0 +1,25 @@ +class ComplianceControlDecorator < Draper::Decorator +  delegate_all + +  def action_links +    links = [] + +    if h.policy(object).destroy? +      links << Link.new( +        content: h.destroy_link_content, +        href: h.compliance_control_set_compliance_control_path(object.compliance_control_set.id, object.id), +        method: :delete, +        data: { confirm: h.t('compliance_controls.actions.destroy_confirm') } +      ) +    end + +    if h.policy(object).edit? +      links << Link.new( +        content: h.t('compliance_controls.actions.edit'), +        href:  h.edit_compliance_control_set_path(object.compliance_control_set.id, object.id) +      ) +    end +    links +  end + +end | 
