# frozen_string_literal: true require "rails" 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" module Decidim module Admin # Decidim's core Rails Engine. class Engine < ::Rails::Engine isolate_namespace Decidim::Admin initializer "decidim_admin.mount_routes" do |_app| 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.inject_abilities_to_user" do |_app| Decidim.configure do |config| config.admin_abilities += [ "Decidim::Admin::Abilities::AdminAbility", "Decidim::Admin::Abilities::UserManagerAbility", "Decidim::Admin::Abilities::ParticipatoryProcessAdminAbility", "Decidim::Admin::Abilities::ParticipatoryProcessCollaboratorAbility", "Decidim::Admin::Abilities::ParticipatoryProcessModeratorAbility" ] 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.item I18n.t("menu.static_pages", scope: "decidim.admin"), decidim_admin.static_pages_path, icon_name: "book", position: 4, active: :inclusive, if: can?(:read, Decidim::StaticPage) menu.item I18n.t("menu.users", scope: "decidim.admin"), can?(:read, :admin_users) ? decidim_admin.users_path : decidim_admin.managed_users_path, icon_name: "person", position: 5, active: [%w(decidim/admin/user_groups decidim/admin/users decidim/admin/managed_users decidim/admin/authorization_workflows), []], if: can?(:read, :admin_users) || can?(:read, :managed_users) menu.item I18n.t("menu.newsletters", scope: "decidim.admin"), decidim_admin.newsletters_path, icon_name: "envelope-closed", position: 6, active: :inclusive, if: can?(:index, Decidim::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/scopes decidim/admin/scope_types), []], if: can?(:read, 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: can?(:read, :admin_log) end end end end end