blacklight 5.10.2 → 5.10.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/VERSION +1 -1
- data/app/helpers/blacklight/configuration_helper_behavior.rb +5 -7
- data/app/helpers/blacklight/url_helper_behavior.rb +6 -1
- data/app/models/bookmark.rb +4 -1
- data/app/models/search.rb +6 -3
- data/app/views/catalog/_home_text.html.erb +48 -8
- data/app/views/catalog/_sms_form.html.erb +1 -1
- data/config/jetty.yml +3 -0
- data/lib/blacklight.rb +10 -3
- data/lib/blacklight/abstract_repository.rb +1 -1
- data/lib/blacklight/catalog/search_context.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +1 -1
- data/lib/blacklight/configuration/search_field.rb +1 -1
- data/lib/blacklight/document.rb +24 -6
- data/lib/blacklight/solr_repository.rb +2 -2
- data/lib/blacklight/utils.rb +23 -0
- data/lib/generators/blacklight/templates/config/jetty.yml +3 -0
- data/lib/generators/blacklight/user_generator.rb +3 -1
- data/spec/helpers/configuration_helper_spec.rb +7 -0
- data/spec/helpers/url_helper_spec.rb +11 -0
- data/spec/lib/blacklight/configuration_spec.rb +33 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d8ff5b59fd2f2f4492d6a334429e34d65eecb73
|
4
|
+
data.tar.gz: 1c5518ceb4bbba537374113d4ba12830276dcb50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56d549c7e95d7a3bc1aef93b961e8403a9697e07562c5f76e5f16da795d9545de919fec3455b31ee1453a323a16db89486f166774ce7568b84d703b5cce3ad03
|
7
|
+
data.tar.gz: 51b5768632c4336d9b1242d3b3872cd97de4e8e6ecf42b7d01d3e43d052d06d515e7dba26a1d60aba9d7c61d3dfd26851298b86d9254107d7b445c788503dffe
|
data/.travis.yml
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.10.
|
1
|
+
5.10.3
|
@@ -87,13 +87,11 @@ module Blacklight::ConfigurationHelperBehavior
|
|
87
87
|
# Look up the label for the facet field
|
88
88
|
def facet_field_label field
|
89
89
|
field_config = blacklight_config.facet_fields[field]
|
90
|
+
defaults = [:"blacklight.search.fields.facet.#{field}", :"blacklight.search.fields.#{field}"]
|
91
|
+
defaults << field_config.label if field_config
|
92
|
+
defaults << field.to_s.humanize
|
90
93
|
|
91
|
-
field_label
|
92
|
-
:"blacklight.search.fields.facet.#{field}",
|
93
|
-
:"blacklight.search.fields.#{field}",
|
94
|
-
(field_config.label if field_config),
|
95
|
-
field.to_s.humanize
|
96
|
-
)
|
94
|
+
field_label *defaults
|
97
95
|
end
|
98
96
|
|
99
97
|
##
|
@@ -109,7 +107,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
109
107
|
# @param [Symbol] any number of additional keys
|
110
108
|
# @param [Symbol] ...
|
111
109
|
def field_label *i18n_keys
|
112
|
-
first, *rest = i18n_keys
|
110
|
+
first, *rest = i18n_keys.compact
|
113
111
|
|
114
112
|
t(first, default: rest)
|
115
113
|
end
|
@@ -82,10 +82,15 @@ module Blacklight::UrlHelperBehavior
|
|
82
82
|
return {}
|
83
83
|
end
|
84
84
|
|
85
|
-
{ :data => {:'context-href' =>
|
85
|
+
{ :data => {:'context-href' => session_tracking_path(document, per_page: params.fetch(:per_page, search_session['per_page']), counter: counter, search_id: current_search_session.try(:id))}}
|
86
86
|
end
|
87
87
|
protected :session_tracking_params
|
88
88
|
|
89
|
+
##
|
90
|
+
# Get the URL for tracking search sessions across pages using polymorphic routing
|
91
|
+
def session_tracking_path document, params = {}
|
92
|
+
polymorphic_path([:track, document], params)
|
93
|
+
end
|
89
94
|
|
90
95
|
#
|
91
96
|
# link based helpers ->
|
data/app/models/bookmark.rb
CHANGED
@@ -5,7 +5,10 @@ class Bookmark < ActiveRecord::Base
|
|
5
5
|
belongs_to :document, polymorphic: true
|
6
6
|
|
7
7
|
validates_presence_of :user_id, :scope=>:document_id
|
8
|
-
|
8
|
+
|
9
|
+
if Blacklight::Utils.needs_attr_accessible?
|
10
|
+
attr_accessible :id, :document_id, :document_type, :title
|
11
|
+
end
|
9
12
|
|
10
13
|
def document
|
11
14
|
document_type.new document_type.unique_key => document_id
|
data/app/models/search.rb
CHANGED
@@ -5,10 +5,13 @@ class Search < ActiveRecord::Base
|
|
5
5
|
|
6
6
|
serialize :query_params
|
7
7
|
|
8
|
-
if
|
8
|
+
if Blacklight::Utils.needs_attr_accessible?
|
9
9
|
attr_accessible :query_params
|
10
|
-
|
11
|
-
|
10
|
+
end
|
11
|
+
|
12
|
+
unless respond_to?(:none)
|
13
|
+
# polyfill
|
14
|
+
scope :none, where(id: nil).where("id IS NOT ?", nil)
|
12
15
|
end
|
13
16
|
|
14
17
|
# A Search instance is considered a saved search if it has a user_id.
|
@@ -1,9 +1,49 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
<
|
6
|
-
|
7
|
-
<
|
8
|
-
|
1
|
+
<div class="page-header row">
|
2
|
+
<h1 class="col-md-8"><%= t('blacklight.welcome') %></h1>
|
3
|
+
|
4
|
+
<ul class="nav nav-pills col-md-4">
|
5
|
+
<li><a href="https://github.com/projectblacklight/blacklight/">Github</a></li>
|
6
|
+
<li><a href="https://github.com/projectblacklight/blacklight/wiki">Wiki</a></li>
|
7
|
+
<li><a href="https://github.com/projectblacklight/blacklight/releases/tag/v<%= Blacklight::VERSION %>">Release Notes</a></li>
|
8
|
+
</ul>
|
9
9
|
|
10
|
+
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div id="getting-started">
|
14
|
+
<h2>Here’s how to get started:</h2>
|
15
|
+
|
16
|
+
<ol>
|
17
|
+
<li>To modify this text, you need to <a href="http://guides.rubyonrails.org/engines.html#improving-engine-functionality">override the Blacklight-provided view</a>.
|
18
|
+
You can copy this file, located in the blacklight gem: <br />
|
19
|
+
<%= Blacklight.root %>/app/views/catalog/_home_text.html.erb <br />
|
20
|
+
to your own application: <br />
|
21
|
+
<%= Rails.root %>/app/views/catalog/_home_text.html.erb
|
22
|
+
</li>
|
23
|
+
<li><a href="https://github.com/projectblacklight/blacklight/wiki/Indexing-your-data-into-solr">Index your own data</a> into Solr</li>
|
24
|
+
<li><a href="https://github.com/projectblacklight/blacklight/wiki#blacklight-configuration">Configure Blacklight</a> to match your data and user-experience needs</li>
|
25
|
+
<li><a href="https://github.com/projectblacklight/blacklight/wiki#support">Get in touch</a> with your comments, questions, and ideas</li>
|
26
|
+
</ol>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<%# This is the same panel shown in the Rails welcome template %>
|
30
|
+
<div id="about">
|
31
|
+
<h3><a href="/rails/info/properties">About your application’s environment</a></h3>
|
32
|
+
<div id="about-content" class="well" style="display: none"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<script>
|
36
|
+
$(function() {
|
37
|
+
$('#about a').on('click', function(e) {
|
38
|
+
e.preventDefault();
|
39
|
+
|
40
|
+
if ($('#about-content').html() == "") {
|
41
|
+
$('#about-content').load($(this).attr("href"), function() {
|
42
|
+
$('#about-content').show();
|
43
|
+
});
|
44
|
+
} else {
|
45
|
+
$('#about-content').toggle();
|
46
|
+
}
|
47
|
+
});
|
48
|
+
});
|
49
|
+
</script>
|
data/config/jetty.yml
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
development:
|
2
2
|
startup_wait: 15
|
3
3
|
jetty_port: 8983
|
4
|
+
java_version: ">= 1.7"
|
4
5
|
test:
|
5
6
|
startup_wait: 60
|
6
7
|
jetty_port: <%= ENV['TEST_JETTY_PORT'] || 8888 %>
|
7
8
|
<%= ENV['TEST_JETTY_PATH'] ? "jetty_home: " + ENV['TEST_JETTY_PATH'] : '' %>
|
9
|
+
java_version: ">= 1.7"
|
8
10
|
production:
|
9
11
|
startup_wait: 15
|
10
12
|
jetty_port: 8983
|
13
|
+
java_version: ">= 1.7"
|
data/lib/blacklight.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'kaminari'
|
3
3
|
require 'deprecation'
|
4
|
+
require 'blacklight/utils'
|
5
|
+
|
4
6
|
module Blacklight
|
5
7
|
autoload :Configurable, 'blacklight/configurable'
|
6
8
|
autoload :Configuration, 'blacklight/configuration'
|
@@ -28,8 +30,7 @@ module Blacklight
|
|
28
30
|
autoload :DocumentPresenter, 'blacklight/document_presenter'
|
29
31
|
|
30
32
|
autoload :Routes, 'blacklight/routes'
|
31
|
-
|
32
|
-
autoload :OpenStructWithHashAccess, 'blacklight/utils'
|
33
|
+
|
33
34
|
autoload :SolrResponse, 'blacklight/solr_response'
|
34
35
|
autoload :Facet, 'blacklight/facet'
|
35
36
|
|
@@ -144,7 +145,13 @@ module Blacklight
|
|
144
145
|
end
|
145
146
|
|
146
147
|
def self.logger
|
147
|
-
|
148
|
+
@logger ||= begin
|
149
|
+
::Rails.logger if defined? Rails and Rails.respond_to? :logger
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def self.logger= logger
|
154
|
+
@logger = logger
|
148
155
|
end
|
149
156
|
|
150
157
|
#############
|
@@ -102,7 +102,7 @@ module Blacklight::Catalog::SearchContext
|
|
102
102
|
@next_document = documents.last
|
103
103
|
end
|
104
104
|
rescue Blacklight::Exceptions::InvalidRequest => e
|
105
|
-
|
105
|
+
logger.warn "Unable to setup next and previous documents: #{e}"
|
106
106
|
end
|
107
107
|
|
108
108
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Blacklight
|
2
2
|
class Configuration::SearchField < Blacklight::Configuration::Field
|
3
3
|
def normalize! blacklight_config = nil
|
4
|
-
self.if
|
4
|
+
self.if = self.include_in_simple_select if self.if.nil?
|
5
5
|
|
6
6
|
super
|
7
7
|
self.qt ||= blacklight_config.default_solr_params[:qt] if blacklight_config && blacklight_config.default_solr_params
|
data/lib/blacklight/document.rb
CHANGED
@@ -31,7 +31,7 @@ module Blacklight::Document
|
|
31
31
|
include Blacklight::Document::Extensions
|
32
32
|
end
|
33
33
|
|
34
|
-
attr_reader :response
|
34
|
+
attr_reader :response, :_source
|
35
35
|
alias_method :solr_response, :response
|
36
36
|
|
37
37
|
def initialize(source_doc={}, response=nil)
|
@@ -52,11 +52,23 @@ module Blacklight::Document
|
|
52
52
|
# If a method is missing, it gets sent to @_source
|
53
53
|
# with all of the original params and block
|
54
54
|
def method_missing(m, *args, &b)
|
55
|
-
|
55
|
+
if _source and _source.respond_to? m
|
56
|
+
_source.send(m, *args, &b)
|
57
|
+
else
|
58
|
+
super
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def respond_to_missing? *args
|
63
|
+
(_source && _source.respond_to?(*args)) || super
|
56
64
|
end
|
57
65
|
|
58
66
|
def [] *args
|
59
|
-
|
67
|
+
_source.send :[], *args
|
68
|
+
end
|
69
|
+
|
70
|
+
def _read_attribute(attr)
|
71
|
+
self[attr]
|
60
72
|
end
|
61
73
|
|
62
74
|
# Helper method to check if value/multi-values exist for a given key.
|
@@ -81,7 +93,7 @@ module Blacklight::Document
|
|
81
93
|
end
|
82
94
|
|
83
95
|
def key? k
|
84
|
-
|
96
|
+
_source.key? k
|
85
97
|
end
|
86
98
|
|
87
99
|
# helper
|
@@ -112,7 +124,7 @@ module Blacklight::Document
|
|
112
124
|
end
|
113
125
|
|
114
126
|
def as_json(options = nil)
|
115
|
-
|
127
|
+
_source.as_json(options)
|
116
128
|
end
|
117
129
|
|
118
130
|
def to_partial_path
|
@@ -135,6 +147,12 @@ module Blacklight::Document
|
|
135
147
|
nil
|
136
148
|
end
|
137
149
|
|
150
|
+
##
|
151
|
+
# Implementations that support More-Like-This should override this method
|
152
|
+
# to return an array of documents that are like this one.
|
153
|
+
def more_like_this
|
154
|
+
[]
|
155
|
+
end
|
138
156
|
|
139
157
|
# Certain class-level methods needed for the document-specific
|
140
158
|
# extendability architecture
|
@@ -153,4 +171,4 @@ module Blacklight::Document
|
|
153
171
|
self
|
154
172
|
end
|
155
173
|
end
|
156
|
-
end
|
174
|
+
end
|
@@ -45,8 +45,8 @@ module Blacklight
|
|
45
45
|
|
46
46
|
solr_response = blacklight_config.response_model.new(res, solr_params, document_model: blacklight_config.document_model)
|
47
47
|
|
48
|
-
|
49
|
-
|
48
|
+
Blacklight.logger.debug("Solr query: #{solr_params.inspect}")
|
49
|
+
Blacklight.logger.debug("Solr response: #{solr_response.inspect}") if defined?(::BLACKLIGHT_VERBOSE_LOGGING) and ::BLACKLIGHT_VERBOSE_LOGGING
|
50
50
|
solr_response
|
51
51
|
end
|
52
52
|
rescue Errno::ECONNREFUSED => e
|
data/lib/blacklight/utils.rb
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
module Blacklight
|
3
|
+
|
4
|
+
module Utils
|
5
|
+
def self.needs_attr_accessible?
|
6
|
+
if rails_3?
|
7
|
+
!strong_parameters_enabled?
|
8
|
+
else
|
9
|
+
protected_attributes_enabled?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.rails_3?
|
14
|
+
Rails::VERSION::MAJOR == 3
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.strong_parameters_enabled?
|
18
|
+
defined?(ActionController::StrongParameters)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.protected_attributes_enabled?
|
22
|
+
defined?(ActiveModel::MassAssignmentSecurity)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
3
26
|
##
|
4
27
|
# An OpenStruct that responds to common Hash methods
|
5
28
|
class OpenStructWithHashAccess < OpenStruct
|
@@ -1,10 +1,13 @@
|
|
1
1
|
development:
|
2
2
|
startup_wait: 15
|
3
3
|
jetty_port: 8983
|
4
|
+
java_version: ">= 1.7"
|
4
5
|
test:
|
5
6
|
startup_wait: 60
|
6
7
|
jetty_port: <%= ENV['TEST_JETTY_PORT'] || 8888 %>
|
7
8
|
<%= ENV['TEST_JETTY_PATH'] ? "jetty_home: " + ENV['TEST_JETTY_PATH'] : '' %>
|
9
|
+
java_version: ">= 1.7"
|
8
10
|
production:
|
9
11
|
startup_wait: 15
|
10
12
|
jetty_port: 8983
|
13
|
+
java_version: ">= 1.7"
|
@@ -47,7 +47,9 @@ This generator makes the following changes to your application:
|
|
47
47
|
file_path = "app/models/#{model_name.underscore}.rb"
|
48
48
|
if File.exists?(file_path)
|
49
49
|
inject_into_class file_path, model_name.classify do
|
50
|
-
"\n
|
50
|
+
"\n if Blacklight::Utils.needs_attr_accessible?\n" +
|
51
|
+
"\n attr_accessible :email, :password, :password_confirmation" +
|
52
|
+
"\n end\n" +
|
51
53
|
"# Connects this user object to Blacklights Bookmarks. " +
|
52
54
|
"\n include Blacklight::User\n"
|
53
55
|
end
|
@@ -150,6 +150,13 @@ describe BlacklightConfigurationHelper do
|
|
150
150
|
|
151
151
|
label = helper.field_label :key_a, :key_b, "default text"
|
152
152
|
end
|
153
|
+
|
154
|
+
it "should compact nil keys (fixes rails/rails#19419)" do
|
155
|
+
allow(helper).to receive(:t).with(:key_a, default: [:key_b])
|
156
|
+
|
157
|
+
label = helper.field_label :key_a, nil, :key_b
|
158
|
+
|
159
|
+
end
|
153
160
|
end
|
154
161
|
|
155
162
|
describe "#default_per_page" do
|
@@ -449,4 +449,15 @@ describe BlacklightUrlHelper do
|
|
449
449
|
expect(url).to eq helper.bookmarks_url(format: :html, encrypted_user_id: 'xyz')
|
450
450
|
end
|
451
451
|
end
|
452
|
+
|
453
|
+
describe "#session_tracking_path" do
|
454
|
+
let(:document) { SolrDocument.new(id: 1) }
|
455
|
+
it "should determine the correct route for the document class" do
|
456
|
+
expect(helper.session_tracking_path(document)).to eq helper.track_solr_document_path(document)
|
457
|
+
end
|
458
|
+
|
459
|
+
it "should pass through tracking parameters" do
|
460
|
+
expect(helper.session_tracking_path(document, x: 1)).to eq helper.track_solr_document_path(document, x: 1)
|
461
|
+
end
|
462
|
+
end
|
452
463
|
end
|
@@ -213,11 +213,25 @@ describe "Blacklight::Configuration" do
|
|
213
213
|
"another_field_facet" => {},
|
214
214
|
"a_facet_field" => {},
|
215
215
|
})
|
216
|
-
expect { |b| @config.
|
217
|
-
|
218
|
-
expect(@config.index_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
216
|
+
expect { |b| @config.add_facet_field "*_facet", &b }.to yield_control.twice
|
217
|
+
expect(@config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
219
218
|
end
|
220
219
|
|
220
|
+
describe "if/unless conditions with legacy show parameter" do
|
221
|
+
it "should be hidden if the if condition is false" do
|
222
|
+
expect(@config.add_facet_field("hidden", if: false).if).to eq false
|
223
|
+
expect(@config.add_facet_field("hidden_with_legacy", if: false, show: true).if).to eq false
|
224
|
+
end
|
225
|
+
|
226
|
+
it "should be true if the if condition is true" do
|
227
|
+
expect(@config.add_facet_field("hidden", if: true).if).to eq true
|
228
|
+
expect(@config.add_facet_field("hidden_with_legacy", if: true, show: false).if).to eq true
|
229
|
+
end
|
230
|
+
|
231
|
+
it "should be true if the if condition is missing" do
|
232
|
+
expect(@config.add_facet_field("hidden", show: true).if).to eq true
|
233
|
+
end
|
234
|
+
end
|
221
235
|
end
|
222
236
|
|
223
237
|
describe "add_index_field" do
|
@@ -261,7 +275,6 @@ describe "Blacklight::Configuration" do
|
|
261
275
|
|
262
276
|
expect(@config.index_fields.keys).to eq ["some_field_display", "another_field_display"]
|
263
277
|
end
|
264
|
-
|
265
278
|
end
|
266
279
|
|
267
280
|
describe "add_show_field" do
|
@@ -370,8 +383,22 @@ describe "Blacklight::Configuration" do
|
|
370
383
|
|
371
384
|
expect(@config.search_fields["author_name"].label).to eq "Author Name"
|
372
385
|
end
|
373
|
-
|
374
|
-
|
386
|
+
|
387
|
+
describe "if/unless conditions with legacy include_in_simple_search" do
|
388
|
+
it "should be hidden if the if condition is false" do
|
389
|
+
expect(@config.add_search_field("hidden", if: false).if).to eq false
|
390
|
+
expect(@config.add_search_field("hidden_with_legacy", if: false, include_in_simple_search: true).if).to eq false
|
391
|
+
end
|
392
|
+
|
393
|
+
it "should be true if the if condition is true" do
|
394
|
+
expect(@config.add_search_field("hidden", if: true).if).to eq true
|
395
|
+
expect(@config.add_search_field("hidden_with_legacy", if: true, include_in_simple_search: false).if).to eq true
|
396
|
+
end
|
397
|
+
|
398
|
+
it "should be true if the if condition is missing" do
|
399
|
+
expect(@config.add_search_field("hidden", include_in_simple_search: true).if).to eq true
|
400
|
+
end
|
401
|
+
end
|
375
402
|
end
|
376
403
|
|
377
404
|
describe "add_sort_field" do
|
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: 5.10.
|
4
|
+
version: 5.10.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
|
-
date: 2015-03-
|
20
|
+
date: 2015-03-24 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|