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 /app | |
| parent | e04f9b2c9c97c1732b713fb959e44561335c0f00 (diff) | |
| download | chouette-core-7110330a7e154fb8d746f6b15e12c7b42c6c00dc.tar.bz2 | |
Compliance Control decorator
Refs #4543
Diffstat (limited to 'app')
| -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 |
