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:
@@ -7,4 +7,12 @@
|
||||
|
||||
mask-image: image-url("sdg.svg");
|
||||
}
|
||||
|
||||
.homepage-link {
|
||||
@include has-fa-icon(home, solid);
|
||||
|
||||
&::before {
|
||||
@extend %admin-menu-icon;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<%= header %>
|
||||
15
app/components/sdg_management/homepage/show_component.rb
Normal file
15
app/components/sdg_management/homepage/show_component.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
5
app/controllers/sdg_management/homepage_controller.rb
Normal file
5
app/controllers/sdg_management/homepage_controller.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class SDGManagement::HomepageController < SDGManagement::BaseController
|
||||
def show
|
||||
@phases = SDG::Phase.accessible_by(current_ability).order(:kind)
|
||||
end
|
||||
end
|
||||
1
app/views/sdg_management/homepage/show.html.erb
Normal file
1
app/views/sdg_management/homepage/show.html.erb
Normal file
@@ -0,0 +1 @@
|
||||
<%= render SDGManagement::Homepage::ShowComponent.new(@phases) %>
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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("|")}/
|
||||
|
||||
@@ -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"
|
||||
|
||||
20
spec/system/sdg_management/homepage_spec.rb
Normal file
20
spec/system/sdg_management/homepage_spec.rb
Normal 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
|
||||
Reference in New Issue
Block a user