blacklight 3.6.1.1 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/controllers/bookmarks_controller.rb +28 -46
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +4 -11
- data/app/helpers/blacklight/facets_helper_behavior.rb +57 -4
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +4 -1
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +5 -3
- data/app/views/_user_util_links.html.erb +8 -7
- data/app/views/bookmarks/index.html.erb +1 -1
- data/app/views/catalog/_bookmark_control.html.erb +2 -2
- data/lib/blacklight/configuration.rb +14 -1
- data/lib/blacklight/configuration/facet_field.rb +14 -0
- data/lib/blacklight/controller.rb +44 -7
- data/lib/blacklight/routes.rb +1 -10
- data/lib/blacklight/solr_helper.rb +60 -17
- data/lib/generators/blacklight/blacklight_generator.rb +1 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +11 -6
- data/test_support/bin/test.sh +1 -0
- data/test_support/features/bookmarks.feature +9 -19
- data/test_support/spec/controllers/application_controller_spec.rb +1 -0
- data/test_support/spec/controllers/bookmarks_controller_spec.rb +48 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +2 -1
- data/test_support/spec/controllers/search_history_controller_spec.rb +2 -0
- data/test_support/spec/helpers/blacklight_helper_spec.rb +1 -2
- data/test_support/spec/helpers/facets_helper_spec.rb +91 -4
- data/test_support/spec/helpers/search_history_constraints_helper_spec.rb +3 -0
- data/test_support/spec/lib/solr_helper_spec.rb +56 -8
- metadata +6 -9
- data/app/controllers/folder_controller.rb +0 -54
- data/app/views/catalog/_folder_control.html.erb +0 -12
- data/test_support/features/folder.feature +0 -67
- data/test_support/features/step_definitions/folder_steps.rb +0 -27
- data/test_support/spec/controllers/folder_controller_spec.rb +0 -47
@@ -79,7 +79,8 @@ describe 'Blacklight::SolrHelper' do
|
|
79
79
|
@produced_params[:rows].should == 10
|
80
80
|
end
|
81
81
|
it 'should have default facet fields' do
|
82
|
-
|
82
|
+
# remove local params from the facet.field
|
83
|
+
@produced_params[:"facet.field"].map { |x| x.gsub(/\{![^}]+\}/, '') }.should == blacklight_config.facet_fields_to_add_to_solr
|
83
84
|
end
|
84
85
|
|
85
86
|
it "should have default qt" do
|
@@ -116,7 +117,6 @@ describe 'Blacklight::SolrHelper' do
|
|
116
117
|
|
117
118
|
solr_params[:q].should be_blank
|
118
119
|
solr_params["spellcheck.q"].should be_blank
|
119
|
-
solr_params[:"facet.field"].should == blacklight_config[:default_solr_params][:"facet.field"]
|
120
120
|
|
121
121
|
@single_facet.each_value do |value|
|
122
122
|
solr_params[:fq].should include("{!raw f=#{@single_facet.keys[0]}}#{value}")
|
@@ -154,7 +154,12 @@ describe 'Blacklight::SolrHelper' do
|
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
157
|
-
describe "facet_value_to_fq_string"
|
157
|
+
describe "facet_value_to_fq_string" do
|
158
|
+
|
159
|
+
let :blacklight_config do
|
160
|
+
Blacklight::Configuration.new
|
161
|
+
end
|
162
|
+
|
158
163
|
it "should use the raw handler for strings" do
|
159
164
|
facet_value_to_fq_string("facet_name", "my value").should == "{!raw f=facet_name}my value"
|
160
165
|
end
|
@@ -183,9 +188,22 @@ describe 'Blacklight::SolrHelper' do
|
|
183
188
|
facet_value_to_fq_string("facet_name", "1.11").should == "facet_name:1.11"
|
184
189
|
end
|
185
190
|
|
191
|
+
it "should pass date-type fields through" do
|
192
|
+
blacklight_config.facet_fields.stub(:[]).with('facet_name').and_return(mock(:date => true, :query => nil, :tag => nil))
|
193
|
+
|
194
|
+
facet_value_to_fq_string("facet_name", "2012-01-01").should == "facet_name:2012-01-01"
|
195
|
+
end
|
196
|
+
|
186
197
|
it "should handle range requests" do
|
187
198
|
facet_value_to_fq_string("facet_name", 1..5).should == "facet_name:[1 TO 5]"
|
188
199
|
end
|
200
|
+
|
201
|
+
it "should add tag local parameters" do
|
202
|
+
blacklight_config.facet_fields.stub(:[]).with('facet_name').and_return(mock(:query => nil, :tag => 'asdf', :date => nil))
|
203
|
+
|
204
|
+
facet_value_to_fq_string("facet_name", true).should == "{!tag=asdf}facet_name:true"
|
205
|
+
facet_value_to_fq_string("facet_name", "my value").should == "{!raw f=facet_name tag=asdf}my value"
|
206
|
+
end
|
189
207
|
end
|
190
208
|
|
191
209
|
describe "solr parameters for a field search from config (subject)" do
|
@@ -213,9 +231,7 @@ describe 'Blacklight::SolrHelper' do
|
|
213
231
|
it "should include spellcheck.q, without LocalParams" do
|
214
232
|
@solr_params["spellcheck.q"].should == "wome"
|
215
233
|
end
|
216
|
-
|
217
|
-
@solr_params[:"facet.field"].should == blacklight_config[:default_solr_params][:"facet.field"]
|
218
|
-
end
|
234
|
+
|
219
235
|
it "should include spellcheck.dictionary from field def solr_parameters" do
|
220
236
|
@solr_params[:"spellcheck.dictionary"].should == "subject"
|
221
237
|
end
|
@@ -241,6 +257,38 @@ describe 'Blacklight::SolrHelper' do
|
|
241
257
|
end
|
242
258
|
end
|
243
259
|
|
260
|
+
describe "converts a String fq into an Array" do
|
261
|
+
it "should return the correct overriden parameter" do
|
262
|
+
solr_parameters = {:fq => 'a string' }
|
263
|
+
|
264
|
+
add_facet_fq_to_solr(solr_parameters, {})
|
265
|
+
|
266
|
+
solr_parameters[:fq].should be_a_kind_of Array
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
describe "Allow passing :sort when defining facet" do
|
271
|
+
|
272
|
+
let(:blacklight_config) do
|
273
|
+
config = Blacklight::Configuration.new
|
274
|
+
|
275
|
+
config.add_facet_field 'test_field', :sort => 'count'
|
276
|
+
config.add_facet_fields_to_solr_request!
|
277
|
+
|
278
|
+
config
|
279
|
+
end
|
280
|
+
|
281
|
+
it "should return the correct solr parameters" do
|
282
|
+
|
283
|
+
solr_parameters = { }
|
284
|
+
|
285
|
+
add_facetting_to_solr(solr_parameters, {})
|
286
|
+
|
287
|
+
solr_parameters[:'facet.field'].should include('test_field')
|
288
|
+
solr_parameters[:'f.test_field.facet.sort'].should == 'count'
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
244
292
|
describe "with a complex parameter environment" do
|
245
293
|
def blacklight_config
|
246
294
|
config = Blacklight::Configuration.new
|
@@ -610,7 +658,7 @@ describe 'Blacklight::SolrHelper' do
|
|
610
658
|
@facets.size.should > 1
|
611
659
|
end
|
612
660
|
it 'should have all facets specified in initializer' do
|
613
|
-
blacklight_config
|
661
|
+
blacklight_config.facet_fields_to_add_to_solr.each do |field|
|
614
662
|
@facets.find {|f| f.name == field}.should_not be_nil
|
615
663
|
end
|
616
664
|
end
|
@@ -869,7 +917,7 @@ describe 'Blacklight::SolrHelper' do
|
|
869
917
|
end
|
870
918
|
it "should handle no facet_limits in config" do
|
871
919
|
def blacklight_config
|
872
|
-
config =
|
920
|
+
config = Blacklight::Configuration.new
|
873
921
|
config.facet_fields = {}
|
874
922
|
return config
|
875
923
|
end
|
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: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
prerelease:
|
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-09-
|
20
|
+
date: 2012-09-25 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -274,7 +274,6 @@ files:
|
|
274
274
|
- app/controllers/bookmarks_controller.rb
|
275
275
|
- app/controllers/catalog_controller.rb
|
276
276
|
- app/controllers/feedback_controller.rb
|
277
|
-
- app/controllers/folder_controller.rb
|
278
277
|
- app/controllers/saved_searches_controller.rb
|
279
278
|
- app/controllers/search_history_controller.rb
|
280
279
|
- app/helpers/blacklight/blacklight_helper_behavior.rb
|
@@ -311,7 +310,6 @@ files:
|
|
311
310
|
- app/views/catalog/_facet_limit.html.erb
|
312
311
|
- app/views/catalog/_facet_pagination.html.erb
|
313
312
|
- app/views/catalog/_facets.html.erb
|
314
|
-
- app/views/catalog/_folder_control.html.erb
|
315
313
|
- app/views/catalog/_home.html.erb
|
316
314
|
- app/views/catalog/_home_text.html.erb
|
317
315
|
- app/views/catalog/_index_default.html.erb
|
@@ -365,6 +363,7 @@ files:
|
|
365
363
|
- lib/blacklight/catalog.rb
|
366
364
|
- lib/blacklight/configurable.rb
|
367
365
|
- lib/blacklight/configuration.rb
|
366
|
+
- lib/blacklight/configuration/facet_field.rb
|
368
367
|
- lib/blacklight/configuration/fields.rb
|
369
368
|
- lib/blacklight/configuration/search_field.rb
|
370
369
|
- lib/blacklight/configuration/solr_field.rb
|
@@ -428,7 +427,6 @@ files:
|
|
428
427
|
- test_support/data/test_data.utf8.mrc
|
429
428
|
- test_support/features/bookmarks.feature
|
430
429
|
- test_support/features/did_you_mean.feature
|
431
|
-
- test_support/features/folder.feature
|
432
430
|
- test_support/features/librarian_view.feature
|
433
431
|
- test_support/features/record_view.feature
|
434
432
|
- test_support/features/saved_searches.feature
|
@@ -439,7 +437,6 @@ files:
|
|
439
437
|
- test_support/features/search_sort.feature
|
440
438
|
- test_support/features/step_definitions/bookmarks_steps.rb
|
441
439
|
- test_support/features/step_definitions/error_steps.rb
|
442
|
-
- test_support/features/step_definitions/folder_steps.rb
|
443
440
|
- test_support/features/step_definitions/general_steps.rb
|
444
441
|
- test_support/features/step_definitions/record_view_steps.rb
|
445
442
|
- test_support/features/step_definitions/saved_searches_steps.rb
|
@@ -453,8 +450,8 @@ files:
|
|
453
450
|
- test_support/features/support/paths.rb
|
454
451
|
- test_support/features/support/selectors.rb
|
455
452
|
- test_support/spec/controllers/application_controller_spec.rb
|
453
|
+
- test_support/spec/controllers/bookmarks_controller_spec.rb
|
456
454
|
- test_support/spec/controllers/catalog_controller_spec.rb
|
457
|
-
- test_support/spec/controllers/folder_controller_spec.rb
|
458
455
|
- test_support/spec/controllers/search_history_controller_spec.rb
|
459
456
|
- test_support/spec/data/sample_docs.yml
|
460
457
|
- test_support/spec/data/test_data.utf8.mrc
|
@@ -511,7 +508,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
511
508
|
version: '0'
|
512
509
|
segments:
|
513
510
|
- 0
|
514
|
-
hash: -
|
511
|
+
hash: -1006739623696902057
|
515
512
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
516
513
|
none: false
|
517
514
|
requirements:
|
@@ -520,7 +517,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
520
517
|
version: '0'
|
521
518
|
segments:
|
522
519
|
- 0
|
523
|
-
hash: -
|
520
|
+
hash: -1006739623696902057
|
524
521
|
requirements: []
|
525
522
|
rubyforge_project: blacklight
|
526
523
|
rubygems_version: 1.8.23
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class FolderController < ApplicationController
|
3
|
-
include Blacklight::Configurable
|
4
|
-
include Blacklight::SolrHelper
|
5
|
-
|
6
|
-
copy_blacklight_config_from(CatalogController)
|
7
|
-
|
8
|
-
helper CatalogHelper
|
9
|
-
|
10
|
-
# fetch the documents that match the ids in the folder
|
11
|
-
def index
|
12
|
-
@response, @documents = get_solr_response_for_field_values(SolrDocument.unique_key,session[:folder_document_ids] || [])
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
# add a document_id to the folder. :id of action is solr doc id
|
17
|
-
def update
|
18
|
-
session[:folder_document_ids] = session[:folder_document_ids] || []
|
19
|
-
session[:folder_document_ids] << params[:id]
|
20
|
-
# Rails 3 uses a one line notation for setting the flash notice.
|
21
|
-
# flash[:notice] = "#{params[:title] || "Item"} successfully added to Folder"
|
22
|
-
respond_to do |format|
|
23
|
-
format.html { redirect_to :back, :notice => I18n.t('blacklight.folder.add.success', :title => params[:title] || 'Item') }
|
24
|
-
format.js { render :json => session[:folder_document_ids] }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# remove a document_id from the folder. :id of action is solr_doc_id
|
29
|
-
def destroy
|
30
|
-
session[:folder_document_ids].delete(params[:id])
|
31
|
-
|
32
|
-
respond_to do |format|
|
33
|
-
format.html do
|
34
|
-
flash[:notice] = I18n.t('blacklight.folder.remove.success', :title => params[:title] || 'Item')
|
35
|
-
redirect_to :back
|
36
|
-
end
|
37
|
-
format.js do
|
38
|
-
render :json => {"OK" => "OK"}
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
# get rid of the items in the folder
|
45
|
-
def clear
|
46
|
-
flash[:notice] = I18n.t('blacklight.folder.clear.success')
|
47
|
-
session[:folder_document_ids] = []
|
48
|
-
respond_to do |format|
|
49
|
-
format.html { redirect_to :back }
|
50
|
-
format.js { render :json => session[:folder_document_ids] }
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<%-
|
2
|
-
# pass in local :document with a SolrDocument
|
3
|
-
method = (item_in_folder?(document.id) ? "delete" : "put")
|
4
|
-
label = (item_in_folder?(document.id) ? t('blacklight.search.folder.unselect') : t('blacklight.search.folder.select'))
|
5
|
-
cssClass = (item_in_folder?(document.id) ? "deleteFolder" : "addFolder")
|
6
|
-
-%>
|
7
|
-
|
8
|
-
<%= form_tag( folder_path(document), :method => method, :class=> "folder_toggle #{cssClass}", "data-doc-id" => document.id, :title=>h(document[document_show_link_field])) do -%>
|
9
|
-
<%= hidden_field(:bookmark, :title, :value => document[document_show_link_field]) %>
|
10
|
-
<%= submit_tag(label, :class=>"folder_submit", :id => "folder_submit_#{document.id}") %>
|
11
|
-
<% end %>
|
12
|
-
|
@@ -1,67 +0,0 @@
|
|
1
|
-
Feature: User Folder
|
2
|
-
In order to keep track of items
|
3
|
-
As a user
|
4
|
-
I want to be able to store items in my folder
|
5
|
-
|
6
|
-
Scenario: Ensure "Add to Folder" form is present in search results
|
7
|
-
Given I am on the home page
|
8
|
-
When I fill in "q" with "history"
|
9
|
-
And I select "All Fields" from "search_field"
|
10
|
-
And I press "search"
|
11
|
-
Then I should see an add to folder form
|
12
|
-
|
13
|
-
Scenario: Ensure "Add to Folder" for is present on individual record
|
14
|
-
Given I am on the document page for id 2007020969
|
15
|
-
Then I should see an add to folder form
|
16
|
-
|
17
|
-
Scenario: Adding an item to the folder should produce a status message
|
18
|
-
Given I am on the home page
|
19
|
-
And I follow "English"
|
20
|
-
And I add record 2008308175 to my folder
|
21
|
-
Then I should see "Selected Items (1)"
|
22
|
-
|
23
|
-
Scenario: Do not show "Add to Favorites" when not logged in
|
24
|
-
Given I have record 2007020969 in my folder
|
25
|
-
When I follow "Selected Items"
|
26
|
-
Then I should not see "Add to Folder"
|
27
|
-
|
28
|
-
Scenario: Show "Add to Favorites" when logged in and viewing folder
|
29
|
-
Given I am logged in as "user1"
|
30
|
-
And I have record 2007020969 in my folder
|
31
|
-
When I follow "Selected Items"
|
32
|
-
Then I should see "Add to Bookmarks"
|
33
|
-
|
34
|
-
Scenario: Do multiple citations when the folder has multiple items
|
35
|
-
Given I have record 2007020969 in my folder
|
36
|
-
And I have record 2008308175 in my folder
|
37
|
-
When I follow "Selected Items"
|
38
|
-
And I follow "Cite"
|
39
|
-
Then I should see "Pluvial Nectar of Blessings : a Supplication to the Noble Lama Mahaguru Padmasambhava. Dharamsala: Library of Tibetan Works and Archives, 2002."
|
40
|
-
And I should see "a Native American elder has her say : an oral history. 1st Atria Books hardcover ed. New York: Atria Books."
|
41
|
-
|
42
|
-
Scenario: Make sure the folder page doesn't bomb if there is no search session
|
43
|
-
Given I am on the folder page
|
44
|
-
# That's all that is needed -- it will fail to render if it's not right
|
45
|
-
|
46
|
-
Scenario: Don't show the tools if there are no items in the folder
|
47
|
-
Given I am on the folder page
|
48
|
-
Then I should not see the Folder tools
|
49
|
-
|
50
|
-
Scenario: Show the tools if there are items in the folder
|
51
|
-
Given I have record 2008308175 in my folder
|
52
|
-
And I follow "Selected Items"
|
53
|
-
Then I should see the Folder tools
|
54
|
-
|
55
|
-
Scenario: Controls on the record view
|
56
|
-
When I am on the document page for id 2008308175
|
57
|
-
Then I should see an add to folder form
|
58
|
-
Given I have record 2008308175 in my folder
|
59
|
-
When I am on the document page for id 2008308175
|
60
|
-
Then I should see a remove from folder form
|
61
|
-
|
62
|
-
Scenario: Controls on the folder view
|
63
|
-
Given I have record 2008308175 in my folder
|
64
|
-
When I am on the folder page
|
65
|
-
Then I should see a remove from folder form
|
66
|
-
When I remove record 2008308175 from my folder
|
67
|
-
Then I should not see the Folder tools
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
Then /^I should see an add to folder form$/ do
|
3
|
-
page.should have_selector("form.addFolder")
|
4
|
-
end
|
5
|
-
|
6
|
-
Then /^I should see a remove from folder form$/ do
|
7
|
-
page.should have_selector("form.deleteFolder")
|
8
|
-
end
|
9
|
-
|
10
|
-
When /^I (add|remove) record (.+) (to|from) my folder$/ do |add_or_remove, id, wording|
|
11
|
-
click_button("folder_submit_#{id}")
|
12
|
-
end
|
13
|
-
|
14
|
-
Given /^I have record (.+) in my folder$/ do |arg1|
|
15
|
-
visit catalog_path(arg1)
|
16
|
-
click_button("Select")
|
17
|
-
click_link("Selected Items")
|
18
|
-
end
|
19
|
-
|
20
|
-
Then /^I (should|should not) see the Folder tools$/ do |comparator|
|
21
|
-
case comparator
|
22
|
-
when "should"
|
23
|
-
page.should have_selector("ul.folderTools")
|
24
|
-
when "should not"
|
25
|
-
page.should_not have_selector("ul.folderTools")
|
26
|
-
end
|
27
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
-
describe FolderController do
|
4
|
-
before(:each) do
|
5
|
-
request.env["HTTP_REFERER"] = "/"
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should add items to list" do
|
9
|
-
@mock_response = mock()
|
10
|
-
@mock_document = mock()
|
11
|
-
@mock_document2 = mock()
|
12
|
-
@mock_document.stub(:export_formats => {})
|
13
|
-
controller.stub(:get_solr_response_for_field_values => [@mock_response, [@mock_document, @mock_document2]])
|
14
|
-
|
15
|
-
get :update, :id =>"77826928"
|
16
|
-
session[:folder_document_ids].length.should == 1
|
17
|
-
get :update, :id => "94120425"
|
18
|
-
session[:folder_document_ids].length.should == 2
|
19
|
-
session[:folder_document_ids].should include("77826928")
|
20
|
-
get :index
|
21
|
-
assigns[:documents].length.should == 2
|
22
|
-
assigns[:documents].first.should == @mock_document
|
23
|
-
end
|
24
|
-
it "should delete an item from list" do
|
25
|
-
get :update, :id =>"77826928"
|
26
|
-
get :update, :id => "94120425"
|
27
|
-
get :destroy, :id =>"77826928"
|
28
|
-
session[:folder_document_ids].length.should == 1
|
29
|
-
session[:folder_document_ids].should_not include("77826928")
|
30
|
-
end
|
31
|
-
it "should clear list" do
|
32
|
-
get :update, :id =>"77826928"
|
33
|
-
get :update, :id => "94120425"
|
34
|
-
get :clear
|
35
|
-
session[:folder_document_ids].length.should == 0
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should generate flash messages for normal requests" do
|
39
|
-
get :update, :id => "77826928"
|
40
|
-
flash[:notice].length.should_not == 0
|
41
|
-
end
|
42
|
-
it "should clear flash messages after xhr request" do
|
43
|
-
xhr :get, :update, :id => "77826928"
|
44
|
-
flash[:notice].should == nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|