blacklight 5.9.4 → 5.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_facets.scss +11 -10
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +14 -14
- data/app/helpers/blacklight/configuration_helper_behavior.rb +16 -10
- data/app/helpers/blacklight/facets_helper_behavior.rb +15 -14
- data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
- data/app/models/bookmark.rb +1 -4
- data/app/models/search.rb +3 -6
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_facet_limit.html.erb +5 -3
- data/app/views/catalog/_facet_pivot.html.erb +4 -4
- data/app/views/catalog/_home_text.html.erb +8 -48
- data/app/views/catalog/_index_default.html.erb +3 -3
- data/app/views/catalog/_show_default.html.erb +3 -3
- data/app/views/catalog/_sms_form.html.erb +1 -1
- data/app/views/catalog/facet.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/jetty.yml +0 -3
- data/config/locales/blacklight.de.yml +2 -0
- data/config/locales/blacklight.en.yml +2 -0
- data/config/locales/blacklight.es.yml +2 -0
- data/config/locales/blacklight.fr.yml +2 -0
- data/config/locales/blacklight.pt-BR.yml +2 -0
- data/lib/blacklight.rb +70 -26
- data/lib/blacklight/abstract_repository.rb +29 -0
- data/lib/blacklight/base.rb +7 -7
- data/lib/blacklight/bookmarks.rb +5 -5
- data/lib/blacklight/catalog.rb +34 -19
- data/lib/blacklight/catalog/search_context.rb +1 -1
- data/lib/blacklight/configuration.rb +112 -46
- data/lib/blacklight/configuration/facet_field.rb +9 -7
- data/lib/blacklight/configuration/field.rb +27 -0
- data/lib/blacklight/configuration/fields.rb +25 -20
- data/lib/blacklight/configuration/search_field.rb +6 -8
- data/lib/blacklight/configuration/solr_field.rb +3 -18
- data/lib/blacklight/configuration/sort_field.rb +6 -7
- data/lib/blacklight/document.rb +156 -0
- data/lib/blacklight/document/dublin_core.rb +41 -0
- data/lib/blacklight/document/email.rb +16 -0
- data/lib/blacklight/document/export.rb +107 -0
- data/lib/blacklight/document/extensions.rb +56 -0
- data/lib/blacklight/document/schema_org.rb +7 -0
- data/lib/blacklight/document/semantic_fields.rb +51 -0
- data/lib/blacklight/document/sms.rb +14 -0
- data/lib/blacklight/document_presenter.rb +3 -3
- data/lib/blacklight/exceptions.rb +9 -2
- data/lib/blacklight/facet.rb +21 -16
- data/lib/blacklight/request_builders.rb +60 -284
- data/lib/blacklight/routes.rb +1 -1
- data/lib/blacklight/search_builder.rb +130 -0
- data/lib/blacklight/search_helper.rb +316 -0
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/solr/document.rb +4 -187
- data/lib/blacklight/solr/document/dublin_core.rb +3 -37
- data/lib/blacklight/solr/document/email.rb +4 -13
- data/lib/blacklight/solr/document/export.rb +3 -103
- data/lib/blacklight/solr/document/extensions.rb +4 -52
- data/lib/blacklight/solr/document/more_like_this.rb +1 -1
- data/lib/blacklight/solr/document/schema_org.rb +4 -4
- data/lib/blacklight/solr/document/sms.rb +4 -11
- data/lib/blacklight/solr/facet_paginator.rb +2 -2
- data/lib/blacklight/solr/search_builder.rb +264 -0
- data/lib/blacklight/solr_helper.rb +6 -261
- data/lib/blacklight/solr_repository.rb +30 -24
- data/lib/blacklight/solr_response.rb +3 -3
- data/lib/blacklight/user.rb +1 -2
- data/lib/blacklight/utils.rb +0 -23
- data/lib/generators/blacklight/controller_generator.rb +38 -0
- data/lib/generators/blacklight/document_generator.rb +20 -0
- data/lib/generators/blacklight/install_generator.rb +38 -39
- data/lib/generators/blacklight/models_generator.rb +2 -62
- data/lib/generators/blacklight/templates/catalog_controller.rb +3 -4
- data/lib/generators/blacklight/templates/config/{solr.yml → blacklight.yml} +3 -0
- data/lib/generators/blacklight/templates/config/jetty.yml +0 -3
- data/lib/generators/blacklight/templates/solr_document.rb +6 -6
- data/lib/generators/blacklight/test_support_generator.rb +1 -6
- data/lib/generators/blacklight/user_generator.rb +59 -0
- data/lib/railties/blacklight.rake +16 -7
- data/spec/controllers/catalog_controller_spec.rb +9 -15
- data/spec/features/facets_spec.rb +8 -0
- data/spec/helpers/configuration_helper_spec.rb +6 -13
- data/spec/helpers/facets_helper_spec.rb +3 -2
- data/spec/lib/blacklight/configuration_spec.rb +11 -38
- data/spec/lib/blacklight/{solr/document → document}/dublin_core_spec.rb +4 -4
- data/spec/lib/blacklight/{solr/document → document}/email_spec.rb +2 -2
- data/spec/lib/blacklight/{solr/document → document}/sms_spec.rb +2 -2
- data/spec/lib/blacklight/search_builder_spec.rb +145 -0
- data/spec/lib/blacklight/search_helper_spec.rb +775 -0
- data/spec/lib/blacklight/solr/document/more_like_this_spec.rb +1 -1
- data/spec/lib/blacklight/solr/search_builder_spec.rb +561 -0
- data/spec/lib/blacklight/solr_helper_spec.rb +5 -1291
- data/spec/lib/blacklight/solr_repository_spec.rb +13 -13
- data/spec/models/record_mailer_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +2 -2
- data/spec/views/catalog/index.atom.builder_spec.rb +1 -1
- data/tasks/blacklight.rake +1 -1
- data/template.demo.rb +1 -1
- metadata +33 -45
- data/doc/Adding-new-document-actions.md +0 -94
- data/doc/Atom-Responses.md +0 -90
- data/doc/Blacklight-Add-ons.md +0 -23
- data/doc/Blacklight-configuration.md +0 -411
- data/doc/Blacklight-on-Heroku.md +0 -100
- data/doc/Blacklight-out-of-the-box.md +0 -47
- data/doc/Bookmarks.md +0 -1
- data/doc/Code4Lib-2014.md +0 -94
- data/doc/Configuration---Facet-Fields.md +0 -130
- data/doc/Configuration---Results-View.md +0 -224
- data/doc/Configuration---Solr-fields.md +0 -106
- data/doc/Configuring-and-Customizing-Blacklight.md +0 -257
- data/doc/Configuring-rails-routes.md +0 -13
- data/doc/Contributing-to-Blacklight.md +0 -43
- data/doc/Examples.md +0 -120
- data/doc/Extending-or-Modifying-Blacklight-Search-Behavior.md +0 -141
- data/doc/Home.md +0 -100
- data/doc/How-to-release-a-version.md +0 -45
- data/doc/Indexing-your-data-into-solr.md +0 -36
- data/doc/Internationalization.md +0 -32
- data/doc/JSON-API.md +0 -83
- data/doc/Pagination.md +0 -52
- data/doc/Providing-your-own-view-templates.md +0 -69
- data/doc/Quickstart.md +0 -153
- data/doc/README_SOLR.md +0 -245
- data/doc/Saved-Searches.md +0 -5
- data/doc/Solr-Configuration.md +0 -154
- data/doc/Sunspot-for-indexing.md +0 -46
- data/doc/Support.md +0 -33
- data/doc/Theming.md +0 -62
- data/doc/Understanding-Rails-and-Blacklight.md +0 -75
- data/doc/User-Authentication.md +0 -60
- data/doc/_Sidebar.md +0 -9
- data/doc/testing.md +0 -58
@@ -1,10 +1,10 @@
|
|
1
1
|
<%# default partial to display solr document fields in catalog index view -%>
|
2
2
|
<dl class="document-metadata dl-horizontal dl-invert">
|
3
3
|
|
4
|
-
<% index_fields(document).each do |
|
4
|
+
<% index_fields(document).each do |field_name, field| -%>
|
5
5
|
<% if should_render_index_field? document, field %>
|
6
|
-
<dt class="blacklight-<%=
|
7
|
-
<dd class="blacklight-<%=
|
6
|
+
<dt class="blacklight-<%= field_name.parameterize %>"><%= render_index_field_label document, field: field_name %></dt>
|
7
|
+
<dd class="blacklight-<%= field_name.parameterize %>"><%= render_index_field_value document, field: field_name %></dd>
|
8
8
|
<% end -%>
|
9
9
|
<% end -%>
|
10
10
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<%# default partial to display solr document fields in catalog show view -%>
|
2
2
|
<dl class="dl-horizontal dl-invert">
|
3
|
-
<% document_show_fields(document).each do |
|
3
|
+
<% document_show_fields(document).each do |field_name, field| -%>
|
4
4
|
<% if should_render_show_field? document, field %>
|
5
|
-
<dt class="blacklight-<%=
|
6
|
-
<dd class="blacklight-<%=
|
5
|
+
<dt class="blacklight-<%= field_name.parameterize %>"><%= render_document_show_field_label document, field: field_name %></dt>
|
6
|
+
<dd class="blacklight-<%= field_name.parameterize %>"><%= render_document_show_field_value document, field: field_name %></dd>
|
7
7
|
<% end -%>
|
8
8
|
<% end -%>
|
9
9
|
</dl>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
<div class="modal-header">
|
6
6
|
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-hidden="true">×</button>
|
7
|
-
<h3 class="modal-title"><%= facet_field_label(@facet.
|
7
|
+
<h3 class="modal-title"><%= facet_field_label(@facet.key) %></h3>
|
8
8
|
</div>
|
9
9
|
<div class="modal-body">
|
10
10
|
<div class="facet_extended_list">
|
data/blacklight.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_dependency "rails", ">= 3.2.6", "< 5"
|
21
21
|
s.add_dependency "nokogiri", "~>1.6" # XML Parser
|
22
22
|
s.add_dependency "kaminari", "~> 0.13" # the pagination (page 1,2,3, etc..) of our search results
|
23
|
-
s.add_dependency "rsolr", "~> 1.0.
|
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"
|
26
26
|
|
data/config/jetty.yml
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
development:
|
2
2
|
startup_wait: 15
|
3
3
|
jetty_port: 8983
|
4
|
-
java_version: ">= 1.7"
|
5
4
|
test:
|
6
5
|
startup_wait: 60
|
7
6
|
jetty_port: <%= ENV['TEST_JETTY_PORT'] || 8888 %>
|
8
7
|
<%= ENV['TEST_JETTY_PATH'] ? "jetty_home: " + ENV['TEST_JETTY_PATH'] : '' %>
|
9
|
-
java_version: ">= 1.7"
|
10
8
|
production:
|
11
9
|
startup_wait: 15
|
12
10
|
jetty_port: 8983
|
13
|
-
java_version: ">= 1.7"
|
@@ -183,7 +183,9 @@ de:
|
|
183
183
|
count: 'Numerisch ordnen'
|
184
184
|
index: 'A-Z Ordnen'
|
185
185
|
count: '%{number}'
|
186
|
+
# i18n key 'more' is deprecated and will be removed in Blacklight 6.0
|
186
187
|
more: 'mehr »'
|
188
|
+
more_html: 'mehr <span class="sr-only">%{field_name}</span> »'
|
187
189
|
selected:
|
188
190
|
remove: '[entfernen]'
|
189
191
|
group:
|
@@ -183,7 +183,9 @@ en:
|
|
183
183
|
count: 'Numerical Sort'
|
184
184
|
index: 'A-Z Sort'
|
185
185
|
count: '%{number}'
|
186
|
+
# i18n key 'more' is deprecated and will be removed in Blacklight 6.0
|
186
187
|
more: 'more »'
|
188
|
+
more_html: 'more <span class="sr-only">%{field_name}</span> »'
|
187
189
|
selected:
|
188
190
|
remove: '[remove]'
|
189
191
|
group:
|
@@ -183,7 +183,9 @@ es:
|
|
183
183
|
count: 'Ordenación numérica'
|
184
184
|
index: 'Ordenación A-Z'
|
185
185
|
count: '%{number}'
|
186
|
+
# i18n key 'more' is deprecated and will be removed in Blacklight 6.0
|
186
187
|
more: 'más »'
|
188
|
+
more_html: 'más <span class="sr-only">%{field_name}</span> »'
|
187
189
|
selected:
|
188
190
|
remove: '[borrar]'
|
189
191
|
group:
|
@@ -199,7 +199,9 @@ fr:
|
|
199
199
|
count: 'Du + au - fréquent'
|
200
200
|
index: 'Tri de A à Z'
|
201
201
|
count: '%{number}'
|
202
|
+
# i18n key 'more' is deprecated and will be removed in Blacklight 6.0
|
202
203
|
more: 'plus »'
|
204
|
+
more_html: 'plus <span class="sr-only">%{field_name}</span> »'
|
203
205
|
selected:
|
204
206
|
remove: '[ X ]'
|
205
207
|
group:
|
@@ -203,7 +203,9 @@ pt-BR:
|
|
203
203
|
count: 'Ordenar por Número'
|
204
204
|
index: 'Ordem Alfabética A-Z'
|
205
205
|
count: '%{number}'
|
206
|
+
# i18n key 'more' is deprecated and will be removed in Blacklight 6.0
|
206
207
|
more: 'mais »'
|
208
|
+
more_html: 'mais <span class="sr-only">%{field_name}</span> »'
|
207
209
|
selected:
|
208
210
|
remove: '[remover]'
|
209
211
|
filters:
|
data/lib/blacklight.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'kaminari'
|
3
|
-
require 'rsolr'
|
4
3
|
require 'deprecation'
|
5
|
-
require 'blacklight/utils'
|
6
|
-
|
7
4
|
module Blacklight
|
8
|
-
|
9
5
|
autoload :Configurable, 'blacklight/configurable'
|
10
6
|
autoload :Configuration, 'blacklight/configuration'
|
11
7
|
autoload :SearchFields, 'blacklight/search_fields'
|
12
|
-
|
13
|
-
autoload :Solr, 'blacklight/solr'
|
14
|
-
|
15
|
-
autoload :SolrHelper, 'blacklight/solr_helper'
|
16
|
-
autoload :SolrRepository, 'blacklight/solr_repository'
|
17
|
-
autoload :RequestBuilders, 'blacklight/request_builders'
|
8
|
+
autoload :SearchBuilder, 'blacklight/search_builder'
|
18
9
|
|
10
|
+
autoload :Document, 'blacklight/document'
|
11
|
+
autoload :Solr, 'blacklight/solr'
|
12
|
+
|
13
|
+
autoload :SearchHelper, 'blacklight/search_helper'
|
14
|
+
autoload :SolrHelper, 'blacklight/solr_helper'
|
15
|
+
autoload :AbstractRepository, 'blacklight/abstract_repository'
|
16
|
+
autoload :SolrRepository, 'blacklight/solr_repository'
|
17
|
+
autoload :RequestBuilders, 'blacklight/request_builders'
|
18
|
+
|
19
19
|
autoload :Exceptions, 'blacklight/exceptions'
|
20
20
|
|
21
21
|
autoload :User, 'blacklight/user'
|
@@ -23,17 +23,19 @@ module Blacklight
|
|
23
23
|
autoload :Controller, 'blacklight/controller'
|
24
24
|
autoload :Base, 'blacklight/base'
|
25
25
|
autoload :Catalog, 'blacklight/catalog'
|
26
|
-
autoload :TokenBasedUser,
|
26
|
+
autoload :TokenBasedUser, 'blacklight/token_based_user'
|
27
27
|
autoload :Bookmarks, 'blacklight/bookmarks'
|
28
28
|
autoload :DocumentPresenter, 'blacklight/document_presenter'
|
29
29
|
|
30
30
|
autoload :Routes, 'blacklight/routes'
|
31
|
-
|
31
|
+
|
32
|
+
autoload :OpenStructWithHashAccess, 'blacklight/utils'
|
32
33
|
autoload :SolrResponse, 'blacklight/solr_response'
|
33
34
|
autoload :Facet, 'blacklight/facet'
|
34
35
|
|
35
36
|
extend SearchFields
|
36
|
-
|
37
|
+
extend Deprecation
|
38
|
+
|
37
39
|
require 'blacklight/version'
|
38
40
|
require 'blacklight/engine' if defined?(Rails)
|
39
41
|
|
@@ -45,26 +47,74 @@ module Blacklight
|
|
45
47
|
# other services (e.g. refworks callback urls)
|
46
48
|
mattr_accessor :secret_key
|
47
49
|
@@secret_key = nil
|
48
|
-
|
50
|
+
|
51
|
+
# @deprecated
|
49
52
|
def self.solr_file
|
50
53
|
"#{::Rails.root.to_s}/config/solr.yml"
|
51
54
|
end
|
52
|
-
|
55
|
+
|
56
|
+
def self.blacklight_config_file
|
57
|
+
"#{::Rails.root.to_s}/config/blacklight.yml"
|
58
|
+
end
|
59
|
+
|
53
60
|
def self.add_routes(router, options = {})
|
54
61
|
Blacklight::Routes.new(router, options).draw
|
55
62
|
end
|
56
63
|
|
57
64
|
def self.solr
|
58
|
-
|
65
|
+
Deprecation.warn Blacklight, "Blacklight.solr is deprecated and will be removed in 6.0.0. Use Blacklight.default_index.connection instead", caller
|
66
|
+
default_index.connection
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.default_index
|
70
|
+
@default_index ||= Blacklight::SolrRepository.new(Blacklight::Configuration.new)
|
59
71
|
end
|
60
72
|
|
61
73
|
def self.solr_config
|
62
|
-
|
63
|
-
|
64
|
-
|
74
|
+
Deprecation.warn Blacklight, "Blacklight.solr_config is deprecated and will be removed in 6.0.0. Use Blacklight.connection_config instead", caller
|
75
|
+
connection_config
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.connection_config
|
79
|
+
@connection_config ||= begin
|
80
|
+
raise "The #{::Rails.env} environment settings were not found in the blacklight.yml config" unless blacklight_yml[::Rails.env]
|
81
|
+
blacklight_yml[::Rails.env].symbolize_keys
|
65
82
|
end
|
66
83
|
end
|
67
84
|
|
85
|
+
def self.blacklight_yml
|
86
|
+
require 'erb'
|
87
|
+
require 'yaml'
|
88
|
+
|
89
|
+
return @blacklight_yml if @blacklight_yml
|
90
|
+
unless File.exists?(blacklight_config_file)
|
91
|
+
if File.exists?(solr_file)
|
92
|
+
Deprecation.warn Blacklight, "Configuration is now done via blacklight.yml. Suppport for solr.yml will be removed in blacklight 6.0.0"
|
93
|
+
return solr_yml
|
94
|
+
else
|
95
|
+
raise "You are missing a configuration file: #{blacklight_config_file}. Have you run \"rails generate blacklight:install\"?"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
begin
|
100
|
+
blacklight_erb = ERB.new(IO.read(blacklight_config_file)).result(binding)
|
101
|
+
rescue Exception => e
|
102
|
+
raise("#{blacklight_config_file} was found, but could not be parsed with ERB. \n#{$!.inspect}")
|
103
|
+
end
|
104
|
+
|
105
|
+
begin
|
106
|
+
@blacklight_yml = YAML::load(blacklight_erb)
|
107
|
+
rescue StandardError => e
|
108
|
+
raise("#{blacklight_config_file} was found, but could not be parsed.\n")
|
109
|
+
end
|
110
|
+
|
111
|
+
if @blacklight_yml.nil? || !@blacklight_yml.is_a?(Hash)
|
112
|
+
raise("#{blacklight_config_file} was found, but was blank or malformed.\n")
|
113
|
+
end
|
114
|
+
|
115
|
+
return @blacklight_yml
|
116
|
+
end
|
117
|
+
|
68
118
|
def self.solr_yml
|
69
119
|
require 'erb'
|
70
120
|
require 'yaml'
|
@@ -94,13 +144,7 @@ module Blacklight
|
|
94
144
|
end
|
95
145
|
|
96
146
|
def self.logger
|
97
|
-
|
98
|
-
::Rails.logger if defined? Rails and Rails.respond_to? :logger
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def self.logger= logger
|
103
|
-
@logger = logger
|
147
|
+
::Rails.logger
|
104
148
|
end
|
105
149
|
|
106
150
|
#############
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Blacklight
|
2
|
+
class AbstractRepository
|
3
|
+
attr_accessor :blacklight_config
|
4
|
+
attr_writer :connection
|
5
|
+
|
6
|
+
# ActiveSupport::Benchmarkable requires a logger method
|
7
|
+
attr_accessor :logger
|
8
|
+
|
9
|
+
include ActiveSupport::Benchmarkable
|
10
|
+
|
11
|
+
def initialize blacklight_config
|
12
|
+
@blacklight_config = blacklight_config
|
13
|
+
end
|
14
|
+
|
15
|
+
def connection
|
16
|
+
@connection ||= build_connection
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
protected
|
21
|
+
def connection_config
|
22
|
+
@connection_config ||= Blacklight.connection_config
|
23
|
+
end
|
24
|
+
|
25
|
+
def logger
|
26
|
+
@logger ||= Rails.logger if defined? Rails
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/blacklight/base.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
module Blacklight::Base
|
2
|
+
module Blacklight::Base
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
include Blacklight::Configurable
|
6
|
-
include Blacklight::
|
6
|
+
include Blacklight::SearchHelper
|
7
7
|
|
8
8
|
include Blacklight::Catalog::SearchContext
|
9
9
|
|
10
|
-
included do
|
11
|
-
# When
|
10
|
+
included do
|
11
|
+
# When Blacklight::Exceptions::InvalidRequest is raised, the rsolr_request_error method is executed.
|
12
12
|
# The index action will more than likely throw this one.
|
13
13
|
# Example, when the standard query parser is used, and a user submits a "bad" query.
|
14
|
-
rescue_from
|
14
|
+
rescue_from Blacklight::Exceptions::InvalidRequest, with: :handle_request_error if respond_to? :rescue_from
|
15
15
|
end
|
16
16
|
|
17
17
|
protected
|
18
18
|
|
19
|
-
# when
|
20
|
-
def
|
19
|
+
# when The index throws an error (Blacklight::Exceptions::InvalidRequest), this method is executed.
|
20
|
+
def handle_request_error(exception)
|
21
21
|
|
22
22
|
if Rails.env.development? || Rails.env.test?
|
23
23
|
raise exception # Rails own code will catch and give usual Rails error page with stack trace
|
data/lib/blacklight/bookmarks.rb
CHANGED
@@ -8,7 +8,7 @@ module Blacklight::Bookmarks
|
|
8
8
|
##
|
9
9
|
# Give Bookmarks access to the CatalogController configuration
|
10
10
|
include Blacklight::Configurable
|
11
|
-
include Blacklight::
|
11
|
+
include Blacklight::SearchHelper
|
12
12
|
include Blacklight::TokenBasedUser
|
13
13
|
|
14
14
|
copy_blacklight_config_from(CatalogController)
|
@@ -22,7 +22,7 @@ module Blacklight::Bookmarks
|
|
22
22
|
def action_documents
|
23
23
|
bookmarks = token_or_current_or_guest_user.bookmarks
|
24
24
|
bookmark_ids = bookmarks.collect { |b| b.document_id.to_s }
|
25
|
-
|
25
|
+
fetch(bookmark_ids)
|
26
26
|
end
|
27
27
|
|
28
28
|
def action_success_redirect_path
|
@@ -39,7 +39,7 @@ module Blacklight::Bookmarks
|
|
39
39
|
@bookmarks = token_or_current_or_guest_user.bookmarks
|
40
40
|
bookmark_ids = @bookmarks.collect { |b| b.document_id.to_s }
|
41
41
|
|
42
|
-
@response, @document_list =
|
42
|
+
@response, @document_list = fetch(bookmark_ids)
|
43
43
|
|
44
44
|
respond_to do |format|
|
45
45
|
format.html { }
|
@@ -71,7 +71,7 @@ module Blacklight::Bookmarks
|
|
71
71
|
if params[:bookmarks]
|
72
72
|
@bookmarks = params[:bookmarks]
|
73
73
|
else
|
74
|
-
@bookmarks = [{ document_id: params[:id], document_type: blacklight_config.
|
74
|
+
@bookmarks = [{ document_id: params[:id], document_type: blacklight_config.document_model.to_s }]
|
75
75
|
end
|
76
76
|
|
77
77
|
current_or_guest_user.save! unless current_or_guest_user.persisted?
|
@@ -96,7 +96,7 @@ module Blacklight::Bookmarks
|
|
96
96
|
# Beware, :id is the Solr document_id, not the actual Bookmark id.
|
97
97
|
# idempotent, as DELETE is supposed to be.
|
98
98
|
def destroy
|
99
|
-
bookmark = current_or_guest_user.bookmarks.where(document_id: params[:id], document_type: blacklight_config.
|
99
|
+
bookmark = current_or_guest_user.bookmarks.where(document_id: params[:id], document_type: blacklight_config.document_model).first
|
100
100
|
|
101
101
|
success = bookmark && bookmark.delete && bookmark.destroyed?
|
102
102
|
|
data/lib/blacklight/catalog.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
module Blacklight::Catalog
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
extend ActiveSupport::Autoload
|
5
|
+
extend Deprecation
|
5
6
|
|
6
7
|
eager_autoload do
|
7
8
|
autoload :ComponentConfiguration
|
@@ -20,17 +21,19 @@ module Blacklight::Catalog
|
|
20
21
|
included do
|
21
22
|
helper_method :sms_mappings, :has_search_parameters?
|
22
23
|
|
23
|
-
#
|
24
|
-
#
|
25
|
-
|
26
|
-
|
24
|
+
# When an action raises Blacklight::Exceptions::RecordNotFound, handle
|
25
|
+
# the exception appropriately.
|
26
|
+
rescue_from Blacklight::Exceptions::RecordNotFound, with: :invalid_document_id_error
|
27
|
+
|
28
|
+
# Deprecated:
|
29
|
+
rescue_from Blacklight::Exceptions::InvalidSolrID, with: :invalid_document_id_error
|
27
30
|
|
28
31
|
record_search_parameters
|
29
32
|
end
|
30
33
|
|
31
34
|
# get search results from the solr index
|
32
35
|
def index
|
33
|
-
(@response, @document_list) =
|
36
|
+
(@response, @document_list) = search_results(params, search_params_logic)
|
34
37
|
|
35
38
|
respond_to do |format|
|
36
39
|
format.html { store_preferred_view }
|
@@ -48,21 +51,13 @@ module Blacklight::Catalog
|
|
48
51
|
# get a single document from the index
|
49
52
|
# to add responses for formats other than html or json see _Blacklight::Document::Export_
|
50
53
|
def show
|
51
|
-
@response, @document =
|
54
|
+
@response, @document = fetch params[:id]
|
52
55
|
|
53
56
|
respond_to do |format|
|
54
|
-
format.html {setup_next_and_previous_documents}
|
55
|
-
|
56
|
-
format.json { render json: {response: {document: @document}}}
|
57
|
-
|
58
|
-
# Add all dynamically added (such as by document extensions)
|
59
|
-
# export formats.
|
60
|
-
@document.export_formats.each_key do | format_name |
|
61
|
-
# It's important that the argument to send be a symbol;
|
62
|
-
# if it's a string, it makes Rails unhappy for unclear reasons.
|
63
|
-
format.send(format_name.to_sym) { render :text => @document.export_as(format_name), :layout => false }
|
64
|
-
end
|
57
|
+
format.html { setup_next_and_previous_documents }
|
58
|
+
format.json { render json: { response: { document: @document } } }
|
65
59
|
|
60
|
+
additional_export_formats(@document, format)
|
66
61
|
end
|
67
62
|
end
|
68
63
|
|
@@ -82,7 +77,7 @@ module Blacklight::Catalog
|
|
82
77
|
# displays values and pagination links for a single facet field
|
83
78
|
def facet
|
84
79
|
@facet = blacklight_config.facet_fields[params[:id]]
|
85
|
-
@response = get_facet_field_response(@facet.
|
80
|
+
@response = get_facet_field_response(@facet.key, params)
|
86
81
|
@display_facet = @response.facets.first
|
87
82
|
|
88
83
|
@pagination = facet_paginator(@facet, @display_facet)
|
@@ -111,7 +106,7 @@ module Blacklight::Catalog
|
|
111
106
|
end
|
112
107
|
|
113
108
|
def action_documents
|
114
|
-
|
109
|
+
fetch(Array(params[:id]))
|
115
110
|
end
|
116
111
|
|
117
112
|
def action_success_redirect_path
|
@@ -171,6 +166,15 @@ module Blacklight::Catalog
|
|
171
166
|
end
|
172
167
|
end
|
173
168
|
|
169
|
+
##
|
170
|
+
# Render additional export formats for the show action, as provided by
|
171
|
+
# the document extension framework. See _Blacklight::Document::Export_
|
172
|
+
def additional_export_formats(document, format)
|
173
|
+
document.export_formats.each_key do | format_name |
|
174
|
+
format.send(format_name.to_sym) { render text: document.export_as(format_name), layout: false }
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
174
178
|
##
|
175
179
|
# Try to render a response from the document export formats available
|
176
180
|
def document_export_formats format
|
@@ -295,10 +299,20 @@ module Blacklight::Catalog
|
|
295
299
|
flash[:error].blank?
|
296
300
|
end
|
297
301
|
|
302
|
+
##
|
298
303
|
# when a request for /catalog/BAD_SOLR_ID is made, this method is executed.
|
299
304
|
# Just returns a 404 response, but you can override locally in your own
|
300
305
|
# CatalogController to do something else -- older BL displayed a Catalog#inde
|
301
306
|
# page with a flash message and a 404 status.
|
307
|
+
def invalid_document_id_error *args
|
308
|
+
Deprecation.silence(Blacklight::Catalog) do
|
309
|
+
invalid_solr_id_error *args
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
##
|
314
|
+
# DEPRECATED; this method will be removed in Blacklight 6.0 and the functionality
|
315
|
+
# moved to invalid_document_id_error
|
302
316
|
def invalid_solr_id_error(exception)
|
303
317
|
error_info = {
|
304
318
|
"status" => "404",
|
@@ -321,6 +335,7 @@ module Blacklight::Catalog
|
|
321
335
|
end
|
322
336
|
end
|
323
337
|
end
|
338
|
+
deprecation_deprecate invalid_solr_id_error: :invalid_document_id_error
|
324
339
|
|
325
340
|
def start_new_search_session?
|
326
341
|
action_name == "index"
|