Add empty SDG homepage configuration page

Here we'll eventually display links to edit the homepage and the cards
in it.
This commit is contained in:
Javi Martín
2021-01-07 15:05:44 +01:00
parent 6db128f7ee
commit 2968275a1c
11 changed files with 79 additions and 5 deletions

View File

@@ -7,4 +7,12 @@
mask-image: image-url("sdg.svg");
}
.homepage-link {
@include has-fa-icon(home, solid);
&::before {
@extend %admin-menu-icon;
}
}
}

View File

@@ -0,0 +1 @@
<%= header %>

View File

@@ -0,0 +1,15 @@
class SDGManagement::Homepage::ShowComponent < ApplicationComponent
include Header
attr_reader :phases
def initialize(phases)
@phases = phases
end
private
def title
t("sdg_management.homepage.title")
end
end

View File

@@ -4,11 +4,15 @@ class SDGManagement::MenuComponent < ApplicationComponent
private
def links
[goals_link, *relatable_links]
[goals_link, homepage_link, *relatable_links]
end
def goals_link
[t("sdg_management.menu.sdg_content"), sdg_management_goals_path, sdg?, class: "goals-link"]
[item_text("sdg_content"), sdg_management_goals_path, sdg?, class: "goals-link"]
end
def homepage_link
[item_text("sdg_homepage"), sdg_management_homepage_path, homepage?, class: "homepage-link"]
end
def relatable_links
@@ -16,7 +20,7 @@ class SDGManagement::MenuComponent < ApplicationComponent
next unless SDG::ProcessEnabled.new(type).enabled?
[
t("sdg_management.menu.#{table_name(type)}"),
item_text(table_name(type)),
relatable_type_path(type),
controller_name == "relations" && params[:relatable_type] == type.tableize,
class: "#{table_name(type).tr("_", "-")}-link"
@@ -28,6 +32,10 @@ class SDGManagement::MenuComponent < ApplicationComponent
%w[goals targets local_targets].include?(controller_name)
end
def homepage?
controller_name == "homepage"
end
def relatable_type_path(type)
{
controller: "sdg_management/relations",
@@ -39,4 +47,8 @@ class SDGManagement::MenuComponent < ApplicationComponent
def table_name(type)
type.constantize.table_name
end
def item_text(item)
t("sdg_management.menu.#{item}")
end
end

View File

@@ -0,0 +1,5 @@
class SDGManagement::HomepageController < SDGManagement::BaseController
def show
@phases = SDG::Phase.accessible_by(current_ability).order(:kind)
end
end

View File

@@ -0,0 +1 @@
<%= render SDGManagement::Homepage::ShowComponent.new(@phases) %>

View File

@@ -4,6 +4,8 @@ en:
edit: "Manage goals and targets"
header:
title: "SDG content"
homepage:
title: "Homepage configuration"
menu:
budget_investments: "Participatory budgets"
debates: "Debates"
@@ -11,6 +13,7 @@ en:
polls: "Polls"
proposals: "Proposals"
sdg_content: "Goals and Targets"
sdg_homepage: "SDG homepage"
local_targets:
create:
notice: "Local target created successfully"

View File

@@ -4,6 +4,8 @@ es:
edit: "Asignar objetivos y metas"
header:
title: "Contenido ODS"
homepage:
title: "Configuración de la página de inicio"
menu:
budget_investments: "Presupuestos participativos"
debates: "Debates"
@@ -11,6 +13,7 @@ es:
polls: "Votaciones"
proposals: "Propuestas"
sdg_content: "Objetivos y Metas"
sdg_homepage: "Página de inicio ODS"
local_targets:
create:
notice: "Meta localizada creada correctamente"

View File

@@ -4,6 +4,7 @@ namespace :sdg_management do
resources :goals, only: [:index]
resources :targets, only: [:index]
resources :local_targets, except: [:show]
resource :homepage, controller: :homepage, only: [:show]
types = SDG::Related::RELATABLE_TYPES.map(&:tableize)
types_constraint = /#{types.join("|")}/

View File

@@ -17,6 +17,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component
expect(page).to have_link "Goals and Targets"
expect(page).to have_link "SDG homepage"
expect(page).to have_link "Participatory budgets"
expect(page).to have_link "Debates"
expect(page).to have_link "Collaborative legislation"
@@ -37,8 +38,9 @@ describe SDGManagement::MenuComponent, type: :component do
it "does not generate links to any processes" do
render_inline component
expect(page).to have_css "a", count: 1
expect(page).to have_css "a", count: 2
expect(page).to have_link "Goals and Targets"
expect(page).to have_link "SDG homepage"
end
end
@@ -54,8 +56,9 @@ describe SDGManagement::MenuComponent, type: :component do
it "does not generate links to any processes" do
render_inline component
expect(page).to have_css "a", count: 1
expect(page).to have_css "a", count: 2
expect(page).to have_link "Goals and Targets"
expect(page).to have_link "SDG homepage"
end
end
@@ -66,6 +69,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component
expect(page).to have_link "Goals and Targets"
expect(page).to have_link "SDG homepage"
expect(page).to have_link "Participatory budgets"
expect(page).to have_link "Collaborative legislation"
expect(page).to have_link "Polls"
@@ -82,6 +86,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component
expect(page).to have_link "Goals and Targets"
expect(page).to have_link "SDG homepage"
expect(page).to have_link "Debates"
expect(page).to have_link "Participatory budgets"
expect(page).to have_link "Polls"

View File

@@ -0,0 +1,20 @@
require "rails_helper"
describe "SDG homepage configuration", :js do
before do
Setting["feature.sdg"] = true
login_as(create(:sdg_manager).user)
end
describe "Show" do
scenario "Visit the index" do
visit sdg_management_root_path
within("#side_menu") do
click_link "SDG homepage"
end
expect(page).to have_title "SDG content - Homepage configuration"
end
end
end