From fae52274a429f20c09e85c05f2b287254f427af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 22 Dec 2020 13:51:06 +0100 Subject: [PATCH] Reuse code between feed components They were all following the same format. Note we need to group the `see_all` translation keys together (the same way it's done with the `most_active` keys) so we don't have an unused translation warning. We're also moving the "see all" link in processes outside the feed content; the same way it's done in debates and proposals and removing unnecessary classes in the processes feed: the column class is causing the processes not to be aligned with the debates above them, and the margin bottom is not needed because the margin of the footer is already enough. --- app/assets/stylesheets/layout.scss | 18 ------------- .../stylesheets/widgets/feeds/feed.scss | 20 +++++++++++++++ .../stylesheets/widgets/feeds/proposal.scss | 20 +++++++++++++++ .../stylesheets/widgets/feeds/proposals.scss | 22 ---------------- .../widgets/feeds/debate_component.html.erb | 3 +++ .../widgets/feeds/debate_component.rb | 7 ++++++ .../widgets/feeds/debates_component.html.erb | 13 ---------- .../widgets/feeds/debates_component.rb | 7 ------ .../widgets/feeds/feed_component.html.erb | 11 ++++++++ .../widgets/feeds/feed_component.rb | 25 +++++++++++++++++++ .../feeds/participation_component.html.erb | 8 ++---- .../widgets/feeds/process_component.html.erb | 13 ++++++++++ .../widgets/feeds/process_component.rb | 7 ++++++ .../feeds/processes_component.html.erb | 21 ---------------- .../widgets/feeds/processes_component.rb | 7 ------ .../widgets/feeds/proposal_component.html.erb | 16 ++++++++++++ .../widgets/feeds/proposal_component.rb | 7 ++++++ .../feeds/proposals_component.html.erb | 25 ------------------- .../widgets/feeds/proposals_component.rb | 7 ------ app/views/welcome/_processes.html.erb | 2 +- config/locales/en/general.yml | 7 +++--- config/locales/es/general.yml | 7 +++--- spec/system/admin/homepage/homepage_spec.rb | 2 +- 23 files changed, 141 insertions(+), 134 deletions(-) create mode 100644 app/assets/stylesheets/widgets/feeds/feed.scss create mode 100644 app/assets/stylesheets/widgets/feeds/proposal.scss delete mode 100644 app/assets/stylesheets/widgets/feeds/proposals.scss create mode 100644 app/components/widgets/feeds/debate_component.html.erb create mode 100644 app/components/widgets/feeds/debate_component.rb delete mode 100644 app/components/widgets/feeds/debates_component.html.erb delete mode 100644 app/components/widgets/feeds/debates_component.rb create mode 100644 app/components/widgets/feeds/feed_component.html.erb create mode 100644 app/components/widgets/feeds/feed_component.rb create mode 100644 app/components/widgets/feeds/process_component.html.erb create mode 100644 app/components/widgets/feeds/process_component.rb delete mode 100644 app/components/widgets/feeds/processes_component.html.erb delete mode 100644 app/components/widgets/feeds/processes_component.rb create mode 100644 app/components/widgets/feeds/proposal_component.html.erb create mode 100644 app/components/widgets/feeds/proposal_component.rb delete mode 100644 app/components/widgets/feeds/proposals_component.html.erb delete mode 100644 app/components/widgets/feeds/proposals_component.rb diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index ad3f3ec75..b9871047a 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -2902,24 +2902,6 @@ table { } } -.feed-description { - - p { - font-size: $small-font-size; - margin-bottom: 0; - } -} - -.feed-content { - - .debate, - .proposal { - margin-bottom: 0; - margin-top: 0; - padding: $line-height / 2 0; - } -} - .figure-card { display: flex; margin: 0 0 $line-height; diff --git a/app/assets/stylesheets/widgets/feeds/feed.scss b/app/assets/stylesheets/widgets/feeds/feed.scss new file mode 100644 index 000000000..b7e293c7a --- /dev/null +++ b/app/assets/stylesheets/widgets/feeds/feed.scss @@ -0,0 +1,20 @@ +.widget-feed { + + .feed-description { + + p { + font-size: $small-font-size; + margin-bottom: 0; + } + } + + .feed-content { + + .debate, + .proposal { + margin-bottom: 0; + margin-top: 0; + padding: $line-height / 2 0; + } + } +} diff --git a/app/assets/stylesheets/widgets/feeds/proposal.scss b/app/assets/stylesheets/widgets/feeds/proposal.scss new file mode 100644 index 000000000..6d8a5636f --- /dev/null +++ b/app/assets/stylesheets/widgets/feeds/proposal.scss @@ -0,0 +1,20 @@ +.feed-proposals .proposal { + @include grid-row-nest; + clear: both; + + .feed-image { + display: inline-block; + height: rem-calc(120); + overflow: hidden; + width: 100%; + + @include breakpoint(medium) { + height: rem-calc(96); + } + + img { + max-width: none; + width: 100%; + } + } +} diff --git a/app/assets/stylesheets/widgets/feeds/proposals.scss b/app/assets/stylesheets/widgets/feeds/proposals.scss deleted file mode 100644 index 863a45174..000000000 --- a/app/assets/stylesheets/widgets/feeds/proposals.scss +++ /dev/null @@ -1,22 +0,0 @@ -.feed-proposals { - - .proposal { - clear: both; - - .feed-image { - display: inline-block; - height: rem-calc(120); - overflow: hidden; - width: 100%; - - @include breakpoint(medium) { - height: rem-calc(96); - } - - img { - max-width: none; - width: 100%; - } - } - } -} diff --git a/app/components/widgets/feeds/debate_component.html.erb b/app/components/widgets/feeds/debate_component.html.erb new file mode 100644 index 000000000..ba93fa7c1 --- /dev/null +++ b/app/components/widgets/feeds/debate_component.html.erb @@ -0,0 +1,3 @@ +
+ <%= link_to debate.title, url_for(debate) %> +
diff --git a/app/components/widgets/feeds/debate_component.rb b/app/components/widgets/feeds/debate_component.rb new file mode 100644 index 000000000..28d726811 --- /dev/null +++ b/app/components/widgets/feeds/debate_component.rb @@ -0,0 +1,7 @@ +class Widgets::Feeds::DebateComponent < ApplicationComponent + attr_reader :debate + + def initialize(debate) + @debate = debate + end +end diff --git a/app/components/widgets/feeds/debates_component.html.erb b/app/components/widgets/feeds/debates_component.html.erb deleted file mode 100644 index ad1ab2a68..000000000 --- a/app/components/widgets/feeds/debates_component.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -
-
-

<%= t("welcome.feed.most_active.#{feed.kind}") %>

- - <% feed.items.each do |item| %> -
"> - <%= link_to item.title, url_for(item) %> -
- <% end %> -
- - <%= link_to t("welcome.feed.see_all_debates"), debates_path, class: "see-all" %> -
diff --git a/app/components/widgets/feeds/debates_component.rb b/app/components/widgets/feeds/debates_component.rb deleted file mode 100644 index cdee45cbd..000000000 --- a/app/components/widgets/feeds/debates_component.rb +++ /dev/null @@ -1,7 +0,0 @@ -class Widgets::Feeds::DebatesComponent < ApplicationComponent - attr_reader :feed - - def initialize(feed) - @feed = feed - end -end diff --git a/app/components/widgets/feeds/feed_component.html.erb b/app/components/widgets/feeds/feed_component.html.erb new file mode 100644 index 000000000..3873e5ce5 --- /dev/null +++ b/app/components/widgets/feeds/feed_component.html.erb @@ -0,0 +1,11 @@ +
+
+

<%= t("welcome.feed.most_active.#{kind}") %>

+ + <% feed.items.each do |item| %> + <%= render item_component_class.new(item) %> + <% end %> +
+ + <%= link_to t("welcome.feed.see_all.#{kind}"), see_all_path, class: "see-all" %> +
diff --git a/app/components/widgets/feeds/feed_component.rb b/app/components/widgets/feeds/feed_component.rb new file mode 100644 index 000000000..b858db7c7 --- /dev/null +++ b/app/components/widgets/feeds/feed_component.rb @@ -0,0 +1,25 @@ +class Widgets::Feeds::FeedComponent < ApplicationComponent + attr_reader :feed + delegate :kind, to: :feed + + def initialize(feed) + @feed = feed + end + + def see_all_path + polymorphic_path(feed.items.model) + end + + private + + def item_component_class + case kind + when "proposals" + Widgets::Feeds::ProposalComponent + when "debates" + Widgets::Feeds::DebateComponent + when "processes" + Widgets::Feeds::ProcessComponent + end + end +end diff --git a/app/components/widgets/feeds/participation_component.html.erb b/app/components/widgets/feeds/participation_component.html.erb index 84e14dba8..f19bd0e4f 100644 --- a/app/components/widgets/feeds/participation_component.html.erb +++ b/app/components/widgets/feeds/participation_component.html.erb @@ -1,11 +1,7 @@
<% feeds.each do |feed| %> - <% if feed_proposals?(feed) %> - <%= render Widgets::Feeds::ProposalsComponent.new(feed) %> - <% end %> - - <% if feed_debates?(feed) %> - <%= render Widgets::Feeds::DebatesComponent.new(feed) %> + <% if feed_proposals?(feed) || feed_debates?(feed) %> + <%= render Widgets::Feeds::FeedComponent.new(feed) %> <% end %> <% end %>
diff --git a/app/components/widgets/feeds/process_component.html.erb b/app/components/widgets/feeds/process_component.html.erb new file mode 100644 index 000000000..ff7619cac --- /dev/null +++ b/app/components/widgets/feeds/process_component.html.erb @@ -0,0 +1,13 @@ +
+ <%= link_to url_for(process) do %> +
+ <%= image_tag("welcome_process.png", alt: "") %> +
+ <%= t("welcome.feed.process_label") %>
+

<%= process.title %>

+
+
+

<%= process.summary %>

+

<%= t("welcome.feed.see_process") %>

+ <% end %> +
diff --git a/app/components/widgets/feeds/process_component.rb b/app/components/widgets/feeds/process_component.rb new file mode 100644 index 000000000..5d9f79f0f --- /dev/null +++ b/app/components/widgets/feeds/process_component.rb @@ -0,0 +1,7 @@ +class Widgets::Feeds::ProcessComponent < ApplicationComponent + attr_reader :process + + def initialize(process) + @process = process + end +end diff --git a/app/components/widgets/feeds/processes_component.html.erb b/app/components/widgets/feeds/processes_component.html.erb deleted file mode 100644 index e492713d7..000000000 --- a/app/components/widgets/feeds/processes_component.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -
-
-

<%= t("welcome.feed.most_active.#{feed.kind}") %>

- - <% feed.items.each do |item| %> - <%= link_to url_for(item) do %> -
"> - <%= image_tag("welcome_process.png", alt: "") %> -
- <%= t("welcome.feed.process_label") %>
-

<%= item.title %>

-
-
-

<%= item.summary %>

-

<%= t("welcome.feed.see_process") %>

- <% end %> - <% end %> - - <%= link_to t("welcome.feed.see_all_processes"), legislation_processes_path, class: "float-right see-all" %> -
-
diff --git a/app/components/widgets/feeds/processes_component.rb b/app/components/widgets/feeds/processes_component.rb deleted file mode 100644 index 00780a38b..000000000 --- a/app/components/widgets/feeds/processes_component.rb +++ /dev/null @@ -1,7 +0,0 @@ -class Widgets::Feeds::ProcessesComponent < ApplicationComponent - attr_reader :feed - - def initialize(feed) - @feed = feed - end -end diff --git a/app/components/widgets/feeds/proposal_component.html.erb b/app/components/widgets/feeds/proposal_component.html.erb new file mode 100644 index 000000000..b94696d51 --- /dev/null +++ b/app/components/widgets/feeds/proposal_component.html.erb @@ -0,0 +1,16 @@ +
+
"> + <%= link_to proposal.title, url_for(proposal) %>
+

<%= proposal.summary %>

+
+ + <% if proposal.image.present? %> +
+
+ <%= image_tag proposal.image_url(:thumb), + alt: proposal.image.title.unicode_normalize %> +
+
+ <% end %> +
diff --git a/app/components/widgets/feeds/proposal_component.rb b/app/components/widgets/feeds/proposal_component.rb new file mode 100644 index 000000000..243bb0649 --- /dev/null +++ b/app/components/widgets/feeds/proposal_component.rb @@ -0,0 +1,7 @@ +class Widgets::Feeds::ProposalComponent < ApplicationComponent + attr_reader :proposal + + def initialize(proposal) + @proposal = proposal + end +end diff --git a/app/components/widgets/feeds/proposals_component.html.erb b/app/components/widgets/feeds/proposals_component.html.erb deleted file mode 100644 index 2df0ab861..000000000 --- a/app/components/widgets/feeds/proposals_component.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -
-
-

<%= t("welcome.feed.most_active.#{feed.kind}") %>

- - <% feed.items.each do |item| %> -
row"> -
"> - <%= link_to item.title, url_for(item) %>
-

<%= item.summary %>

-
- <% if item.image.present? %> -
-
- <%= image_tag item.image_url(:thumb), - alt: item.image.title.unicode_normalize %> -
-
- <% end %> -
- <% end %> -
- - <%= link_to t("welcome.feed.see_all_proposals"), proposals_path, class: "see-all" %> -
diff --git a/app/components/widgets/feeds/proposals_component.rb b/app/components/widgets/feeds/proposals_component.rb deleted file mode 100644 index d799c5516..000000000 --- a/app/components/widgets/feeds/proposals_component.rb +++ /dev/null @@ -1,7 +0,0 @@ -class Widgets::Feeds::ProposalsComponent < ApplicationComponent - attr_reader :feed - - def initialize(feed) - @feed = feed - end -end diff --git a/app/views/welcome/_processes.html.erb b/app/views/welcome/_processes.html.erb index d859703d8..d6d3ee1ae 100644 --- a/app/views/welcome/_processes.html.erb +++ b/app/views/welcome/_processes.html.erb @@ -1,7 +1,7 @@
<% @feeds.each do |feed| %> <% if feed_processes?(feed) %> - <%= render Widgets::Feeds::ProcessesComponent.new(feed) %> + <%= render Widgets::Feeds::FeedComponent.new(feed) %> <% end %> <% end %>
diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml index a1c7a886c..05fc01c71 100644 --- a/config/locales/en/general.yml +++ b/config/locales/en/general.yml @@ -875,9 +875,10 @@ en: debates: "Most active debates" proposals: "Most active proposals" processes: "Open processes" - see_all_debates: See all debates - see_all_proposals: See all proposals - see_all_processes: See all processes + see_all: + debates: See all debates + proposals: See all proposals + processes: See all processes process_label: Process see_process: See process cards: diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml index b9da8ab10..d5f998ecc 100644 --- a/config/locales/es/general.yml +++ b/config/locales/es/general.yml @@ -875,9 +875,10 @@ es: debates: "Debates más activos" proposals: "Propuestas más activas" processes: "Procesos abiertos" - see_all_debates: Ver todos los debates - see_all_proposals: Ver todas las propuestas - see_all_processes: Ver todos los procesos + see_all: + debates: Ver todos los debates + proposals: Ver todas las propuestas + processes: Ver todos los procesos process_label: Proceso see_process: Ver proceso cards: diff --git a/spec/system/admin/homepage/homepage_spec.rb b/spec/system/admin/homepage/homepage_spec.rb index a47793d1f..b6349376a 100644 --- a/spec/system/admin/homepage/homepage_spec.rb +++ b/spec/system/admin/homepage/homepage_spec.rb @@ -106,7 +106,7 @@ describe "Homepage", :admin do visit root_path expect(page).to have_content "Open processes" - expect(page).to have_css(".legislation_process", count: 3) + expect(page).to have_css(".legislation-process", count: 3) end xscenario "Deactivate"