diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 6 | ||||
| -rw-r--r-- | app/helpers/compliance_control_sets_helper.rb | 9 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 4 | ||||
| -rw-r--r-- | app/views/compliance_controls/select_type.html.slim | 10 | 
4 files changed, 23 insertions, 6 deletions
| diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 7df922d01..a20602c63 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -5,7 +5,11 @@ class ComplianceControlsController < ChouetteController    actions :all, :except => [:index]    def select_type -    @sti_subclasses = ComplianceControl.subclasses.sort_by {|compliance_control| compliance_control.default_code} +    @sti_subclasses = Hash.new  +     +    ComplianceControl.subclass_patterns.each do |key, value| +      @sti_subclasses[key] = ComplianceControl.subclasses.select {|klass| klass.object_type == value} +    end    end    def show diff --git a/app/helpers/compliance_control_sets_helper.rb b/app/helpers/compliance_control_sets_helper.rb index 0c63cb139..7adb46971 100644 --- a/app/helpers/compliance_control_sets_helper.rb +++ b/app/helpers/compliance_control_sets_helper.rb @@ -83,6 +83,13 @@ module ComplianceControlSetsHelper              attribute: 'code'            ),            TableBuilderHelper::Column.new( +            key: :subclass, +            attribute: Proc.new do |compliance_control| +              key = ComplianceControl.subclass_patterns.key(compliance_control.object.class.object_type) +              I18n.t("compliance_controls.filters.subclasses.#{key}") +            end +          ), +          TableBuilderHelper::Column.new(              key: :name,              attribute: 'name',              link_to: lambda do |compliance_control| @@ -98,7 +105,7 @@ module ComplianceControlSetsHelper              attribute: 'comment'            ),        ], -      sortable: true, +      sortable: false,        cls: 'table has-filter has-search',        model: ComplianceControl,        action: :index diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 672fb128c..59c359bd5 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -20,6 +20,10 @@ class ComplianceControl < ApplicationModel        }      end +    def object_type +      self.default_code.match(/^\d+-(?'object_type'\w+)-\d+$/)[:object_type] +    end +      def inherited(child)        child.instance_eval do          def model_name diff --git a/app/views/compliance_controls/select_type.html.slim b/app/views/compliance_controls/select_type.html.slim index d1c518ecf..4be53362b 100644 --- a/app/views/compliance_controls/select_type.html.slim +++ b/app/views/compliance_controls/select_type.html.slim @@ -4,9 +4,11 @@      .row        .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1          = form_tag(new_compliance_control_set_compliance_control_path, method: :get) do -          - @sti_subclasses.each do |klass| -            .radio -              = radio_button_tag(:sti_class, klass, @sti_subclasses.first) -              = "#{klass.default_code} - #{I18n.t("activerecord.models.#{klass.name.underscore}.one")}" +          - ComplianceControl.subclass_patterns.each do |key, value| +            h3 = t("compliance_controls.filters.subclasses.#{key}") +            - @sti_subclasses[key].each do |klass| +              .radio +                = radio_button_tag(:sti_class, klass, @sti_subclasses.first) +                = "#{I18n.t("activerecord.models.#{klass.name.underscore}.one")}"            .text-right              = submit_tag t('compliance_control_sets.actions.loaded'), class: "btn btn-outline-primary" | 
