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| %> +
  • + + <% if enable_counters %> + <% cache [repository, @my_module] do %> + <%= truncate(repository.name) %> + <%= "(#{@my_module.repository_rows_count(repository)})" %> + <% end %> + <% else %> + <%= truncate(repository.name) %> + <% end %>
  • diff --git a/app/views/repositories/_sidebar.html.erb b/app/views/repositories/_sidebar.html.erb index 8dd7bf380..ed41a4327 100644 --- a/app/views/repositories/_sidebar.html.erb +++ b/app/views/repositories/_sidebar.html.erb @@ -23,18 +23,7 @@ repository_path(repository), data: { 'no-turbolink' => 'true' } %> <% end %> - - <% if repository.shared_with?(current_team) %> - <% if can_manage_repository_rows?(repository) %> - <%= draw_custom_icon('shared-edit') %> - <% else %> - <%= draw_custom_icon('shared-read') %> - <% end %> - <% else %> - " > - <%= draw_custom_icon('i-shared') %> - - <% end %> + <%= inventory_shared_status_icon(repository, current_team) %> <% end %> diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index ccd99bcb3..5c8976930 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -12,17 +12,7 @@
    - <% if @repository.shared_with?(current_team) %> - <% if can_manage_repository_rows?(@repository) %> - <%= draw_custom_icon('shared-edit') %> - <% else %> - <%= draw_custom_icon('shared-read') %> - <% end %> - <% else %> - " > - <%= draw_custom_icon('i-shared') %> - - <% end %> + <%= inventory_shared_status_icon(@repository, current_team) %>
    <% if @inline_editable_title_config.present? %> @@ -102,7 +92,7 @@ <% end %>
    - +