Merge pull request #5364 from artoscinote/ma_SCI_8391

Action toolbar fixes [SCI-8391]
This commit is contained in:
artoscinote 2023-05-05 13:33:05 +02:00 committed by GitHub
commit fdc6e5cb77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 51 deletions

View file

@ -101,30 +101,7 @@ var ProjectsIndex = (function() {
// init delete project folders
function initDeleteFoldersToolbarButton() {
$(projectsWrapper)
.on('ajax:before', '.delete-folders-btn', function() {
let buttonForm = $(this);
buttonForm.find('input[name="project_folders_ids[]"]').remove();
selectedProjectFolders.forEach(function(id) {
$('<input>').attr({
type: 'hidden',
name: 'project_folders_ids[]',
value: id
}).appendTo(buttonForm);
});
})
.on('ajax:success', '.delete-folders-btn', function(ev, data) {
// Add and show modal
let deleteModal = $(data.html);
$(projectsWrapper).append(deleteModal);
deleteModal.modal('show');
// Remove modal when it gets closed
deleteModal.on('hidden.bs.modal', function() {
$(this).remove();
});
});
$(projectsWrapper)
$(document)
.on('ajax:success', '.delete-folders-form', function(ev, data) {
$('.modal-project-folder-delete').modal('hide');
HelperModule.flashAlertMsg(data.message, 'success');

View file

@ -1,5 +1,6 @@
.sn-action-toolbar {
background: $color-concrete;
z-index: 2;
.btn:hover {
background: $color-white;

View file

@ -99,12 +99,12 @@ class ProjectFoldersController < ApplicationController
def destroy_modal
render json: {
html: render_to_string(partial: 'projects/index/modals/project_folder_delete.html.erb',
locals: { project_folders_ids: params[:project_folders_ids] })
locals: { project_folder_ids: params[:project_folder_ids] })
}
end
def destroy
project_folders = current_team.project_folders.where(id: params[:project_folders_ids])
project_folders = current_team.project_folders.where(id: params[:project_folder_ids])
counter = 0
project_folders.each do |folder|
next if folder.projects.exists? || folder.project_folders.exists? || !can_manage_team?(current_team)

View file

@ -56,7 +56,7 @@ module Toolbars
{
name: 'edit',
label: I18n.t('experiments.index.edit_option'),
icon: 'fa fa-pen',
icon: 'fa fa-pencil-alt',
button_class: 'edit-btn',
path: edit_experiment_path(experiment),
type: 'remote-modal'

View file

@ -58,7 +58,7 @@ module Toolbars
{
name: 'edit',
label: I18n.t('experiments.table.toolbar.edit'),
icon: 'fa fa-pen',
icon: 'fa fa-pencil-alt',
button_id: 'editTask',
type: :legacy
}

View file

@ -31,14 +31,15 @@ module Toolbars
return [] if @item_type == :none
[
restore_action,
edit_action,
access_action,
move_action,
export_action,
archive_action,
restore_action,
comments_action,
activities_action
activities_action,
delete_folder_action
].compact
end
@ -47,20 +48,33 @@ module Toolbars
def edit_action
return unless @single
return unless @item_type == :project
if @items.first.is_a?(Project)
project = @items.first
project = @items.first
return unless can_manage_project?(project)
return unless can_manage_project?(project)
{
name: 'edit',
label: I18n.t('projects.index.edit_option'),
icon: 'fas fa-pencil-alt',
button_class: 'edit-btn',
path: edit_project_path(project),
type: :legacy
}
else
project_folder = @items.first
{
name: 'edit',
label: I18n.t('projects.index.edit_option'),
icon: 'fa fa-pen',
button_class: 'edit-btn',
path: edit_project_path(project),
type: :legacy
}
return unless can_create_project_folders?(project_folder.team)
{
name: 'edit',
label: I18n.t('projects.index.edit_option'),
icon: 'fas fa-pencil-alt',
button_class: 'edit-btn',
path: edit_project_folder_path(project_folder),
type: :legacy
}
end
end
def access_action
@ -81,7 +95,7 @@ module Toolbars
{
name: 'access',
label: I18n.t('general.access'),
icon: 'fa fa-door-open',
icon: 'fas fa-door-open',
button_class: 'access-btn',
path: path,
type: 'remote-modal'
@ -116,7 +130,7 @@ module Toolbars
def archive_action
return unless @items.all? do |item|
item.is_a?(Project) ? can_archive_project?(item) : can_manage_team?(item.team)
item.is_a?(Project) && can_archive_project?(item)
end
{
@ -132,7 +146,7 @@ module Toolbars
def restore_action
return unless @items.all? do |item|
item.is_a?(Project) ? can_restore_project?(item) : item.archived? && can_manage_team?(item.team)
item.is_a?(Project) && can_restore_project?(item)
end
{
@ -148,7 +162,7 @@ module Toolbars
def delete_folder_action
return unless @items.all? do |item|
item.is_a?(Folder) && can_delete_project_folder?(item)
item.is_a?(ProjectFolder) && can_delete_project_folder?(item)
end
{
@ -156,9 +170,8 @@ module Toolbars
label: I18n.t('general.delete'),
icon: 'fas fa-trash',
button_class: 'delete-folders-btn',
path: destroy_modal_project_folders_url,
type: :request,
request_method: :post
path: destroy_modal_project_folders_path(project_folder_ids: @items.map(&:id)),
type: 'remote-modal'
}
end

View file

@ -8,7 +8,7 @@
<h2 class="modal-title"><%= t('projects.index.modal_delete_folders.title') %></h2>
</div>
<div class="modal-body">
<p><%= t('projects.index.modal_delete_folders.description_1_html', number: project_folders_ids.size) %></p>
<p><%= t('projects.index.modal_delete_folders.description_1_html', number: project_folder_ids.size) %></p>
<p><%= t('projects.index.modal_delete_folders.description_2') %></p>
</div>
<div class="modal-footer">
@ -17,7 +17,7 @@
destroy_project_folders_path,
class: 'btn btn-danger',
form_class: 'delete-folders-form',
params: { project_folders_ids: project_folders_ids },
params: { project_folder_ids: project_folder_ids },
remote: true %>
</div>
</div>

View file

@ -374,7 +374,7 @@ Rails.application.routes.draw do
post 'move_to', to: 'project_folders#move_to', defaults: { format: 'json' }
get 'move_to_modal', to: 'project_folders#move_to_modal', defaults: { format: 'json' }
post 'destroy', to: 'project_folders#destroy', as: 'destroy', defaults: { format: 'json' }
post 'destroy_modal', to: 'project_folders#destroy_modal', defaults: { format: 'json' }
get 'destroy_modal', to: 'project_folders#destroy_modal', defaults: { format: 'json' }
end
end
get 'project_folders/:project_folder_id', to: 'projects#index', as: :project_folder_projects