Module: Krant

Defined in:
lib/krant.rb,
lib/krant/news.rb,
lib/krant/tasks.rb,
lib/krant/engine.rb,
lib/krant/version.rb,
lib/krant/views/news_list.rb,
app/models/krant/news_item.rb,
app/models/krant/last_seen_state.rb,
app/models/krant/broadcast_message.rb,
app/models/krant/translated_broadcast_message.rb,
app/models/krant/broadcast_message_translation.rb,
lib/krant/views/header_with_broadcast_messages.rb

Overview

Global settings

Defined Under Namespace

Modules: Tasks, Views Classes: BroadcastMessage, BroadcastMessageTranslation, Engine, LastSeenState, News, NewsItem, TranslatedBroadcastMessage

Constant Summary collapse

VERSION =
'1.0.0'.freeze

Class Method Summary collapse

Class Method Details

.active_admin_load_pathObject

Unshift to Active Admin load path.



15
16
17
# File 'lib/krant.rb', line 15

def self.active_admin_load_path
  Dir[Krant::Engine.root.join('admin')].first
end

.active_admin_news_page(page, news:) ⇒ Object

Apply default settings to news page.

Parameters:

  • page (ActiveAdmin::PageDSL)

    The admin page.

  • news (Proc)

    Proc returing the news collection.



49
50
51
52
53
54
55
56
# File 'lib/krant.rb', line 49

def self.active_admin_news_page(page, news:)
  page.menu(false)

  page.page_action(:seen, method: [:post]) do
    news.call.seen_by!(current_active_admin_user)
    render plain: ''
  end
end

.add_active_admin_news_menu_item_to(menu, news:, **options) ⇒ Object

Adds a menu item to open a news page. Displays an indicator if there are unseen news items. Supports all parameters supported by ‘ActiveAdmin::Menu#add`. Required options:

Parameters:

  • menu (ActiveAdmin::Menu)

    The menu object yielded by ‘ActiveAdmin::Namespace#build_menu`.

  • news (Krant::News)

    The news collection to take news item from.

  • url (Proc|String)

    Url of the news page.



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/krant.rb', line 30

def self.add_active_admin_news_menu_item_to(menu, news:, **options)
  menu.add(label: -> { I18n.t('krant.admin.news_menu_item.unseen') },
           id: 'krant_news_menu_item_unseen',
           if: -> { news.unseen_items?(for_user: current_active_admin_user) },
           html_options: { class: 'krant-news-menu-item krant-news-menu-item-unseen' },
           **options)

  menu.add(label: -> { I18n.t('krant.admin.news_menu_item.no_unseen') },
           id: 'krant_news_menu_item_no_unseen',
           if: -> { !news.unseen_items?(for_user: current_active_admin_user) },
           html_options: { class: 'krant-news-menu-item krant-news-menu-item-no-unseen' },
           **options)
end