lib/decidim/admin/engine.rb in decidim-admin-0.24.3 vs lib/decidim/admin/engine.rb in decidim-admin-0.25.0.rc1

- old
+ new

@@ -4,15 +4,11 @@ require "active_support/all" require "devise" require "devise-i18n" require "decidim/core" -require "jquery-rails" -require "sassc-rails" -require "foundation-rails" require "foundation_rails_helper" -require "autoprefixer-rails" require "rectify" require "doorkeeper" require "doorkeeper-i18n" require "hashdiff" @@ -26,154 +22,231 @@ Decidim::Core::Engine.routes do mount Decidim::Admin::Engine => "/admin" end end - initializer "decidim_admin.assets" do |app| - app.config.assets.precompile += %w(decidim_admin_manifest.js) - end - initializer "decidim_admin.global_moderation_menu" do Decidim.menu :admin_global_moderation_menu do |menu| - menu.item I18n.t("actions.not_hidden", scope: "decidim.moderations"), - decidim_admin.moderations_path, - position: 1, - active: params[:hidden].blank? + menu.add_item :moderations, + I18n.t("actions.not_hidden", scope: "decidim.moderations"), + decidim_admin.moderations_path, + position: 1, + active: params[:hidden].blank? - menu.item I18n.t("actions.hidden", scope: "decidim.moderations"), - decidim_admin.moderations_path(hidden: true), - position: 2, - active: params[:hidden].present? + menu.add_item :hidden_moderations, + I18n.t("actions.hidden", scope: "decidim.moderations"), + decidim_admin.moderations_path(hidden: true), + position: 2, + active: params[:hidden].present? end end + initializer "decidim_admin.workflows_menu" do + Decidim.menu :workflows_menu do |menu| + Decidim::Verifications.admin_workflows.each do |manifest| + next unless current_organization.available_authorizations.include?(manifest.name.to_s) + + workflow = Decidim::Verifications::Adapter.new(manifest) + + menu.add_item manifest.name.to_s, + workflow.fullname, + workflow.admin_root_path, + active: is_active_link?(workflow.admin_root_path) + end + end + end + + initializer "decidim_admin.impersonate_menu" do + Decidim.menu :impersonate_menu do |menu| + menu.add_item :conflicts, + I18n.t("title", scope: "decidim.admin.conflicts"), + decidim_admin.conflicts_path, + active: is_active_link?(decidim_admin.conflicts_path), + if: allowed_to?(:index, :impersonatable_user) + end + end + + initializer "decidim_admin.admin_user_menu" do + Decidim.menu :admin_user_menu do |menu| + menu.add_item :users, + I18n.t("menu.admins", scope: "decidim.admin"), decidim_admin.users_path, + active: is_active_link?(decidim_admin.users_path), + if: allowed_to?(:read, :admin_user) + menu.add_item :user_groups, + I18n.t("menu.user_groups", scope: "decidim.admin"), decidim_admin.user_groups_path, + active: is_active_link?(decidim_admin.user_groups_path), + if: current_organization.user_groups_enabled? && allowed_to?(:index, :user_group) + menu.add_item :officializations, + I18n.t("menu.participants", scope: "decidim.admin"), decidim_admin.officializations_path, + active: is_active_link?(decidim_admin.officializations_path), + if: allowed_to?(:index, :officialization) + menu.add_item :impersonatable_users, + I18n.t("menu.impersonations", scope: "decidim.admin"), decidim_admin.impersonatable_users_path, + active: is_active_link?(decidim_admin.impersonatable_users_path), + if: allowed_to?(:index, :impersonatable_user), + submenu: { target_menu: :impersonate_menu } + + menu.add_item :moderated_users, + I18n.t("menu.reported_users", scope: "decidim.admin"), decidim_admin.moderated_users_path, + active: is_active_link?(decidim_admin.moderated_users_path), + if: allowed_to?(:index, :moderate_users) + menu.add_item :authorization_workflows, + I18n.t("menu.authorization_workflows", scope: "decidim.admin"), decidim_admin.authorization_workflows_path, + active: is_active_link?(decidim_admin.authorization_workflows_path), + if: allowed_to?(:index, :authorization), + submenu: { target_menu: :workflows_menu } + end + end + initializer "decidim_admin.admin_settings_menu" do Decidim.menu :admin_settings_menu do |menu| - menu.item I18n.t("menu.configuration", scope: "decidim.admin"), - decidim_admin.edit_organization_path, - position: 1.0, - if: allowed_to?(:update, :organization, organization: current_organization), - active: is_active_link?(decidim_admin.edit_organization_path) + menu.add_item :edit_organization, + I18n.t("menu.configuration", scope: "decidim.admin"), + decidim_admin.edit_organization_path, + position: 1.0, + if: allowed_to?(:update, :organization, organization: current_organization), + active: is_active_link?(decidim_admin.edit_organization_path) - menu.item I18n.t("menu.appearance", scope: "decidim.admin"), - decidim_admin.edit_organization_appearance_path, - position: 1.1, - if: allowed_to?(:update, :organization, organization: current_organization), - active: is_active_link?(decidim_admin.edit_organization_appearance_path) + menu.add_item :edit_organization_appearance, + I18n.t("menu.appearance", scope: "decidim.admin"), + decidim_admin.edit_organization_appearance_path, + position: 1.1, + if: allowed_to?(:update, :organization, organization: current_organization), + active: is_active_link?(decidim_admin.edit_organization_appearance_path) - menu.item I18n.t("menu.homepage", scope: "decidim.admin"), - decidim_admin.edit_organization_homepage_path, - position: 1.2, - if: allowed_to?(:update, :organization, organization: current_organization), - active: is_active_link?(decidim_admin.edit_organization_homepage_path, %r{^/admin/organization/homepage}) + menu.add_item :edit_organization_homepage, + I18n.t("menu.homepage", scope: "decidim.admin"), + decidim_admin.edit_organization_homepage_path, + position: 1.2, + if: allowed_to?(:update, :organization, organization: current_organization), + active: is_active_link?(decidim_admin.edit_organization_homepage_path, %r{^/admin/organization/homepage}) - menu.item I18n.t("menu.scopes", scope: "decidim.admin"), - decidim_admin.scopes_path, - position: 1.3, - if: allowed_to?(:read, :scope), - active: is_active_link?(decidim_admin.scopes_path) - menu.item I18n.t("menu.scope_types", scope: "decidim.admin"), - decidim_admin.scope_types_path, - position: 1.4, - if: allowed_to?(:read, :scope_type), - active: is_active_link?(decidim_admin.scope_types_path) - menu.item I18n.t("menu.areas", scope: "decidim.admin"), - decidim_admin.areas_path, - position: 1.5, - if: allowed_to?(:read, :area), - active: is_active_link?(decidim_admin.areas_path) + menu.add_item :scopes, + I18n.t("menu.scopes", scope: "decidim.admin"), + decidim_admin.scopes_path, + position: 1.3, + if: allowed_to?(:read, :scope), + active: is_active_link?(decidim_admin.scopes_path) + menu.add_item :scope_types, + I18n.t("menu.scope_types", scope: "decidim.admin"), + decidim_admin.scope_types_path, + position: 1.4, + if: allowed_to?(:read, :scope_type), + active: is_active_link?(decidim_admin.scope_types_path) + menu.add_item :areas, + I18n.t("menu.areas", scope: "decidim.admin"), + decidim_admin.areas_path, + position: 1.5, + if: allowed_to?(:read, :area), + active: is_active_link?(decidim_admin.areas_path) - menu.item I18n.t("menu.area_types", scope: "decidim.admin"), - decidim_admin.area_types_path, - position: 1.6, - if: allowed_to?(:read, :area_type), - active: is_active_link?(decidim_admin.area_types_path) + menu.add_item :area_types, + I18n.t("menu.area_types", scope: "decidim.admin"), + decidim_admin.area_types_path, + position: 1.6, + if: allowed_to?(:read, :area_type), + active: is_active_link?(decidim_admin.area_types_path) - menu.item I18n.t("menu.help_sections", scope: "decidim.admin"), - decidim_admin.help_sections_path, - position: 1.6, - if: allowed_to?(:update, :help_sections), - active: is_active_link?(decidim_admin.help_sections_path) + menu.add_item :help_sections, + I18n.t("menu.help_sections", scope: "decidim.admin"), + decidim_admin.help_sections_path, + position: 1.6, + if: allowed_to?(:update, :help_sections), + active: is_active_link?(decidim_admin.help_sections_path) + + menu.add_item :external_domain_whitelist, + I18n.t("menu.external_domain_whitelist", scope: "decidim.admin"), + decidim_admin.edit_organization_external_domain_whitelist_path, + position: 1.7, + if: allowed_to?(:update, :organization, organization: current_organization), + active: is_active_link?(decidim_admin.edit_organization_external_domain_whitelist_path) end end initializer "decidim_admin.menu" do Decidim.menu :admin_menu do |menu| - menu.item I18n.t("menu.dashboard", scope: "decidim.admin"), - decidim_admin.root_path, - icon_name: "dashboard", - position: 1, - active: ["decidim/admin/dashboard" => :show] + menu.add_item :dashboard, + I18n.t("menu.dashboard", scope: "decidim.admin"), + decidim_admin.root_path, + icon_name: "dashboard", + position: 1, + active: ["decidim/admin/dashboard" => :show] - menu.item I18n.t("menu.moderation", scope: "decidim.admin"), - decidim_admin.moderations_path, - icon_name: "flag", - position: 4, - active: [%w( - decidim/admin/global_moderations - decidim/admin/global_moderations/reports - ), []], - if: allowed_to?(:read, :global_moderation) + menu.add_item :moderations, + I18n.t("menu.moderation", scope: "decidim.admin"), + decidim_admin.moderations_path, + icon_name: "flag", + position: 4, + active: [%w( + decidim/admin/global_moderations + decidim/admin/global_moderations/reports + ), []], + if: allowed_to?(:read, :global_moderation) - menu.item I18n.t("menu.static_pages", scope: "decidim.admin"), - decidim_admin.static_pages_path, - icon_name: "book", - position: 4.5, - active: [%w( - decidim/admin/static_pages - decidim/admin/static_page_topics - ), []], - if: allowed_to?(:read, :static_page) + menu.add_item :static_pages, + I18n.t("menu.static_pages", scope: "decidim.admin"), + decidim_admin.static_pages_path, + icon_name: "book", + position: 4.5, + active: [%w( + decidim/admin/static_pages + decidim/admin/static_page_topics + ), []], + if: allowed_to?(:read, :static_page) - menu.item I18n.t("menu.users", scope: "decidim.admin"), - allowed_to?(:read, :admin_user) ? decidim_admin.users_path : decidim_admin.impersonatable_users_path, - icon_name: "person", - position: 5, - active: [%w( - decidim/admin/users - decidim/admin/user_groups - decidim/admin/user_groups_csv_verifications - decidim/admin/officializations - decidim/admin/impersonatable_users - decidim/admin/moderated_users - decidim/admin/managed_users/impersonation_logs - decidim/admin/managed_users/promotions - decidim/admin/authorization_workflows - ), []], - if: allowed_to?(:read, :admin_user) || allowed_to?(:read, :managed_user) + menu.add_item :impersonatable_users, + I18n.t("menu.users", scope: "decidim.admin"), + allowed_to?(:read, :admin_user) ? decidim_admin.users_path : decidim_admin.impersonatable_users_path, + icon_name: "person", + position: 5, + active: [%w( + decidim/admin/users + decidim/admin/user_groups + decidim/admin/user_groups_csv_verifications + decidim/admin/officializations + decidim/admin/impersonatable_users + decidim/admin/moderated_users + decidim/admin/managed_users/impersonation_logs + decidim/admin/managed_users/promotions + decidim/admin/authorization_workflows + ), []], + if: allowed_to?(:read, :admin_user) || allowed_to?(:read, :managed_user) - menu.item I18n.t("menu.newsletters", scope: "decidim.admin"), - decidim_admin.newsletters_path, - icon_name: "envelope-closed", - position: 6, - active: is_active_link?(decidim_admin.newsletters_path, :inclusive) || - is_active_link?(decidim_admin.newsletter_templates_path, :inclusive), - if: allowed_to?(:index, :newsletter) + menu.add_item :newsletters, + I18n.t("menu.newsletters", scope: "decidim.admin"), + decidim_admin.newsletters_path, + icon_name: "envelope-closed", + position: 6, + active: is_active_link?(decidim_admin.newsletters_path, :inclusive) || + is_active_link?(decidim_admin.newsletter_templates_path, :inclusive), + if: allowed_to?(:index, :newsletter) - menu.item I18n.t("menu.settings", scope: "decidim.admin"), - decidim_admin.edit_organization_path, - icon_name: "wrench", - position: 7, - active: [ - %w( - decidim/admin/organization - decidim/admin/organization_appearance - decidim/admin/organization_homepage - decidim/admin/organization_homepage_content_blocks - decidim/admin/scopes - decidim/admin/scope_types - decidim/admin/areas decidim/admin/area_types - ), - [] - ], - if: allowed_to?(:update, :organization, organization: current_organization) + menu.add_item :edit_organization, + I18n.t("menu.settings", scope: "decidim.admin"), + decidim_admin.edit_organization_path, + icon_name: "wrench", + position: 7, + active: [ + %w( + decidim/admin/organization + decidim/admin/organization_appearance + decidim/admin/organization_homepage + decidim/admin/organization_homepage_content_blocks + decidim/admin/scopes + decidim/admin/scope_types + decidim/admin/areas decidim/admin/area_types + ), + [] + ], + if: allowed_to?(:update, :organization, organization: current_organization) - menu.item I18n.t("menu.admin_log", scope: "decidim.admin"), - decidim_admin.logs_path, - icon_name: "dashboard", - position: 10, - active: [%w(decidim/admin/logs), []], - if: allowed_to?(:read, :admin_log) + menu.add_item :logs, + I18n.t("menu.admin_log", scope: "decidim.admin"), + decidim_admin.logs_path, + icon_name: "dashboard", + position: 10, + active: [%w(decidim/admin/logs), []], + if: allowed_to?(:read, :admin_log) end end initializer "decidim_admin.add_cells_view_paths" do Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Admin::Engine.root}/app/cells")