53 lines
1.2 KiB
Ruby
53 lines
1.2 KiB
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|
|
|
next unless setting["process.#{process_name(type)}"] && setting["sdg.process.#{process_name(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
|
|
|
|
def process_name(type)
|
|
process_name = type.split("::").first
|
|
|
|
if process_name == "Legislation"
|
|
"legislation"
|
|
else
|
|
process_name.constantize.table_name
|
|
end
|
|
end
|
|
end
|