From 2f29477e02db05ae057c4fe51594fea8899ab25c Mon Sep 17 00:00:00 2001 From: Martin Artnik Date: Mon, 6 Mar 2023 16:43:46 +0100 Subject: [PATCH] Protocol/general user assignment changes and fixes [SCI-8039] --- .../access_permissions/user_assignments.js | 4 +- .../access_permissions/access_modal.scss | 17 +++++++-- .../shared_styles/elements/dropdown.scss | 4 ++ .../shared_styles/elements/modal.scss | 18 +++++++++ .../protocols_controller.rb | 17 ++++++--- .../modals/_edit_modal.html.erb | 16 ++++---- .../modals/_show_modal.html.erb | 4 +- .../_default_public_user_role_form.html.erb | 38 +++++++++++++------ .../partials/_member_field.html.erb | 7 ++-- .../partials/_new_assignments_form.html.erb | 2 +- .../partials/_user_assignment_field.html.erb | 2 +- .../protocols/new.json.jbuilder | 2 +- .../protocols/show.json.jbuilder | 7 ++-- 13 files changed, 96 insertions(+), 42 deletions(-) diff --git a/app/assets/javascripts/access_permissions/user_assignments.js b/app/assets/javascripts/access_permissions/user_assignments.js index c636345d9..d9d796ad0 100644 --- a/app/assets/javascripts/access_permissions/user_assignments.js +++ b/app/assets/javascripts/access_permissions/user_assignments.js @@ -8,7 +8,7 @@ let submitBtn = $(this).find('input[type="submit"]'); $(this).find('input:checked').each((_, el) => { - let select = $(el).closest('.row').find('select'); + let select = $(el).closest('.new-member-item').find('select'); let selectValue = parseInt(select.val(), 10); values.push(selectValue); count += 1; @@ -48,7 +48,7 @@ $(document).on('click', '.user-assignment-dropdown .user-role-selector', function() { let roleId = $(this).data('role-id'); - $(this).closest('.dropdown').find('#user_assignment_user_role_id').val(roleId); + $(this).closest('.dropdown').find('#user_assignment_user_role_id, .default-public-user-role-id').val(roleId); $(this).closest('form').trigger('submit'); }); } diff --git a/app/assets/stylesheets/access_permissions/access_modal.scss b/app/assets/stylesheets/access_permissions/access_modal.scss index fb30a0052..d83980af2 100644 --- a/app/assets/stylesheets/access_permissions/access_modal.scss +++ b/app/assets/stylesheets/access_permissions/access_modal.scss @@ -1,4 +1,17 @@ #user_assignments_modal { + + .btn-role-select { + padding: 0; + + &:hover { + background-color: $color-white; + } + + &:focus { + box-shadow: none; + } + } + .modal-body { min-height: calc(100vh - 200px); overflow: auto; @@ -7,9 +20,7 @@ .member-item { border-bottom: 1px solid $modal-header-border-color; - - margin: 0 .5em; - padding: .5em; + padding: .5em 0; } .user-assignment-role .dropdown-toggle, diff --git a/app/assets/stylesheets/shared_styles/elements/dropdown.scss b/app/assets/stylesheets/shared_styles/elements/dropdown.scss index 6b57e2b5f..a1f8bf9b5 100644 --- a/app/assets/stylesheets/shared_styles/elements/dropdown.scss +++ b/app/assets/stylesheets/shared_styles/elements/dropdown.scss @@ -2,6 +2,10 @@ @import "constants"; +.dropdown-menu .divider { + margin: 5px 0; +} + .sci-dropdown { [data-toggle="dropdown"] { .caret { diff --git a/app/assets/stylesheets/shared_styles/elements/modal.scss b/app/assets/stylesheets/shared_styles/elements/modal.scss index 61fc5369f..b843df47d 100644 --- a/app/assets/stylesheets/shared_styles/elements/modal.scss +++ b/app/assets/stylesheets/shared_styles/elements/modal.scss @@ -7,6 +7,24 @@ } .modal { + .modal-dialog { + .modal-body { + padding: 0; + } + + .modal-content { + padding: 1.15em; + } + + .modal-header { + padding: 0 0 1.15em 0; + } + + .modal-footer { + padding: 1.15em 0 0 0; + } + } + .modal-absolute-close-button { position: absolute; right: 1em; diff --git a/app/controllers/access_permissions/protocols_controller.rb b/app/controllers/access_permissions/protocols_controller.rb index 88885fe27..77a84113f 100644 --- a/app/controllers/access_permissions/protocols_controller.rb +++ b/app/controllers/access_permissions/protocols_controller.rb @@ -51,12 +51,17 @@ module AccessPermissions permitted_create_params[:resource_members].each do |_k, user_assignment_params| next unless user_assignment_params[:assign] == '1' - user_assignment = UserAssignment.new(user_assignment_params) - user_assignment.assignable = @protocol - user_assignment.assigned = :manually - user_assignment.team = current_team - user_assignment.assigned_by = current_user - user_assignment.save! + user_assignment = UserAssignment.find_or_initialize_by( + assignable: @protocol, + user_id: user_assignment_params[:user_id], + team: current_team + ) + + user_assignment.update!( + user_role_id: user_assignment_params[:user_role_id], + assigned_by: current_user, + assigned: :manually + ) created_count += 1 log_activity(:protocol_template_access_granted, user_assignment) diff --git a/app/views/access_permissions/modals/_edit_modal.html.erb b/app/views/access_permissions/modals/_edit_modal.html.erb index 242759a82..b7b9ff22c 100644 --- a/app/views/access_permissions/modals/_edit_modal.html.erb +++ b/app/views/access_permissions/modals/_edit_modal.html.erb @@ -1,7 +1,7 @@ <% # frozen_string_literal: true %>