simple_pager 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/simple_pager.rb +44 -0
  2. metadata +65 -0
@@ -0,0 +1,44 @@
1
+ require 'active_record'
2
+ module SimplePager
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+ # = Simple Paginating for ActiveRecord models
7
+ #
8
+ # Adds pager scope to all ActiveRecord models. Works similar to will_paginate but does not count the collection.
9
+ # You can't set a universal per_page yet, but you can set it on the model. Defaults to 30.
10
+ #
11
+ # @posts = Post.pager(:page => params[:page]).order('created_at DESC')
12
+ module ClassMethods
13
+ def pager(pp={})
14
+ limit(pp[:per_page] || (self.respond_to?(:per_page) ? self.per_page : 30)).
15
+ offset(pp[:page].blank? ? 0 : ((pp[:page].to_i-1)*(pp[:per_page] || (self.respond_to?(:per_page) ? self.per_page : 30))))
16
+ end
17
+ end
18
+ end
19
+
20
+ module SimplePagerHelper
21
+ def simple_pager(collection,per_page=nil,prev_name='Previous',next_name='More')
22
+ return if !collection
23
+ per_page = collection.first.class.per_page if per_page.blank? and collection.first.class.respond_to?(:per_page)
24
+ per_page ||= 30
25
+ pprev = ''
26
+ pnext = ''
27
+ prefix = ''
28
+ if params[:page] and params[:page].to_i > 1
29
+ if collection.empty?
30
+ prefix = content_tag(:p,"There are no more.")
31
+ end
32
+ pprev = content_tag(:li, link_to( "← #{prev_name}".html_safe, request.query_parameters.merge({:page => (params[:page].to_i - 1)}) ),:class => 'previous')
33
+ end
34
+ if !@no_more_pages and collection.size >= per_page
35
+ pnext = content_tag(:li, link_to( "#{next_name} →".html_safe, request.query_parameters.merge({:page => (params[:page] ? params[:page].to_i + 1 : 2)}) ),:class => 'next')
36
+ end
37
+ (prefix + content_tag(:ul, (pprev+pnext).html_safe, :class => 'pager')).html_safe
38
+ end
39
+ end
40
+
41
+
42
+ # mix everything into rails
43
+ ActiveRecord::Base.send(:include, SimplePager)
44
+ ActionView::Base.send( :include, SimplePagerHelper)
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_pager
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Peter Gerard
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-10-05 00:00:00 Z
19
+ dependencies: []
20
+
21
+ description: Super lightweight and simple Rails 3 pagination for when you don't need to count the number of items or pages. simple_pager shows Previous and More links.
22
+ email:
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/simple_pager.rb
31
+ homepage: https://github.com/accidental/simple_pager
32
+ licenses: []
33
+
34
+ post_install_message:
35
+ rdoc_options: []
36
+
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.8.10
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Super simple pagination for Rails 3
64
+ test_files: []
65
+