diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb index 301420503..130f6193e 100644 --- a/app/controllers/experiments_controller.rb +++ b/app/controllers/experiments_controller.rb @@ -77,6 +77,7 @@ class ExperimentsController < ApplicationController end def canvas + @breadcrumbs_items = breadcrumbs_items redirect_to module_archive_experiment_path(@experiment) if @experiment.archived_branch? @project = @experiment.project @active_modules = @experiment.my_modules.active.order(:name) @@ -89,6 +90,7 @@ class ExperimentsController < ApplicationController end def table + @breadcrumbs_items = breadcrumbs_items @project = @experiment.project @experiment.current_view_state(current_user) @my_module_visible_table_columns = current_user.my_module_visible_table_columns @@ -372,6 +374,7 @@ class ExperimentsController < ApplicationController end def module_archive + @breadcrumbs_items = breadcrumbs_items @project = @experiment.project @my_modules = @experiment.archived_branch? ? @experiment.my_modules : @experiment.my_modules.archived @my_modules = @my_modules.with_granted_permissions(current_user, MyModulePermissions::READ_ARCHIVED) @@ -658,4 +661,38 @@ class ExperimentsController < ApplicationController end end end + + def breadcrumbs_items + experiment = @experiment + project = experiment.project + current_folder = project&.project_folder + breadcrumbs_items = [] + folders = helpers.tree_ordered_parent_folders(current_folder) + + breadcrumbs_items.push({ + label: t('projects.index.breadcrumbs_root'), + url: projects_path, + class: 'project-folder-link' + }) + + folders&.each do |project_folder| + breadcrumbs_items.push({ + label: project_folder.name, + url: project_folder_path(project_folder), + class: 'project-folder-link' + }) + end + + breadcrumbs_items.push({ + label: project.name, + url: project_path(project) + }) + + breadcrumbs_items.push({ + label: experiment.name, + url: my_modules_experiment_path(experiment) + }) + + breadcrumbs_items + end end diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb index f2ac67a1c..279326d34 100644 --- a/app/controllers/my_modules_controller.rb +++ b/app/controllers/my_modules_controller.rb @@ -19,6 +19,7 @@ class MyModulesController < ApplicationController before_action :check_update_state_permissions, only: :update_state before_action :set_inline_name_editing, only: %i(protocols results activities archive) before_action :load_experiment_my_modules, only: %i(protocols results activities archive) + before_action :set_breadcrumbs_items, only: %i(results protocols activities signatures) layout 'fluid'.freeze @@ -607,4 +608,43 @@ class MyModulesController < ApplicationController my_module: link_to(@my_module.name, protocols_my_module_url(@my_module))) ) end + + def set_breadcrumbs_items + my_module = @my_module + experiment = my_module.experiment + project = experiment.project + current_folder = project&.project_folder + breadcrumbs_items = [] + folders = helpers.tree_ordered_parent_folders(current_folder) + + breadcrumbs_items.push({ + label: t('projects.index.breadcrumbs_root'), + url: projects_path, + class: 'project-folder-link' + }) + + folders&.each do |project_folder| + breadcrumbs_items.push({ + label: project_folder.name, + url: project_folder_path(project_folder), + class: 'project-folder-link' + }) + end + + breadcrumbs_items.push({ + label: project.name, + url: project_path(project) + }) + + breadcrumbs_items.push({ + label: experiment.name, + url: my_modules_experiment_path(experiment) + }) + breadcrumbs_items.push({ + label: my_module.name, + url: my_module_path(my_module) + }) + + @breadcrumbs_items = breadcrumbs_items + end end