diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 31eed9eb2..9d4141294 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -171,13 +171,11 @@ class ProjectsController < ApplicationController @project.last_modified_by = current_user if !return_error && @project.update(project_params) # Add activities if needed - if message_visibility.present? - log_activity(:change_project_visibility, - visibility: message_visibility) - end - if message_renamed.present? - log_activity(:rename_project) - end + + log_activity(:change_project_visibility, visibility: message_visibility) if message_visibility.present? + log_activity(:rename_project) if message_renamed.present? + log_activity(:archive_project) if project_params[:archived] == 'true' + log_activity(:restore_project) if project_params[:archived] == 'false' flash_success = t('projects.update.success_flash', name: @project.name) if project_params[:archived] == 'true' @@ -192,12 +190,10 @@ class ProjectsController < ApplicationController # The project should be restored unless @project.archived @project.restore(current_user) - log_activity(:restore_project) end elsif @project.archived # The project should be archived @project.archive(current_user) - log_activity(:archive_project) end redirect_to projects_path flash[:success] = flash_success diff --git a/app/helpers/global_activities_helper.rb b/app/helpers/global_activities_helper.rb index c97b1181f..b88e632ab 100644 --- a/app/helpers/global_activities_helper.rb +++ b/app/helpers/global_activities_helper.rb @@ -29,38 +29,45 @@ module GlobalActivitiesHelper return value unless obj current_value = obj.public_send(getter || 'name') + team = activity.team + path = '' - link = case obj - when User - popover_for_user_name(obj, activity.team, false, true) - when Tag - # Not link for now - current_value - when Team - route_to_other_team(projects_path(team: obj), - obj, - current_value) - when Project - link_to current_value, project_path(obj) - when Experiment - link_to current_value, canvas_experiment_path(obj) - when MyModule - link_to current_value, protocols_my_module_path(obj) - when Protocol - if obj.in_repository? - route_to_other_team protocols_path, obj.team, current_value - else - link_to current_value, protocols_my_module_path(obj.my_module) - end - when Repository - link_to current_value, repository_path(obj) - when RepositoryRow - link_to current_value, repository_path(obj.repository) - when RepositoryColumn - link_to current_value, repository_path(obj.repository) - when Result - link_to current_value, results_my_module_path(obj.my_module) - end - link + case obj + when User + return popover_for_user_name(obj, team, false, true) + when Tag + # Not link for now + return current_value + when Team + path = projects_path + when Repository + path = repository_path(obj) + when RepositoryRow + path = repository_path(obj.repository) + when RepositoryColumn + path = repository_path(obj.repository) + when Project + path = obj.archived? ? projects_path : project_path(obj) + when Experiment + return current_value unless obj.navigable? + path = obj.archived? ? experiment_archive_project_path(obj.project) : canvas_experiment_path(obj) + when MyModule + return current_value unless obj.navigable? + path = obj.archived? ? module_archive_experiment_path(obj.experiment) : protocols_my_module_path(obj) + when Protocol + if obj.in_repository? + path = protocols_path + elsif obj.my_module.navigable? + path = protocols_my_module_path(obj.my_module) + else + return current_value + end + when Result + return current_value unless obj.navigable? + path = obj.archived? ? archive_my_module_path(obj.my_module) : results_my_module_path(obj.my_module) + else + return current_value + end + route_to_other_team(path, obj, current_value) end end diff --git a/app/models/activity.rb b/app/models/activity.rb index d9fe4f5ef..07c4389d8 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -87,7 +87,6 @@ class Activity < ApplicationRecord when Team breadcrumbs[:team] = subject.name end - save! end def activity_version diff --git a/app/models/experiment.rb b/app/models/experiment.rb index 8964c526e..e5aab7b8e 100644 --- a/app/models/experiment.rb +++ b/app/models/experiment.rb @@ -108,6 +108,10 @@ class Experiment < ApplicationRecord where(project: Project.viewable_by_user(user, teams)) end + def navigable? + !project.archived? + end + def active_modules my_modules.where(archived: false) end diff --git a/app/models/my_module.rb b/app/models/my_module.rb index ea57cd5e5..10b4fbb5e 100644 --- a/app/models/my_module.rb +++ b/app/models/my_module.rb @@ -141,9 +141,13 @@ class MyModule < ApplicationRecord where(experiment: Experiment.viewable_by_user(user, teams)) end + def navigable? + !experiment.archived? && experiment.navigable? + end + # Removes assigned samples from module and connections with other # modules. - def archive (current_user) + def archive(current_user) self.x = 0 self.y = 0 # Remove association with module group. diff --git a/app/models/result.rb b/app/models/result.rb index 8dedb6e8f..2963adbf3 100644 --- a/app/models/result.rb +++ b/app/models/result.rb @@ -70,6 +70,10 @@ class Result < ApplicationRecord where(my_module: MyModule.viewable_by_user(user, teams)) end + def navigable? + !my_module.archived? && my_module.navigable? + end + def space_taken is_asset ? result_asset.space_taken : 0 end diff --git a/app/services/activities/create_activity_service.rb b/app/services/activities/create_activity_service.rb index 19e8fc03a..6cff94c68 100644 --- a/app/services/activities/create_activity_service.rb +++ b/app/services/activities/create_activity_service.rb @@ -25,8 +25,8 @@ module Activities def call enrich_message_items - @activity.save! @activity.generate_breadcrumbs + @activity.save! self end diff --git a/app/views/global_activities/_activity.html.erb b/app/views/global_activities/_activity.html.erb index c483f25c2..1df283573 100644 --- a/app/views/global_activities/_activity.html.erb +++ b/app/views/global_activities/_activity.html.erb @@ -15,7 +15,7 @@ <% unless activity.old_activity? %> <% if activity.subject_type.present? %> <%= render partial: "global_activities/references/#{activity.subject_type.underscore}.html.erb", - locals: { subject: activity.subject, breadcrumbs: activity.breadcrumbs } %> + locals: { team: activity.team, subject: activity.subject, breadcrumbs: activity.breadcrumbs } %> <% end %> <% end %> diff --git a/app/views/global_activities/references/_experiment.html.erb b/app/views/global_activities/references/_experiment.html.erb index f94bcc6e7..6562d35bf 100644 --- a/app/views/global_activities/references/_experiment.html.erb +++ b/app/views/global_activities/references/_experiment.html.erb @@ -1,14 +1,17 @@ <%= render partial: "global_activities/references/project.html.erb", - locals: { subject: subject&.project, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.project, breadcrumbs: breadcrumbs } %>
<%= image_tag 'icon_small/experiment.svg' %> - <% if subject %> - <%= link_to experiment_path(subject), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <% if subject&.navigable? %> + <% path = subject.archived? ? experiment_archive_project_path(subject.project) : canvas_experiment_path(subject) %> + <%= route_to_other_team(path, + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> - - <%= breadcrumbs[:experiment]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> + <% name = subject&.name || breadcrumbs[:experiment] %> + + <%= name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> <% end %>
diff --git a/app/views/global_activities/references/_my_module.html.erb b/app/views/global_activities/references/_my_module.html.erb index 6d1052264..b7b5ad1b3 100644 --- a/app/views/global_activities/references/_my_module.html.erb +++ b/app/views/global_activities/references/_my_module.html.erb @@ -1,14 +1,17 @@ <%= render partial: "global_activities/references/experiment.html.erb", - locals: { subject: subject&.experiment, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.experiment, breadcrumbs: breadcrumbs } %>
<%= image_tag 'icon_small/task.svg' %> - <% if subject %> - <%= link_to my_module_path(subject), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <% if subject&.navigable? %> + <% path = subject.archived? ? module_archive_experiment_path(subject.experiment) : protocols_my_module_path(subject) %> + <%= route_to_other_team(path, + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> - - <%= breadcrumbs[:my_module]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> + <% name = subject&.name || breadcrumbs[:my_module] %> + + <%= name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> <% end %>
diff --git a/app/views/global_activities/references/_project.html.erb b/app/views/global_activities/references/_project.html.erb index 061ab8845..42c69ff78 100644 --- a/app/views/global_activities/references/_project.html.erb +++ b/app/views/global_activities/references/_project.html.erb @@ -1,11 +1,13 @@ <%= render partial: "global_activities/references/team.html.erb", - locals: { subject: subject&.team, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.team, breadcrumbs: breadcrumbs } %>
<%= image_tag 'icon_small/project.svg' %> <% if subject %> - <%= link_to project_path(subject), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <% path = subject.archived? ? projects_path(team: team) : project_path(subject) %> + <%= route_to_other_team(path, + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> <%= breadcrumbs[:project]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> diff --git a/app/views/global_activities/references/_protocol.html.erb b/app/views/global_activities/references/_protocol.html.erb index 5dec93a48..9db6d9e37 100644 --- a/app/views/global_activities/references/_protocol.html.erb +++ b/app/views/global_activities/references/_protocol.html.erb @@ -1,21 +1,23 @@ <% if subject.in_repository? %> <%= render partial: "global_activities/references/team.html.erb", - locals: { subject: subject&.team, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.team, breadcrumbs: breadcrumbs } %> <% else %> <%= render partial: "global_activities/references/my_module.html.erb", - locals: { subject: subject&.my_module, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.my_module, breadcrumbs: breadcrumbs } %> <% end %>
<% if subject %> - <% if subject.in_repository? %> - <%= route_to_other_team protocols_path(team: subject.team), - subject.team, + <% if subject.in_repository? || subject.my_module.navigable? %> + <% path = subject.in_repository? ? protocols_path(team: subject.team) : protocols_my_module_path(subject.my_module) %> + <%= route_to_other_team path, + team, subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), title: subject.name %> <% else %> - <%= link_to subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), - protocols_my_module_path(subject.my_module), title: subject.name %> + + <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> + <% end %> <% else %> diff --git a/app/views/global_activities/references/_report.html.erb b/app/views/global_activities/references/_report.html.erb index 01289cc25..053c78a23 100644 --- a/app/views/global_activities/references/_report.html.erb +++ b/app/views/global_activities/references/_report.html.erb @@ -1,11 +1,12 @@ <%= render partial: "global_activities/references/team.html.erb", - locals: { subject: subject&.team, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.team, breadcrumbs: breadcrumbs } %>
<% if subject %> - <%= link_to reports_path(subject), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <%= route_to_other_team(reports_path(subject), + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> <%= breadcrumbs[:report]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> diff --git a/app/views/global_activities/references/_repository.html.erb b/app/views/global_activities/references/_repository.html.erb index f31d8c26b..8cbf026f2 100644 --- a/app/views/global_activities/references/_repository.html.erb +++ b/app/views/global_activities/references/_repository.html.erb @@ -1,11 +1,12 @@ <%= render partial: "global_activities/references/team.html.erb", - locals: { subject: subject&.team, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.team, breadcrumbs: breadcrumbs } %>
<% if subject %> - <%= link_to repositories_path(subject), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <%= route_to_other_team(repositories_path(subject), + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> <%= breadcrumbs[:repository]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> diff --git a/app/views/global_activities/references/_result.html.erb b/app/views/global_activities/references/_result.html.erb index ffcc824ba..8a54b5539 100644 --- a/app/views/global_activities/references/_result.html.erb +++ b/app/views/global_activities/references/_result.html.erb @@ -1,15 +1,18 @@ <%= render partial: "global_activities/references/my_module.html.erb", - locals: { subject: subject&.my_module, breadcrumbs: breadcrumbs } %> + locals: { team: team, subject: subject&.my_module, breadcrumbs: breadcrumbs } %>
- <% if subject %> - <%= link_to results_my_module_path(subject.my_module), title: subject.name do %> - <%= subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> - <% end %> + <% if subject&.navigable? %> + <% path = subject.archived? ? archive_my_module_path(subject.my_module) : results_my_module_path(subject.my_module) %> + <%= route_to_other_team(path, + team, + subject.name&.truncate(Constants::NAME_TRUNCATION_LENGTH), + title: subject.name) %> <% else %> - - <%= breadcrumbs[:result]&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> + <% name = subject&.name || breadcrumbs[:result] %> + + <%= name&.truncate(Constants::NAME_TRUNCATION_LENGTH) %> <% end %>