Class: Decidim::Proposals::ProposalPresenter
- Inherits:
-
ResourcePresenter
- Object
- ResourcePresenter
- Decidim::Proposals::ProposalPresenter
show all
- Includes:
- ActionView::Helpers::UrlHelper, SanitizeHelper
- Defined in:
- app/presenters/decidim/proposals/proposal_presenter.rb
Overview
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.
Instance Method Details
#author ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'app/presenters/decidim/proposals/proposal_presenter.rb', line 13
def author
@author ||= if official?
Decidim::Proposals::OfficialAuthorPresenter.new
else
coauthorship = coauthorships.includes(:author, :user_group).first
coauthorship.user_group&.presenter || coauthorship.author.presenter
end
end
|
#body(links: false, extras: true, strip_tags: false, all_locales: false) ⇒ Object
50
51
52
53
54
|
# File '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, , links, strip_tags)
end
|
#display_mention ⇒ Object
30
31
32
|
# File '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 '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 '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 'app/presenters/decidim/proposals/proposal_presenter.rb', line 22
def proposal
__getobj__
end
|
#proposal_path ⇒ Object
26
27
28
|
# File '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 '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 '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 '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
|