diff --git a/app/assets/stylesheets/repositories.scss b/app/assets/stylesheets/repositories.scss index 1f0998246..5c2a1a249 100644 --- a/app/assets/stylesheets/repositories.scss +++ b/app/assets/stylesheets/repositories.scss @@ -16,10 +16,15 @@ max-height: 400px; overflow-x: hidden; text-transform: initial; + width: 300px; li:not(:first-child) { border-top: 1px solid $color-gainsboro; } + + .fas-custom{ + float: right; + } } .repository-share-status { diff --git a/app/helpers/inventories_helper.rb b/app/helpers/inventories_helper.rb new file mode 100644 index 000000000..0dc540d40 --- /dev/null +++ b/app/helpers/inventories_helper.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module InventoriesHelper + def inventory_shared_status_icon(inventory, team) + if inventory.shared_with?(team) + if can_manage_repository_rows?(inventory) + draw_custom_icon('shared-edit') + else + draw_custom_icon('shared-read') + end + else + # The icon should be hiden if repo is not shared (we're updating it dinamically) + css_classes = ["repository-share-status"] + css_classes.push("hidden") unless inventory.i_shared?(current_team) + + content_tag :span, class: css_classes.join(" ") do + draw_custom_icon('i-shared') + end + end + end +end diff --git a/app/models/repository.rb b/app/models/repository.rb index aebd98efb..bd6f17c4d 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -38,6 +38,12 @@ class Repository < ApplicationRecord .distinct } + scope :used_on_task_but_unshared, lambda { |task, team| + where(id: task.repository_rows + .select(:repository_id)) + .where.not(id: accessible_by_teams(team.id).select(:id)).distinct + } + def self.search( user, query = nil, @@ -77,7 +83,11 @@ class Repository < ApplicationRecord end def i_shared?(team) - (shared? || team_repositories.any?) && self.team == team + shared_with_anybody? && self.team == team + end + + def shared_with_anybody? + (shared? || team_repositories.any?) end def shared_with?(team) diff --git a/app/views/my_modules/_repositories_dropdown.html.erb b/app/views/my_modules/_repositories_dropdown.html.erb index b92e74f55..e0d2a08f5 100644 --- a/app/views/my_modules/_repositories_dropdown.html.erb +++ b/app/views/my_modules/_repositories_dropdown.html.erb @@ -13,6 +13,26 @@ <% else %> <%= truncate(repository.name) %> + <% end %> + <%= inventory_shared_status_icon(repository, current_team) %> + + +<% end %> + + +<% Repository.used_on_task_but_unshared(@my_module, current_team).each do |repository| %> +