diff options
| author | Zog | 2018-03-26 11:12:25 +0200 | 
|---|---|---|
| committer | Zog | 2018-03-26 11:12:25 +0200 | 
| commit | deea16664b122b9db9c615980944a63f510c39f7 (patch) | |
| tree | 60adeaef608b58fdc40a12101f54d66fc1b83cda | |
| parent | 1a64e4cb265a320005247e54b880287d3308d28b (diff) | |
| download | chouette-core-deea16664b122b9db9c615980944a63f510c39f7.tar.bz2 | |
Refs #6218; Limit accessible exports for workgroups
| -rw-r--r-- | app/controllers/development_toolbar_controller.rb | 7 | ||||
| -rw-r--r-- | app/helpers/exports_helper.rb | 3 | ||||
| -rw-r--r-- | app/models/workgroup.rb | 4 | ||||
| -rw-r--r-- | app/views/exports/_form.html.slim | 2 | ||||
| -rw-r--r-- | app/views/shared/_development_toolbar.html.slim | 14 | ||||
| -rw-r--r-- | db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb | 6 | 
6 files changed, 35 insertions, 1 deletions
| diff --git a/app/controllers/development_toolbar_controller.rb b/app/controllers/development_toolbar_controller.rb index 20349f7b8..be9a37eba 100644 --- a/app/controllers/development_toolbar_controller.rb +++ b/app/controllers/development_toolbar_controller.rb @@ -6,6 +6,13 @@ class DevelopmentToolbarController < ApplicationController      organisation.save      current_user.permissions = params[:permissions].keys.select{|k| params[:permissions][k] == "true"}      current_user.save +    if params[:export_types].present? +      params[:export_types].each do |workgroup_id, export_types| +        workgroup = Workgroup.find workgroup_id +        workgroup.export_types = export_types.keys.select{|k| export_types[k] == "true"} +        workgroup.save! +      end +    end      redirect_to request.referrer || "/"    end  end diff --git a/app/helpers/exports_helper.rb b/app/helpers/exports_helper.rb index dc0720c40..2e784ad35 100644 --- a/app/helpers/exports_helper.rb +++ b/app/helpers/exports_helper.rb @@ -53,4 +53,7 @@ module ExportsHelper      end    end +  def workgroup_exports workgroup +    Export::Base.user_visible_descendants.select{|e| workgroup.has_export? e.name} +  end  end diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb index 708225a2a..7e3e857ec 100644 --- a/app/models/workgroup.rb +++ b/app/models/workgroup.rb @@ -19,4 +19,8 @@ class Workgroup < ActiveRecord::Base    def custom_fields_definitions      Hash[*custom_fields.map{|cf| [cf.code, cf]}.flatten]    end + +  def has_export? export_name +    export_types.include? export_name +  end  end diff --git a/app/views/exports/_form.html.slim b/app/views/exports/_form.html.slim index 44b4e447c..999e33e34 100644 --- a/app/views/exports/_form.html.slim +++ b/app/views/exports/_form.html.slim @@ -4,7 +4,7 @@      .col-lg-12        = form.input :name      .col-lg-12 -      = form.input :type, as: :select, collection: Export::Base.user_visible_descendants, label_method: :human_name +      = form.input :type, as: :select, collection: workgroup_exports(workbench.workgroup), label_method: :human_name        = form.input :referential_id, as: :select, collection: workbench.referentials, label_method: :name        - Export::Base.user_visible_descendants.each do |child| diff --git a/app/views/shared/_development_toolbar.html.slim b/app/views/shared/_development_toolbar.html.slim index aafd37885..836066b3d 100644 --- a/app/views/shared/_development_toolbar.html.slim +++ b/app/views/shared/_development_toolbar.html.slim @@ -20,6 +20,20 @@                    - if Rails.application.config.development_toolbar.features_doc_url                      = link_to "#{Rails.application.config.development_toolbar.features_doc_url}##{feature}", target: :blank do                        .fa.fa-question-circle + +            - if @workbench +              h4 +                = "Exports" +                .toggles +                  = link_to 'all', '#', data: {mask: 'export_types', val: true} +                  = link_to 'none', '#', data: {mask: 'export_types', val: false} +              ul +                - Export::Base.user_visible_descendants.each do |export| +                  li +                    = hidden_field_tag "export_types[#{@workbench.workgroup_id}][#{export.name}]", false, id: "" +                    = check_box_tag "export_types[#{@workbench.workgroup_id}][#{export.name}]", true, @workbench.workgroup.has_export?(export.name) +                    = label :export_types, export.human_name +            .col.permissions              h4                = "Permissions" diff --git a/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb b/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb new file mode 100644 index 000000000..d75336673 --- /dev/null +++ b/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb @@ -0,0 +1,6 @@ +class BindExportsAndImportsTypesToWorkgroups < ActiveRecord::Migration +  def change +    add_column :workgroups, "import_types", :string, default: [], array: true +    add_column :workgroups, "export_types", :string, default: [], array: true +  end +end | 
