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, strip_tags: false, all_locales: false) ⇒ Object
- #display_mention ⇒ Object
- #editor_body(all_locales: false) ⇒ Object
- #id_and_title(html_escape: false) ⇒ Object
- #proposal ⇒ Object
- #proposal_path ⇒ Object
- #resource_manifest ⇒ Object
-
#title(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
#attachment?, #default_locale?
Instance Method Details
#author ⇒ Object
13 14 15 16 17 18 19 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 13 def @author ||= if official? Decidim::Proposals::OfficialAuthorPresenter.new else .includes(:author).first..presenter end end |
#body(links: false, strip_tags: false, all_locales: false) ⇒ Object
46 47 48 49 50 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 46 def body(links: false, strip_tags: false, all_locales: false) return unless proposal content_handle_locale(proposal.body, all_locales, links, ) end |
#display_mention ⇒ Object
29 30 31 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 29 def display_mention link_to title, proposal_path end |
#editor_body(all_locales: false) ⇒ Object
52 53 54 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 52 def editor_body(all_locales: false) editor_locales(proposal.body, all_locales) end |
#id_and_title(html_escape: false) ⇒ Object
42 43 44 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 42 def id_and_title(html_escape: false) "##{proposal.id} - #{title(html_escape:)}" end |
#proposal ⇒ Object
21 22 23 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 21 def proposal __getobj__ end |
#proposal_path ⇒ Object
25 26 27 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 25 def proposal_path Decidim::ResourceLocatorPresenter.new(proposal).path end |
#resource_manifest ⇒ Object
82 83 84 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 82 def resource_manifest proposal.class.resource_manifest end |
#title(html_escape: false, all_locales: false) ⇒ Object
Render the proposal title
Returns a String.
36 37 38 39 40 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 36 def title(html_escape: false, all_locales: false) return unless proposal super(proposal.title, html_escape, all_locales) end |
#versions ⇒ Object
Returns the proposal versions, hiding not published answers
Returns an Array.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'decidim-proposals/app/presenters/decidim/proposals/proposal_presenter.rb', line 59 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 |