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"); 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 private
def links def links
[goals_link, *relatable_links] [goals_link, homepage_link, *relatable_links]
end end
def goals_link 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 end
def relatable_links def relatable_links
@@ -16,7 +20,7 @@ class SDGManagement::MenuComponent < ApplicationComponent
next unless SDG::ProcessEnabled.new(type).enabled? next unless SDG::ProcessEnabled.new(type).enabled?
[ [
t("sdg_management.menu.#{table_name(type)}"), item_text(table_name(type)),
relatable_type_path(type), relatable_type_path(type),
controller_name == "relations" && params[:relatable_type] == type.tableize, controller_name == "relations" && params[:relatable_type] == type.tableize,
class: "#{table_name(type).tr("_", "-")}-link" class: "#{table_name(type).tr("_", "-")}-link"
@@ -28,6 +32,10 @@ class SDGManagement::MenuComponent < ApplicationComponent
%w[goals targets local_targets].include?(controller_name) %w[goals targets local_targets].include?(controller_name)
end end
def homepage?
controller_name == "homepage"
end
def relatable_type_path(type) def relatable_type_path(type)
{ {
controller: "sdg_management/relations", controller: "sdg_management/relations",
@@ -39,4 +47,8 @@ class SDGManagement::MenuComponent < ApplicationComponent
def table_name(type) def table_name(type)
type.constantize.table_name type.constantize.table_name
end end
def item_text(item)
t("sdg_management.menu.#{item}")
end
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" edit: "Manage goals and targets"
header: header:
title: "SDG content" title: "SDG content"
homepage:
title: "Homepage configuration"
menu: menu:
budget_investments: "Participatory budgets" budget_investments: "Participatory budgets"
debates: "Debates" debates: "Debates"
@@ -11,6 +13,7 @@ en:
polls: "Polls" polls: "Polls"
proposals: "Proposals" proposals: "Proposals"
sdg_content: "Goals and Targets" sdg_content: "Goals and Targets"
sdg_homepage: "SDG homepage"
local_targets: local_targets:
create: create:
notice: "Local target created successfully" notice: "Local target created successfully"

View File

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

View File

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

View File

@@ -17,6 +17,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component render_inline component
expect(page).to have_link "Goals and Targets" 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 "Participatory budgets"
expect(page).to have_link "Debates" expect(page).to have_link "Debates"
expect(page).to have_link "Collaborative legislation" 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 it "does not generate links to any processes" do
render_inline component 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 "Goals and Targets"
expect(page).to have_link "SDG homepage"
end end
end end
@@ -54,8 +56,9 @@ describe SDGManagement::MenuComponent, type: :component do
it "does not generate links to any processes" do it "does not generate links to any processes" do
render_inline component 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 "Goals and Targets"
expect(page).to have_link "SDG homepage"
end end
end end
@@ -66,6 +69,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component render_inline component
expect(page).to have_link "Goals and Targets" 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 "Participatory budgets"
expect(page).to have_link "Collaborative legislation" expect(page).to have_link "Collaborative legislation"
expect(page).to have_link "Polls" expect(page).to have_link "Polls"
@@ -82,6 +86,7 @@ describe SDGManagement::MenuComponent, type: :component do
render_inline component render_inline component
expect(page).to have_link "Goals and Targets" 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 "Debates"
expect(page).to have_link "Participatory budgets" expect(page).to have_link "Participatory budgets"
expect(page).to have_link "Polls" 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