Class: Decidim::Proposals::ProposalPresenter
- Inherits:
-
ResourcePresenter
- Object
- SimpleDelegator
- ResourcePresenter
- Decidim::Proposals::ProposalPresenter
- Includes:
- ActionView::Helpers::UrlHelper, SanitizeHelper
- Defined in:
- decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb
Overview
Decorator for proposals
Direct Known Subclasses
Instance Method Summary collapse
- #author ⇒ Object
- #body(links: false, extras: true, strip_tags: false, all_locales: false) ⇒ Object
- #display_mention ⇒ Object
- #editor_body(all_locales: false, extras: true) ⇒ Object
- #id_and_title(links: false, extras: true, html_escape: false) ⇒ Object
- #proposal ⇒ Object
- #proposal_path ⇒ Object
- #resource_manifest ⇒ Object
-
#title(links: false, extras: true, html_escape: false, all_locales: false) ⇒ Object
Render the proposal title.
-
#versions ⇒ Object
Returns the proposal versions, hiding not published answers.
Methods included from SanitizeHelper
#decidim_escape_translated, #decidim_html_escape, #decidim_rich_text, #decidim_sanitize, #decidim_sanitize_admin, #decidim_sanitize_editor, #decidim_sanitize_editor_admin, #decidim_sanitize_newsletter, #decidim_sanitize_translated, #decidim_url_escape, included
Methods inherited from ResourcePresenter
#editor_locales, #handle_locales
Methods included from TranslatableAttributes
Instance Method Details
#author ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 13 def @author ||= if official? Decidim::Proposals::OfficialAuthorPresenter.new else = .includes(:author, :user_group).first .user_group&.presenter || ..presenter end end |
#body(links: false, extras: true, strip_tags: false, all_locales: false) ⇒ Object
50 51 52 53 54 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 50 def body(links: false, extras: true, strip_tags: false, all_locales: false) return unless proposal content_handle_locale(proposal.body, all_locales, extras, links, ) end |
#display_mention ⇒ Object
30 31 32 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 30 def display_mention link_to title, proposal_path end |
#editor_body(all_locales: false, extras: true) ⇒ Object
56 57 58 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 56 def editor_body(all_locales: false, extras: true) editor_locales(proposal.body, all_locales, extras:) end |
#id_and_title(links: false, extras: true, html_escape: false) ⇒ Object
46 47 48 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 46 def id_and_title(links: false, extras: true, html_escape: false) "##{proposal.id} - #{title(links:, extras:, html_escape:)}" end |
#proposal ⇒ Object
22 23 24 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 22 def proposal __getobj__ end |
#proposal_path ⇒ Object
26 27 28 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 26 def proposal_path Decidim::ResourceLocatorPresenter.new(proposal).path end |
#resource_manifest ⇒ Object
86 87 88 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 86 def resource_manifest proposal.class.resource_manifest end |
#title(links: false, extras: true, html_escape: false, all_locales: false) ⇒ Object
Render the proposal title
links - should render hashtags as links? extras - should include extra hashtags?
Returns a String.
40 41 42 43 44 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 40 def title(links: false, extras: true, html_escape: false, all_locales: false) return unless proposal super(proposal.title, links, html_escape, all_locales, extras:) end |
#versions ⇒ Object
Returns the proposal versions, hiding not published answers
Returns an Array.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 63 def versions version_state_published = false pending_state_change = nil proposal.versions.map do |version| state_published_change = version.changeset["state_published_at"] version_state_published = state_published_change.last.present? if state_published_change if version_state_published version.changeset["decidim_proposals_proposal_state_id"] = parsed_state_change(*pending_state_change) if pending_state_change pending_state_change = nil elsif version.changeset["decidim_proposals_proposal_state_id"] pending_state_change = version.changeset.delete("decidim_proposals_proposal_state_id") end next if version.event == "update" && Decidim::Proposals::DiffRenderer.new(version).diff.empty? version end.compact end |