Module: Admin::BroadcastMessagesHelper

Includes:
Gitlab::Utils::StrongMemoize
Included in:
BroadcastMessagesController
Defined in:
app/helpers/admin/broadcast_messages_helper.rb

Instance Method Summary collapse

Instance Method Details

#admin_broadcast_messages_data(broadcast_messages) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 66

def admin_broadcast_messages_data(broadcast_messages)
  broadcast_messages.map do |message|
    {
      id: message.id,
      status: broadcast_message_status(message),
      message: message.message,
      theme: message.theme,
      broadcast_type: message.broadcast_type,
      dismissable: message.dismissable,
      starts_at: message.starts_at.iso8601,
      ends_at: message.ends_at.iso8601,
      target_roles: target_access_levels_display(message.target_access_levels),
      target_path: message.target_path,
      type: message.broadcast_type.capitalize,
      edit_path: edit_admin_broadcast_message_path(message),
      delete_path: "#{admin_broadcast_message_path(message)}.js"
    }
  end.to_json
end

#broadcast_message(message, opts = {}) ⇒ Object



26
27
28
29
30
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 26

def broadcast_message(message, opts = {})
  return unless message.present?

  render "shared/broadcast_message", { message: message, **opts }
end

#broadcast_message_data(broadcast_message) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 86

def broadcast_message_data(broadcast_message)
  {
    id: broadcast_message.id,
    message: broadcast_message.message,
    broadcast_type: broadcast_message.broadcast_type,
    theme: broadcast_message.theme,
    dismissable: broadcast_message.dismissable.to_s,
    target_access_levels: broadcast_message.target_access_levels,
    messages_path: admin_broadcast_messages_path,
    preview_path: preview_admin_broadcast_messages_path,
    target_path: broadcast_message.target_path,
    starts_at: broadcast_message.starts_at.iso8601,
    ends_at: broadcast_message.ends_at.iso8601,
    target_access_level_options: target_access_level_options.to_json,
    show_in_cli: broadcast_message.show_in_cli.to_s
  }
end

#broadcast_message_status(broadcast_message) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 32

def broadcast_message_status(broadcast_message)
  if broadcast_message.active?
    'Active'
  elsif broadcast_message.ended?
    'Expired'
  else
    'Pending'
  end
end

#current_broadcast_banner_messagesObject



7
8
9
10
11
12
13
14
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 7

def current_broadcast_banner_messages
  System::BroadcastMessage.current_banner_messages(
    current_path: request.path,
    user_access_level: current_user_access_level_for_project_or_group
  ).select do |message|
    cookies["hide_broadcast_message_#{message.id}"].blank?
  end
end

#current_broadcast_notification_messageObject



16
17
18
19
20
21
22
23
24
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 16

def current_broadcast_notification_message
  not_hidden_messages = System::BroadcastMessage.current_notification_messages(
    current_path: request.path,
    user_access_level: current_user_access_level_for_project_or_group
  ).select do |message|
    cookies["hide_broadcast_message_#{message.id}"].blank?
  end
  not_hidden_messages.last
end

#render_broadcast_message(broadcast_message) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 42

def render_broadcast_message(broadcast_message)
  if broadcast_message.notification?
    Banzai.render_field_and_post_process(broadcast_message, :message, {
      current_user: current_user,
      skip_project_check: true,
      broadcast_message_placeholders: true
    }).html_safe
  else
    Banzai.render_field(broadcast_message, :message).html_safe
  end
end

#target_access_level_optionsObject



54
55
56
57
58
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 54

def target_access_level_options
  System::BroadcastMessage::ALLOWED_TARGET_ACCESS_LEVELS.map do |access_level|
    [Gitlab::Access.human_access(access_level), access_level]
  end
end

#target_access_levels_display(access_levels) ⇒ Object



60
61
62
63
64
# File 'app/helpers/admin/broadcast_messages_helper.rb', line 60

def target_access_levels_display(access_levels)
  access_levels.map do |access_level|
    Gitlab::Access.human_access(access_level)
  end.join(', ')
end