Module: NamespacesHelper

Defined in:
app/helpers/namespaces_helper.rb

Instance Method Summary collapse

Instance Method Details

#cascading_namespace_setting_locked?(attribute, group, **args) ⇒ Boolean

Returns:

  • (Boolean)

75
76
77
78
79
80
81
82
# File 'app/helpers/namespaces_helper.rb', line 75

def cascading_namespace_setting_locked?(attribute, group, **args)
  return false if group.nil?

  method_name = "#{attribute}_locked?"
  return false unless group.namespace_settings.respond_to?(method_name)

  group.namespace_settings.public_send(method_name, **args) # rubocop:disable GitlabSecurity/PublicSend
end

#cascading_namespace_settings_popover_data(attribute, group, settings_path_helper) ⇒ Object


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/helpers/namespaces_helper.rb', line 52

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

#namespace_icon(namespace, size = 40) ⇒ Object


44
45
46
47
48
49
50
# File 'app/helpers/namespaces_helper.rb', line 44

def namespace_icon(namespace, size = 40)
  if namespace.is_a?(Group)
    group_icon_url(namespace)
  else
    avatar_icon_for_user(namespace.owner, size)
  end
end

#namespace_id_from(params) ⇒ Object


4
5
6
# File 'app/helpers/namespaces_helper.rb', line 4

def namespace_id_from(params)
  params.dig(:project, :namespace_id) || params[:namespace_id]
end

#namespaces_as_json(selected = :current_user) ⇒ Object


84
85
86
87
88
89
# File 'app/helpers/namespaces_helper.rb', line 84

def namespaces_as_json(selected = :current_user)
  {
    group: formatted_namespaces(current_user.manageable_groups_with_routes),
    user: formatted_namespaces([current_user.namespace])
  }.to_json
end

#namespaces_options(selected = :current_user, display_path: false, groups: nil, extra_group: nil, groups_only: false) ⇒ Object


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/helpers/namespaces_helper.rb', line 8

def namespaces_options(selected = :current_user, display_path: false, groups: nil, extra_group: nil, groups_only: false)
  groups ||= current_user.manageable_groups_with_routes
  users = [current_user.namespace]
  selected_id = selected

  unless extra_group.nil? || extra_group.is_a?(Group)
    extra_group = Group.find(extra_group) if Namespace.find(extra_group).kind == 'group'
  end

  if extra_group && extra_group.is_a?(Group)
    extra_group = dedup_extra_group(extra_group)

    if Ability.allowed?(current_user, :read_group, extra_group)
      # Assign the value to an invalid primary ID so that the select box works
      extra_group.id = -1 unless extra_group.persisted?
      selected_id = extra_group.id if selected == :extra_group
      groups |= [extra_group]
    else
      selected_id = current_user.namespace.id
    end
  end

  options = []
  options << options_for_group(groups, display_path: display_path, type: 'group')

  unless groups_only
    options << options_for_group(users, display_path: display_path, type: 'user')

    if selected == :current_user && current_user.namespace
      selected_id = current_user.namespace.id
    end
  end

  grouped_options_for_select(options, selected_id)
end

#pipeline_usage_quota_app_data(namespace) ⇒ Object


91
92
93
94
95
96
97
98
99
# File 'app/helpers/namespaces_helper.rb', line 91

def pipeline_usage_quota_app_data(namespace)
  {
    namespace_actual_plan_name: namespace.actual_plan_name,
    namespace_path: namespace.full_path,
    namespace_id: namespace.id,
    user_namespace: namespace.user_namespace?.to_s,
    page_size: page_size
  }
end