Add comments count component
Remove all the translations that are left over after having unified them in the component.
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
@import "annotator_overrides";
|
||||
@import "autocomplete_overrides";
|
||||
@import "banner";
|
||||
@import "comments_count";
|
||||
@import "datepicker_overrides";
|
||||
@import "layout";
|
||||
@import "participation";
|
||||
|
||||
26
app/assets/stylesheets/comments_count.scss
Normal file
26
app/assets/stylesheets/comments_count.scss
Normal file
@@ -0,0 +1,26 @@
|
||||
.comments-count {
|
||||
@include has-fa-icon(comments, regular);
|
||||
|
||||
&::before {
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
|
||||
.legislation-comments & {
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&::before {
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-header & {
|
||||
@include has-fa-icon(comment, solid);
|
||||
|
||||
&::before {
|
||||
color: #838383;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2047,51 +2047,6 @@ table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.annotation-summary,
|
||||
.budget-investment-info,
|
||||
.debate-info,
|
||||
.debate-meta,
|
||||
.debate-summary,
|
||||
.investment-project-info,
|
||||
.legislation-comments,
|
||||
.proposal-info,
|
||||
.topic-info {
|
||||
|
||||
.comments-count {
|
||||
@include has-fa-icon(comments, regular);
|
||||
|
||||
&::before {
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.legislation-comments {
|
||||
|
||||
.comments-count {
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&::before {
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.comment-header {
|
||||
|
||||
.comments-count {
|
||||
@include has-fa-icon(comment, solid);
|
||||
|
||||
&::before {
|
||||
margin-right: 0.3rem;
|
||||
color: #838383;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 16. Flags
|
||||
// ---------
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
<%= l investment.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
|
||||
<span class="comments-count">
|
||||
<%= link_to t("shared.comments", count: investment.comments_count),
|
||||
budget_investment_path(investment.budget, investment, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
investment.comments_count,
|
||||
url: budget_investment_path(investment.budget, investment, anchor: "comments")
|
||||
) %>
|
||||
|
||||
<% if investment.author.hidden? || investment.author.erased? %>
|
||||
<span class="bullet"> • </span>
|
||||
|
||||
3
app/components/shared/comments_count_component.html.erb
Normal file
3
app/components/shared/comments_count_component.html.erb
Normal file
@@ -0,0 +1,3 @@
|
||||
<span class="comments-count">
|
||||
<%= link_to_if url.present?, text, url %>
|
||||
</span>
|
||||
12
app/components/shared/comments_count_component.rb
Normal file
12
app/components/shared/comments_count_component.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
class Shared::CommentsCountComponent < ApplicationComponent
|
||||
attr_reader :comments_count, :url
|
||||
|
||||
def initialize(comments_count, url: nil)
|
||||
@comments_count = comments_count
|
||||
@url = url
|
||||
end
|
||||
|
||||
def text
|
||||
t("shared.comments", count: comments_count)
|
||||
end
|
||||
end
|
||||
@@ -17,9 +17,10 @@
|
||||
<span class="bullet"> • </span>
|
||||
<%= l @debate.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("debates.show.comments", count: @debate.comments_count), debate_path(@debate, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
@debate.comments_count,
|
||||
url: debate_path(@debate, anchor: "comments")
|
||||
) %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="js-flag-actions">
|
||||
<%= render "shared/flag_actions", flaggable: @debate %>
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
<span class="bullet"> • </span>
|
||||
<%= l investment.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("shared.comments", count: investment.comments_count), "#comments" %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(investment.comments_count, url: "#comments") %>
|
||||
<span class="bullet"> • </span>
|
||||
<%= investment.heading.name %>
|
||||
<span class="bullet"> • </span>
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
<div class="debate-content">
|
||||
<h3><%= link_to debate.title, debate %></h3>
|
||||
<p class="debate-info">
|
||||
<span class="comments-count">
|
||||
<%= link_to t("debates.debate.comments", count: debate.comments_count),
|
||||
debate_path(debate, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
debate.comments_count,
|
||||
url: debate_path(debate, anchor: "comments")
|
||||
) %>
|
||||
<span class="bullet"> • </span>
|
||||
<%= l debate.created_at.to_date %>
|
||||
|
||||
|
||||
@@ -26,9 +26,7 @@
|
||||
<span class="bullet"> • </span>
|
||||
<%= l @debate.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("debates.show.comments", count: @debate.comments_count), "#comments" %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(@debate.comments_count, url: "#comments") %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="js-flag-actions">
|
||||
<%= render "shared/flag_actions", flaggable: @debate %>
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
<span class="comments-count">
|
||||
<%= t("legislation.annotations.comments.comments_count", count: annotation.comments.roots.count) %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(annotation.comments.roots.count) %>
|
||||
|
||||
<span id="annotation-link" data-sub-annotation-ids="8">
|
||||
<%= render "annotation_link", annotation: annotation %>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="comment-box">
|
||||
<div class="comment-header">
|
||||
<span class="comments-count"><%= t("legislation.annotations.comments.comments_count", count: 0) %></span>
|
||||
<%= render Shared::CommentsCountComponent.new(0) %>
|
||||
</div>
|
||||
|
||||
<div class="comments-wrapper">
|
||||
|
||||
@@ -27,12 +27,10 @@
|
||||
<div class="comment-section">
|
||||
<%= sanitize(annotation.context).presence || annotation.quote %>
|
||||
</div>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("legislation.annotations.index.comments_count", count: annotation.comments_count),
|
||||
legislation_process_draft_version_annotation_path(@process,
|
||||
@draft_version,
|
||||
annotation) %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
annotation.comments_count,
|
||||
url: legislation_process_draft_version_annotation_path(@process, @draft_version, annotation)
|
||||
) %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
<%= annotation.quote %>
|
||||
</div>
|
||||
|
||||
<span class="comments-count">
|
||||
<%= link_to t("legislation.summary.comments", count: annotation.comments.count),
|
||||
polymorphic_path(annotation, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
annotation.comments_count,
|
||||
url: polymorphic_path(annotation, anchor: "comments")
|
||||
) %>
|
||||
</div>
|
||||
|
||||
<%= render "summary_comments", comments: annotation_comments %>
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
<div class="debate-summary">
|
||||
<div class="question-title">
|
||||
<h4><%= link_to question.title, polymorphic_path(question) %></h4>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("legislation.summary.comments", count: question.comments.count),
|
||||
polymorphic_path(question, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
question.comments.count,
|
||||
url: polymorphic_path(question, anchor: "comments")
|
||||
) %>
|
||||
</div>
|
||||
|
||||
<%= render "summary_comments", comments: question.best_comments %>
|
||||
|
||||
@@ -6,7 +6,7 @@ xlsx_package.workbook.add_worksheet(name: "Summary") do |sheet|
|
||||
if @process.debate_phase.enabled? && @process.questions.any?
|
||||
sheet.add_row [t("legislation.summary.debate_phase"), t("legislation.summary.debates", count: @process.questions.count)], style: title
|
||||
@process.questions.each do |question|
|
||||
sheet.add_row [question.title, t("legislation.summary.comments", count: question.comments.count)], style: link
|
||||
sheet.add_row [question.title, t("shared.comments", count: question.comments.count)], style: link
|
||||
sheet.add_hyperlink location: legislation_process_question_url(question.process, question), ref: sheet.rows.last.cells.first
|
||||
sheet.add_hyperlink location: polymorphic_url(question, anchor: "comments"), ref: sheet.rows.last.cells.last
|
||||
sheet.add_row [t("legislation.summary.most_voted_comments")] if question.best_comments.any?
|
||||
@@ -34,7 +34,7 @@ xlsx_package.workbook.add_worksheet(name: "Summary") do |sheet|
|
||||
t("legislation.summary.top_comments", count: @comments.count)], style: title
|
||||
@comments.group_by(&:commentable).each do |annotation, annotation_comments|
|
||||
sheet.add_row [t("legislation.annotations.index.comments_about")]
|
||||
sheet.add_row [annotation.quote, t("legislation.summary.comments", count: annotation.comments.count)]
|
||||
sheet.add_row [annotation.quote, t("shared.comments", count: annotation.comments.count)]
|
||||
sheet.add_hyperlink location: polymorphic_url(annotation, anchor: "comments"), ref: sheet.rows.last.cells.last
|
||||
sheet.rows.last.cells.last.style = link
|
||||
|
||||
|
||||
@@ -19,11 +19,13 @@
|
||||
<% cache [locale_and_user_status(proposal), "index", proposal, proposal.author] do %>
|
||||
<h3><%= link_to proposal.title, legislation_process_proposal_path(proposal.legislation_process_id, proposal) %></h3>
|
||||
<p class="proposal-info">
|
||||
<span class="comments-count">
|
||||
<%= link_to t("proposals.proposal.comments", count: proposal.comments_count),
|
||||
legislation_process_proposal_path(proposal.legislation_process_id, proposal,
|
||||
anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
proposal.comments_count,
|
||||
url: legislation_process_proposal_path(
|
||||
proposal.legislation_process_id,
|
||||
proposal,
|
||||
anchor: "comments")
|
||||
) %>
|
||||
<span class="bullet"> • </span>
|
||||
<%= l proposal.created_at.to_date %>
|
||||
|
||||
|
||||
@@ -44,9 +44,7 @@
|
||||
<span class="bullet"> • </span>
|
||||
<%= l @proposal.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("proposals.show.comments", count: @proposal.comments_count), "#comments" %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(@proposal.comments_count, url: "#comments") %>
|
||||
|
||||
<% if current_user %>
|
||||
<span class="bullet"> • </span>
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
<h4><%= link_to question.title, legislation_process_question_path(question.process, question) %></h4>
|
||||
</div>
|
||||
<div class="debate-meta">
|
||||
<span class="comments-count">
|
||||
<%= link_to t("legislation.questions.question.comments", count: question.comments.count),
|
||||
legislation_process_question_path(question.process, question) %>
|
||||
</span> · <span class="debate-date"><%= l question.created_at.to_date %></span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
question.comments.count,
|
||||
url: legislation_process_question_path(question.process, question)
|
||||
) %>
|
||||
· <span class="debate-date"><%= l question.created_at.to_date %></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
|
||||
<% unless @proposal.selected? %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("proposals.show.comments", count: @proposal.comments_count), "#comments" %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(@proposal.comments_count, url: "#comments") %>
|
||||
<% end %>
|
||||
|
||||
<% if current_user %>
|
||||
|
||||
@@ -21,11 +21,10 @@
|
||||
<% cache [locale_and_user_status(proposal), "index", proposal, proposal.author] do %>
|
||||
<h3><%= link_to proposal.title, namespaced_proposal_path(proposal) %></h3>
|
||||
<p class="proposal-info">
|
||||
<span class="comments-count">
|
||||
<%= link_to t("proposals.proposal.comments", count: proposal.comments_count),
|
||||
namespaced_proposal_path(proposal, anchor: "comments") %>
|
||||
</span>
|
||||
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
proposal.comments_count,
|
||||
url: namespaced_proposal_path(proposal, anchor: "comments")
|
||||
) %>
|
||||
<span class="bullet"> • </span>
|
||||
<%= l proposal.created_at.to_date %>
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
<h3><%= link_to topic.title, community_topic_path(@community, topic) %></h3>
|
||||
|
||||
<p class="topic-info">
|
||||
<span class="comments-count">
|
||||
<%= link_to t("community.show.topic.comments", count: topic.comments_count),
|
||||
community_topic_path(@community, topic, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
topic.comments_count,
|
||||
url: community_topic_path(@community, topic, anchor: "comments")
|
||||
) %>
|
||||
<span class="bullet"> • </span>
|
||||
<%= I18n.l topic.created_at.to_date %>
|
||||
<span class="bullet"> • </span>
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
<span class="bullet"> • </span>
|
||||
<%= l(@topic.created_at.to_date) %>
|
||||
<span class="bullet"> • </span>
|
||||
<span class="comments-count">
|
||||
<%= link_to t("community.show.topic.comments", count: @topic.comments_count),
|
||||
community_topic_path(@community, @topic, anchor: "comments") %>
|
||||
</span>
|
||||
<%= render Shared::CommentsCountComponent.new(
|
||||
@topic.comments_count,
|
||||
url: community_topic_path(@community, @topic, anchor: "comments")
|
||||
) %>
|
||||
</div>
|
||||
<br>
|
||||
<p><%= @topic.description %></p>
|
||||
|
||||
@@ -25,10 +25,6 @@ en:
|
||||
topic:
|
||||
edit: Edit topic
|
||||
destroy: Delete topic
|
||||
comments:
|
||||
one: 1 comment
|
||||
other: "%{count} comments"
|
||||
zero: No comments
|
||||
author: Author
|
||||
back: Back to %{community} %{proposal}
|
||||
topic:
|
||||
|
||||
@@ -69,10 +69,6 @@ en:
|
||||
form:
|
||||
submit_button: Start a debate
|
||||
debate:
|
||||
comments:
|
||||
one: 1 comment
|
||||
other: "%{count} comments"
|
||||
zero: No comments
|
||||
votes:
|
||||
one: 1 vote
|
||||
other: "%{count} votes"
|
||||
@@ -128,10 +124,6 @@ en:
|
||||
start_new: Start a debate
|
||||
show:
|
||||
author_deleted: User deleted
|
||||
comments:
|
||||
one: 1 comment
|
||||
other: "%{count} comments"
|
||||
zero: No comments
|
||||
comments_title: Comments
|
||||
edit_debate_link: Edit
|
||||
flag: This debate has been flagged as inappropriate by several users.
|
||||
@@ -396,10 +388,6 @@ en:
|
||||
edit: "Before it gets shared you'll be able to change the text as you like."
|
||||
view_proposal: Not now, go to my proposal
|
||||
already_supported: You have already supported this proposal. Share it!
|
||||
comments:
|
||||
one: 1 comment
|
||||
other: "%{count} comments"
|
||||
zero: No comments
|
||||
support: Support
|
||||
support_label: "Support %{proposal}"
|
||||
support_title: Support this proposal
|
||||
@@ -420,10 +408,6 @@ en:
|
||||
show:
|
||||
author_deleted: User deleted
|
||||
code: "Proposal code:"
|
||||
comments:
|
||||
one: 1 comment
|
||||
other: "%{count} comments"
|
||||
zero: No comments
|
||||
comments_tab: Comments
|
||||
dashboard_proposal_link: Dashboard
|
||||
flag: This proposal has been flagged as inappropriate by several users.
|
||||
|
||||
@@ -4,9 +4,6 @@ en:
|
||||
comments:
|
||||
see_all: See all
|
||||
see_complete: See complete
|
||||
comments_count:
|
||||
one: "%{count} comment"
|
||||
other: "%{count} comments"
|
||||
replies_count:
|
||||
one: "%{count} reply"
|
||||
other: "%{count} replies"
|
||||
@@ -18,9 +15,6 @@ en:
|
||||
title: Comments
|
||||
comments_about: Comments about
|
||||
see_in_context: See in context
|
||||
comments_count:
|
||||
one: "%{count} comment"
|
||||
other: "%{count} comments"
|
||||
show:
|
||||
title: Comment
|
||||
version_chooser:
|
||||
@@ -92,10 +86,6 @@ en:
|
||||
form:
|
||||
leave_comment: Leave your answer
|
||||
question:
|
||||
comments:
|
||||
zero: No comments
|
||||
one: "%{count} comment"
|
||||
other: "%{count} comments"
|
||||
debate: Debate
|
||||
show:
|
||||
answer_question: Submit answer
|
||||
@@ -134,10 +124,6 @@ en:
|
||||
zero: "No proposals"
|
||||
one: "%{count} proposal"
|
||||
other: "%{count} proposals"
|
||||
comments:
|
||||
zero: "No comments"
|
||||
one: "%{count} comment"
|
||||
other: "%{count} comments"
|
||||
download: "Download summary"
|
||||
top_comments:
|
||||
zero: "No comments"
|
||||
|
||||
@@ -69,10 +69,6 @@ es:
|
||||
form:
|
||||
submit_button: Empieza un debate
|
||||
debate:
|
||||
comments:
|
||||
zero: Sin comentarios
|
||||
one: 1 Comentario
|
||||
other: "%{count} Comentarios"
|
||||
votes:
|
||||
zero: Sin votos
|
||||
one: 1 voto
|
||||
@@ -128,10 +124,6 @@ es:
|
||||
start_new: Empezar un debate
|
||||
show:
|
||||
author_deleted: Usuario eliminado
|
||||
comments:
|
||||
zero: Sin comentarios
|
||||
one: 1 Comentario
|
||||
other: "%{count} Comentarios"
|
||||
comments_title: Comentarios
|
||||
edit_debate_link: Editar debate
|
||||
flag: Este debate ha sido marcado como inapropiado por varios usuarios.
|
||||
@@ -396,10 +388,6 @@ es:
|
||||
edit: "Antes de que se publique podrás modificar el texto a tu gusto."
|
||||
view_proposal: Ahora no, ir a mi propuesta
|
||||
already_supported: '¡Ya has apoyado esta propuesta, compártela!'
|
||||
comments:
|
||||
zero: Sin comentarios
|
||||
one: 1 Comentario
|
||||
other: "%{count} Comentarios"
|
||||
support: Apoyar
|
||||
support_label: "Apoyar %{proposal}"
|
||||
support_title: Apoyar esta propuesta
|
||||
@@ -420,10 +408,6 @@ es:
|
||||
show:
|
||||
author_deleted: Usuario eliminado
|
||||
code: "Código de la propuesta:"
|
||||
comments:
|
||||
zero: Sin comentarios
|
||||
one: 1 Comentario
|
||||
other: "%{count} Comentarios"
|
||||
comments_tab: Comentarios
|
||||
dashboard_proposal_link: Panel de control
|
||||
flag: Esta propuesta ha sido marcada como inapropiada por varios usuarios.
|
||||
|
||||
@@ -4,9 +4,6 @@ es:
|
||||
comments:
|
||||
see_all: Ver todos
|
||||
see_complete: Ver completo
|
||||
comments_count:
|
||||
one: "%{count} comentario"
|
||||
other: "%{count} comentarios"
|
||||
replies_count:
|
||||
one: "%{count} respuesta"
|
||||
other: "%{count} respuestas"
|
||||
@@ -18,9 +15,6 @@ es:
|
||||
title: Comentarios
|
||||
comments_about: Comentarios sobre
|
||||
see_in_context: Ver en contexto
|
||||
comments_count:
|
||||
one: "%{count} comentario"
|
||||
other: "%{count} comentarios"
|
||||
show:
|
||||
title: Comentario
|
||||
version_chooser:
|
||||
@@ -92,10 +86,6 @@ es:
|
||||
form:
|
||||
leave_comment: Deja tu respuesta
|
||||
question:
|
||||
comments:
|
||||
zero: Sin comentarios
|
||||
one: "%{count} comentario"
|
||||
other: "%{count} comentarios"
|
||||
debate: Debate
|
||||
show:
|
||||
answer_question: Enviar respuesta
|
||||
@@ -134,10 +124,6 @@ es:
|
||||
zero: "No hay propuestas"
|
||||
one: "%{count} propuesta"
|
||||
other: "%{count} propuestas"
|
||||
comments:
|
||||
zero: "No hay comentarios"
|
||||
one: "%{count} comentario"
|
||||
other: "%{count} comentarios"
|
||||
download: "Descargar resumen"
|
||||
top_comments:
|
||||
zero: "No hay comentarios"
|
||||
|
||||
17
spec/components/shared/comments_count_component_spec.rb
Normal file
17
spec/components/shared/comments_count_component_spec.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe Shared::CommentsCountComponent do
|
||||
it "renders a link when a URL is given" do
|
||||
render_inline Shared::CommentsCountComponent.new(0, url: "http://www.url.com")
|
||||
|
||||
expect(page.find(".comments-count")).to have_content "No comments"
|
||||
expect(page.find(".comments-count")).to have_link "No comments", href: "http://www.url.com"
|
||||
end
|
||||
|
||||
it "renders plain text when no URL is given" do
|
||||
render_inline Shared::CommentsCountComponent.new(1)
|
||||
|
||||
expect(page.find(".comments-count")).to have_content "1 comment"
|
||||
expect(page.find(".comments-count")).not_to have_link "1 comment"
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user