diff --git a/app/assets/stylesheets/admin/menu.scss b/app/assets/stylesheets/admin/menu.scss index a3ea2801d..f80f074cd 100644 --- a/app/assets/stylesheets/admin/menu.scss +++ b/app/assets/stylesheets/admin/menu.scss @@ -117,7 +117,8 @@ padding-left: $line-height / 2; } - &.is-active a { + &.is-active a, + &[aria-current] a { background: $sidebar-hover; border-left: 2px solid $sidebar-active; font-weight: bold; diff --git a/app/components/admin/menu_component.html.erb b/app/components/admin/menu_component.html.erb index 8aceb6092..f2eb8907a 100644 --- a/app/components/admin/menu_component.html.erb +++ b/app/components/admin/menu_component.html.erb @@ -1,6 +1,6 @@
diff --git a/app/components/admin/menu_component.rb b/app/components/admin/menu_component.rb index 6b5fba296..e31381817 100644 --- a/app/components/admin/menu_component.rb +++ b/app/components/admin/menu_component.rb @@ -1,4 +1,6 @@ class Admin::MenuComponent < ApplicationComponent + include LinkListHelper + private def moderated_content? @@ -65,4 +67,284 @@ class Admin::MenuComponent < ApplicationComponent def messages_sections %w[newsletters emails_download admin_notifications system_emails] end + + def officers_link + [ + t("admin.menu.poll_officers"), + admin_officers_path, + %w[officers officer_assignments].include?(controller_name) + ] + end + + def booths_link + [ + t("admin.menu.poll_booths"), + admin_booths_path, + controller_name == "booths" && action_name != "available" + ] + end + + def booth_assignments_link + [ + t("admin.menu.poll_booth_assignments"), + booth_assignments_admin_polls_path, + controller_name == "polls" && action_name == "booth_assignments" || controller_name == "booth_assignments" && action_name == "manage" + ] + end + + def shifts_link + [ + t("admin.menu.poll_shifts"), + available_admin_booths_path, + %w[shifts booths].include?(controller_name) && %w[available new].include?(action_name) + ] + end + + def newsletters_link + [ + t("admin.menu.newsletters"), + admin_newsletters_path, + controller_name == "newsletters" + ] + end + + def admin_notifications_link + [ + t("admin.menu.admin_notifications"), + admin_admin_notifications_path, + controller_name == "admin_notifications" + ] + end + + def system_emails_link + [ + t("admin.menu.system_emails"), + admin_system_emails_path, + controller_name == "system_emails" + ] + end + + def emails_download_link + [ + t("admin.menu.emails_download"), + admin_emails_download_index_path, + controller_name == "emails_download" + ] + end + + def homepage_link + [ + t("admin.menu.site_customization.homepage"), + admin_homepage_path, + homepage? + ] + end + + def pages_link + [ + t("admin.menu.site_customization.pages"), + admin_site_customization_pages_path, + pages? || controller_name == "pages" + ] + end + + def banners_link + [ + t("admin.menu.banner"), + admin_banners_path, + controller_name == "banners" + ] + end + + def information_texts_link + [ + t("admin.menu.site_customization.information_texts"), + admin_site_customization_information_texts_path, + controller_name == "information_texts" + ] + end + + def documents_link + [ + t("admin.menu.site_customization.documents"), + admin_site_customization_documents_path, + controller_name == "documents" + ] + end + + def hidden_proposals_link + [ + t("admin.menu.hidden_proposals"), + admin_hidden_proposals_path, + controller_name == "hidden_proposals" + ] + end + + def hidden_debates_link + [ + t("admin.menu.hidden_debates"), + admin_hidden_debates_path, + controller_name == "hidden_debates" + ] + end + + def hidden_budget_investments_link + [ + t("admin.menu.hidden_budget_investments"), + admin_hidden_budget_investments_path, + controller_name == "hidden_budget_investments" + ] + end + + def hidden_comments_link + [ + t("admin.menu.hidden_comments"), + admin_hidden_comments_path, + controller_name == "hidden_comments" + ] + end + + def hidden_proposal_notifications_link + [ + t("admin.menu.hidden_proposal_notifications"), + admin_hidden_proposal_notifications_path, + controller_name == "hidden_proposal_notifications" + ] + end + + def hidden_users_link + [ + t("admin.menu.hidden_users"), + admin_hidden_users_path, + controller_name == "hidden_users" + ] + end + + def activity_link + [ + t("admin.menu.activity"), + admin_activity_path, + controller_name == "activity" + ] + end + + def administrators_link + [ + t("admin.menu.administrators"), + admin_administrators_path, + controller_name == "administrators" + ] + end + + def organizations_link + [ + t("admin.menu.organizations"), + admin_organizations_path, + controller_name == "organizations" + ] + end + + def officials_link + [ + t("admin.menu.officials"), + admin_officials_path, + controller_name == "officials" + ] + end + + def moderators_link + [ + t("admin.menu.moderators"), + admin_moderators_path, + controller_name == "moderators" + ] + end + + def valuators_link + [ + t("admin.menu.valuators"), + admin_valuators_path, + controller_name == "valuators" + ] + end + + def managers_link + [ + t("admin.menu.managers"), + admin_managers_path, + controller_name == "managers" + ] + end + + def users_link + [ + t("admin.menu.users"), + admin_users_path, + controller_name == "users" + ] + end + + def settings_link + [ + t("admin.menu.settings"), + admin_settings_path, + controller_name == "settings" + ] + end + + def tags_link + [ + t("admin.menu.proposals_topics"), + admin_tags_path, + controller_name == "tags" + ] + end + + def geozones_link + [ + t("admin.menu.geozones"), + admin_geozones_path, + controller_name == "geozones" + ] + end + + def images_link + [ + t("admin.menu.site_customization.images"), + admin_site_customization_images_path, + controller_name == "images" && controller.class.parent != Admin::Poll::Questions::Answers + ] + end + + def content_blocks_link + [ + t("admin.menu.site_customization.content_blocks"), + admin_site_customization_content_blocks_path, + controller_name == "content_blocks" + ] + end + + def local_census_records_link + [ + t("admin.menu.local_census_records"), + admin_local_census_records_path, + local_census_records? + ] + end + + def administrator_tasks_link + [ + t("admin.menu.administrator_tasks"), + admin_dashboard_administrator_tasks_path, + controller_name == "administrator_tasks" + ] + end + + def dashboard_actions_link + [ + t("admin.menu.dashboard_actions"), + admin_dashboard_actions_path, + controller_name == "actions" + ] + end end diff --git a/app/components/sdg_management/menu_component.html.erb b/app/components/sdg_management/menu_component.html.erb index bd5783962..f786d0733 100644 --- a/app/components/sdg_management/menu_component.html.erb +++ b/app/components/sdg_management/menu_component.html.erb @@ -1,5 +1,9 @@ - +<%= link_list( + [ + t("sdg_management.menu.sdg_content"), + sdg_management_goals_path, + sdg?, + class: "goals-link" + ], + class: "sdg-content-menu" +) %> diff --git a/app/components/sdg_management/menu_component.rb b/app/components/sdg_management/menu_component.rb index 7c22e27c2..c594bd081 100644 --- a/app/components/sdg_management/menu_component.rb +++ b/app/components/sdg_management/menu_component.rb @@ -1,4 +1,6 @@ class SDGManagement::MenuComponent < ApplicationComponent + include LinkListHelper + private def sdg? diff --git a/app/helpers/link_list_helper.rb b/app/helpers/link_list_helper.rb new file mode 100644 index 000000000..5042d55c5 --- /dev/null +++ b/app/helpers/link_list_helper.rb @@ -0,0 +1,13 @@ +module LinkListHelper + def link_list(*links, **options) + return "" if links.compact.empty? + + tag.ul(options) do + safe_join(links.compact.map do |text, url, current = false, **link_options| + tag.li(({ "aria-current": true } if current)) do + link_to text, url, link_options + end + end) + end + end +end diff --git a/app/views/admin/poll/_menu.html.erb b/app/views/admin/poll/_menu.html.erb deleted file mode 100644 index 38c8bc5c4..000000000 --- a/app/views/admin/poll/_menu.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render "admin/menu" %> diff --git a/app/views/admin/widget/_menu.html.erb b/app/views/admin/widget/_menu.html.erb deleted file mode 100644 index 38c8bc5c4..000000000 --- a/app/views/admin/widget/_menu.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render "admin/menu" %> diff --git a/app/views/management/_menu.html.erb b/app/views/management/_menu.html.erb index 5078a8950..42fa308a0 100644 --- a/app/views/management/_menu.html.erb +++ b/app/views/management/_menu.html.erb @@ -1,41 +1,50 @@ + <%= link_list( + [ + t("management.menu.select_user"), + management_document_verifications_path, + menu_users? + ], + ( + [ + t("management.account.menu.reset_password_email"), + edit_password_email_management_account_path, + menu_edit_password_email? + ] if managed_user.email + ), + [ + t("management.account.menu.reset_password_manually"), + edit_password_manually_management_account_path, + menu_edit_password_manually? + ], + [ + t("management.menu.create_proposal"), + new_management_proposal_path, + menu_create_proposal? + ], + [ + t("management.menu.support_proposals"), + management_proposals_path, + menu_support_proposal? + ], + ( + [ + t("management.menu.create_budget_investment"), + create_investments_management_budgets_path, + menu_create_investments? + ] if Setting["process.budgets"] + ), + ( + [ + t("management.menu.support_budget_investments"), + support_investments_management_budgets_path, + menu_support_investments? + ] if Setting["process.budgets"] + ), + class: "is-active" + ) %> <% if Setting["process.budgets"] %> diff --git a/app/views/moderation/_menu.html.erb b/app/views/moderation/_menu.html.erb index f7ebe5e8f..3bcbb539e 100644 --- a/app/views/moderation/_menu.html.erb +++ b/app/views/moderation/_menu.html.erb @@ -1,35 +1,48 @@ - +<%= link_list( + [t("moderation.dashboard.index.title"), moderation_root_path], + ( + [ + t("moderation.menu.proposals"), + moderation_proposals_path, + controller_name == "proposals", + class: "proposals-link" + ] if feature?(:proposals) + ), + ( + [ + t("moderation.menu.proposal_notifications"), + moderation_proposal_notifications_path, + controller_name == "proposal_notifications", + class: "proposal-notifications-link" + ] if feature?(:proposals) + ), + ( + [ + t("moderation.menu.flagged_debates"), + moderation_debates_path, + controller_name == "debates", + class: "debates-link" + ] if feature?(:debates) + ), + ( + [ + t("moderation.menu.flagged_investments"), + moderation_budget_investments_path, + controller_name == "investments", + class: "investments-link" + ] if feature?(:budgets) + ), + [ + t("moderation.menu.flagged_comments"), + moderation_comments_path, + controller_name == "comments", + class: "comments-link" + ], + [ + t("moderation.menu.users"), + moderation_users_path, + controller_name == "users", + class: "users-link" + ], + id: "moderation_menu" +) %> diff --git a/app/views/pages/help/_menu.html.erb b/app/views/pages/help/_menu.html.erb index b9e5c3074..c56a2eb42 100644 --- a/app/views/pages/help/_menu.html.erb +++ b/app/views/pages/help/_menu.html.erb @@ -1,34 +1,47 @@