diff --git a/app/assets/javascripts/my_modules.js b/app/assets/javascripts/my_modules.js index 99f3c8859..a275d1420 100644 --- a/app/assets/javascripts/my_modules.js +++ b/app/assets/javascripts/my_modules.js @@ -290,8 +290,64 @@ function initTagsSelector() { }).getContainer(myModuleTagsSelector).addClass('my-module-tags-container'); } +function initAssignedUsersSelector() { + var manageUsersModal = $('#manage-module-users-modal'); + var manageUsersModalBody = manageUsersModal.find('.modal-body'); + + // Initialize users editing modal remote loading + function initUsersEditLink() { + $('.task-details').on('ajax:success', '.manage-users-link', function(e, data) { + manageUsersModal.modal('show'); + manageUsersModal.find('#manage-module-users-modal-module').text(data.my_module.name); + initUsersModalBody(data); + }); + } + + // Initialize ajax listeners and elements style on modal body. + // This function must be called when modal body is changed. + function initUsersModalBody(data) { + manageUsersModalBody.html(data.html); + manageUsersModalBody.find('.selectpicker').selectpicker(); + } + + // Initialize reloading manage user modal content after posting new user + manageUsersModalBody.on('ajax:success', '.add-user-form', function(e, data) { + initUsersModalBody(data); + }); + + // Initialize remove user from my_module links + manageUsersModalBody.on('ajax:success', '.remove-user-link', function(e, data) { + initUsersModalBody(data); + }); + + // Reload users HTML element when modal is closed + manageUsersModal.on('hide.bs.modal', function() { + var usersEl = $('.task-assigned-users'); + // Load HTML to refresh users + $.ajax({ + url: usersEl.attr('data-module-users-url'), + type: 'GET', + dataType: 'json', + success: function(data) { + $('.task-assigned-users').replaceWith(data.html); + }, + error: function() { + // TODO + } + }); + }); + + // Remove users modal content when modal window is closed. + manageUsersModal.on('hidden.bs.modal', function() { + manageUsersModalBody.html(''); + }); + + initUsersEditLink(); +} + applyTaskCompletedCallBack(); initTagsSelector(); bindEditTagsAjax(); initStartDatePicker(); initDueDatePicker(); +initAssignedUsersSelector(); diff --git a/app/assets/stylesheets/my_modules/protocols/index.scss b/app/assets/stylesheets/my_modules/protocols/index.scss index 3d541443e..4a7080031 100644 --- a/app/assets/stylesheets/my_modules/protocols/index.scss +++ b/app/assets/stylesheets/my_modules/protocols/index.scss @@ -57,7 +57,7 @@ .flex-block { align-items: center; display: flex; - line-height: 32px; + line-height: 34px; .flex-block-label { align-items: center; @@ -248,6 +248,20 @@ box-shadow: none; } } + + .task-assigned-users { + height: 34px; + + &:hover { + text-decoration: none; + } + } + + .assign-new-user { + background-color: $color-concrete; + color: $color-silver-chalice; + text-align: center; + } } .task-notes { diff --git a/app/controllers/user_my_modules_controller.rb b/app/controllers/user_my_modules_controller.rb index 61338902c..2eb5b1ef1 100644 --- a/app/controllers/user_my_modules_controller.rb +++ b/app/controllers/user_my_modules_controller.rb @@ -1,16 +1,16 @@ class UserMyModulesController < ApplicationController before_action :load_vars - before_action :check_view_permissions, only: :index + before_action :check_view_permissions, only: %i(index index_old) before_action :check_manage_permissions, only: %i(create index_edit destroy) - def index + def index_old @user_my_modules = @my_module.user_my_modules respond_to do |format| format.json do render json: { html: render_to_string( - partial: 'index.html.erb' + partial: 'index_old.html.erb' ), my_module_id: @my_module.id, counter: @my_module.users.count # Used for counter badge @@ -19,6 +19,18 @@ class UserMyModulesController < ApplicationController end end + def index + respond_to do |format| + format.json do + render json: { + html: render_to_string( + partial: 'index.html.erb' + ) + } + end + end + end + def index_edit @user_my_modules = @my_module.user_my_modules @unassigned_users = @my_module.unassigned_users diff --git a/app/views/canvas/full_zoom/_my_module.html.erb b/app/views/canvas/full_zoom/_my_module.html.erb index 1ff3cfe9f..bdb4a4381 100644 --- a/app/views/canvas/full_zoom/_my_module.html.erb +++ b/app/views/canvas/full_zoom/_my_module.html.erb @@ -9,7 +9,7 @@ data-module-x="<%= my_module.x %>" data-module-y="<%= my_module.y %>" data-module-conns="<%= construct_module_connections(my_module) %>" - data-module-users-tab-url="<%= my_module_user_my_modules_url(my_module_id: my_module.id, format: :json) %>" + data-module-users-tab-url="<%= index_old_my_module_user_my_modules_url(my_module_id: my_module.id, format: :json) %>" data-module-tags-url="<%= my_module_tags_experiment_path(my_module.experiment, format: :json) %>"> <% if can_manage_module?(my_module) %> @@ -47,7 +47,7 @@