podemos-info/participa2

View on GitHub
decidim-module-votings/lib/decidim/votings/engine.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require "rails"
require "active_support/all"

require "decidim/core"

module Decidim
  module Votings
    # Decidim's <EngineName> Rails Engine.
    class Engine < ::Rails::Engine
      isolate_namespace Decidim::Votings

      routes do
        resources :votings, only: [:index, :show] do
          get :token
          resource :vote, only: [:show] do
            get :token
          end
        end

        root to: "votings#index"
      end

      initializer "decidim_votings.assets" do |app|
        app.config.assets.precompile += %w(decidim_votings_manifest.js decidim_votings_manifest.css)
      end

      initializer "decidim_votings.view_hooks" do
        Decidim.view_hooks.register(:participatory_space_highlighted_elements, priority: Decidim::ViewHooks::HIGH_PRIORITY) do |view_context|
          published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
          votings = Decidim::Votings::Voting.active_range(Decidim::Votings.upcoming_hours.hours, Decidim::Votings.closed_hours.hours)
                                            .for_component(published_components)
                                            .limit(Decidim::Votings.config.participatory_space_highlighted_voting_limit)
          next unless votings.any?

          view_context.extend Decidim::Votings::VotingsHelper
          view_context.render(
            partial: "decidim/participatory_spaces/highlighted_votings",
            locals: {
              votings: votings
            }
          )
        end
      end

      initializer "decidim_votings.add_cells" do
        Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Votings::Engine.root}/app/cells")
        Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Votings::Engine.root}/app/views") # for partials
      end
    end
  end
end