module NotificationsHelper def notification_count if current_user.present? current_user.active_unread_notifications.count else Notification.active_unauthenticated_notifications.count end end def notification if current_user.present? current_user.newest_active_unread_notification else Notification.newest_active_unauthenticated_notification end end def render_for_banner(title) # rubocop:disable Rails/HelperInstanceVariable @banner_renderer ||= NotificationRenderer.new({ invert_link_colour: true, bold_all_text: true }) @banner_markdown ||= Redcarpet::Markdown.new(@banner_renderer, no_intra_emphasis: true) @banner_markdown.render(title) # rubocop:enable Rails/HelperInstanceVariable end def render_for_summary(title) render_normal_markdown(title) end def render_for_page(title, page_content) content = page_content unless /\A\s*#[^#]/.match?(page_content) content = "# #{title}\n#{page_content}" end render_normal_markdown(content) end private def render_normal_markdown(content) # rubocop:disable Rails/HelperInstanceVariable @on_page_renderer ||= NotificationRenderer.new({ invert_link_colour: false, bold_all_text: false }) @on_page_markdown ||= Redcarpet::Markdown.new(@on_page_renderer, no_intra_emphasis: true) @on_page_markdown.render(content) # rubocop:enable Rails/HelperInstanceVariable end end class NotificationRenderer < Redcarpet::Render::HTML def initialize(options = {}) link_class = "govuk-link" link_class += " govuk-link--inverse" if options[:invert_link_colour] @bold = options[:bold_all_text] # rubocop:disable Rails/HelperInstanceVariable base_options = { escape_html: true, safe_links_only: true, link_attributes: { class: link_class } } super base_options end def header(text, header_level) header_size = case header_level when 1 "xl" when 2 "l" when 3 "m" else "s" end %(#{text}) end def paragraph(text) return %(

#{text}

) if @bold # rubocop:disable Rails/HelperInstanceVariable %(

#{text}

) end def list(contents, list_type) return %(
    #{contents}
) if list_type == :ordered %() end def hrule %(
) end def block_quote(quote) %(
#{quote}
) end end