blacklight 4.0.0.pre7 → 4.0.0.rc1
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.
- data/.gitignore +1 -1
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +3 -3
- data/app/assets/stylesheets/blacklight/_dropdown.css.scss +0 -1
- data/app/assets/stylesheets/blacklight/_facets.css.scss +48 -43
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +13 -11
- data/app/helpers/blacklight/catalog_helper_behavior.rb +45 -29
- data/app/helpers/blacklight/facets_helper_behavior.rb +74 -14
- data/app/views/_user_util_links.html.erb +1 -1
- data/app/views/catalog/_facet_pivot.html.erb +16 -0
- data/app/views/catalog/_per_page_widget.html.erb +5 -3
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/_sort_widget.html.erb +3 -1
- data/app/views/catalog/index.html.erb +3 -4
- data/config/locales/blacklight.en.yml +3 -3
- data/lib/blacklight.rb +1 -0
- data/lib/blacklight/catalog.rb +1 -1
- data/lib/blacklight/configuration.rb +5 -4
- data/lib/blacklight/controller.rb +16 -72
- data/lib/blacklight/legacy_controller_methods.rb +69 -0
- data/lib/blacklight/solr_helper.rb +14 -8
- data/lib/blacklight/solr_response/facets.rb +24 -5
- data/lib/generators/blacklight/blacklight_generator.rb +2 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +1 -0
- data/test_support/spec/helpers/blacklight_helper_spec.rb +18 -1
- data/test_support/spec/helpers/facets_helper_spec.rb +63 -0
- data/test_support/spec/lib/blacklight_solr_response_spec.rb +35 -0
- data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
- metadata +5 -3
@@ -141,7 +141,8 @@ EOF
|
|
141
141
|
" # Adds a few additional behaviors into the application controller \n " +
|
142
142
|
" include Blacklight::Controller\n" +
|
143
143
|
" # Please be sure to impelement current_user and user_session. Blacklight depends on \n" +
|
144
|
-
" # these methods in order to perform user specific actions. \n\n"
|
144
|
+
" # these methods in order to perform user specific actions. \n\n" +
|
145
|
+
" layout 'blacklight'\n\n"
|
145
146
|
end
|
146
147
|
end
|
147
148
|
|
@@ -59,6 +59,7 @@ class CatalogController < ApplicationController
|
|
59
59
|
config.add_facet_field 'subject_geo_facet', :label => 'Region'
|
60
60
|
config.add_facet_field 'subject_era_facet', :label => 'Era'
|
61
61
|
|
62
|
+
config.add_facet_field 'example_pivot_field', :label => 'Pivot Field', :pivot => ['format', 'language_facet']
|
62
63
|
|
63
64
|
config.add_facet_field 'example_query_facet_field', :label => 'Publish Date', :query => {
|
64
65
|
:years_5 => { :label => 'within 5 Years', :fq => "pub_date:[#{Time.now.year - 5 } TO *]" },
|
@@ -216,9 +216,22 @@ describe BlacklightHelper do
|
|
216
216
|
it "should consist of #document_heading wrapped in a <h1>" do
|
217
217
|
@document = SolrDocument.new('title_display' => "A Fake Document")
|
218
218
|
|
219
|
-
render_document_heading.should have_selector("h4", :text =>
|
219
|
+
render_document_heading.should have_selector("h4", :text => "A Fake Document", :count => 1)
|
220
220
|
render_document_heading.html_safe?.should == true
|
221
221
|
end
|
222
|
+
it "should join the values if it is an array" do
|
223
|
+
@document = SolrDocument.new('title_display' => ["A Fake Document", 'Something Else'])
|
224
|
+
|
225
|
+
render_document_heading.should have_selector("h4", :text => "A Fake Document, Something Else", :count => 1)
|
226
|
+
render_document_heading.html_safe?.should == true
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
describe "document_show_html_title" do
|
231
|
+
it "should join the values if it is an array" do
|
232
|
+
@document = SolrDocument.new('title_display' => ["A Fake Document", 'Something Else'])
|
233
|
+
document_show_html_title.should == "A Fake Document, Something Else"
|
234
|
+
end
|
222
235
|
end
|
223
236
|
|
224
237
|
describe "document_index_view_type" do
|
@@ -227,8 +240,12 @@ describe BlacklightHelper do
|
|
227
240
|
end
|
228
241
|
|
229
242
|
it "should pluck values out of params" do
|
243
|
+
blacklight_config.stub(:document_index_view_types) { ['list', 'asdf'] }
|
230
244
|
params[:view] = 'asdf'
|
231
245
|
document_index_view_type.should == 'asdf'
|
246
|
+
|
247
|
+
params[:view] = 'not_in_list'
|
248
|
+
document_index_view_type.should == 'list'
|
232
249
|
end
|
233
250
|
end
|
234
251
|
|
@@ -107,6 +107,32 @@ describe FacetsHelper do
|
|
107
107
|
facet_item.label.should == 'A Human Readable label'
|
108
108
|
end
|
109
109
|
end
|
110
|
+
|
111
|
+
describe "pivot facets" do
|
112
|
+
let(:facet_config) {
|
113
|
+
mock(:pivot => ['field_a', 'field_b'])
|
114
|
+
}
|
115
|
+
|
116
|
+
before(:each) do
|
117
|
+
helper.should_receive(:facet_configuration_for_field).with(anything()).and_return(facet_config)
|
118
|
+
|
119
|
+
@response = mock(:facet_pivot => { 'field_a,field_b' => [{:field => 'field_a', :value => 'a', :count => 10, :pivot => [{:field => 'field_b', :value => 'b', :count => 2}]}]})
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should convert the pivot facet into a mock RSolr FacetField" do
|
123
|
+
field = helper.facet_by_field_name('my_pivot_facet_field')
|
124
|
+
field.should be_a_kind_of Blacklight::SolrResponse::Facets::FacetField
|
125
|
+
|
126
|
+
field.name.should == 'my_pivot_facet_field'
|
127
|
+
|
128
|
+
field.items.length.should == 1
|
129
|
+
|
130
|
+
field.items.first.should respond_to(:items)
|
131
|
+
|
132
|
+
field.items.first.items.length.should == 1
|
133
|
+
field.items.first.items.first.fq.should == { 'field_a' => 'a' }
|
134
|
+
end
|
135
|
+
end
|
110
136
|
end
|
111
137
|
|
112
138
|
|
@@ -143,6 +169,8 @@ describe FacetsHelper do
|
|
143
169
|
|
144
170
|
@config = Blacklight::Configuration.new do |config|
|
145
171
|
config.add_facet_field 'basic_field'
|
172
|
+
config.add_facet_field 'pivot_facet_field', :pivot => ['a', 'b']
|
173
|
+
config.add_facet_field 'my_pivot_facet_field_with_custom_partial', :partial => 'custom_facet_partial', :pivot => ['a', 'b']
|
146
174
|
config.add_facet_field 'my_facet_field_with_custom_partial', :partial => 'custom_facet_partial'
|
147
175
|
end
|
148
176
|
|
@@ -191,6 +219,18 @@ describe FacetsHelper do
|
|
191
219
|
helper.should_receive(:render).with(hash_including(:layout => nil))
|
192
220
|
helper.render_facet_limit(@mock_facet, :layout => nil)
|
193
221
|
end
|
222
|
+
|
223
|
+
it "should render the facet_pivot partial for pivot facets" do
|
224
|
+
@mock_facet = mock(:name => 'pivot_facet_field', :items => [1,2,3])
|
225
|
+
helper.should_receive(:render).with(hash_including(:partial => 'facet_pivot'))
|
226
|
+
helper.render_facet_limit(@mock_facet)
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should let you override the rendered partial for pivot facets" do
|
230
|
+
@mock_facet = mock(:name => 'my_pivot_facet_field_with_custom_partial', :items => [1,2,3])
|
231
|
+
helper.should_receive(:render).with(hash_including(:partial => 'custom_facet_partial'))
|
232
|
+
helper.render_facet_limit(@mock_facet)
|
233
|
+
end
|
194
234
|
end
|
195
235
|
|
196
236
|
describe "add_facet_params" do
|
@@ -249,6 +289,29 @@ describe FacetsHelper do
|
|
249
289
|
result_params[:f]['single_value_facet_field'].length.should == 1
|
250
290
|
result_params[:f]['single_value_facet_field'].first.should == 'my_value'
|
251
291
|
end
|
292
|
+
|
293
|
+
it "should accept a FacetItem instead of a plain facet value" do
|
294
|
+
|
295
|
+
result_params = helper.add_facet_params('facet_field_1', mock(:value => 123))
|
296
|
+
|
297
|
+
result_params[:f]['facet_field_1'].should include(123)
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should defer to the field set on a FacetItem" do
|
301
|
+
|
302
|
+
result_params = helper.add_facet_params('facet_field_1', mock(:field => 'facet_field_2', :value => 123))
|
303
|
+
|
304
|
+
result_params[:f]['facet_field_1'].should be_blank
|
305
|
+
result_params[:f]['facet_field_2'].should include(123)
|
306
|
+
end
|
307
|
+
|
308
|
+
it "should add any extra fq parameters from the FacetItem" do
|
309
|
+
|
310
|
+
result_params = helper.add_facet_params('facet_field_1', mock(:value => 123, :fq => {'facet_field_2' => 'abc'}))
|
311
|
+
|
312
|
+
result_params[:f]['facet_field_1'].should include(123)
|
313
|
+
result_params[:f]['facet_field_2'].should include('abc')
|
314
|
+
end
|
252
315
|
end
|
253
316
|
|
254
317
|
describe "add_facet_params_and_redirect" do
|
@@ -60,6 +60,41 @@ describe Blacklight::SolrResponse do
|
|
60
60
|
|
61
61
|
end
|
62
62
|
|
63
|
+
describe "FacetItem" do
|
64
|
+
it "should work with a field,value tuple" do
|
65
|
+
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15)
|
66
|
+
item.value.should == 'value'
|
67
|
+
item.hits.should == 15
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should work with a field,value + hash triple" do
|
71
|
+
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15, :a => 1, :value => 'ignored')
|
72
|
+
item.value.should == 'value'
|
73
|
+
item.hits.should == 15
|
74
|
+
item.a.should == 1
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should work like an openstruct" do
|
78
|
+
item = Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'value', :hits => 15)
|
79
|
+
|
80
|
+
item.hits.should == 15
|
81
|
+
item.value.should == 'value'
|
82
|
+
item.should be_a_kind_of(OpenStruct)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should provide a label accessor" do
|
86
|
+
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', :hits => 15)
|
87
|
+
item.label.should == 'value'
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should use a provided label" do
|
91
|
+
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15, :label => 'custom label')
|
92
|
+
item.label.should == 'custom label'
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
63
98
|
it 'should return the correct value when calling facet_by_field_name' do
|
64
99
|
r = create_response
|
65
100
|
facet = r.facet_by_field_name('cat')
|
@@ -15,7 +15,7 @@ describe "catalog/_facets" do
|
|
15
15
|
|
16
16
|
@mock_field_1 = mock(:field => 'facet_field_1',
|
17
17
|
:label => 'label')
|
18
|
-
@mock_display_facet_1 = mock(:name => 'facet_field_1', :items => [
|
18
|
+
@mock_display_facet_1 = mock(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
|
19
19
|
view.stub(:facet_field_names => [:facet_field_1],
|
20
20
|
:facet_limit_for => 10 )
|
21
21
|
|
@@ -31,7 +31,7 @@ describe "catalog/_facets" do
|
|
31
31
|
before do
|
32
32
|
@mock_field_1 = mock(:field => 'facet_field_1',
|
33
33
|
:label => 'label')
|
34
|
-
@mock_display_facet_1 = mock(:name => 'facet_field_1', :items => [
|
34
|
+
@mock_display_facet_1 = mock(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
|
35
35
|
view.stub(:facet_field_names => [:facet_field_1],
|
36
36
|
:facet_limit_for => 10 )
|
37
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.rc1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
|
-
date: 2012-11-
|
20
|
+
date: 2012-11-29 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- app/views/catalog/_facet_layout.html.erb
|
253
253
|
- app/views/catalog/_facet_limit.html.erb
|
254
254
|
- app/views/catalog/_facet_pagination.html.erb
|
255
|
+
- app/views/catalog/_facet_pivot.html.erb
|
255
256
|
- app/views/catalog/_facets.html.erb
|
256
257
|
- app/views/catalog/_home.html.erb
|
257
258
|
- app/views/catalog/_home_text.html.erb
|
@@ -322,6 +323,7 @@ files:
|
|
322
323
|
- lib/blacklight/controller.rb
|
323
324
|
- lib/blacklight/engine.rb
|
324
325
|
- lib/blacklight/exceptions.rb
|
326
|
+
- lib/blacklight/legacy_controller_methods.rb
|
325
327
|
- lib/blacklight/mash.rb
|
326
328
|
- lib/blacklight/routes.rb
|
327
329
|
- lib/blacklight/search_fields.rb
|
@@ -465,7 +467,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
465
467
|
version: '0'
|
466
468
|
segments:
|
467
469
|
- 0
|
468
|
-
hash:
|
470
|
+
hash: 4562410494290204402
|
469
471
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
470
472
|
none: false
|
471
473
|
requirements:
|