Files
nairobi/app/components/sdg_management/menu_component.rb
Javi Martín ed51c5dcd3 Add basic SDG Management content section
Note using `params[:relatable_type].classify` is recognized as a
security risk by some tools. However, it's a false positive, since we've
added constraints to the URL so that paramenter can only have the values
we trust.
2020-12-21 18:04:48 +01:00

41 lines
957 B
Ruby

class SDGManagement::MenuComponent < ApplicationComponent
include LinkListHelper
private
def links
[goals_link, *relatable_links]
end
def goals_link
[t("sdg_management.menu.sdg_content"), sdg_management_goals_path, sdg?, class: "goals-link"]
end
def relatable_links
SDG::Related::RELATABLE_TYPES.map do |type|
[
t("sdg_management.menu.#{table_name(type)}"),
relatable_type_path(type),
controller_name == "relations" && params[:relatable_type] == type.tableize,
class: "#{table_name(type).tr("_", "-")}-link"
]
end
end
def sdg?
%w[goals targets local_targets].include?(controller_name)
end
def relatable_type_path(type)
{
controller: "sdg_management/relations",
action: :index,
relatable_type: type.tableize
}
end
def table_name(type)
type.constantize.table_name
end
end