diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/compliance_control_sets_controller.rb | 14 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 43 | ||||
| -rw-r--r-- | app/views/compliance_control_sets/simple.html.slim | 34 | ||||
| -rw-r--r-- | app/views/compliance_controls/_filters.html.slim | 42 | ||||
| -rw-r--r-- | app/views/compliance_controls/_simple_filters.html.slim | 38 | 
5 files changed, 136 insertions, 35 deletions
| diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb index f576a55c5..ac07c5495 100644 --- a/app/controllers/compliance_control_sets_controller.rb +++ b/app/controllers/compliance_control_sets_controller.rb @@ -21,12 +21,22 @@ class ComplianceControlSetsController < InheritedResources::Base          @compliance_controls    = @compliance_control_set.compliance_controls          @q_controls_form        = @compliance_controls.ransack(params[:q])          @compliance_controls    = -         decorate_compliance_controls( @compliance_controls) -          .group_by(&:compliance_control_block) +          decorate_compliance_controls( @compliance_controls) +            .group_by(&:compliance_control_block)        }      end    end +  def simple +    show! do | format | +      format.html do +        @compliance_controls    = @compliance_control_set.compliance_controls +        @q_controls_form        = @compliance_controls.ransack(params[:q]) +        @compliance_control_set = @compliance_control_set.decorate +      end +    end +  end +    def clone      ComplianceControlSetCloner.new.copy(params[:id], current_organisation.id)      flash[:notice] = I18n.t("compliance_control_sets.errors.operation_in_progress") diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 08efa7e9a..e00a2c109 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -1,9 +1,31 @@  class ComplianceControl < ActiveRecord::Base + +  class << self +    def criticities; %i(warning error) end +    def default_code; "" end +    def dynamic_attributes +      hstore_metadata_for_control_attributes.keys +    end + +    def policy_class +      ComplianceControlPolicy +    end + +    def inherited(child) +      child.instance_eval do +        def model_name +          ComplianceControl.model_name +        end +      end +      super +    end +  end +    extend Enumerize    belongs_to :compliance_control_set    belongs_to :compliance_control_block -  enumerize :criticity, in: %i(warning error), scope: true, default: :warning +  enumerize :criticity, in: criticities, scope: true, default: :warning    hstore_accessor :control_attributes, {}    validates :criticity, presence: true @@ -23,25 +45,6 @@ class ComplianceControl < ActiveRecord::Base                        direct_set_name: names.last))    end -  class << self -    def default_code; "" end -    def dynamic_attributes -      hstore_metadata_for_control_attributes.keys -    end - -    def policy_class -      ComplianceControlPolicy -    end - -    def inherited(child) -      child.instance_eval do -        def model_name -          ComplianceControl.model_name -        end -      end -      super -    end -  end    def initialize(attributes = {})      super diff --git a/app/views/compliance_control_sets/simple.html.slim b/app/views/compliance_control_sets/simple.html.slim new file mode 100644 index 000000000..73f127646 --- /dev/null +++ b/app/views/compliance_control_sets/simple.html.slim @@ -0,0 +1,34 @@ +/ PageHeader += pageheader 'Simple', +              t('compliance_control_sets.show.title', name: @compliance_control_set.name), +             'Lorem ipsum dolor sit amet' + + +/ PageContent +.page_content +  .container-fluid +    .row +      .col-lg-6.col-md-6.col-sm-12.col-xs-12 +        = definition_list t('metadatas'), +            ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name +  - if params[:q].present? or @compliance_controls.any? +    .row +      .col-lg-12 +        = render '/compliance_controls/simple_filters' + +      - if @compliance_controls.any? +        .row +          .col-lg-12 +            .select_table +              table +                thead +                  th id +                  th name +                tbody +                  - @compliance_controls.each do  | cc | +                    tr +                      td +                        = cc.id +                      td +                        = cc.name + diff --git a/app/views/compliance_controls/_filters.html.slim b/app/views/compliance_controls/_filters.html.slim index b9cb69a2a..55490e01b 100644 --- a/app/views/compliance_controls/_filters.html.slim +++ b/app/views/compliance_controls/_filters.html.slim @@ -1,27 +1,43 @@  = search_form_for @q_controls_form, -  url: compliance_control_set_compliance_controls_path(@compliance_control_set), -  builder: SimpleForm::FormBuilder,  +  url: compliance_control_set_path(@compliance_control_set), +  builder: SimpleForm::FormBuilder,    class: 'form form-filter' do |f| -// Rewriting the ransack filter copied from cc_stes/_filter    .ffg-row      .input-group.search_bar -      = f.search_field :name_cont, class: 'form-control', placeholder: t('compliance_control_sets.filters.name') +      = f.search_field :name_cont, +        class: 'form-control', +        placeholder: t('compliance_controls.filters.name')        span.input-group-btn          button.btn.btn-default type='submit'            span.fa.fa-search +    .ffg-row      .form-group.togglable -      = f.label t('activerecord.models.organisation.one'), required: false, class: 'control-label' -      = f.input :organisation_name_eq_any, collection: organisations_filters_values, as: :check_boxes, label: false, label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe}, required: false, wrapper_html: {class: 'checkbox_list'} -       +      = f.label t('activerecord.models.compliance_control_block.one'), required: false, class: 'control-label' +      = f.input :compliance_control_block_name_eq_any, +        collection: @compliance_control_set.compliance_control_blocks, +        as: :check_boxes, +        label: true, +        label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} +    .form-group.togglable +      = f.label t('compliance_controls.filters.comment'), required: false, class: 'control-label' +      = f.collection_check_boxes :comment_eq_any, +        @compliance_control_set.compliance_controls, +        :id, :comment, +        label: true, +        wrapper_html: {class: 'checkbox_list'}      .form-group.togglable -      = f.label Import.human_attribute_name(:updated_at), required: false, class: 'control-label' -      .filter_menu -        = f.simple_fields_for :updated_at do |p| -          = p.input :start_date, as: :date, label: false, wrapper_html: {class: 'date smart_date filter_menu-item'}, default: @begin_range, include_blank: @begin_range ? false : true -          = p.input :end_date, as: :date, label: false, wrapper_html: {class: 'date smart_date filter_menu-item'}, default: @end_range, include_blank: @end_range ? false : true +      = f.label t('compliance_controls.filters.criticity'), required: false, class: 'control-label' +      = f.input :criticity_eq, +        collection: ComplianceControl.criticities, +        as: :check_boxes, +        label: true, +        required: false, +        wrapper_html: {class: 'checkbox_list'}    .actions      = link_to t('actions.erase'), @compliance_control_set, class: 'btn btn-link' -    = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_filter_btn' +    = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_compliance_controls_filter_btn' diff --git a/app/views/compliance_controls/_simple_filters.html.slim b/app/views/compliance_controls/_simple_filters.html.slim new file mode 100644 index 000000000..da037c051 --- /dev/null +++ b/app/views/compliance_controls/_simple_filters.html.slim @@ -0,0 +1,38 @@ += search_form_for @q_controls_form, +  url: simple_compliance_control_set_path(@compliance_control_set), +  builder: SimpleForm::FormBuilder, +  class: 'form form-filter' do |f| + +  .ffg-row +    .input-group.search_bar +      = f.search_field :name_cont, +        class: 'form-control', +        placeholder: t('compliance_controls.filters.name') +      span.input-group-btn +        button.btn.btn-default type='submit' +          span.fa.fa-search + +  .ffg-row +    .form-group.togglable +      = f.label t('activerecord.models.compliance_control_block.one'), required: false, class: 'control-label' +      = f.input :compliance_control_block_id_eq_any, +        collection: @compliance_control_set.compliance_control_blocks, +        as: :check_boxes, +        label: false, +        label_method: lambda {|w| ("<span>#{w.name}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} + +    .form-group.togglable +      = f.label t('compliance_controls.filters.criticity'), required: false, class: 'control-label' +      = f.input :criticity_eq, +        collection: ComplianceControl.criticities, +        as: :check_boxes, +        label: false, +        label_method: lambda {|w| ("<span>#{w}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} + +  .actions +    = link_to t('actions.erase'), @compliance_control_set, class: 'btn btn-link' +    = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_control_set_compliance_controls_filter_btn' | 
