blacklight 5.1.1 → 5.2.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/search_context.js +38 -24
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +49 -70
- data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -8
- data/app/helpers/blacklight/configuration_helper_behavior.rb +10 -2
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -1
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/url_helper_behavior.rb +41 -7
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_per_page_widget.html.erb +4 -4
- data/app/views/catalog/_previous_next_doc.html.erb +1 -1
- data/app/views/catalog/_show_tools.html.erb +1 -1
- data/app/views/catalog/show.html.erb +1 -1
- data/app/views/layouts/blacklight.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/jetty.yml +3 -0
- data/config/locales/blacklight.es.yml +220 -0
- data/gemfiles/rails4.1.gemfile +10 -0
- data/lib/blacklight/base.rb +1 -1
- data/lib/blacklight/catalog/search_context.rb +15 -15
- data/lib/blacklight/catalog.rb +19 -6
- data/lib/blacklight/configuration.rb +126 -31
- data/lib/blacklight/document_presenter.rb +168 -0
- data/lib/blacklight/request_builders.rb +288 -0
- data/lib/blacklight/routes.rb +6 -2
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr_helper.rb +50 -323
- data/lib/blacklight/solr_response/facets.rb +7 -3
- data/lib/blacklight/utils.rb +39 -7
- data/lib/blacklight.rb +5 -3
- data/lib/generators/blacklight/install_generator.rb +17 -5
- data/lib/generators/blacklight/models_generator.rb +0 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +6 -0
- data/lib/generators/blacklight/templates/config/jetty.yml +8 -4
- data/lib/generators/blacklight/templates/config/solr.yml +2 -0
- data/spec/controllers/catalog_controller_spec.rb +41 -22
- data/spec/features/alternate_controller_spec.rb +1 -1
- data/spec/features/search_filters_spec.rb +24 -24
- data/spec/features/search_results_spec.rb +9 -4
- data/spec/features/search_sort_spec.rb +1 -1
- data/spec/helpers/blacklight_helper_spec.rb +87 -0
- data/spec/helpers/catalog_helper_spec.rb +5 -10
- data/spec/helpers/configuration_helper_spec.rb +22 -1
- data/spec/helpers/facets_helper_spec.rb +6 -0
- data/spec/helpers/render_constraints_helper_spec.rb +1 -2
- data/spec/helpers/url_helper_spec.rb +45 -2
- data/spec/lib/blacklight/routes_spec.rb +4 -4
- data/spec/lib/blacklight/solr_helper_spec.rb +364 -253
- data/spec/lib/blacklight/solr_response/facets_spec.rb +82 -0
- data/spec/lib/blacklight/solr_response_spec.rb +3 -1
- data/spec/lib/document_presenter_spec.rb +216 -0
- data/spec/lib/utils_spec.rb +8 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/index.html.erb_spec.rb +29 -21
- data/spec/views/catalog/show.html.erb_spec.rb +11 -7
- data/template.demo.rb +20 -0
- metadata +12 -4
- data/lib/generators/blacklight/jetty_generator.rb +0 -70
@@ -0,0 +1,220 @@
|
|
1
|
+
es:
|
2
|
+
views:
|
3
|
+
pagination:
|
4
|
+
first: '« Primero'
|
5
|
+
last: 'Ultimo »'
|
6
|
+
previous: '« Anterior'
|
7
|
+
next: 'Siguiente »'
|
8
|
+
truncate: '…'
|
9
|
+
|
10
|
+
pagination_compact:
|
11
|
+
previous: '« Anterior'
|
12
|
+
next: 'Siguiente »'
|
13
|
+
|
14
|
+
blacklight:
|
15
|
+
application_name: 'Blacklight'
|
16
|
+
|
17
|
+
header_links:
|
18
|
+
login: 'Entrar'
|
19
|
+
logout: 'Salir'
|
20
|
+
bookmarks: 'Favoritos'
|
21
|
+
saved_searches: 'Búsquedas guardadas'
|
22
|
+
search_history: 'Historia'
|
23
|
+
|
24
|
+
welcome: '¡Bienvenido!'
|
25
|
+
and: 'y'
|
26
|
+
or: 'o'
|
27
|
+
|
28
|
+
bookmarks:
|
29
|
+
title: 'Favoritos'
|
30
|
+
no_bookmarks: 'Usted no tiene favoritos'
|
31
|
+
add:
|
32
|
+
button: 'Favoritos'
|
33
|
+
success:
|
34
|
+
one: 'Éxito al añadir su favorito.'
|
35
|
+
other: 'Éxito añadido favorito.'
|
36
|
+
failure: 'Lo siento, hubo un problema al guardar los favoritos.'
|
37
|
+
remove:
|
38
|
+
button: 'Borrar favorito'
|
39
|
+
success: 'Borrado favorito.'
|
40
|
+
failure: 'Lo siento, hubo un problema al borrar los favoritos.'
|
41
|
+
action_confirm: '¿Quitar este favorito?'
|
42
|
+
clear:
|
43
|
+
action_title: 'Borrar favorito'
|
44
|
+
action_confirm: '¿Borrar sus favoritos?'
|
45
|
+
success: 'Se borraron sus favoritos.'
|
46
|
+
failure: 'Lo siento, hubo un problema al borrar sus favoritos.'
|
47
|
+
need_login: 'Por favor, inicie sesión para administrar y ver sus favoritos.'
|
48
|
+
list_title: 'Mis Favoritos'
|
49
|
+
delete: 'Borrar'
|
50
|
+
|
51
|
+
saved_searches:
|
52
|
+
add:
|
53
|
+
success: 'Éxito al añadir su búsqueda.'
|
54
|
+
failure: 'Hubo un problema al guardar su búsqueda.'
|
55
|
+
remove:
|
56
|
+
success: 'Éxito al borrar su búsqueda.'
|
57
|
+
failure: 'Lo siento, hubo un problema al borrar su busqueda.'
|
58
|
+
clear:
|
59
|
+
action_title: 'Borrar Búsquedas Guardadas'
|
60
|
+
action_confirm: '¿Borrar Búsquedas Guardadas?'
|
61
|
+
success: 'Se borraron sus búsquedas guardadas'
|
62
|
+
failure: 'Hubo un problema al borrar sus búsquedas.'
|
63
|
+
title: 'Búsquedas guardadas'
|
64
|
+
need_login: 'Por favor, inicie sesión para administrar y ver sus búsquedas guardadas.'
|
65
|
+
no_searches: 'No tienes búsquedas guardadas'
|
66
|
+
list_title: 'Sus búsquedas guardadas'
|
67
|
+
delete: 'Borrar'
|
68
|
+
|
69
|
+
search_history:
|
70
|
+
clear:
|
71
|
+
action_title: 'Borrar historial de búsqueda'
|
72
|
+
action_confirm: '¿Borrar el historial de búsqueda?'
|
73
|
+
success: 'Se borro el historial de búsqueda.'
|
74
|
+
failure: 'Hubo un problema al borrar su historial de búsqueda.'
|
75
|
+
title: 'Historia'
|
76
|
+
no_history: 'Usted no tiene historial de búsqueda'
|
77
|
+
recent: 'Sus búsquedas recientes'
|
78
|
+
forget: 'Olvidar'
|
79
|
+
save: 'Guardar'
|
80
|
+
|
81
|
+
tools:
|
82
|
+
title: 'Herramientas'
|
83
|
+
cite: 'Cité'
|
84
|
+
endnote: 'Exportar a EndNote'
|
85
|
+
refworks: 'Exportar a Refworks'
|
86
|
+
email: 'Correo electrónico'
|
87
|
+
sms: 'Enviar SMS'
|
88
|
+
clear: 'Borrar'
|
89
|
+
|
90
|
+
citation:
|
91
|
+
mla: 'MLA'
|
92
|
+
apa: 'APA'
|
93
|
+
chicago: 'Chicago'
|
94
|
+
|
95
|
+
email:
|
96
|
+
form:
|
97
|
+
title: 'Enviar'
|
98
|
+
to: 'Email:'
|
99
|
+
message: 'Mensaje:'
|
100
|
+
submit: 'Enviar'
|
101
|
+
text:
|
102
|
+
title: 'Titulo: %{value}'
|
103
|
+
author: 'Autor: %{value}'
|
104
|
+
format: 'Formato: %{value}'
|
105
|
+
language: 'Idioma: %{value}'
|
106
|
+
subject:
|
107
|
+
one: 'Ficha artículo: %{title}'
|
108
|
+
other: 'Ficha artículos'
|
109
|
+
url: 'URL: %{url}'
|
110
|
+
message: 'Mensaje: %{message}'
|
111
|
+
|
112
|
+
success: "Email enviado"
|
113
|
+
|
114
|
+
errors:
|
115
|
+
to:
|
116
|
+
invalid: 'Debe entrar un email válido'
|
117
|
+
blank: 'Debe introducir un destinatario para enviar este mensaje'
|
118
|
+
sms:
|
119
|
+
form:
|
120
|
+
title: 'Enviar SMS'
|
121
|
+
to: 'Número de teléfono:'
|
122
|
+
carrier: 'Compañía telefónica'
|
123
|
+
carrier_prompt: 'Por favor, seleccione su compañía telefónica'
|
124
|
+
submit: 'Enviar'
|
125
|
+
text:
|
126
|
+
title: '%{value}'
|
127
|
+
author: 'por %{value}'
|
128
|
+
url: 'Link: %{url}'
|
129
|
+
success: "SMS enviado"
|
130
|
+
errors:
|
131
|
+
to:
|
132
|
+
invalid: 'Debe entrar un número de teléfono válido de 10 dígitos'
|
133
|
+
blank: "Debe introducir el número de teléfono del destinatario para enviar este mensaj"
|
134
|
+
carrier:
|
135
|
+
blank: 'Debe seleccionar compañía telefónica'
|
136
|
+
invalid: "Debe entrar una compañía telefónica válida"
|
137
|
+
|
138
|
+
back_to_search: 'Volver a Buscar'
|
139
|
+
back_to_bookmarks: 'Volver a sus favoritos'
|
140
|
+
|
141
|
+
search:
|
142
|
+
title: '%{application_name} Resultados de la búsqueda'
|
143
|
+
search_results_header: 'Buscar'
|
144
|
+
search_results: 'Resultados de la búsqueda'
|
145
|
+
errors:
|
146
|
+
request_error: "Lo siento, no entiendo esta búsqueda"
|
147
|
+
invalid_solr_id: "Lo sentimos, usted ha solicitado un registro que no existe."
|
148
|
+
per_page:
|
149
|
+
label: '%{count}<span class="sr-only"> por página</span>'
|
150
|
+
button_label: '%{count} por página'
|
151
|
+
title: 'El número de resultados a mostrar por página'
|
152
|
+
submit: 'Actualización'
|
153
|
+
sort:
|
154
|
+
label: 'Ordenar por %{field}'
|
155
|
+
submit: 'Resultados de ordenación'
|
156
|
+
form:
|
157
|
+
search_field:
|
158
|
+
label: 'Buscar en'
|
159
|
+
title: 'Opciones de Búsqueda temática'
|
160
|
+
post_label: 'para'
|
161
|
+
q: 'Buscar...'
|
162
|
+
submit: 'Buscar'
|
163
|
+
pagination:
|
164
|
+
title: 'Resultados de navegación'
|
165
|
+
pagination_info:
|
166
|
+
no_items_found: 'No %{entry_name} encontrado'
|
167
|
+
single_item_found: '<strong>1</strong> %{entry_name} encontrado'
|
168
|
+
pages:
|
169
|
+
one: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> de <strong>%{total_num}</strong>'
|
170
|
+
other: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> de <strong>%{total_num}</strong>'
|
171
|
+
entry_pagination_info:
|
172
|
+
one: '<strong>1 de 1</strong>'
|
173
|
+
other: '<strong>%{current}</strong> de <strong>%{total}</strong>'
|
174
|
+
documents:
|
175
|
+
counter: '%{counter}.'
|
176
|
+
facets:
|
177
|
+
title: 'Limite su búsqueda'
|
178
|
+
sort:
|
179
|
+
count: 'Ordenación numérica'
|
180
|
+
index: 'Ordenación A-Z'
|
181
|
+
count: '%{number}'
|
182
|
+
more: 'más »'
|
183
|
+
selected:
|
184
|
+
remove: '[borrar]'
|
185
|
+
group:
|
186
|
+
more: 'más »'
|
187
|
+
filters:
|
188
|
+
title: 'Usted ha buscado:'
|
189
|
+
label: '%{label}:'
|
190
|
+
remove:
|
191
|
+
value: 'Eliminar la restricción %{value}'
|
192
|
+
label_value: 'Eliminar la restricción%{label}: %{value}'
|
193
|
+
start_over: 'Volver a empezar'
|
194
|
+
index:
|
195
|
+
label: '%{label}:'
|
196
|
+
show:
|
197
|
+
title: '%{document_title} - %{application_name}'
|
198
|
+
label: '%{label}:'
|
199
|
+
rss_feed: 'RSS de los resultados'
|
200
|
+
atom_feed: 'Atom de los resultados'
|
201
|
+
fields:
|
202
|
+
default: 'Palabra clave'
|
203
|
+
bookmarks:
|
204
|
+
present: "En Favoritos"
|
205
|
+
absent: "Favoritos"
|
206
|
+
inprogress: "Guardando..."
|
207
|
+
zero_results:
|
208
|
+
title: "No se han encontrado resultados para su búsqueda"
|
209
|
+
modify_search: "Intente modificar su búsqueda"
|
210
|
+
use_fewer_keywords: "Use menos palabras para empezar, y luego refinar la búsqueda utilizando los enlaces de la izquierda."
|
211
|
+
search_fields: "Usted busco por %{search_fields}"
|
212
|
+
search_everything: "Pruebe a buscar de todo"
|
213
|
+
view_title: "Ver Resultados por: "
|
214
|
+
view:
|
215
|
+
list: "Lista"
|
216
|
+
|
217
|
+
entry_name:
|
218
|
+
default: 'entrada'
|
219
|
+
|
220
|
+
did_you_mean: '¿Quiere decir %{options}?'
|
data/lib/blacklight/base.rb
CHANGED
@@ -20,7 +20,7 @@ module Blacklight::Base
|
|
20
20
|
# when solr (RSolr) throws an error (RSolr::RequestError), this method is executed.
|
21
21
|
def rsolr_request_error(exception)
|
22
22
|
|
23
|
-
if Rails.env.development?
|
23
|
+
if Rails.env.development? || Rails.env.test?
|
24
24
|
raise exception # Rails own code will catch and give usual Rails error page with stack trace
|
25
25
|
else
|
26
26
|
|
@@ -6,17 +6,17 @@ module Blacklight::Catalog::SearchContext
|
|
6
6
|
# own controller.
|
7
7
|
included do
|
8
8
|
helper_method :current_search_session, :search_session
|
9
|
-
|
9
|
+
|
10
10
|
end
|
11
|
-
|
12
|
-
protected
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
module ClassMethods
|
13
|
+
# Save the submitted search parameters in the search session
|
14
|
+
def record_search_parameters opts = { only: :index}
|
15
|
+
before_filter :current_search_session, opts
|
16
|
+
end
|
19
17
|
end
|
18
|
+
|
19
|
+
protected
|
20
20
|
|
21
21
|
# sets up the session[:search] hash if it doesn't already exist
|
22
22
|
def search_session
|
@@ -37,15 +37,15 @@ module Blacklight::Catalog::SearchContext
|
|
37
37
|
rescue ActiveRecord::RecordNotFound
|
38
38
|
nil
|
39
39
|
end
|
40
|
-
elsif search_session[
|
40
|
+
elsif search_session['id']
|
41
41
|
begin
|
42
|
-
searches_from_history.find(search_session[
|
42
|
+
searches_from_history.find(search_session['id'])
|
43
43
|
rescue ActiveRecord::RecordNotFound
|
44
44
|
nil
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
search_session[
|
48
|
+
search_session['id'] = @current_search_session.id if @current_search_session
|
49
49
|
|
50
50
|
@current_search_session
|
51
51
|
end
|
@@ -92,11 +92,11 @@ module Blacklight::Catalog::SearchContext
|
|
92
92
|
# calls setup_previous_document then setup_next_document.
|
93
93
|
# used in the show action for single view pagination.
|
94
94
|
def setup_next_and_previous_documents
|
95
|
-
if search_session[
|
96
|
-
index = search_session[
|
97
|
-
response, documents = get_previous_and_next_documents_for_search index, current_search_session.query_params
|
95
|
+
if search_session['counter'] and current_search_session
|
96
|
+
index = search_session['counter'].to_i - 1
|
97
|
+
response, documents = get_previous_and_next_documents_for_search index, current_search_session.query_params.with_indifferent_access
|
98
98
|
|
99
|
-
search_session[
|
99
|
+
search_session['total'] = response.total
|
100
100
|
@search_context_response = response
|
101
101
|
@previous_document = documents.first
|
102
102
|
@next_document = documents.last
|
data/lib/blacklight/catalog.rb
CHANGED
@@ -9,19 +9,20 @@ module Blacklight::Catalog
|
|
9
9
|
# The following code is executed when someone includes blacklight::catalog in their
|
10
10
|
# own controller.
|
11
11
|
included do
|
12
|
-
helper_method :sms_mappings
|
12
|
+
helper_method :sms_mappings, :has_search_parameters?
|
13
13
|
|
14
14
|
# Whenever an action raises SolrHelper::InvalidSolrID, this block gets executed.
|
15
15
|
# Hint: the SolrHelper #get_solr_response_for_doc_id method raises this error,
|
16
16
|
# which is used in the #show action here.
|
17
17
|
rescue_from Blacklight::Exceptions::InvalidSolrID, :with => :invalid_solr_id_error
|
18
|
+
|
19
|
+
record_search_parameters
|
18
20
|
end
|
19
21
|
|
20
22
|
# get search results from the solr index
|
21
23
|
def index
|
22
24
|
|
23
25
|
(@response, @document_list) = get_search_results
|
24
|
-
@filters = params[:f] || []
|
25
26
|
|
26
27
|
respond_to do |format|
|
27
28
|
format.html { }
|
@@ -56,11 +57,16 @@ module Blacklight::Catalog
|
|
56
57
|
end
|
57
58
|
|
58
59
|
# updates the search counter (allows the show view to paginate)
|
59
|
-
def
|
60
|
-
search_session[
|
61
|
-
|
60
|
+
def track
|
61
|
+
search_session['counter'] = params[:counter]
|
62
|
+
path = if params[:redirect] and (params[:redirect].starts_with?("/") or params[:redirect] =~ URI::regexp)
|
63
|
+
URI.parse(params[:redirect]).path
|
64
|
+
else
|
65
|
+
{ action: 'show' }
|
66
|
+
end
|
67
|
+
redirect_to path, :status => 303
|
62
68
|
end
|
63
|
-
|
69
|
+
|
64
70
|
# displays values and pagination links for a single facet field
|
65
71
|
def facet
|
66
72
|
@facet = blacklight_config.facet_fields[params[:id]]
|
@@ -149,6 +155,13 @@ module Blacklight::Catalog
|
|
149
155
|
format.html
|
150
156
|
end
|
151
157
|
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Check if any search parameters have been set
|
161
|
+
# @return [Boolean]
|
162
|
+
def has_search_parameters?
|
163
|
+
!params[:q].blank? or !params[:f].blank? or !params[:search_field].blank?
|
164
|
+
end
|
152
165
|
|
153
166
|
protected
|
154
167
|
#
|
@@ -5,6 +5,13 @@ module Blacklight
|
|
5
5
|
class Configuration < OpenStructWithHashAccess
|
6
6
|
|
7
7
|
require 'blacklight/configuration/view_config'
|
8
|
+
# XXX this isn't very pretty, but it works.
|
9
|
+
require 'blacklight/configuration/fields'
|
10
|
+
require 'blacklight/configuration/solr_field'
|
11
|
+
require 'blacklight/configuration/search_field'
|
12
|
+
require 'blacklight/configuration/facet_field'
|
13
|
+
require 'blacklight/configuration/sort_field'
|
14
|
+
include Fields
|
8
15
|
|
9
16
|
# Set up Blacklight::Configuration.default_values to contain
|
10
17
|
# the basic, required Blacklight fields
|
@@ -14,45 +21,92 @@ module Blacklight
|
|
14
21
|
unique_key = ((SolrDocument.unique_key if defined?(SolrDocument)) || 'id')
|
15
22
|
|
16
23
|
{
|
17
|
-
|
24
|
+
# HTTP method to use when making requests to solr; valid
|
25
|
+
# values are :get and :post.
|
26
|
+
:http_method => :get,
|
27
|
+
# The solr request handler ('qt') to use for search requests
|
18
28
|
:qt => 'search',
|
29
|
+
# The path to send requests to solr.
|
30
|
+
:solr_path => 'select',
|
31
|
+
# Default values of parameters to send with every search request
|
19
32
|
:default_solr_params => {},
|
20
|
-
|
21
|
-
:
|
22
|
-
|
23
|
-
:
|
33
|
+
# The solr rqeuest handler to use when requesting only a single document
|
34
|
+
:document_solr_request_handler => 'document',
|
35
|
+
# THe path to send single document requests to solr
|
36
|
+
:document_solr_path => nil,
|
37
|
+
:document_unique_id_param => :id,
|
38
|
+
# Default values of parameters to send when requesting a single document
|
39
|
+
:default_document_solr_params => {
|
40
|
+
## Blacklight provides these settings in the /document request handler
|
41
|
+
## by default, we just ask for all fields.
|
42
|
+
#:fl => '*',
|
43
|
+
## this is a fancy way to say "find the document by id using
|
44
|
+
## the value in the id query parameter"
|
45
|
+
#:q => "{!raw f=#{unique_key} v=$id}",
|
46
|
+
## disable features we don't need
|
47
|
+
#:facet => false,
|
48
|
+
#:rows => 1
|
49
|
+
},
|
50
|
+
# General configuration for all views
|
51
|
+
:index => ViewConfig::Index.new(
|
52
|
+
# solr field to use to render a document title
|
24
53
|
:title_field => unique_key,
|
54
|
+
# solr field to use to render format-specific partials
|
25
55
|
:display_type_field => 'format',
|
56
|
+
# partials to render for each document(see #render_document_partials)
|
57
|
+
:partials => [:index_header, :thumbnail, :index],
|
58
|
+
# what field, if any, to use to render grouped results
|
26
59
|
:group => false,
|
60
|
+
# additional response formats for search results
|
27
61
|
:respond_to => OpenStructWithHashAccess.new()
|
28
62
|
),
|
63
|
+
# Additional configuration when displaying a single document
|
64
|
+
:show => ViewConfig::Show.new(:partials => [:show_header, :show]),
|
65
|
+
# Configurations for specific types of index views
|
29
66
|
:view => NestedOpenStructWithHashAccess.new(ViewConfig, 'list'),
|
67
|
+
# Maxiumum number of spelling suggestions to offer
|
30
68
|
:spell_max => 5,
|
69
|
+
# Maximum number of results to show per page
|
31
70
|
:max_per_page => 100,
|
71
|
+
# Options for the user for number of results to show per page
|
32
72
|
:per_page => [10,20,50,100],
|
73
|
+
:default_per_page => nil,
|
74
|
+
# how many searches to save in session history
|
75
|
+
# (TODO: move the value into the configuration?)
|
33
76
|
:search_history_window => Blacklight::Catalog::SearchHistoryWindow,
|
34
|
-
:
|
35
|
-
|
36
|
-
|
77
|
+
## deprecated; use add_facet_field :include_in_request instead;
|
78
|
+
# if this is configured true, all facets will be included in the solr request
|
79
|
+
# unless explicitly disabled.
|
80
|
+
:add_facet_fields_to_solr_request => false,
|
81
|
+
## deprecated; use add_index_field :include_in_request instead;
|
82
|
+
# if this is configured true, all show and index will be included in the solr request
|
83
|
+
# unless explicitly disabled.
|
84
|
+
:add_field_configuration_to_solr_request => false
|
37
85
|
}
|
38
86
|
end
|
39
87
|
end
|
40
88
|
end
|
41
89
|
|
42
|
-
|
43
|
-
#
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
include Fields
|
50
|
-
|
51
|
-
# Create collections of solr fields
|
90
|
+
##
|
91
|
+
# Create collections of solr field configurations.
|
92
|
+
# This will create array-like accessor methods for
|
93
|
+
# the given field, and an #add_x_field convenience
|
94
|
+
# method for adding new fields to the configuration
|
95
|
+
|
96
|
+
# facet fields
|
52
97
|
define_field_access :facet_field
|
98
|
+
|
99
|
+
# solr fields to display on search results
|
53
100
|
define_field_access :index_field
|
101
|
+
|
102
|
+
# solr fields to display when showing single documents
|
54
103
|
define_field_access :show_field
|
104
|
+
|
105
|
+
# solr "fields" to use for scoping user search queries
|
106
|
+
# to particular fields
|
55
107
|
define_field_access :search_field
|
108
|
+
|
109
|
+
# solr fields to use for sorting results
|
56
110
|
define_field_access :sort_field
|
57
111
|
|
58
112
|
def initialize(*args)
|
@@ -70,6 +124,14 @@ module Blacklight
|
|
70
124
|
end
|
71
125
|
end
|
72
126
|
|
127
|
+
##
|
128
|
+
# DSL helper
|
129
|
+
def configure
|
130
|
+
yield self if block_given?
|
131
|
+
self
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
73
135
|
# Returns default search field, used for simpler display in history, etc.
|
74
136
|
# if not set, defaults to first defined search field
|
75
137
|
def default_search_field
|
@@ -80,6 +142,7 @@ module Blacklight
|
|
80
142
|
field
|
81
143
|
end
|
82
144
|
|
145
|
+
##
|
83
146
|
# Returns default sort field, used for simpler display in history, etc.
|
84
147
|
# if not set, defaults to first defined sort field
|
85
148
|
def default_sort_field
|
@@ -90,20 +153,56 @@ module Blacklight
|
|
90
153
|
field
|
91
154
|
end
|
92
155
|
|
156
|
+
##
|
93
157
|
# Add any configured facet fields to the default solr parameters hash
|
94
|
-
|
95
|
-
|
158
|
+
# @overload add_facet_fields_to_solr_request!
|
159
|
+
# add all facet fields to the solr request
|
160
|
+
# @overload add_facet_fields_to_solr_request! field, field, field
|
161
|
+
# @param [Symbol] Field names to add to the solr request
|
162
|
+
# @param [Symbol]
|
163
|
+
# @param [Symbol]
|
164
|
+
def add_facet_fields_to_solr_request! *fields
|
165
|
+
if fields.empty?
|
166
|
+
self.add_facet_fields_to_solr_request = true
|
167
|
+
else
|
168
|
+
facet_fields.slice(*fields).each do |k,v|
|
169
|
+
v.include_in_request = true
|
170
|
+
end
|
171
|
+
end
|
96
172
|
end
|
97
173
|
|
174
|
+
##
|
98
175
|
# Add any configured facet fields to the default solr parameters hash
|
99
|
-
|
100
|
-
|
176
|
+
# @overload add_field_configuration_to_solr_request!
|
177
|
+
# add all index, show, and facet fields to the solr request
|
178
|
+
# @overload add_field_configuration_to_solr_request! field, field, field
|
179
|
+
# @param [Symbol] Field names to add to the solr request
|
180
|
+
# @param [Symbol]
|
181
|
+
# @param [Symbol]
|
182
|
+
def add_field_configuration_to_solr_request! *fields
|
183
|
+
if fields.empty?
|
184
|
+
self.add_field_configuration_to_solr_request = true
|
185
|
+
else
|
186
|
+
index_fields.slice(*fields).each do |k,v|
|
187
|
+
v.include_in_request = true
|
188
|
+
end
|
189
|
+
|
190
|
+
show_fields.slice(*fields).each do |k,v|
|
191
|
+
v.include_in_request = true
|
192
|
+
end
|
193
|
+
facet_fields.slice(*fields).each do |k,v|
|
194
|
+
v.include_in_request = true
|
195
|
+
end
|
196
|
+
end
|
101
197
|
end
|
102
198
|
|
199
|
+
##
|
200
|
+
# Deprecated. Get the list of facet fields to explicitly
|
201
|
+
# add to the solr request
|
103
202
|
def facet_fields_to_add_to_solr
|
104
|
-
|
105
|
-
|
106
|
-
|
203
|
+
facet_fields.select { |k,v| v.include_in_request }
|
204
|
+
.reject { |k,v| v[:query] || v[:pivot] }
|
205
|
+
.map { |k,v| v.field }
|
107
206
|
end
|
108
207
|
|
109
208
|
##
|
@@ -116,12 +215,8 @@ module Blacklight
|
|
116
215
|
alias_method :inheritable_copy, :deep_copy
|
117
216
|
|
118
217
|
##
|
119
|
-
#
|
120
|
-
|
121
|
-
yield self if block_given?
|
122
|
-
self
|
123
|
-
end
|
124
|
-
|
218
|
+
# Get a view configuration for the given view type
|
219
|
+
# including default values from the index configuration
|
125
220
|
def view_config view_type
|
126
221
|
if view_type == :show
|
127
222
|
self.index.merge self.show
|