Sha256: 1390fb478a9e93b51cccfe63cdf127568b39fafb0167df533fdb2d92242ec517

Contents?: true

Size: 1.46 KB

Versions: 32

Compression:

Stored size: 1.46 KB

Contents

module Patches
  module Kaminari
    module Helpers
      module Tag
        def self.included(klass)
          klass.class_eval do
            remove_method :page_url_for
          end
        end

        def page_url_for page
          p = params_for(page)
          p.delete :controller
          p.delete :action
          if p["related"]
            p["related"]["page"] = p["page"]
            p["related"]["subslot"] = true
            p = p["related"]
          end
          id = p.delete("id") || p.delete("name")
          Card.fetch(id).format.path p
        end

        private

        def params_for page
          page_params = Rack::Utils.parse_nested_query "#{@param_name}=#{page}"
          page_params = @params.with_indifferent_access.deep_merge(page_params)

          if ::Kaminari.config.respond_to?(:params_on_first_page) &&
             !::Kaminari.config.params_on_first_page && page <= 1
            # This converts a hash:
            #   from: {other: "params", page: 1}
            #     to: {other: "params", page: nil}
            #   (when @param_name == "page")
            #
            #   from: {other: "params", user: {name: "yuki", page: 1}}
            #     to: {other: "params", user: {name: "yuki", page: nil}}
            #   (when @param_name == "user[page]")
            @param_name.to_s.scan(/\w+/)[0..-2]
              .inject(page_params) { |h, k| h[k] }[$&] = nil
          end

          page_params
        end
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
card-1.94.1 config/initializers/02_patches/kaminari.rb
card-1.94.0 config/initializers/02_patches/kaminari.rb
card-1.93.13 config/initializers/02_patches/kaminari.rb
card-1.93.12 config/initializers/02_patches/kaminari.rb
card-1.93.11 config/initializers/02_patches/kaminari.rb
card-1.93.10 config/initializers/02_patches/kaminari.rb
card-1.93.9 config/initializers/02_patches/kaminari.rb
card-1.93.8 config/initializers/02_patches/kaminari.rb
card-1.93.7 config/initializers/02_patches/kaminari.rb
card-1.93.6 config/initializers/02_patches/kaminari.rb
card-1.93.5 config/initializers/02_patches/kaminari.rb
card-1.93.4 config/initializers/02_patches/kaminari.rb
card-1.93.3 config/initializers/02_patches/kaminari.rb
card-1.93.2 config/initializers/02_patches/kaminari.rb
card-1.93.1 config/initializers/02_patches/kaminari.rb
card-1.93.0 config/initializers/02_patches/kaminari.rb
card-1.92.2 config/initializers/02_patches/kaminari.rb
card-1.92.1 config/initializers/02_patches/kaminari.rb
card-1.92 config/initializers/02_patches/kaminari.rb
card-1.91 config/initializers/02_patches/kaminari.rb