blacklight 5.11.3 → 5.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -4
- data/app/helpers/blacklight/facets_helper_behavior.rb +10 -6
- data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +1 -0
- data/app/views/bookmarks/index.html.erb +0 -1
- data/blacklight.gemspec +1 -1
- data/config/locales/blacklight.en.yml +1 -0
- data/lib/blacklight.rb +2 -1
- data/lib/blacklight/bookmarks.rb +2 -0
- data/lib/blacklight/catalog.rb +1 -1
- data/lib/blacklight/configuration.rb +8 -1
- data/lib/blacklight/configuration/fields.rb +20 -10
- data/lib/blacklight/document.rb +43 -13
- data/lib/blacklight/document_presenter.rb +8 -4
- data/lib/blacklight/facet.rb +6 -54
- data/lib/blacklight/request_builders.rb +2 -2
- data/lib/blacklight/search_builder.rb +48 -18
- data/lib/blacklight/search_helper.rb +10 -10
- data/lib/blacklight/solr.rb +1 -1
- data/lib/blacklight/solr/search_builder.rb +2 -265
- data/lib/blacklight/solr/search_builder_behavior.rb +274 -0
- data/lib/blacklight/solr_repository.rb +1 -1
- data/lib/blacklight/solr_response.rb +8 -16
- data/lib/blacklight/solr_response/facets.rb +133 -25
- data/lib/blacklight/solr_response/group_response.rb +1 -1
- data/lib/blacklight/solr_response/pagination_methods.rb +0 -17
- data/lib/generators/blacklight/install_generator.rb +6 -1
- data/lib/generators/blacklight/search_builder_generator.rb +20 -0
- data/lib/generators/blacklight/templates/search_builder.rb +3 -0
- data/lib/railties/blacklight.rake +1 -1
- data/spec/controllers/catalog_controller_spec.rb +9 -9
- data/spec/helpers/blacklight_helper_spec.rb +29 -179
- data/spec/helpers/facets_helper_spec.rb +37 -75
- data/spec/helpers/url_helper_spec.rb +1 -1
- data/spec/lib/blacklight/configuration_spec.rb +18 -1
- data/spec/lib/blacklight/document_spec.rb +62 -0
- data/spec/lib/blacklight/search_builder_spec.rb +15 -13
- data/spec/lib/blacklight/search_helper_spec.rb +15 -16
- data/spec/lib/blacklight/solr/document_spec.rb +5 -3
- data/spec/lib/blacklight/solr/search_builder_spec.rb +0 -5
- data/spec/lib/blacklight/solr_response/facets_spec.rb +144 -10
- data/spec/lib/blacklight/solr_response_spec.rb +5 -13
- data/spec/lib/document_presenter_spec.rb +23 -27
- data/spec/views/catalog/_facets.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_index_default.erb_spec.rb +2 -13
- data/spec/views/catalog/_show_default.erb_spec.rb +1 -13
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e42546dfea7f15e6d7fb7840dc8c565dc1a2f4d
|
4
|
+
data.tar.gz: 4f80a2c7b454658bd1be662f9509224db5eeee47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8fbed4b5264a3d96387cb0fafe1e39f7e18ad2c1b2847ab357f9c749ff6e63028876db67ed7906ae21f765bfbac900a9dfd891faa2df981a861c63fabb14790
|
7
|
+
data.tar.gz: 99196a24351223263018890b8acd9d0d9c5a0adcc2d0793fe44f6f9310d4d803fead0e0930d3fc16e2ddc05d6a1459fb1c6578685d14a23f965f85f3cc2dc3c5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.12.0
|
@@ -183,7 +183,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
183
183
|
document = args.shift || options[:document]
|
184
184
|
|
185
185
|
field = args.shift || options[:field]
|
186
|
-
presenter(document).render_index_field_value field, options
|
186
|
+
presenter(document).render_index_field_value field, options.except(:document, :field)
|
187
187
|
end
|
188
188
|
|
189
189
|
##
|
@@ -236,7 +236,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
236
236
|
document = args.shift || options[:document]
|
237
237
|
|
238
238
|
field = args.shift || options[:field]
|
239
|
-
presenter(document).render_document_show_field_value field, options
|
239
|
+
presenter(document).render_document_show_field_value field, options.except(:document, :field)
|
240
240
|
end
|
241
241
|
|
242
242
|
##
|
@@ -14,11 +14,9 @@ module Blacklight::CatalogHelperBehavior
|
|
14
14
|
entry_name = if options[:entry_name]
|
15
15
|
options[:entry_name]
|
16
16
|
elsif collection.respond_to? :model # DataMapper
|
17
|
-
|
17
|
+
collection.model.model_name.human.downcase
|
18
18
|
elsif collection.respond_to? :model_name and !collection.model_name.nil? # AR, Blacklight::PaginationMethods
|
19
|
-
|
20
|
-
elsif collection.is_a?(::Kaminari::PaginatableArray)
|
21
|
-
'entry'
|
19
|
+
collection.model_name.human.downcase
|
22
20
|
else
|
23
21
|
t('blacklight.entry_name.default')
|
24
22
|
end
|
@@ -159,7 +159,7 @@ module Blacklight::FacetsHelperBehavior
|
|
159
159
|
# @param [String] facet field
|
160
160
|
# @return [Boolean]
|
161
161
|
def facet_field_in_params? field
|
162
|
-
|
162
|
+
!facet_params(field).blank?
|
163
163
|
end
|
164
164
|
|
165
165
|
##
|
@@ -170,13 +170,17 @@ module Blacklight::FacetsHelperBehavior
|
|
170
170
|
# @param [Object] facet value
|
171
171
|
# @return [Boolean]
|
172
172
|
def facet_in_params?(field, item)
|
173
|
-
if item and item.respond_to? :field
|
174
|
-
field = item.field
|
175
|
-
end
|
176
|
-
|
177
173
|
value = facet_value_for_facet_item(item)
|
178
174
|
|
179
|
-
|
175
|
+
(facet_params(field) || []).include? value
|
176
|
+
end
|
177
|
+
|
178
|
+
##
|
179
|
+
# Get the values of the facet set in the blacklight query string
|
180
|
+
def facet_params field
|
181
|
+
config = facet_configuration_for_field(field)
|
182
|
+
|
183
|
+
params[:f][config.key] if params[:f]
|
180
184
|
end
|
181
185
|
|
182
186
|
##
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= link_to t('blacklight.bookmarks.clear.action_title'), clear_bookmarks_path, :method => :delete, :data => { :confirm => t('blacklight.bookmarks.clear.action_confirm') }, :class => 'clear-bookmarks btn btn-danger' %>
|
@@ -9,7 +9,6 @@
|
|
9
9
|
|
10
10
|
<h3 class='section-heading'><%= t('blacklight.bookmarks.no_bookmarks') %></h3>
|
11
11
|
<% else %>
|
12
|
-
<%= link_to t('blacklight.bookmarks.clear.action_title'), clear_bookmarks_path, :method => :delete, :data => { :confirm => t('blacklight.bookmarks.clear.action_confirm') }, :class => 'clear-bookmarks btn btn-danger pull-right' %>
|
13
12
|
<%= render 'sort_and_per_page' %>
|
14
13
|
<%= render partial: 'tools', locals: { document_list: @document_list } %>
|
15
14
|
|
data/blacklight.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_dependency "rails", ">= 3.2.6", "< 5"
|
21
21
|
s.add_dependency "nokogiri", "~>1.6" # XML Parser
|
22
|
-
s.add_dependency "kaminari", "~> 0.
|
22
|
+
s.add_dependency "kaminari", "~> 0.15" # the pagination (page 1,2,3, etc..) of our search results
|
23
23
|
s.add_dependency "rsolr", "~> 1.0.11" # Library for interacting with rSolr.
|
24
24
|
s.add_dependency "bootstrap-sass", "~> 3.2"
|
25
25
|
s.add_dependency "deprecation"
|
data/lib/blacklight.rb
CHANGED
@@ -8,7 +8,8 @@ module Blacklight
|
|
8
8
|
autoload :Configuration, 'blacklight/configuration'
|
9
9
|
autoload :SearchFields, 'blacklight/search_fields'
|
10
10
|
autoload :SearchBuilder, 'blacklight/search_builder'
|
11
|
-
|
11
|
+
autoload :SearchBuilderBehavior, 'blacklight/search_builder_behavior'
|
12
|
+
|
12
13
|
autoload :Document, 'blacklight/document'
|
13
14
|
autoload :Solr, 'blacklight/solr'
|
14
15
|
|
data/lib/blacklight/bookmarks.rb
CHANGED
@@ -15,6 +15,8 @@ module Blacklight::Bookmarks
|
|
15
15
|
|
16
16
|
before_filter :verify_user
|
17
17
|
|
18
|
+
blacklight_config.add_results_collection_tool(:clear_bookmarks_widget)
|
19
|
+
|
18
20
|
blacklight_config.show.document_actions[:bookmark].if = false if blacklight_config.show.document_actions[:bookmark]
|
19
21
|
blacklight_config.show.document_actions[:sms].if = false if blacklight_config.show.document_actions[:sms]
|
20
22
|
end
|
data/lib/blacklight/catalog.rb
CHANGED
@@ -78,7 +78,7 @@ module Blacklight::Catalog
|
|
78
78
|
def facet
|
79
79
|
@facet = blacklight_config.facet_fields[params[:id]]
|
80
80
|
@response = get_facet_field_response(@facet.key, params)
|
81
|
-
@display_facet = @response.
|
81
|
+
@display_facet = @response.aggregations[@facet.key]
|
82
82
|
|
83
83
|
@pagination = facet_paginator(@facet, @display_facet)
|
84
84
|
|
@@ -212,7 +212,14 @@ module Blacklight
|
|
212
212
|
end
|
213
213
|
|
214
214
|
def search_builder_class
|
215
|
-
super ||
|
215
|
+
super || locate_search_builder_class
|
216
|
+
end
|
217
|
+
|
218
|
+
def locate_search_builder_class
|
219
|
+
::SearchBuilder
|
220
|
+
rescue NameError
|
221
|
+
Deprecation.warn(Configuration, "Your application is missing the SearchBuilder. Have you run `rails generate blacklight:search_builder`? Falling back to Blacklight::Solr::SearchBuilder")
|
222
|
+
Blacklight::Solr::SearchBuilder
|
216
223
|
end
|
217
224
|
|
218
225
|
def default_per_page
|
@@ -82,17 +82,23 @@ module Blacklight
|
|
82
82
|
field_config_from_field_or_hash(config_key, *args)
|
83
83
|
end
|
84
84
|
|
85
|
+
if (field_config.field || field_config.key).to_s =~ /\*/
|
86
|
+
field_config.match = Regexp.new("^" + (field_config.field || field_config.key).to_s.gsub('*', '.+') + "$")
|
87
|
+
end
|
88
|
+
|
85
89
|
# look up any dynamic fields
|
86
|
-
if
|
87
|
-
|
88
|
-
salient_fields = luke_fields.select do |k,v|
|
89
|
-
k =~
|
90
|
+
if field_config.match
|
91
|
+
|
92
|
+
salient_fields = luke_fields.select do |k,v|
|
93
|
+
k =~ field_config.match
|
90
94
|
end
|
91
95
|
|
92
96
|
salient_fields.each do |field, luke_config|
|
93
97
|
config = field_config.dup
|
98
|
+
config.match = nil
|
94
99
|
config.field = field
|
95
100
|
config.key = field
|
101
|
+
|
96
102
|
if self[config_key.pluralize][ config.key ]
|
97
103
|
self[config_key.pluralize][ config.key ] = config.merge(self[config_key.pluralize][ config.key ])
|
98
104
|
else
|
@@ -123,15 +129,19 @@ module Blacklight
|
|
123
129
|
return nil
|
124
130
|
end
|
125
131
|
|
126
|
-
@table[:luke_fields] ||=
|
127
|
-
|
128
|
-
|
132
|
+
@table[:luke_fields] ||= Rails.cache.fetch("blacklight_configuration/admin/luke", expires_in: 1.hour) do
|
133
|
+
begin
|
134
|
+
if repository_class == Blacklight::SolrRepository
|
135
|
+
repository = repository_class.new(self)
|
136
|
+
repository.send_and_receive('admin/luke', params: { fl: '*', 'json.nl' => 'map' })['fields']
|
137
|
+
end
|
138
|
+
rescue => e
|
139
|
+
Blacklight.logger.warn "Error retrieving field metadata: #{e}"
|
140
|
+
false
|
129
141
|
end
|
130
|
-
rescue
|
131
|
-
false
|
132
142
|
end
|
133
143
|
|
134
|
-
@table[:luke_fields] ||
|
144
|
+
@table[:luke_fields] || {}
|
135
145
|
end
|
136
146
|
|
137
147
|
# Add a solr field by a solr field name and hash
|
data/lib/blacklight/document.rb
CHANGED
@@ -26,6 +26,8 @@ module Blacklight::Document
|
|
26
26
|
include Blacklight::Document::SemanticFields
|
27
27
|
include Blacklight::Document::Export
|
28
28
|
|
29
|
+
extend Deprecation
|
30
|
+
|
29
31
|
included do
|
30
32
|
extend ActiveModel::Naming
|
31
33
|
include Blacklight::Document::Extensions
|
@@ -52,7 +54,7 @@ module Blacklight::Document
|
|
52
54
|
# If a method is missing, it gets sent to @_source
|
53
55
|
# with all of the original params and block
|
54
56
|
def method_missing(m, *args, &b)
|
55
|
-
if
|
57
|
+
if _source_responds_to?(m)
|
56
58
|
_source.send(m, *args, &b)
|
57
59
|
else
|
58
60
|
super
|
@@ -60,7 +62,7 @@ module Blacklight::Document
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def respond_to_missing? *args
|
63
|
-
|
65
|
+
_source_responds_to?(*args) || super
|
64
66
|
end
|
65
67
|
|
66
68
|
def [] *args
|
@@ -80,21 +82,29 @@ module Blacklight::Document
|
|
80
82
|
# doc.has?(:location_facet, 'Clemons')
|
81
83
|
# doc.has?(:id, 'h009', /^u/i)
|
82
84
|
def has?(k, *values)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
values.each do |val|
|
88
|
-
return target.any?{|tv| val.is_a?(Regexp) ? (tv =~ val) : (tv==val)}
|
89
|
-
end
|
85
|
+
if !key?(k)
|
86
|
+
false
|
87
|
+
elsif values.empty?
|
88
|
+
self[k].present?
|
90
89
|
else
|
91
|
-
|
90
|
+
Array(values).any? do |expected|
|
91
|
+
Array(self[k]).any? do |actual|
|
92
|
+
case expected
|
93
|
+
when Regexp
|
94
|
+
actual =~ expected
|
95
|
+
else
|
96
|
+
actual == expected
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
92
100
|
end
|
93
101
|
end
|
102
|
+
alias_method :has_field?, :has?
|
94
103
|
|
95
104
|
def key? k
|
96
105
|
_source.key? k
|
97
106
|
end
|
107
|
+
alias_method :has_key?, :key?
|
98
108
|
|
99
109
|
# helper
|
100
110
|
# key is the name of the field
|
@@ -103,11 +113,24 @@ module Blacklight::Document
|
|
103
113
|
# - :default - a value to return when the key doesn't exist
|
104
114
|
# if :sep is nil and the field is a multivalued field, the array is returned
|
105
115
|
def get(key, opts={:sep=>', ', :default=>nil})
|
116
|
+
val = fetch(key, opts[:default])
|
117
|
+
|
118
|
+
if val.is_a?(Array) and opts[:sep]
|
119
|
+
Deprecation.warn(Blacklight::Solr::Document, "#{self.class}#get with a :sep option is deprecated; use #[] or #fetch and join the values using e.g. Array#to_sentence") unless opts[:sep].nil?
|
120
|
+
val.join(opts[:sep])
|
121
|
+
else
|
122
|
+
val
|
123
|
+
end
|
124
|
+
end
|
125
|
+
deprecation_deprecate get: "Use #[] or #fetch instead"
|
126
|
+
|
127
|
+
def fetch key, *default
|
106
128
|
if key? key
|
107
|
-
|
108
|
-
|
129
|
+
self[key]
|
130
|
+
elsif default.empty? and !block_given?
|
131
|
+
raise KeyError.new("key not found \"#{key}\"")
|
109
132
|
else
|
110
|
-
|
133
|
+
(yield(self) if block_given?) || default.first
|
111
134
|
end
|
112
135
|
end
|
113
136
|
|
@@ -171,4 +194,11 @@ module Blacklight::Document
|
|
171
194
|
self
|
172
195
|
end
|
173
196
|
end
|
197
|
+
|
198
|
+
private
|
199
|
+
|
200
|
+
def _source_responds_to? *args
|
201
|
+
_source && self != _source && _source.respond_to?(*args)
|
202
|
+
end
|
203
|
+
|
174
204
|
end
|
@@ -82,7 +82,7 @@ module Blacklight
|
|
82
82
|
end
|
83
83
|
label = case field
|
84
84
|
when Symbol
|
85
|
-
@document
|
85
|
+
@document[field]
|
86
86
|
when Proc
|
87
87
|
field.call(@document, opts)
|
88
88
|
when String
|
@@ -156,10 +156,14 @@ module Blacklight
|
|
156
156
|
end
|
157
157
|
end
|
158
158
|
when field_config
|
159
|
-
# regular
|
160
|
-
|
159
|
+
# regular document field
|
160
|
+
if field_config.default and field_config.default.is_a? Proc
|
161
|
+
@document.fetch(field_config.field, &field_config.default)
|
162
|
+
else
|
163
|
+
@document.fetch(field_config.field, field_config.default)
|
164
|
+
end
|
161
165
|
when field
|
162
|
-
@document
|
166
|
+
@document[field]
|
163
167
|
end
|
164
168
|
|
165
169
|
# rendering values
|
data/lib/blacklight/facet.rb
CHANGED
@@ -32,61 +32,13 @@ module Blacklight
|
|
32
32
|
# Get a FacetField object from the @response
|
33
33
|
def facet_by_field_name field_or_field_name
|
34
34
|
case field_or_field_name
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
field_or_field_name
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
# Get the solr response for the field :field
|
48
|
-
def extract_facet_by_field facet_field
|
49
|
-
case
|
50
|
-
when (facet_field.respond_to?(:query) and facet_field.query)
|
51
|
-
create_facet_field_response_for_query_facet_field facet_field.key, facet_field
|
52
|
-
when (facet_field.respond_to?(:pivot) and facet_field.pivot)
|
53
|
-
create_facet_field_response_for_pivot_facet_field facet_field.key, facet_field
|
54
|
-
else
|
55
|
-
@response.facet_by_field_name(facet_field.field)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def create_facet_field_response_for_query_facet_field facet_name, facet_field
|
60
|
-
salient_facet_queries = facet_field.query.map { |k, x| x[:fq] }
|
61
|
-
items = []
|
62
|
-
@response.facet_queries.select { |k,v| salient_facet_queries.include?(k) }.reject { |value, hits| hits == 0 }.map do |value,hits|
|
63
|
-
salient_fields = facet_field.query.select { |key, val| val[:fq] == value }
|
64
|
-
key = ((salient_fields.keys if salient_fields.respond_to? :keys) || salient_fields.first).first
|
65
|
-
items << Blacklight::SolrResponse::Facets::FacetItem.new(:value => key, :hits => hits, :label => facet_field.query[key][:label])
|
35
|
+
when String, Symbol, Blacklight::Configuration::FacetField
|
36
|
+
facet_field = facet_configuration_for_field(field_or_field_name)
|
37
|
+
@response.aggregations[facet_field.key]
|
38
|
+
else
|
39
|
+
# is this really a useful case?
|
40
|
+
field_or_field_name
|
66
41
|
end
|
67
|
-
|
68
|
-
Blacklight::SolrResponse::Facets::FacetField.new facet_name, items
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
def create_facet_field_response_for_pivot_facet_field facet_name, facet_field
|
73
|
-
items = []
|
74
|
-
(@response.facet_pivot[facet_field.pivot.join(",")] || []).map do |lst|
|
75
|
-
items << construct_pivot_field(lst)
|
76
|
-
end
|
77
|
-
|
78
|
-
Blacklight::SolrResponse::Facets::FacetField.new facet_name, items
|
79
|
-
end
|
80
|
-
|
81
|
-
def construct_pivot_field lst, parent_fq = {}
|
82
|
-
items = []
|
83
|
-
|
84
|
-
lst[:pivot].each do |i|
|
85
|
-
items << construct_pivot_field(i, parent_fq.merge({ lst[:field] => lst[:value] }))
|
86
|
-
end if lst[:pivot]
|
87
|
-
|
88
|
-
Blacklight::SolrResponse::Facets::FacetItem.new(:value => lst[:value], :hits => lst[:count], :field => lst[:field], :items => items, :fq => parent_fq)
|
89
|
-
|
90
42
|
end
|
91
43
|
end
|
92
44
|
end
|
@@ -184,8 +184,8 @@ module Blacklight
|
|
184
184
|
facet = blacklight_config.facet_fields[facet_field]
|
185
185
|
return if facet.blank?
|
186
186
|
|
187
|
-
if facet.limit and @response and @response.
|
188
|
-
limit = @response.
|
187
|
+
if facet.limit and @response and @response.aggregations[facet_field]
|
188
|
+
limit = @response.aggregations[facet_field].limit
|
189
189
|
|
190
190
|
if limit.nil? # we didn't get or a set a limit, so infer one.
|
191
191
|
facet.limit if facet.limit != true
|
@@ -80,34 +80,64 @@ module Blacklight
|
|
80
80
|
scope.blacklight_config
|
81
81
|
end
|
82
82
|
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
def start start = nil
|
84
|
+
if start
|
85
|
+
@start = start.to_i
|
86
|
+
self
|
87
|
+
else
|
88
|
+
@start ||= (page - 1) * (rows || 10)
|
89
|
+
|
90
|
+
val = @start || 0
|
91
|
+
val = 0 if @start < 0
|
92
|
+
val
|
93
|
+
end
|
86
94
|
end
|
95
|
+
alias_method :padding, :start
|
87
96
|
|
88
|
-
def page
|
89
|
-
if
|
90
|
-
|
97
|
+
def page page = nil
|
98
|
+
if page
|
99
|
+
@page = page.to_i
|
100
|
+
@page = 1 if @page < 1
|
101
|
+
self
|
91
102
|
else
|
92
|
-
|
103
|
+
@page ||= begin
|
104
|
+
page = if blacklight_params[:page].blank?
|
105
|
+
1
|
106
|
+
else
|
107
|
+
blacklight_params[:page].to_i
|
108
|
+
end
|
109
|
+
|
110
|
+
page
|
111
|
+
end
|
93
112
|
end
|
94
113
|
end
|
95
114
|
|
96
|
-
def rows
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
115
|
+
def rows rows = nil
|
116
|
+
if rows
|
117
|
+
@rows = rows.to_i
|
118
|
+
@rows = blacklight_config.max_per_page if @rows > blacklight_config.max_per_page
|
119
|
+
self
|
120
|
+
else
|
121
|
+
@rows ||= begin
|
122
|
+
rows = blacklight_config.default_per_page
|
101
123
|
|
102
|
-
|
103
|
-
|
104
|
-
|
124
|
+
# user-provided parameters should override any default row
|
125
|
+
rows = blacklight_params[:rows].to_i unless blacklight_params[:rows].blank?
|
126
|
+
rows = blacklight_params[:per_page].to_i unless blacklight_params[:per_page].blank?
|
105
127
|
|
106
|
-
|
107
|
-
|
128
|
+
# ensure we don't excede the max page size
|
129
|
+
rows = blacklight_config.max_per_page if rows.to_i > blacklight_config.max_per_page
|
108
130
|
|
131
|
+
rows.to_i unless rows.nil?
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
109
135
|
|
110
|
-
|
136
|
+
alias_method :per, :rows
|
137
|
+
|
138
|
+
protected
|
139
|
+
def request
|
140
|
+
Blacklight::Solr::Request.new
|
111
141
|
end
|
112
142
|
|
113
143
|
def sort
|