Commit 12982366 authored by Mike Greiling's avatar Mike Greiling

enhance disabled group visibility options with links and instructions

parent 8a72203a
...@@ -105,6 +105,7 @@ module VisibilityLevelHelper ...@@ -105,6 +105,7 @@ module VisibilityLevelHelper
def disallowed_group_visibility_level_description(level, group) def disallowed_group_visibility_level_description(level, group)
level_name = Gitlab::VisibilityLevel.level_name(level).downcase level_name = Gitlab::VisibilityLevel.level_name(level).downcase
reasons = [] reasons = []
instructions = ''
unless group.visibility_level_allowed_by_projects?(level) unless group.visibility_level_allowed_by_projects?(level)
reasons << "it contains projects with higher visibility" reasons << "it contains projects with higher visibility"
...@@ -115,11 +116,15 @@ module VisibilityLevelHelper ...@@ -115,11 +116,15 @@ module VisibilityLevelHelper
end end
unless group.visibility_level_allowed_by_parent?(level) unless group.visibility_level_allowed_by_parent?(level)
reasons << "the visibility of its parent group is #{group.parent.visibility}" parent_group = link_to group.parent.name, group_path(group.parent)
change_visiblity = link_to 'change the visibility', edit_group_path(group.parent)
reasons << "the visibility of #{parent_group} is #{group.parent.visibility}"
instructions << " To make this group #{level_name}, you must first #{change_visiblity} of the parent group."
end end
reasons = reasons.any? ? ' because ' + reasons.to_sentence : '' reasons = reasons.any? ? ' because ' + reasons.to_sentence : ''
"This group cannot be #{level_name}#{reasons}." "This group cannot be #{level_name}#{reasons}.#{instructions}".html_safe
end end
def visibility_icon_description(form_model) def visibility_icon_description(form_model)
......
...@@ -132,8 +132,8 @@ describe VisibilityLevelHelper do ...@@ -132,8 +132,8 @@ describe VisibilityLevelHelper do
.to include "it contains projects with higher visibility", "it contains sub-groups with higher visibility" .to include "it contains projects with higher visibility", "it contains sub-groups with higher visibility"
expect(disallowed_visibility_level?(subgroup, Gitlab::VisibilityLevel::PUBLIC)).to be_truthy expect(disallowed_visibility_level?(subgroup, Gitlab::VisibilityLevel::PUBLIC)).to be_truthy
expect(disallowed_visibility_level_description(Gitlab::VisibilityLevel::PUBLIC, subgroup)) expect(strip_tags disallowed_visibility_level_description(Gitlab::VisibilityLevel::PUBLIC, subgroup))
.to include "the visibility of its parent group is internal" .to include "the visibility of #{group.name} is internal"
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment