From 129823664bb2287545b0402823366261151273ca Mon Sep 17 00:00:00 2001 From: Mike Greiling Date: Wed, 30 Aug 2017 16:01:57 -0500 Subject: [PATCH] enhance disabled group visibility options with links and instructions --- app/helpers/visibility_level_helper.rb | 9 +++++++-- spec/helpers/visibility_level_helper_spec.rb | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/helpers/visibility_level_helper.rb b/app/helpers/visibility_level_helper.rb index 569872e528b..e21a7b04bb4 100644 --- a/app/helpers/visibility_level_helper.rb +++ b/app/helpers/visibility_level_helper.rb @@ -105,6 +105,7 @@ module VisibilityLevelHelper def disallowed_group_visibility_level_description(level, group) level_name = Gitlab::VisibilityLevel.level_name(level).downcase reasons = [] + instructions = '' unless group.visibility_level_allowed_by_projects?(level) reasons << "it contains projects with higher visibility" @@ -115,11 +116,15 @@ module VisibilityLevelHelper end 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 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 def visibility_icon_description(form_model) diff --git a/spec/helpers/visibility_level_helper_spec.rb b/spec/helpers/visibility_level_helper_spec.rb index 0375fa600ed..5077c89d7b4 100644 --- a/spec/helpers/visibility_level_helper_spec.rb +++ b/spec/helpers/visibility_level_helper_spec.rb @@ -132,8 +132,8 @@ describe VisibilityLevelHelper do .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_description(Gitlab::VisibilityLevel::PUBLIC, subgroup)) - .to include "the visibility of its parent group is internal" + expect(strip_tags disallowed_visibility_level_description(Gitlab::VisibilityLevel::PUBLIC, subgroup)) + .to include "the visibility of #{group.name} is internal" end end end