Move investment votes partial to a component
This way changing it will be easier.
This commit is contained in:
56
app/components/budgets/investments/votes_component.html.erb
Normal file
56
app/components/budgets/investments/votes_component.html.erb
Normal file
@@ -0,0 +1,56 @@
|
||||
<% reason = investment.reason_for_not_being_selectable_by(current_user) %>
|
||||
<% voting_allowed = true unless reason.presence == :not_voting_allowed %>
|
||||
<% user_voted_for = voted_for?(investment_votes, investment) %>
|
||||
|
||||
<div class="supports js-participation">
|
||||
|
||||
<span class="total-supports <%= "no-button" unless voting_allowed || user_voted_for %>">
|
||||
<%= t("budgets.investments.investment.supports", count: investment.total_votes) %>
|
||||
</span>
|
||||
|
||||
<div class="in-favor">
|
||||
<% if user_voted_for %>
|
||||
<div class="supported callout success">
|
||||
<%= t("budgets.investments.investment.already_supported") %>
|
||||
</div>
|
||||
<% elsif investment.should_show_votes? %>
|
||||
<%= link_to vote_url,
|
||||
class: "button button-support small expanded",
|
||||
title: t("budgets.investments.investment.support_title"),
|
||||
method: "post",
|
||||
remote: (display_support_alert? ? false : true),
|
||||
data: (display_support_alert? ? {
|
||||
confirm: t("budgets.investments.investment.confirm_group", count: investment.group.max_votable_headings) } : nil),
|
||||
"aria-hidden" => css_for_aria_hidden(reason) do %>
|
||||
<%= t("budgets.investments.investment.give_support") %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% if reason.present? && !user_voted_for %>
|
||||
<div class="js-participation-not-allowed participation-not-allowed" style="display:none" aria-hidden="false">
|
||||
<p>
|
||||
<small>
|
||||
<%= sanitize(t("votes.budget_investments.#{reason}",
|
||||
count: investment.group.max_votable_headings,
|
||||
verify_account: link_to_verify_account,
|
||||
signin: link_to_signin,
|
||||
signup: link_to_signup,
|
||||
supported_headings: (current_user && current_user.headings_voted_within_group(investment.group).map(&:name).sort.to_sentence)
|
||||
)) %>
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if user_voted_for && setting["twitter_handle"] %>
|
||||
<div class="share-supported">
|
||||
<%= render "shared/social_share",
|
||||
title: investment.title,
|
||||
image_url: image_absolute_url(investment.image, :thumb),
|
||||
url: budget_investment_url(investment.budget, investment),
|
||||
description: investment.title,
|
||||
mobile: investment.title %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
23
app/components/budgets/investments/votes_component.rb
Normal file
23
app/components/budgets/investments/votes_component.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
class Budgets::Investments::VotesComponent < ApplicationComponent
|
||||
attr_reader :investment, :investment_votes, :vote_url
|
||||
delegate :current_user, :voted_for?, :image_absolute_url,
|
||||
:link_to_verify_account, :link_to_signin, :link_to_signup, to: :helpers
|
||||
|
||||
def initialize(investment, investment_votes:, vote_url:)
|
||||
@investment = investment
|
||||
@investment_votes = investment_votes
|
||||
@vote_url = vote_url
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def display_support_alert?
|
||||
current_user &&
|
||||
!current_user.voted_in_group?(investment.group) &&
|
||||
investment.group.headings.count > 1
|
||||
end
|
||||
|
||||
def css_for_aria_hidden(reason)
|
||||
reason.present? ? "true" : ""
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
module AccessibilityHelper
|
||||
def css_for_aria_hidden(reason)
|
||||
reason.present? ? "true" : ""
|
||||
end
|
||||
end
|
||||
@@ -54,12 +54,6 @@ module BudgetsHelper
|
||||
end
|
||||
end
|
||||
|
||||
def display_support_alert?(investment)
|
||||
current_user &&
|
||||
!current_user.voted_in_group?(investment.group) &&
|
||||
investment.group.headings.count > 1
|
||||
end
|
||||
|
||||
def budget_subnav_items_for(budget)
|
||||
{
|
||||
results: t("budgets.results.link"),
|
||||
|
||||
@@ -1,56 +1,5 @@
|
||||
<% reason = investment.reason_for_not_being_selectable_by(current_user) %>
|
||||
<% voting_allowed = true unless reason.presence == :not_voting_allowed %>
|
||||
<% user_voted_for = voted_for?(investment_votes, investment) %>
|
||||
|
||||
<div class="supports js-participation">
|
||||
|
||||
<span class="total-supports <%= "no-button" unless voting_allowed || user_voted_for %>">
|
||||
<%= t("budgets.investments.investment.supports", count: investment.total_votes) %>
|
||||
</span>
|
||||
|
||||
<div class="in-favor">
|
||||
<% if user_voted_for %>
|
||||
<div class="supported callout success">
|
||||
<%= t("budgets.investments.investment.already_supported") %>
|
||||
</div>
|
||||
<% elsif investment.should_show_votes? %>
|
||||
<%= link_to vote_url,
|
||||
class: "button button-support small expanded",
|
||||
title: t("budgets.investments.investment.support_title"),
|
||||
method: "post",
|
||||
remote: (display_support_alert?(investment) ? false : true),
|
||||
data: (display_support_alert?(investment) ? {
|
||||
confirm: t("budgets.investments.investment.confirm_group", count: investment.group.max_votable_headings) } : nil),
|
||||
"aria-hidden" => css_for_aria_hidden(reason) do %>
|
||||
<%= t("budgets.investments.investment.give_support") %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% if reason.present? && !user_voted_for %>
|
||||
<div class="js-participation-not-allowed participation-not-allowed" style="display:none" aria-hidden="false">
|
||||
<p>
|
||||
<small>
|
||||
<%= sanitize(t("votes.budget_investments.#{reason}",
|
||||
count: investment.group.max_votable_headings,
|
||||
verify_account: link_to_verify_account,
|
||||
signin: link_to_signin,
|
||||
signup: link_to_signup,
|
||||
supported_headings: (current_user && current_user.headings_voted_within_group(investment.group).map(&:name).sort.to_sentence)
|
||||
)) %>
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if user_voted_for && setting["twitter_handle"] %>
|
||||
<div class="share-supported">
|
||||
<%= render "shared/social_share",
|
||||
title: investment.title,
|
||||
image_url: image_absolute_url(investment.image, :thumb),
|
||||
url: budget_investment_url(investment.budget, investment),
|
||||
description: investment.title,
|
||||
mobile: investment.title %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<%= render Budgets::Investments::VotesComponent.new(
|
||||
investment,
|
||||
investment_votes: investment_votes,
|
||||
vote_url: vote_url
|
||||
) %>
|
||||
|
||||
Reference in New Issue
Block a user