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 @@