Extract partial to render flag actions

The main obstacle to extract this partial was probably the paths for the
flag and unflag actions.

Now that we use Rails 5.1 `resolve` method to handle nested resources,
we can use `polymorphic_path`.

Also note the code is a bit ugly because comments render a divider. We
should probably use a CSS border instead.

Co-Authored-By: taitus <sebastia.roig@gmail.com>
This commit is contained in:
Javi Martín
2020-03-20 19:58:17 +01:00
parent bd7beed8a1
commit 31b65679c3
17 changed files with 39 additions and 119 deletions

View File

@@ -21,8 +21,8 @@
<%= link_to t("debates.show.comments", count: @debate.comments_count), "#comments" %> <%= link_to t("debates.show.comments", count: @debate.comments_count), "#comments" %>
<span class="bullet">&nbsp;&bull;&nbsp;</span> <span class="bullet">&nbsp;&bull;&nbsp;</span>
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "debates/flag_actions", debate: @debate %> <%= render "shared/flag_actions", flaggable: @debate %>
</span> </span>
</div> </div>
<%= auto_link_already_sanitized_html wysiwyg(@debate.description) %> <%= auto_link_already_sanitized_html wysiwyg(@debate.description) %>

View File

@@ -1,23 +0,0 @@
<span class="flag-content">
<% if show_flag_action? investment %>
<a data-toggle="flag-drop-investment-<%= investment.id %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span class="dropdown-pane" id="flag-drop-investment-<%= investment.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.flag"), flag_budget_investment_path(investment.budget, investment.id),
method: :put,
remote: true %>
</span>
<% end %>
<% if show_unflag_action? investment %>
<a data-toggle="unflag-drop-investment-<%= investment.id %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-investment-<%= investment.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), unflag_budget_investment_path(investment.budget, investment.id),
method: :put,
remote: true %>
</span>
<% end %>
</span>

View File

@@ -9,7 +9,7 @@
<span class="bullet">&nbsp;&bull;&nbsp;</span> <span class="bullet">&nbsp;&bull;&nbsp;</span>
<% if local_assigns[:preview].nil? %> <% if local_assigns[:preview].nil? %>
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "budgets/investments/flag_actions", investment: investment %> <%= render "shared/flag_actions", flaggable: investment %>
</span> </span>
<% end %> <% end %>
</div> </div>

View File

@@ -1 +1 @@
App.Flaggable.update("<%= dom_id(@investment) %>", "<%= j render("budgets/investments/flag_actions", investment: @investment) %>") App.Flaggable.update("<%= dom_id(@investment) %>", "<%= j render("shared/flag_actions", flaggable: @investment) %>")

View File

@@ -1,5 +1,5 @@
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "comments/flag_actions", comment: comment %> <%= render "shared/flag_actions", flaggable: comment, divider: true %>
</span> </span>
<span class="js-moderation-actions"> <span class="js-moderation-actions">

View File

@@ -1,26 +0,0 @@
<span class="flag-content">
<% if show_flag_action? comment %>
<span class="divider">&nbsp;|&nbsp;</span>
<a data-toggle="flag-drop-comment-<%= comment.id %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span id="flag-drop-comment-<%= comment.id %>"
class="dropdown-pane"
data-dropdown
data-auto-focus="true">
<%= link_to t("shared.flag"), flag_comment_path(comment), method: :put,
remote: true %>
</span>
<% end %>
<% if show_unflag_action? comment %>
<span class="divider">&nbsp;|&nbsp;</span>
<a data-toggle="unflag-drop-comment-<%= comment.id %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-comment-<%= comment.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), unflag_comment_path(comment), method: :put,
remote: true %>
</span>
<% end %>
</span>

View File

@@ -1 +1 @@
App.Flaggable.update("<%= dom_id(@comment) %>", "<%= j render("comments/flag_actions", comment: @comment) %>"); App.Flaggable.update("<%= dom_id(@comment) %>", "<%= j render("shared/flag_actions", flaggable: @comment, divider: true) %>");

View File

@@ -1,19 +0,0 @@
<span class="flag-content">
<% if show_flag_action? debate %>
<a data-toggle="flag-drop-debate-<%= debate.id %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span class="dropdown-pane" id="flag-drop-debate-<%= debate.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.flag"), flag_debate_path(debate), method: :put, remote: true %>
</span>
<% end %>
<% if show_unflag_action? debate %>
<a data-toggle="unflag-drop-debate-<%= debate.id %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-debate-<%= debate.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), unflag_debate_path(debate), method: :put, remote: true %>
</span>
<% end %>
</span>

View File

@@ -1 +1 @@
App.Flaggable.update("<%= dom_id(@debate) %>", "<%= j render("debates/flag_actions", debate: @debate) %>"); App.Flaggable.update("<%= dom_id(@debate) %>", "<%= j render("shared/flag_actions", flaggable: @debate) %>");

View File

@@ -26,7 +26,7 @@
<%= link_to t("debates.show.comments", count: @debate.comments_count), "#comments" %> <%= link_to t("debates.show.comments", count: @debate.comments_count), "#comments" %>
<span class="bullet">&nbsp;&bull;&nbsp;</span> <span class="bullet">&nbsp;&bull;&nbsp;</span>
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "debates/flag_actions", debate: @debate %> <%= render "shared/flag_actions", flaggable: @debate %>
</span> </span>
</div> </div>

View File

@@ -1,19 +0,0 @@
<span class="flag-content">
<% if show_flag_action? proposal %>
<a data-toggle="flag-drop-proposal-<%= proposal.id %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span class="dropdown-pane" id="flag-drop-proposal-<%= proposal.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.flag"), flag_legislation_process_proposal_path(proposal.process, proposal), method: :put, remote: true %>
</span>
<% end %>
<% if show_unflag_action? proposal %>
<a data-toggle="unflag-drop-proposal-<%= proposal.id %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-proposal-<%= proposal.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), unflag_legislation_process_proposal_path(proposal.process, proposal), method: :put, remote: true %>
</span>
<% end %>
</span>

View File

@@ -1 +1 @@
App.Flaggable.update("<%= dom_id(@proposal) %>", "<%= j render("legislation/proposals/flag_actions", proposal: @proposal) %>"); App.Flaggable.update("<%= dom_id(@proposal) %>", "<%= j render("shared/flag_actions", flaggable: @proposal) %>");

View File

@@ -46,7 +46,7 @@
<% if current_user %> <% if current_user %>
<span class="bullet">&nbsp;&bull;&nbsp;</span> <span class="bullet">&nbsp;&bull;&nbsp;</span>
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "legislation/proposals/flag_actions", proposal: @proposal %> <%= render "shared/flag_actions", flaggable: @proposal %>
</span> </span>
<% end %> <% end %>

View File

@@ -1,19 +0,0 @@
<span class="flag-content">
<% if show_flag_action? proposal %>
<a data-toggle="flag-drop-proposal-<%= proposal.id %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span class="dropdown-pane" id="flag-drop-proposal-<%= proposal.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.flag"), flag_proposal_path(proposal), method: :put, remote: true %>
</span>
<% end %>
<% if show_unflag_action? proposal %>
<a data-toggle="unflag-drop-proposal-<%= proposal.id %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-proposal-<%= proposal.id %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), unflag_proposal_path(proposal), method: :put, remote: true %>
</span>
<% end %>
</span>

View File

@@ -13,7 +13,7 @@
<% if current_user %> <% if current_user %>
<span class="bullet">&nbsp;&bull;&nbsp;</span> <span class="bullet">&nbsp;&bull;&nbsp;</span>
<span class="js-flag-actions"> <span class="js-flag-actions">
<%= render "proposals/flag_actions", proposal: @proposal %> <%= render "shared/flag_actions", flaggable: @proposal %>
</span> </span>
<% end %> <% end %>

View File

@@ -1,2 +1 @@
App.Flaggable.update("<%= dom_id(@proposal) %>", App.Flaggable.update("<%= dom_id(@proposal) %>", "<%= j render("shared/flag_actions", flaggable: @proposal) %>")
"<%= j render("proposals/flag_actions", proposal: @proposal) %>")

View File

@@ -0,0 +1,27 @@
<span class="flag-content">
<% if show_flag_action?(flaggable) %>
<% if local_assigns[:divider] %>
<span class="divider">&nbsp;|&nbsp;</span>
<% end %>
<a data-toggle="flag-drop-<%= dom_id(flaggable) %>" title="<%= t("shared.flag") %>">
<span class="icon-flag flag-disable"></span>
</a>
<span class="dropdown-pane" id="flag-drop-<%= dom_id(flaggable) %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.flag"), polymorphic_path(flaggable, action: :flag), method: :put, remote: true %>
</span>
<% end %>
<% if show_unflag_action?(flaggable) %>
<% if local_assigns[:divider] %>
<span class="divider">&nbsp;|&nbsp;</span>
<% end %>
<a data-toggle="unflag-drop-<%= dom_id(flaggable) %>" title="<%= t("shared.unflag") %>">
<span class="icon-flag flag-active"></span>
</a>
<span class="dropdown-pane" id="unflag-drop-<%= dom_id(flaggable) %>" data-dropdown data-auto-focus="true">
<%= link_to t("shared.unflag"), polymorphic_path(flaggable, action: :unflag), method: :put, remote: true %>
</span>
<% end %>
</span>