diff --git a/app/assets/javascripts/my_modules/archived.js b/app/assets/javascripts/my_modules/archived.js index c4b1ce39b..6c7c0890d 100644 --- a/app/assets/javascripts/my_modules/archived.js +++ b/app/assets/javascripts/my_modules/archived.js @@ -7,14 +7,15 @@ let taskId = $(this).closest('.task-selector-container').data('task-id'); let index = $.inArray(taskId, selectedTasks); - window.actionToolbarComponent.fetchActions({ my_module_ids: selectedTasks }); - // If checkbox is checked and row ID is not in list of selected folder IDs if (this.checked && index === -1) { selectedTasks.push(taskId); } else if (!this.checked && index !== -1) { selectedTasks.splice(index, 1); } + + const items = selectedTasks.length ? JSON.stringify(selectedTasks.map((item) => ({ id: item }))) : []; + window.actionToolbarComponent.fetchActions({ items }); }); function restoreMyModules(url, ids) { @@ -63,7 +64,32 @@ }); } + function initAccessModal() { + $('#module-archive').on('click', '#openAccessModal', (e) => { + e.preventDefault(); + const container = document.getElementById('accessModalContainer'); + const target = e.currentTarget; + + $.get(target.dataset.url, (data) => { + const object = { + ...data.data.attributes, + id: data.data.id, + type: data.data.type + }; + const { rolesUrl } = container.dataset; + const params = { + object, + roles_path: rolesUrl + }; + const modal = $('#accessModalComponent').data('accessModal'); + modal.params = params; + modal.open(); + }); + }); + } + window.initActionToolbar(); initRestoreMyModules(); initMoveButton(); + initAccessModal(); }()); diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb index 7764d6c4e..807c5261d 100644 --- a/app/controllers/my_modules_controller.rb +++ b/app/controllers/my_modules_controller.rb @@ -410,7 +410,7 @@ class MyModulesController < ApplicationController actions: Toolbars::MyModulesService.new( current_user, - my_module_ids: JSON.parse(params[:items]).map { |i| i['id'] } + my_module_ids: params[:items].present? ? JSON.parse(params[:items]).map { |i| i['id'] } : params[:items] ).actions } end diff --git a/app/services/toolbars/my_modules_service.rb b/app/services/toolbars/my_modules_service.rb index 2efb4d24a..87ff407ed 100644 --- a/app/services/toolbars/my_modules_service.rb +++ b/app/services/toolbars/my_modules_service.rb @@ -41,6 +41,7 @@ module Toolbars name: 'restore', label: I18n.t('experiments.table.toolbar.restore'), icon: 'sn-icon sn-icon-restore', + button_id: 'restoreTask', path: restore_my_modules_experiment_path(experiment), type: :emit } @@ -68,16 +69,12 @@ module Toolbars return unless can_read_my_module?(my_module) - path = if can_manage_my_module_users?(my_module) - edit_access_permissions_my_module_path(my_module) - else - access_permissions_my_module_path(my_module) - end - { name: 'access', label: I18n.t('experiments.table.my_module_actions.access'), icon: 'sn-icon sn-icon-project-member-access', + path: my_module_path(my_module, format: :json), + button_id: 'openAccessModal', type: :emit } end @@ -89,6 +86,7 @@ module Toolbars name: 'move', label: I18n.t('experiments.table.toolbar.move'), icon: 'sn-icon sn-icon-move', + button_id: 'moveTask', type: :emit, path: move_modules_experiment_path(@my_modules.first.experiment, my_module_ids: @my_modules.pluck(:id)) } diff --git a/app/views/experiments/module_archive.html.erb b/app/views/experiments/module_archive.html.erb index 89840b75f..4acd02b19 100644 --- a/app/views/experiments/module_archive.html.erb +++ b/app/views/experiments/module_archive.html.erb @@ -31,6 +31,17 @@