diff options
Diffstat (limited to 'app/helpers/namespaces_helper.rb')
-rw-r--r-- | app/helpers/namespaces_helper.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app/helpers/namespaces_helper.rb b/app/helpers/namespaces_helper.rb index 8cf5cd49322..a4521541bf9 100644 --- a/app/helpers/namespaces_helper.rb +++ b/app/helpers/namespaces_helper.rb @@ -56,6 +56,33 @@ module NamespacesHelper namespaces_options(selected, **options) end + def cascading_namespace_settings_enabled? + NamespaceSetting.cascading_settings_feature_enabled? + end + + def cascading_namespace_settings_popover_data(attribute, group, settings_path_helper) + locked_by_ancestor = group.namespace_settings.public_send("#{attribute}_locked_by_ancestor?") # rubocop:disable GitlabSecurity/PublicSend + + popover_data = { + locked_by_application_setting: group.namespace_settings.public_send("#{attribute}_locked_by_application_setting?"), # rubocop:disable GitlabSecurity/PublicSend + locked_by_ancestor: locked_by_ancestor + } + + if locked_by_ancestor + ancestor_namespace = group.namespace_settings.public_send("#{attribute}_locked_ancestor").namespace # rubocop:disable GitlabSecurity/PublicSend + + popover_data[:ancestor_namespace] = { + full_name: ancestor_namespace.full_name, + path: settings_path_helper.call(ancestor_namespace) + } + end + + { + popover_data: popover_data.to_json, + testid: 'cascading-settings-lock-icon' + } + end + private # Many importers create a temporary Group, so use the real |