Sha256: b3ea6f47a0ee1ad82ae75b814fdeb728d15ecc6faf9a7ec93ea196c5c5268299

Contents?: true

Size: 1.37 KB

Versions: 30

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module Decidim
  module Initiatives
    # Common logic to ordering resources
    module Orderable
      extend ActiveSupport::Concern

      included do
        include Decidim::Orderable

        # Available orders based on enabled settings
        def available_orders
          @available_orders ||= begin
            available_orders = %w(random recent most_voted most_commented recently_published)
            available_orders
          end
        end

        def default_order
          "random"
        end

        def reorder(initiatives)
          case order
          when "most_voted"
            initiatives.order_by_supports
          when "most_commented"
            initiatives.order_by_most_commented
          when "recent"
            initiatives.order_by_most_recent
          when "recently_published"
            initiatives.order_by_most_recently_published
          else
            initiatives.order_randomly(random_seed)
          end
        end

        def order
          @order ||= detect_order(params[:order]) || current_initiatives_settings.initiatives_order || default_order
        end

        def current_initiatives_settings
          @current_initiatives_settings ||= Decidim::InitiativesSettings.find_or_create_by!(organization: current_organization)
        end
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
decidim-initiatives-0.30.0.rc3 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.30.0.rc2 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.30.0.rc1 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.2 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.5 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.1 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.4 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.27.9 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.0 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.3 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.27.8 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.0.rc4 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.0.rc3 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.0.rc2 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.29.0.rc1 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.2 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.27.7 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.1 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.27.6 app/controllers/concerns/decidim/initiatives/orderable.rb
decidim-initiatives-0.28.0 app/controllers/concerns/decidim/initiatives/orderable.rb