Class: Decidim::Debates::DebatePresenter
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Decidim::Debates::DebatePresenter
- Includes:
- ActionView::Helpers::DateHelper, ResourceHelper, SanitizeHelper, TranslatableAttributes, TranslationsHelper
- Defined in:
- app/presenters/decidim/debates/debate_presenter.rb
Overview
Decorator for debates
Instance Method Summary collapse
- #author ⇒ Object
- #debate ⇒ Object
- #description(strip_tags: false, links: false, all_locales: false) ⇒ Object
- #groups_count ⇒ Object
- #handle_locales(content, all_locales, &block) ⇒ Object
- #last_comment_at ⇒ Object
- #last_comment_by ⇒ Object
- #participants_count ⇒ Object
- #title(links: false, all_locales: false) ⇒ Object
Instance Method Details
#author ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 19 def @author ||= if official? Decidim::Debates::OfficialAuthorPresenter.new elsif user_group Decidim::UserGroupPresenter.new(user_group) else Decidim::UserPresenter.new(super) end end |
#debate ⇒ Object
15 16 17 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 15 def debate __getobj__ end |
#description(strip_tags: false, links: false, all_locales: false) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 38 def description(strip_tags: false, links: false, all_locales: false) return unless debate handle_locales(debate.description, all_locales) do |content| content = (content) if renderer = Decidim::ContentRenderers::HashtagRenderer.new(content) content = renderer.render(links: links).html_safe content = Decidim::ContentRenderers::LinkRenderer.new(content).render if links content end end |
#groups_count ⇒ Object
80 81 82 83 84 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 80 def groups_count .count do || .is_a?(Decidim::UserGroup) end end |
#handle_locales(content, all_locales, &block) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 50 def handle_locales(content, all_locales, &block) if all_locales content.each_with_object({}) do |(key, value), parsed_content| parsed_content[key] = if key == "machine_translations" handle_locales(value, all_locales, &block) else block.call(value) end end else yield(translated_attribute(content)) end end |
#last_comment_at ⇒ Object
64 65 66 67 68 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 64 def last_comment_at return unless debate.last_comment_at time_ago_in_words(debate.last_comment_at) end |
#last_comment_by ⇒ Object
70 71 72 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 70 def last_comment_by debate.last_comment_by&.presenter end |
#participants_count ⇒ Object
74 75 76 77 78 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 74 def participants_count .count do || .is_a?(Decidim::User) end end |
#title(links: false, all_locales: false) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'app/presenters/decidim/debates/debate_presenter.rb', line 29 def title(links: false, all_locales: false) return unless debate handle_locales(debate.title, all_locales) do |content| renderer = Decidim::ContentRenderers::HashtagRenderer.new(decidim_html_escape(content)) renderer.render(links: links).html_safe end end |