will_paginate 2.2.1 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of will_paginate might be problematic. Click here for more details.

data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ == 2.2.2, released 2008-04-21
2
+
3
+ * Add support for page parameter in custom routes like "/foo/page/2"
4
+ * Change output of "page_entries_info" on single-page collection and erraneous
5
+ output with empty collection as reported by Tim Chater
6
+
1
7
  == 2.2.1, released 2008-04-08
2
8
 
3
9
  * take less risky path when monkeypatching named_scope; fix that it no longer
data/README.rdoc CHANGED
@@ -114,7 +114,7 @@ contributions or just simply awesome ideas:
114
114
  Chris Wanstrath, Dr. Nic Williams, K. Adam Christensen, Mike Garey, Bence
115
115
  Golda, Matt Aimonetti, Charles Brian Quinn, Desi McAdam, James Coglan, Matijs
116
116
  van Zuijlen, Maria, Brendan Ribera, Todd Willey, Bryan Helmkamp, Jan Berkel,
117
- Lourens Naudé, Rick Olson.
117
+ Lourens Naudé, Rick Olson, Russell Norris.
118
118
 
119
119
 
120
120
  == Usable pagination in the UI
data/Rakefile CHANGED
@@ -1,6 +1,4 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
1
+ require File.dirname(__FILE__) + '/lib/rake_hacks'
4
2
 
5
3
  desc 'Default: run unit tests.'
6
4
  task :default => :test
@@ -12,17 +10,6 @@ Rake::TestTask.new(:test) do |t|
12
10
  t.libs << 'test'
13
11
  end
14
12
 
15
- # I want to specify environment variables at call time
16
- class EnvTestTask < Rake::TestTask
17
- attr_accessor :env
18
-
19
- def ruby(*args)
20
- env.each { |key, value| ENV[key] = value } if env
21
- super
22
- env.keys.each { |key| ENV.delete key } if env
23
- end
24
- end
25
-
26
13
  for configuration in %w( sqlite3 mysql postgres )
27
14
  EnvTestTask.new("test_#{configuration}") do |t|
28
15
  t.pattern = 'test/finder_test.rb'
@@ -52,7 +39,7 @@ task :test_all do
52
39
  end
53
40
 
54
41
  desc 'Generate RDoc documentation for the will_paginate plugin.'
55
- Rake::RDocTask.new(:rdoc) do |rdoc|
42
+ Rake::RDocTask.new(:doc) do |rdoc|
56
43
  files = ['README.rdoc', 'LICENSE', 'CHANGELOG']
57
44
  files << FileList.new('lib/**/*.rb').
58
45
  exclude('lib/will_paginate/named_scope*').
@@ -63,8 +50,8 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
63
50
  rdoc.main = "README.rdoc" # page to start on
64
51
  rdoc.title = "will_paginate documentation"
65
52
 
66
- templates = %w[/Users/chris/ruby/projects/err/rock/template.rb /var/www/rock/template.rb]
67
- rdoc.template = templates.find { |t| File.exists? t }
53
+ my_template = '/home/mislav/projects/rdoc_template/mislav.rb'
54
+ rdoc.template = my_template if File.exists? my_template
68
55
 
69
56
  rdoc.rdoc_dir = 'doc' # rdoc output folder
70
57
  rdoc.options << '--inline-source'
@@ -2,7 +2,7 @@ module WillPaginate #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
4
  MINOR = 2
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -132,11 +132,19 @@ module WillPaginate
132
132
  # <%= page_entries_info @posts %>
133
133
  # #-> Displaying entries 6 - 10 of 26 in total
134
134
  def page_entries_info(collection)
135
- %{Displaying entries <b>%d&nbsp;-&nbsp;%d</b> of <b>%d</b> in total} % [
136
- collection.offset + 1,
137
- collection.offset + collection.length,
138
- collection.total_entries
139
- ]
135
+ if collection.total_pages < 2
136
+ case collection.size
137
+ when 0; 'No entries found'
138
+ when 1; 'Displaying <b>1</b> entry'
139
+ else; "Displaying <b>all #{collection.size}</b> entries"
140
+ end
141
+ else
142
+ %{Displaying entries <b>%d&nbsp;-&nbsp;%d</b> of <b>%d</b> in total} % [
143
+ collection.offset + 1,
144
+ collection.offset + collection.length,
145
+ collection.total_entries
146
+ ]
147
+ end
140
148
  end
141
149
 
142
150
  def self.total_pages_for_collection(collection) #:nodoc:
@@ -272,7 +280,7 @@ module WillPaginate
272
280
  end
273
281
 
274
282
  url = @template.url_for(@url_params)
275
- @url_string = url.sub(/([?&]#{CGI.escape param_name}=)#{page}/, '\1@')
283
+ @url_string = url.sub(%r!([?&/]#{CGI.escape param_name}[=/])#{page}!, '\1@')
276
284
  return url
277
285
  end
278
286
  @url_string.sub '@', page.to_s
@@ -5,15 +5,19 @@ require 'will_paginate'
5
5
  WillPaginate.enable_actionpack
6
6
 
7
7
  ActionController::Routing::Routes.draw do |map|
8
+ map.connect 'dummy/page/:page', :controller => 'dummy'
8
9
  map.connect ':controller/:action/:id'
9
10
  end
10
11
 
11
12
  ActionController::Base.perform_caching = false
12
13
 
13
14
  class DummyRequest
15
+ attr_accessor :symbolized_path_parameters
16
+
14
17
  def initialize
15
18
  @get = true
16
19
  @params = {}
20
+ @symbolized_path_parameters = { :controller => 'foo', :action => 'bar' }
17
21
  end
18
22
 
19
23
  def get?
@@ -24,10 +28,6 @@ class DummyRequest
24
28
  @get = false
25
29
  end
26
30
 
27
- def symbolized_path_parameters
28
- { :controller => 'foo', :action => 'bar' }
29
- end
30
-
31
31
  def relative_url_root
32
32
  ''
33
33
  end
data/test/view_test.rb CHANGED
@@ -156,6 +156,19 @@ class ViewTest < Test::Unit::TestCase
156
156
  assert_equal %{Displaying entries <b>25&nbsp;-&nbsp;26</b> of <b>26</b> in total},
157
157
  @html_result
158
158
  end
159
+
160
+ def test_page_entries_info_with_single_page_collection
161
+ @template = '<%= page_entries_info collection %>'
162
+
163
+ paginate(('a'..'d').to_a.paginate(:page => 1, :per_page => 5))
164
+ assert_equal %{Displaying <b>all 4</b> entries}, @html_result
165
+
166
+ paginate(['a'].paginate(:page => 1, :per_page => 5))
167
+ assert_equal %{Displaying <b>1</b> entry}, @html_result
168
+
169
+ paginate([].paginate(:page => 1, :per_page => 5))
170
+ assert_equal %{No entries found}, @html_result
171
+ end
159
172
 
160
173
  ## parameter handling in page links ##
161
174
 
@@ -207,6 +220,15 @@ class ViewTest < Test::Unit::TestCase
207
220
  end
208
221
  end
209
222
 
223
+ def test_custom_routing_page_param
224
+ @request.symbolized_path_parameters.update :controller => 'dummy', :action => nil
225
+ paginate :per_page => 2 do
226
+ assert_select 'a[href]', 6 do |links|
227
+ assert_links_match %r{/page/(\d+)$}, links, [2, 3, 4, 5, 6, 2]
228
+ end
229
+ end
230
+ end
231
+
210
232
  ## internal hardcore stuff ##
211
233
 
212
234
  class LegacyCollection < WillPaginate::Collection
@@ -294,14 +316,22 @@ class ViewTest < Test::Unit::TestCase
294
316
  })
295
317
  end
296
318
 
297
- def assert_links_match pattern, links = nil
319
+ def assert_links_match pattern, links = nil, numbers = nil
298
320
  links ||= assert_select 'div.pagination a[href]' do |elements|
299
321
  elements
300
322
  end
323
+
324
+ pages = [] if numbers
301
325
 
302
326
  links.each do |el|
303
327
  assert_match pattern, el['href']
328
+ if numbers
329
+ el['href'] =~ pattern
330
+ pages << $1.to_i
331
+ end
304
332
  end
333
+
334
+ assert_equal pages, numbers, "page numbers don't match" if numbers
305
335
  end
306
336
 
307
337
  def assert_no_links_match pattern
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: will_paginate
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Mislav Marohni\xC4\x87"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-04-08 00:00:00 +02:00
12
+ date: 2008-04-21 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  requirements: []
93
93
 
94
94
  rubyforge_project: will-paginate
95
- rubygems_version: 1.1.0
95
+ rubygems_version: 1.1.1
96
96
  signing_key:
97
97
  specification_version: 2
98
98
  summary: Most awesome pagination solution for Rails