From a42cb050a723fc34cb9f54bb01c36b6a87a8a38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Wed, 11 Nov 2020 13:16:37 +0100 Subject: [PATCH] Add SDG content section --- app/assets/stylesheets/application.scss | 1 + .../stylesheets/sdg_management/menu.scss | 10 ++++++++ .../goals/index_component.html.erb | 25 +++++++++++++++++++ .../sdg_management/goals/index_component.rb | 17 +++++++++++++ .../sdg_management/menu_component.html.erb | 5 ++++ .../sdg_management/menu_component.rb | 7 ++++++ .../sdg_management/base_controller.rb | 14 +++++++++++ .../sdg_management/goals_controller.rb | 5 ++++ app/helpers/admin_helper.rb | 2 +- app/views/layouts/admin.html.erb | 2 ++ app/views/sdg_management/goals/index.html.erb | 1 + app/views/shared/_admin_login_items.html.erb | 6 +++++ config/i18n-tasks.yml | 1 + config/locales/en/activerecord.yml | 7 ++++++ config/locales/en/sdg_management.yml | 6 +++++ config/locales/es/activerecord.yml | 7 ++++++ config/locales/es/sdg_management.yml | 6 +++++ config/routes.rb | 1 + config/routes/sdg_management.rb | 5 ++++ spec/system/sdg_management/goals_spec.rb | 20 +++++++++++++++ vendor/assets/images/sdg.svg | 19 ++++++++++++++ 21 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 app/assets/stylesheets/sdg_management/menu.scss create mode 100644 app/components/sdg_management/goals/index_component.html.erb create mode 100644 app/components/sdg_management/goals/index_component.rb create mode 100644 app/components/sdg_management/menu_component.html.erb create mode 100644 app/components/sdg_management/menu_component.rb create mode 100644 app/controllers/sdg_management/base_controller.rb create mode 100644 app/controllers/sdg_management/goals_controller.rb create mode 100644 app/views/sdg_management/goals/index.html.erb create mode 100644 config/locales/en/sdg_management.yml create mode 100644 config/locales/es/sdg_management.yml create mode 100644 config/routes/sdg_management.rb create mode 100644 spec/system/sdg_management/goals_spec.rb create mode 100644 vendor/assets/images/sdg.svg diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 0e4d08318..daa8ffc81 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -28,3 +28,4 @@ @import "leaflet"; @import "sticky_overrides"; @import "admin/*"; +@import "sdg_management/*"; diff --git a/app/assets/stylesheets/sdg_management/menu.scss b/app/assets/stylesheets/sdg_management/menu.scss new file mode 100644 index 000000000..744234610 --- /dev/null +++ b/app/assets/stylesheets/sdg_management/menu.scss @@ -0,0 +1,10 @@ +.sdg-content-menu { + + .goals-link::before { + @extend %font-icon; + @extend %svg-icon; + @extend %admin-menu-icon; + + mask-image: image-url("sdg.svg"); + } +} diff --git a/app/components/sdg_management/goals/index_component.html.erb b/app/components/sdg_management/goals/index_component.html.erb new file mode 100644 index 000000000..2564b8dec --- /dev/null +++ b/app/components/sdg_management/goals/index_component.html.erb @@ -0,0 +1,25 @@ +<% provide(:title) do %> + <%= t("sdg_management.header.title") %> - <%= title %> +<% end %> + +

<%= title %>

+ + + + + + + + + + + + <% goals.each do |goal| %> + + + + + + <% end %> + +
<%= attribute_name(:code) %><%= attribute_name(:title) %><%= attribute_name(:description) %>
<%= goal.code %><%= goal.title %><%= goal.description %>
diff --git a/app/components/sdg_management/goals/index_component.rb b/app/components/sdg_management/goals/index_component.rb new file mode 100644 index 000000000..9c7517861 --- /dev/null +++ b/app/components/sdg_management/goals/index_component.rb @@ -0,0 +1,17 @@ +class SDGManagement::Goals::IndexComponent < ApplicationComponent + attr_reader :goals + + def initialize(goals) + @goals = goals + end + + private + + def title + SDG::Goal.model_name.human(count: 2).titleize + end + + def attribute_name(attribute) + SDG::Goal.human_attribute_name(attribute) + end +end diff --git a/app/components/sdg_management/menu_component.html.erb b/app/components/sdg_management/menu_component.html.erb new file mode 100644 index 000000000..bd5783962 --- /dev/null +++ b/app/components/sdg_management/menu_component.html.erb @@ -0,0 +1,5 @@ + diff --git a/app/components/sdg_management/menu_component.rb b/app/components/sdg_management/menu_component.rb new file mode 100644 index 000000000..a4dfcb7a4 --- /dev/null +++ b/app/components/sdg_management/menu_component.rb @@ -0,0 +1,7 @@ +class SDGManagement::MenuComponent < ApplicationComponent + private + + def sdg? + controller_name == "goals" + end +end diff --git a/app/controllers/sdg_management/base_controller.rb b/app/controllers/sdg_management/base_controller.rb new file mode 100644 index 000000000..a5028f7d0 --- /dev/null +++ b/app/controllers/sdg_management/base_controller.rb @@ -0,0 +1,14 @@ +class SDGManagement::BaseController < ApplicationController + layout "admin" + + before_action :authenticate_user! + before_action :verify_sdg_manager + + skip_authorization_check + + private + + def verify_sdg_manager + raise CanCan::AccessDenied unless current_user&.administrator? + end +end diff --git a/app/controllers/sdg_management/goals_controller.rb b/app/controllers/sdg_management/goals_controller.rb new file mode 100644 index 000000000..1eb68c6f3 --- /dev/null +++ b/app/controllers/sdg_management/goals_controller.rb @@ -0,0 +1,5 @@ +class SDGManagement::GoalsController < SDGManagement::BaseController + def index + @goals = SDG::Goal.order(:code) + end +end diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index b531bf82a..dd5d9c6d4 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -42,6 +42,6 @@ module AdminHelper private def namespace - controller.class.name.downcase.split("::").first + controller.class.name.split("::").first.underscore end end diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index ff29aa5d5..8c3176b12 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb @@ -15,6 +15,8 @@