diff --git a/app/assets/javascripts/repositories/show.js b/app/assets/javascripts/repositories/show.js index 358a441dd..f02eade5d 100644 --- a/app/assets/javascripts/repositories/show.js +++ b/app/assets/javascripts/repositories/show.js @@ -173,7 +173,21 @@ }); $('.create-new-repository').initializeModal('#create-repo-modal'); + + function initArchivingActionsInDropdown(){ + $('.archive-repository-option').on('click', function(event){ + event.preventDefault(); + var link = event.target.getAttribute("href"); + $.ajax({ + type: 'GET', + url: link, + success: pageReload + }); + }); + } + initImportRecordsModal(); initTable(); initRepositoryViewSwitcher(); + initArchivingActionsInDropdown(); }(window)); diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 18fd71ad3..3efc894bd 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -128,7 +128,7 @@ class RepositoriesController < ApplicationController end def archive - service = Repositories::ArchiveRepositoryService.call(repositories: selected_repos_params, + service = Repositories::ArchiveRepositoryService.call(repositories: selected_repositories, user: current_user, team: current_team) if service.succeed? @@ -139,7 +139,7 @@ class RepositoriesController < ApplicationController end def restore - service = Repositories::RestoreRepositoryService.call(repositories: selected_repos_params, + service = Repositories::RestoreRepositoryService.call(repositories: selected_repositories, user: current_user, team: current_team) if service.succeed? @@ -430,9 +430,15 @@ class RepositoriesController < ApplicationController params.permit(:id, :file, :file_id, mappings: {}).to_h end - def selected_repos_params - process_ids = params[:selected_repos].map(&:to_i).uniq - Repository.where(id: process_ids, team_id: current_team).pluck(:id) + def selected_repositories + if params[:repository_id].present? + repository_ids = params[:repository_id] + elsif params[:selected_repos].any? + repository_ids = params[:selected_repos].map(&:to_i).uniq + else + render status: :not_found + end + current_team.repositories.where(id: repository_ids) end def repository_response(message) diff --git a/app/services/repositories/archive_repository_base_service.rb b/app/services/repositories/archive_repository_base_service.rb index 3695b3481..9d81a700f 100644 --- a/app/services/repositories/archive_repository_base_service.rb +++ b/app/services/repositories/archive_repository_base_service.rb @@ -9,7 +9,7 @@ module Repositories def initialize(user:, team:, repositories:) @user = user @team = team - @repositories = scoped_repositories(repositories) + @repositories = repositories @errors = {} end @@ -27,10 +27,6 @@ module Repositories private - def scoped_repositories(_ids) - raise NotImplementedError - end - def valid? unless @user @errors[:invalid_arguments] = diff --git a/app/services/repositories/archive_repository_service.rb b/app/services/repositories/archive_repository_service.rb index 453668892..689c7ce1a 100644 --- a/app/services/repositories/archive_repository_service.rb +++ b/app/services/repositories/archive_repository_service.rb @@ -24,11 +24,5 @@ module Repositories self end - - private - - def scoped_repositories(ids) - Repository.where(id: ids, team_id: @team) - end end end diff --git a/app/services/repositories/restore_repository_service.rb b/app/services/repositories/restore_repository_service.rb index 25b16cc95..94b1606d0 100644 --- a/app/services/repositories/restore_repository_service.rb +++ b/app/services/repositories/restore_repository_service.rb @@ -24,11 +24,5 @@ module Repositories self end - - private - - def scoped_repositories(ids) - Repository.where(id: ids, team_id: @team) - end end end diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 439ded84e..eefc54b1f 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -92,14 +92,27 @@ remote: true %> <% end %> - <% if can_manage_repository?(@repository) %> -
-