From 1d6490e22f5b3fd74ec8d097f22addae51e4904b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Thu, 18 Feb 2021 20:24:14 +0100 Subject: [PATCH] Update sdg management homepage to render header cards --- .../sdg_management/homepage/show.scss | 1 + .../homepage/show_component.html.erb | 17 +++++++++ .../sdg_management/homepage/show_component.rb | 5 ++- .../sdg_management/homepage_controller.rb | 1 + .../sdg_management/homepage/show.html.erb | 2 +- config/locales/en/sdg_management.yml | 4 ++ config/locales/es/sdg_management.yml | 4 ++ spec/system/sdg_management/homepage_spec.rb | 37 +++++++++++++++++++ 8 files changed, 68 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/sdg_management/homepage/show.scss b/app/assets/stylesheets/sdg_management/homepage/show.scss index 098e8e311..c586aa7fa 100644 --- a/app/assets/stylesheets/sdg_management/homepage/show.scss +++ b/app/assets/stylesheets/sdg_management/homepage/show.scss @@ -1,3 +1,4 @@ +.sdg-header, .phase-cards { > header { align-items: flex-start; diff --git a/app/components/sdg_management/homepage/show_component.html.erb b/app/components/sdg_management/homepage/show_component.html.erb index 53046b11b..232fe4155 100644 --- a/app/components/sdg_management/homepage/show_component.html.erb +++ b/app/components/sdg_management/homepage/show_component.html.erb @@ -1,5 +1,22 @@ <%= header %> +
+
+

<%= t("sdg_management.homepage.header.title") %>

+ + <% unless header_card %> + <%= link_to t("sdg_management.homepage.header.create"), new_sdg_management_homepage_header_path %> + <% end %> +
+ + <%= render Admin::Widget::Cards::TableComponent.new( + [header_card], + edit_path: edit_sdg_management_homepage_header_path, + destroy_path: sdg_management_homepage_header_path, + no_cards_message: t("sdg_management.homepage.header.no_cards") + ) %> +
+ <% phases.each do |phase| %>
diff --git a/app/components/sdg_management/homepage/show_component.rb b/app/components/sdg_management/homepage/show_component.rb index e5dbaf6cf..08865e461 100644 --- a/app/components/sdg_management/homepage/show_component.rb +++ b/app/components/sdg_management/homepage/show_component.rb @@ -1,9 +1,10 @@ class SDGManagement::Homepage::ShowComponent < ApplicationComponent include Header - attr_reader :phases + attr_reader :header_card, :phases - def initialize(phases) + def initialize(header_card, phases) + @header_card = header_card @phases = phases end diff --git a/app/controllers/sdg_management/homepage_controller.rb b/app/controllers/sdg_management/homepage_controller.rb index 4f9d67109..9b823e278 100644 --- a/app/controllers/sdg_management/homepage_controller.rb +++ b/app/controllers/sdg_management/homepage_controller.rb @@ -1,5 +1,6 @@ class SDGManagement::HomepageController < SDGManagement::BaseController def show @phases = SDG::Phase.accessible_by(current_ability).order(:kind) + @card = WebSection.find_by!(name: "sdg").header end end diff --git a/app/views/sdg_management/homepage/show.html.erb b/app/views/sdg_management/homepage/show.html.erb index f76456364..0e578e0d0 100644 --- a/app/views/sdg_management/homepage/show.html.erb +++ b/app/views/sdg_management/homepage/show.html.erb @@ -1 +1 @@ -<%= render SDGManagement::Homepage::ShowComponent.new(@phases) %> +<%= render SDGManagement::Homepage::ShowComponent.new(@card, @phases) %> diff --git a/config/locales/en/sdg_management.yml b/config/locales/en/sdg_management.yml index d132f0dac..89afa448c 100644 --- a/config/locales/en/sdg_management.yml +++ b/config/locales/en/sdg_management.yml @@ -6,6 +6,10 @@ en: title: "SDG content" homepage: title: "Homepage configuration" + header: + create: "Create header" + no_cards: "There is no header" + title: "Header" create_card: "Create %{phase} card" no_cards: "There are no cards for this phase" menu: diff --git a/config/locales/es/sdg_management.yml b/config/locales/es/sdg_management.yml index fc4dbf05f..fd19e5f25 100644 --- a/config/locales/es/sdg_management.yml +++ b/config/locales/es/sdg_management.yml @@ -6,6 +6,10 @@ es: title: "Contenido ODS" homepage: title: "Configuración de la pÔgina de inicio" + header: + create: "Crear cabecera" + no_cards: "No hay cabecera" + title: "Cabecera" create_card: "Crear tarjeta de %{phase}" no_cards: "No hay tarjetas para esta fase" menu: diff --git a/spec/system/sdg_management/homepage_spec.rb b/spec/system/sdg_management/homepage_spec.rb index 598066adc..3bc74550d 100644 --- a/spec/system/sdg_management/homepage_spec.rb +++ b/spec/system/sdg_management/homepage_spec.rb @@ -48,5 +48,42 @@ describe "SDG homepage configuration", :js do expect(page).not_to have_content "My monitoring card" end end + + scenario "Create header card" do + visit sdg_management_homepage_path + click_link "Create header" + + within(".translatable-fields") { fill_in "Title", with: "My header" } + click_button "Create card" + + within(".sdg-header") do + expect(page).to have_content "My header" + expect(page).not_to have_content "Create header" + end + end + + scenario "Update header card" do + create(:widget_card, cardable: WebSection.find_by!(name: "sdg")) + visit sdg_management_homepage_path + within ".sdg-header" do + click_link "Edit" + end + + within(".translatable-fields") { fill_in "Title", with: "My header update" } + click_button "Save card" + + expect(page).to have_content "My header update" + end + + scenario "Remove header card" do + create(:widget_card, title: "SDG Header", cardable: WebSection.find_by!(name: "sdg")) + visit sdg_management_homepage_path + + within ".sdg-header" do + accept_confirm { click_link "Delete" } + end + + expect(page).not_to have_content "SDG Header" + end end end