diff --git a/app/assets/javascripts/my_modules/repositories.js b/app/assets/javascripts/my_modules/repositories.js
index 5d1ace471..7306cf47f 100644
--- a/app/assets/javascripts/my_modules/repositories.js
+++ b/app/assets/javascripts/my_modules/repositories.js
@@ -167,6 +167,13 @@ var MyModuleRepositories = (function() {
renderFullViewTable(fullViewModal.find('.table'));
});
e.stopPropagation();
+
+ function initRepositoriesDropdown() {
+ $('.repositories-assign-container').on('show.bs.dropdown', function() {
+ var dropdownContainer = $(this);
+ $.get(dropdownContainer.data('repositories-url'), function(result) {
+ dropdownContainer.find('.repositories-dropdown-menu').html(result.html);
+ });
});
}
@@ -174,6 +181,7 @@ var MyModuleRepositories = (function() {
init: () => {
initSimpleTable();
initRepositoryFullView();
+ initRepositoriesDropdown();
}
};
}());
diff --git a/app/assets/stylesheets/my_modules/protocols/index.scss b/app/assets/stylesheets/my_modules/protocols/index.scss
index 3d541443e..f8ceb5f06 100644
--- a/app/assets/stylesheets/my_modules/protocols/index.scss
+++ b/app/assets/stylesheets/my_modules/protocols/index.scss
@@ -37,6 +37,57 @@
margin-top: 11px;
}
}
+
+ .task-section-header {
+ display: flex;
+ flex-wrap: wrap;
+
+ .actions-block {
+ display: flex;
+ flex-grow: 1;
+ justify-content: flex-end;
+
+ .repositories-assign-container {
+ flex-grow: 1;
+ max-width: 200px;
+
+ .btn {
+ text-align: left;
+
+ .caret {
+ margin: 8px 0;
+ }
+ }
+
+ .repositories-dropdown-menu {
+ width: 100%;
+
+ .repository {
+ @include font-button;
+ display: flex;
+ padding: 8px 16px;
+
+ .assigned-items,
+ .shared-icon {
+ flex-shrink: 0;
+
+ .fas {
+ padding-right: 5px;
+ }
+ }
+
+ .assigned-items {
+ color: $color-alto;
+ }
+
+ .name {
+ flex-grow: 1;
+ }
+ }
+ }
+ }
+ }
+ }
}
.complete-button-container {
diff --git a/app/assets/stylesheets/my_modules/repositories.scss b/app/assets/stylesheets/my_modules/repositories.scss
index e0ac69f13..7e0e9cdd4 100644
--- a/app/assets/stylesheets/my_modules/repositories.scss
+++ b/app/assets/stylesheets/my_modules/repositories.scss
@@ -97,6 +97,8 @@
}
#assigned-items-container {
+ padding-top: 10px;
+
.assigned-repository {
border: $border-default;
border-radius: $border-radius-modal;
diff --git a/app/controllers/my_module_repositories_controller.rb b/app/controllers/my_module_repositories_controller.rb
index 324f4d640..c35f9a171 100644
--- a/app/controllers/my_module_repositories_controller.rb
+++ b/app/controllers/my_module_repositories_controller.rb
@@ -1,8 +1,11 @@
# frozen_string_literal: true
class MyModuleRepositoriesController < ApplicationController
- before_action :load_vars, only: %i(show full_view_table)
- before_action :check_view_permissions, only: %i(show full_view_table)
+
+ before_action :load_my_module, only: %i(show full_view_table dropdown_list)
+ before_action :load_repository, only: %i(show full_view_table)
+ before_action :check_my_module_view_permissions, only: %i(show full_view_table dropdown_list)
+ before_action :check_repository_view_permissions, only: %i(show full_view_table)
def show
@draw = params[:draw].to_i
@@ -30,17 +33,30 @@ class MyModuleRepositoriesController < ApplicationController
render json: { html: render_to_string(partial: 'my_modules/repositories/full_view_table') }
end
+
+ def dropdown_list
+ @repositories = Repository.accessible_by_teams(current_team)
+
+ render json: { html: render_to_string(partial: 'my_modules/repositories/repositories_dropdown_list') }
+ end
+
private
- def load_vars
+ def load_my_module
@my_module = MyModule.find(params[:my_module_id])
- @repository = Repository.find(params[:id])
-
- render_404 unless @my_module && @repository
+ render_404 unless @my_module
end
- def check_view_permissions
- render_403 unless can_read_experiment?(@my_module.experiment) &&
- can_read_repository?(@repository)
+ def load_repository
+ @repository = Repository.find(params[:id])
+ ender_404 unless @repository
+ end
+
+ def check_my_module_view_permissions
+ render_403 unless can_read_experiment?(@my_module.experiment)
+ end
+
+ def check_repository_view_permissions
+ render_403 unless can_read_repository?(@repository)
end
end
diff --git a/app/views/my_modules/protocols.html.erb b/app/views/my_modules/protocols.html.erb
index 385618052..943cd49ae 100644
--- a/app/views/my_modules/protocols.html.erb
+++ b/app/views/my_modules/protocols.html.erb
@@ -41,7 +41,20 @@
<%= t('my_modules.assigned_items.title') %>
-
+
+