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 %>
+
+
<% 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