blacklight 5.0.0.pre2 → 5.0.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +2 -1
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +14 -4
- data/app/assets/stylesheets/blacklight/_header.css.scss +2 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +56 -14
- data/app/helpers/blacklight/catalog_helper_behavior.rb +0 -9
- data/app/helpers/blacklight/facets_helper_behavior.rb +25 -1
- data/app/views/_user_util_links.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +6 -5
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_index_header_default.html.erb +2 -0
- data/app/views/catalog/_previous_next_doc.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -0
- data/app/views/catalog/_view_type_group.html.erb +13 -0
- data/config/locales/blacklight.en.yml +3 -18
- data/config/locales/blacklight.fr.yml +4 -18
- data/lib/blacklight/configuration.rb +2 -1
- data/lib/blacklight/configuration/facet_field.rb +4 -0
- data/lib/blacklight/engine.rb +1 -26
- data/lib/blacklight/rails/routes.rb +1 -1
- data/lib/blacklight/routes.rb +21 -13
- data/lib/blacklight/solr_helper.rb +2 -1
- data/spec/helpers/blacklight_helper_spec.rb +90 -2
- data/spec/helpers/facets_helper_spec.rb +53 -1
- data/spec/lib/blacklight/solr_helper_spec.rb +35 -0
- data/spec/routing/routes_spec.rb +20 -0
- data/spec/views/catalog/_constraints.html.erb_spec.rb +33 -0
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +42 -0
- data/spec/views/catalog/_facets.html.erb_spec.rb +6 -2
- data/spec/views/catalog/_index_header_default.html.erb_spec.rb +22 -0
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +25 -0
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +37 -0
- metadata +15 -5
- data/app/controllers/feedback_controller.rb +0 -38
- data/app/views/feedback/complete.html.erb +0 -5
- data/app/views/feedback/show.html.erb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d8794852e683729a57437dab41c12a7f163e935
|
4
|
+
data.tar.gz: 0475c260c2845e478307195be84b6c967e426469
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31df124b777472aa9a7f1c04cf66dce546dc61f53d5f7cc6d8f5b7ebd62d122405aa886f504c778a73a9f3976efbb207ff5f840a6ac56acbeb87499c469ab737
|
7
|
+
data.tar.gz: 0d3674651658046314cceed8ccecc82084aa4144eb9198f78bf74f0e3044d97e46436ee921e837edb10845946c51736f6b845f0992a00673c5705122e3eaa78a
|
data/LICENSE
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
##########################################################################
|
2
|
-
# Copyright 2008 Rector and Visitors of the University of Virginia
|
2
|
+
# Copyright 2008-2014 Rector and Visitors of the University of Virginia, The Board of Trustees of the Leland Stanford Junior University, Johns Hopkins Universities, and Data Curation Experts
|
3
|
+
# Additional copyright may be held by others, as reflected in the commit log
|
3
4
|
#
|
4
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
6
|
# you may not use this file except in compliance with the License.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.0.0.
|
1
|
+
5.0.0.pre3
|
@@ -38,10 +38,6 @@
|
|
38
38
|
}
|
39
39
|
}
|
40
40
|
|
41
|
-
.catalog_startOverLink {
|
42
|
-
@extend .pull-right;
|
43
|
-
}
|
44
|
-
|
45
41
|
.constraints-container {
|
46
42
|
@extend .well;
|
47
43
|
line-height: 2.5;
|
@@ -81,6 +77,7 @@ span.constraints-label {
|
|
81
77
|
margin-top: $padding-base-vertical;
|
82
78
|
padding-top: $padding-base-vertical;
|
83
79
|
border-bottom:1px dotted $table-border-color;
|
80
|
+
@extend .clearfix;
|
84
81
|
}
|
85
82
|
}
|
86
83
|
|
@@ -131,6 +128,10 @@ span.constraints-label {
|
|
131
128
|
{
|
132
129
|
dd {
|
133
130
|
margin-bottom: $padding-base-vertical;
|
131
|
+
|
132
|
+
&:after {
|
133
|
+
clear: none;
|
134
|
+
}
|
134
135
|
}
|
135
136
|
}
|
136
137
|
|
@@ -185,4 +186,13 @@ label.toggle_bookmark
|
|
185
186
|
.document-thumbnail {
|
186
187
|
float: right;
|
187
188
|
padding-left: 20px;
|
189
|
+
margin-bottom: $line-height-computed;
|
190
|
+
}
|
191
|
+
|
192
|
+
.view-type {
|
193
|
+
display: inline-block;
|
194
|
+
|
195
|
+
.caption {
|
196
|
+
@extend .sr-only;
|
197
|
+
}
|
188
198
|
}
|
@@ -101,7 +101,8 @@ module Blacklight::BlacklightHelperBehavior
|
|
101
101
|
|
102
102
|
def should_render_index_field? document, solr_field
|
103
103
|
document.has?(solr_field.field) ||
|
104
|
-
(document.has_highlight_field? solr_field.field if solr_field.highlight)
|
104
|
+
(document.has_highlight_field? solr_field.field if solr_field.highlight) ||
|
105
|
+
solr_field.accessor
|
105
106
|
end
|
106
107
|
|
107
108
|
def spell_check_max
|
@@ -281,17 +282,44 @@ module Blacklight::BlacklightHelperBehavior
|
|
281
282
|
end
|
282
283
|
|
283
284
|
##
|
284
|
-
# Get the value
|
285
|
+
# Get the value for a document's field, and prepare to render it.
|
286
|
+
# - highlight_field
|
287
|
+
# - accessor
|
288
|
+
# - solr field
|
289
|
+
#
|
290
|
+
# Rendering:
|
285
291
|
# - helper_method
|
286
292
|
# - link_to_search
|
287
|
-
# - highlight
|
288
293
|
# TODO : maybe this should be merged with render_field_value, and the ugly signature
|
289
294
|
# simplified by pushing some of this logic into the "model"
|
290
295
|
def get_field_values document, field, field_config, options = {}
|
296
|
+
# valuyes
|
297
|
+
value = case
|
298
|
+
when (field_config and field_config.highlight)
|
299
|
+
# retrieve the document value from the highlighting response
|
300
|
+
document.highlight_field(field_config.field).map { |x| x.html_safe } if document.has_highlight_field? field_config.field
|
301
|
+
when (field_config and field_config.accessor)
|
302
|
+
# implicit method call
|
303
|
+
if field_config.accessor === true
|
304
|
+
document.send(field)
|
305
|
+
# arity-1 method call (include the field name in the call)
|
306
|
+
elsif !field_config.accessor.is_a?(Array) && document.method(field_config.accessor).arity != 0
|
307
|
+
document.send(field_config.accessor, field)
|
308
|
+
# chained method calls
|
309
|
+
else
|
310
|
+
Array(field_config.accessor).inject(document) do |result, method|
|
311
|
+
result.send(method)
|
312
|
+
end
|
313
|
+
end
|
314
|
+
else
|
315
|
+
# regular solr
|
316
|
+
document.get(field, :sep => nil) if field
|
317
|
+
end
|
291
318
|
|
319
|
+
# rendering
|
292
320
|
case
|
293
321
|
when (field_config and field_config.helper_method)
|
294
|
-
send(field_config.helper_method, options.merge(:document => document, :field => field))
|
322
|
+
send(field_config.helper_method, options.merge(:document => document, :field => field, :value => value))
|
295
323
|
when (field_config and field_config.link_to_search)
|
296
324
|
link_field = if field_config.link_to_search === true
|
297
325
|
field_config.field
|
@@ -299,19 +327,18 @@ module Blacklight::BlacklightHelperBehavior
|
|
299
327
|
field_config.link_to_search
|
300
328
|
end
|
301
329
|
|
302
|
-
Array(
|
330
|
+
Array(value).map do |v|
|
303
331
|
link_to render_field_value(v, field_config), search_action_url(add_facet_params(link_field, v, {}))
|
304
332
|
end if field
|
305
|
-
when (field_config and field_config.highlight)
|
306
|
-
document.highlight_field(field_config.field).map { |x| x.html_safe } if document.has_highlight_field? field_config.field
|
307
333
|
else
|
308
|
-
|
309
|
-
|
334
|
+
value
|
335
|
+
end
|
310
336
|
end
|
311
337
|
|
312
338
|
def should_render_show_field? document, solr_field
|
313
339
|
document.has?(solr_field.field) ||
|
314
|
-
(document.has_highlight_field? solr_field.field if solr_field.highlight)
|
340
|
+
(document.has_highlight_field? solr_field.field if solr_field.highlight) ||
|
341
|
+
solr_field.accessor
|
315
342
|
end
|
316
343
|
|
317
344
|
def render_field_value value=nil, field_config=nil
|
@@ -328,14 +355,18 @@ module Blacklight::BlacklightHelperBehavior
|
|
328
355
|
', '
|
329
356
|
end
|
330
357
|
|
331
|
-
def document_index_view_type
|
332
|
-
if blacklight_config.document_index_view_types.include?
|
333
|
-
|
358
|
+
def document_index_view_type query_params=params
|
359
|
+
if blacklight_config.document_index_view_types.include? query_params[:view]
|
360
|
+
query_params[:view]
|
334
361
|
else
|
335
|
-
|
362
|
+
default_document_index_view_type
|
336
363
|
end
|
337
364
|
end
|
338
365
|
|
366
|
+
def default_document_index_view_type
|
367
|
+
blacklight_config.document_index_view_types.first
|
368
|
+
end
|
369
|
+
|
339
370
|
def render_document_index documents = nil, locals = {}
|
340
371
|
documents ||= @document_list
|
341
372
|
render_document_index_with_view(document_index_view_type, documents)
|
@@ -430,6 +461,17 @@ module Blacklight::BlacklightHelperBehavior
|
|
430
461
|
link_to(query, link_url)
|
431
462
|
end
|
432
463
|
|
464
|
+
##
|
465
|
+
# Get the path to the search action with any parameters (e.g. view type)
|
466
|
+
# that should be persisted across search sessions.
|
467
|
+
def start_over_path query_params = params
|
468
|
+
h = { }
|
469
|
+
current_index_view_type = document_index_view_type(query_params)
|
470
|
+
h[:view] = current_index_view_type unless current_index_view_type == default_document_index_view_type
|
471
|
+
|
472
|
+
search_action_url(h)
|
473
|
+
end
|
474
|
+
|
433
475
|
def render_document_index_label doc, opts
|
434
476
|
label = nil
|
435
477
|
label ||= doc.get(opts[:label], :sep => nil) if opts[:label].instance_of? Symbol
|
@@ -1,15 +1,6 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
module Blacklight::CatalogHelperBehavior
|
3
3
|
|
4
|
-
# Equivalent to kaminari "paginate", but takes an RSolr::Response as first argument.
|
5
|
-
# Will convert it to something kaminari can deal with (using #paginate_params), and
|
6
|
-
# then call kaminari paginate with that. Other arguments (options and block) same as
|
7
|
-
# kaminari paginate, passed on through.
|
8
|
-
# will output HTML pagination controls.
|
9
|
-
def paginate_rsolr_response(response, options = {}, &block)
|
10
|
-
paginate response, options, &block
|
11
|
-
end
|
12
|
-
|
13
4
|
# Override the Kaminari page_entries_info helper with our own, blacklight-aware
|
14
5
|
# implementation
|
15
6
|
#
|
@@ -42,10 +42,34 @@ module Blacklight::FacetsHelperBehavior
|
|
42
42
|
# @param [Blacklight::SolrResponse::Facets::FacetField] display_facet
|
43
43
|
def should_render_facet? display_facet
|
44
44
|
# display when show is nil or true
|
45
|
-
|
45
|
+
facet_config = facet_configuration_for_field(display_facet.name)
|
46
|
+
|
47
|
+
display = case facet_config.show
|
48
|
+
when Symbol
|
49
|
+
arity = method(facet_config.show).arity
|
50
|
+
|
51
|
+
if arity == 0
|
52
|
+
send(facet_config.show)
|
53
|
+
else
|
54
|
+
send(facet_config.show, display_facet)
|
55
|
+
end
|
56
|
+
when Proc
|
57
|
+
facet_config.show.call self, facet_config, display_facet
|
58
|
+
else
|
59
|
+
facet_config.show
|
60
|
+
end
|
61
|
+
|
46
62
|
return display && display_facet.items.present?
|
47
63
|
end
|
48
64
|
|
65
|
+
##
|
66
|
+
# if the facet is 'active', don't collapse
|
67
|
+
# if the facet is configured to collapse (the default), collapse
|
68
|
+
# if the facet is configured not to collapse, don't collapse
|
69
|
+
def should_collapse_facet? facet_field
|
70
|
+
!facet_field_in_params?(facet_field.field) && facet_field.collapse
|
71
|
+
end
|
72
|
+
|
49
73
|
# the name of the partial to use to render a facet field. Can be over-ridden for custom
|
50
74
|
# display on a per-facet basis.
|
51
75
|
def facet_partial_name(display_facet = nil)
|
@@ -1,9 +1,10 @@
|
|
1
1
|
<% if query_has_constraints? %>
|
2
|
-
<div id="appliedParams" class="constraints-container">
|
3
|
-
<span class="constraints-label"><%= t('blacklight.search.filters.title') %></span>
|
4
|
-
|
5
|
-
<%=link_to t('blacklight.search.start_over'), url_for(:action=>'index'), :class => "catalog_startOverLink", :id=>"startOverLink" %>
|
6
|
-
<%= render_constraints(params) %>
|
7
2
|
|
3
|
+
<div id="appliedParams" class="clearfix constraints-container">
|
4
|
+
<div class="pull-right">
|
5
|
+
<%=link_to t('blacklight.search.start_over'), start_over_path, :class => "catalog_startOverLink btn btn-sm btn-text", :id=>"startOverLink" %>
|
6
|
+
</div>
|
7
|
+
<span class="constraints-label"><%= t('blacklight.search.filters.title') %></span>
|
8
|
+
<%= render_constraints(params) %>
|
8
9
|
</div>
|
9
10
|
<% end %>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div class="panel panel-default facet_limit blacklight-<%= facet_field.field.parameterize %> <%= 'facet_limit-active' if facet_field_in_params?(facet_field.field) %>">
|
2
|
-
<div class="<%= "collapsed"
|
2
|
+
<div class="<%= "collapsed" if should_collapse_facet?(facet_field) %> collapse-toggle panel-heading" data-toggle="collapse" data-target="#facet-<%= facet_field.label.parameterize %>">
|
3
3
|
<h5 class="panel-title">
|
4
4
|
<%= link_to facet_field.label, "#", :"data-no-turbolink" => true %>
|
5
5
|
</h5>
|
6
6
|
</div>
|
7
|
-
<div id="facet-<%= facet_field.label.parameterize %>" class="panel-collapse <%=
|
7
|
+
<div id="facet-<%= facet_field.label.parameterize %>" class="panel-collapse facet-content <%= should_collapse_facet?(facet_field) ? 'collapse' : 'in' %>">
|
8
8
|
<div class="panel-body">
|
9
9
|
<%= yield %>
|
10
10
|
</div>
|
@@ -8,7 +8,9 @@
|
|
8
8
|
-%>
|
9
9
|
<h5 class="index_title col-sm-9 col-lg-10">
|
10
10
|
<% counter = document_counter_with_offset(document_counter) %>
|
11
|
+
<span class="document-counter">
|
11
12
|
<%= t('blacklight.search.documents.counter', :counter => counter) if counter %>
|
13
|
+
</span>
|
12
14
|
<%= link_to_document document, :label=>document_show_link_field(document), :counter => counter %>
|
13
15
|
</h5>
|
14
16
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<div class="pull-right search-widgets">
|
13
13
|
<%= link_back_to_catalog :class => 'btn' %>
|
14
14
|
|
15
|
-
<%=link_to "#{t('blacklight.search.start_over')}",
|
15
|
+
<%=link_to "#{t('blacklight.search.start_over')}", start_over_path(current_search_session.try(:query_params) || {}), :id=>"startOverLink", :class => 'btn' %>
|
16
16
|
</div>
|
17
17
|
</div>
|
18
18
|
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if blacklight_config.document_index_view_types.length > 1 -%>
|
2
|
+
<div class="view-type">
|
3
|
+
<span class="sr-only"><%= t('blacklight.search.view_title') %></span>
|
4
|
+
<div class="view-type-group btn-group">
|
5
|
+
<% blacklight_config.document_index_view_types.each do |view| %>
|
6
|
+
<%= link_to url_for(params.merge(:view => view)), :title => t("blacklight.search.view_title.#{view}", default: t("blacklight.search.view.#{view}", default: "")), :class => "btn btn-default view-type-#{ view.parameterize } #{"active" if document_index_view_type == view}" do %>
|
7
|
+
<span class="glyphicon glyphicon-<%= view.parameterize %> view-icon-<%= view.parameterize %>"></span>
|
8
|
+
<span class="caption"><%= t("blacklight.search.view.#{view}") %></span>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<% end -%>
|
@@ -1,12 +1,4 @@
|
|
1
1
|
en:
|
2
|
-
active_record:
|
3
|
-
models:
|
4
|
-
feedback: 'Feedback'
|
5
|
-
attributes:
|
6
|
-
feedback:
|
7
|
-
name: 'Your Name'
|
8
|
-
email: 'Your Email'
|
9
|
-
message: 'Your Message'
|
10
2
|
views:
|
11
3
|
pagination:
|
12
4
|
first: '« First'
|
@@ -56,16 +48,6 @@ en:
|
|
56
48
|
list_title: 'Your Bookmarks'
|
57
49
|
delete: 'Remove'
|
58
50
|
|
59
|
-
feedback:
|
60
|
-
valid_name: 'A valid name is required'
|
61
|
-
valid_email: 'A valid email address is required'
|
62
|
-
need_message: 'A message is required'
|
63
|
-
submit: 'Send!'
|
64
|
-
errors:
|
65
|
-
title: 'Please fix the following form errors:'
|
66
|
-
complete:
|
67
|
-
title: 'Thank-you for your feedback'
|
68
|
-
|
69
51
|
saved_searches:
|
70
52
|
add:
|
71
53
|
success: 'Successfully saved your search.'
|
@@ -225,6 +207,9 @@ en:
|
|
225
207
|
use_fewer_keywords: "Use fewer keywords to start, then refine your search using the links on the left."
|
226
208
|
search_fields: "you searched by %{search_fields}"
|
227
209
|
search_everything: "try searching everything"
|
210
|
+
view_title: "View results as: "
|
211
|
+
view:
|
212
|
+
list: "List"
|
228
213
|
|
229
214
|
entry_name:
|
230
215
|
default: 'entry'
|
@@ -1,12 +1,4 @@
|
|
1
1
|
fr:
|
2
|
-
active_record:
|
3
|
-
models:
|
4
|
-
feedback: 'Vos réactions'
|
5
|
-
attributes:
|
6
|
-
feedback:
|
7
|
-
name: 'Votre nom'
|
8
|
-
email: 'Votre courriel'
|
9
|
-
message: 'Votre message'
|
10
2
|
views:
|
11
3
|
pagination:
|
12
4
|
first: '« Première'
|
@@ -56,16 +48,6 @@ fr:
|
|
56
48
|
list_title: 'Vos favoris'
|
57
49
|
delete: 'Supprimer'
|
58
50
|
|
59
|
-
feedback:
|
60
|
-
valid_name: 'Vous devez saisir votre nom.'
|
61
|
-
valid_email: 'Vous devez saisir votre courriel.'
|
62
|
-
need_message: 'Vous devez saisir un message.'
|
63
|
-
submit: 'Envoyer'
|
64
|
-
errors:
|
65
|
-
title: 'Veuillez corriger les erreurs suivantes :'
|
66
|
-
complete:
|
67
|
-
title: 'Merci pour vos remarques.'
|
68
|
-
|
69
51
|
folder:
|
70
52
|
title: 'Panier'
|
71
53
|
add:
|
@@ -241,6 +223,10 @@ fr:
|
|
241
223
|
use_fewer_keywords: "Utilisez moins de mots-clés pour commencer, puis affiner votre recherche."
|
242
224
|
search_fields: "vous avez cherché par %{search_fields}"
|
243
225
|
search_everything: "essayez de rechercher tout"
|
226
|
+
view_title: "Affichage: "
|
227
|
+
view:
|
228
|
+
list: "Liste"
|
229
|
+
|
244
230
|
|
245
231
|
entry_name:
|
246
232
|
default: 'résultat'
|
@@ -25,7 +25,8 @@ module Blacklight
|
|
25
25
|
:search_history_window => Blacklight::Catalog::SearchHistoryWindow,
|
26
26
|
:document_index_view_types => ['list'],
|
27
27
|
:add_facet_fields_to_solr_request => false,
|
28
|
-
:add_field_configuration_to_solr_request => false
|
28
|
+
:add_field_configuration_to_solr_request => false,
|
29
|
+
:http_method => :get
|
29
30
|
}
|
30
31
|
end
|
31
32
|
end
|
data/lib/blacklight/engine.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
1
|
module Blacklight
|
4
2
|
class Engine < Rails::Engine
|
5
3
|
|
@@ -11,29 +9,6 @@ module Blacklight
|
|
11
9
|
initializer 'blacklight.helpers' do |app|
|
12
10
|
ActionView::Base.send :include, BlacklightHelper
|
13
11
|
end
|
14
|
-
|
15
|
-
# Expose Jquery-ui image assets so they are precompiled
|
16
|
-
# to root path so jquery-ui css compiled into asset pipeline
|
17
|
-
# can find them.
|
18
|
-
# http://bibwild.wordpress.com/2011/12/08/jquery-ui-css-and-images-and-rails-asset-pipeline/
|
19
|
-
#
|
20
|
-
# Sorry, we end up prepending jquery-ui asset path before ALL paths, even
|
21
|
-
# application, no easy way to insert em before the gem paths but after
|
22
|
-
# the app paths.
|
23
|
-
#
|
24
|
-
# You may want to disable this if you want to supply your own theme, just set
|
25
|
-
# Blacklight::Engine.config.jquery_ui_images = false
|
26
|
-
# in config/appliction.rb or other pre-initializer control point.
|
27
|
-
config.before_configuration do
|
28
|
-
config.jquery_ui_images = true
|
29
|
-
end
|
30
|
-
initializer "blacklight.jquery_ui_images",
|
31
|
-
:group => :all,
|
32
|
-
:after => :append_assets_path do
|
33
|
-
if config.jquery_ui_images
|
34
|
-
Rails.application.config.assets.paths.unshift self.class.root.join("app", "assets", "stylesheets", "jquery", "ui-lightness").to_s
|
35
|
-
end
|
36
|
-
end
|
37
12
|
|
38
13
|
# This makes our rake tasks visible.
|
39
14
|
rake_tasks do
|
@@ -45,4 +20,4 @@ module Blacklight
|
|
45
20
|
end
|
46
21
|
|
47
22
|
end
|
48
|
-
end
|
23
|
+
end
|
@@ -3,7 +3,7 @@ module ActionDispatch::Routing
|
|
3
3
|
# example
|
4
4
|
# blacklight_for :catalog
|
5
5
|
# blacklight_for :catalog, :dashboard
|
6
|
-
# blacklight_for :catalog, except: [ :saved_searches
|
6
|
+
# blacklight_for :catalog, except: [ :saved_searches ]
|
7
7
|
# blacklight_for :catalog, only: [ :saved_searches, :solr_document ]
|
8
8
|
# blacklight_for :catalog, constraints: {id: /[0-9]+/ }
|
9
9
|
def blacklight_for(*resources)
|
data/lib/blacklight/routes.rb
CHANGED
@@ -6,6 +6,26 @@ module Blacklight
|
|
6
6
|
|
7
7
|
attr_reader :resources
|
8
8
|
|
9
|
+
# adds as class and instance level accessors, default_route_sets
|
10
|
+
# returns an array of symbols for method names that define routes.
|
11
|
+
# Order is important:. (e.g. /catalog/email precedes /catalog/:id)
|
12
|
+
#
|
13
|
+
# Add-ons that want to add routes into default routing might
|
14
|
+
# monkey-patch Blacklight::Routes, say:
|
15
|
+
#
|
16
|
+
# module MyWidget::Routes
|
17
|
+
# extend ActiveSupport::Concern
|
18
|
+
# included do |klass|
|
19
|
+
# klass.default_route_sets += [:widget_routing]
|
20
|
+
# end
|
21
|
+
# def widget_routing(primary_resource)
|
22
|
+
# get "#{primary_resource}/widget", "#{primary_resource}#widget"
|
23
|
+
# end
|
24
|
+
# end
|
25
|
+
# Blacklight::Routes.send(:include, MyWidget::Routes)
|
26
|
+
class_attribute :default_route_sets
|
27
|
+
self.default_route_sets = [:bookmarks, :search_history, :saved_searches, :export, :solr_document]
|
28
|
+
|
9
29
|
def initialize(router, options)
|
10
30
|
@router = router
|
11
31
|
@options = options
|
@@ -35,10 +55,7 @@ module Blacklight
|
|
35
55
|
(@options[:only] || default_route_sets) - (@options[:except] || [])
|
36
56
|
end
|
37
57
|
|
38
|
-
|
39
|
-
# Order is important here. (e.g. /catalog/email precedes /catalog/:id)
|
40
|
-
[:bookmarks, :search_history, :saved_searches, :export, :solr_document, :feedback]
|
41
|
-
end
|
58
|
+
|
42
59
|
|
43
60
|
module RouteSets
|
44
61
|
def bookmarks(_)
|
@@ -101,15 +118,6 @@ module Blacklight
|
|
101
118
|
resources primary_resource, args
|
102
119
|
end
|
103
120
|
end
|
104
|
-
|
105
|
-
|
106
|
-
# Feedback
|
107
|
-
def feedback(_)
|
108
|
-
add_routes do |options|
|
109
|
-
get "feedback", :to => "feedback#show"
|
110
|
-
get "feedback/complete", :to => "feedback#complete"
|
111
|
-
end
|
112
|
-
end
|
113
121
|
end
|
114
122
|
include RouteSets
|
115
123
|
end
|
@@ -391,7 +391,8 @@ module Blacklight::SolrHelper
|
|
391
391
|
path = blacklight_config.solr_path
|
392
392
|
|
393
393
|
# delete these parameters, otherwise rsolr will pass them through.
|
394
|
-
|
394
|
+
key = blacklight_config.http_method == :post ? :data : :params
|
395
|
+
res = blacklight_solr.send_and_receive(path, {key=>solr_params.to_hash, method:blacklight_config.http_method})
|
395
396
|
|
396
397
|
solr_response = Blacklight::SolrResponse.new(force_to_utf8(res), solr_params)
|
397
398
|
|
@@ -327,6 +327,26 @@ describe BlacklightHelper do
|
|
327
327
|
params[:view] = 'not_in_list'
|
328
328
|
expect(document_index_view_type).to eq 'list'
|
329
329
|
end
|
330
|
+
|
331
|
+
it "should pluck values from supplied params" do
|
332
|
+
blacklight_config.stub(:document_index_view_types) { ['list', 'asdf'] }
|
333
|
+
params[:view] = 'asdf'
|
334
|
+
expect(document_index_view_type(:view => 'list')).to eq 'list'
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
describe "start_over_path" do
|
339
|
+
it 'should be the catalog path with the current view type' do
|
340
|
+
blacklight_config.stub(:document_index_view_types) { ['list', 'abc'] }
|
341
|
+
helper.stub(:blacklight_config => blacklight_config)
|
342
|
+
expect(helper.start_over_path(:view => 'abc')).to eq catalog_index_url(:view => 'abc')
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'should not include the current view type if it is the default' do
|
346
|
+
blacklight_config.stub(:document_index_view_types) { ['list', 'abc'] }
|
347
|
+
helper.stub(:blacklight_config => blacklight_config)
|
348
|
+
expect(helper.start_over_path(:view => 'list')).to eq catalog_index_url
|
349
|
+
end
|
330
350
|
end
|
331
351
|
|
332
352
|
describe "render_document_index" do
|
@@ -519,6 +539,9 @@ describe BlacklightHelper do
|
|
519
539
|
config.add_index_field 'link_to_search_true', :link_to_search => true
|
520
540
|
config.add_index_field 'link_to_search_named', :link_to_search => :some_field
|
521
541
|
config.add_index_field 'highlight', :highlight => true
|
542
|
+
config.add_index_field 'solr_doc_accessor', :accessor => true
|
543
|
+
config.add_index_field 'explicit_accessor', :accessor => :solr_doc_accessor
|
544
|
+
config.add_index_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
|
522
545
|
end
|
523
546
|
helper.stub(:blacklight_config).and_return(@config)
|
524
547
|
end
|
@@ -532,7 +555,7 @@ describe BlacklightHelper do
|
|
532
555
|
|
533
556
|
it "should check for a helper method to call" do
|
534
557
|
doc = double()
|
535
|
-
doc.
|
558
|
+
doc.should_receive(:get).with('asdf', :sep => nil)
|
536
559
|
helper.stub(:render_asdf_index_field).and_return('custom asdf value')
|
537
560
|
value = helper.render_index_field_value :document => doc, :field => 'asdf'
|
538
561
|
expect(value).to eq 'custom asdf value'
|
@@ -582,6 +605,25 @@ describe BlacklightHelper do
|
|
582
605
|
value = helper.render_index_field_value :document => doc, :field => 'mnbv'
|
583
606
|
expect(value).to eq 'document mnbv value'
|
584
607
|
end
|
608
|
+
|
609
|
+
it "should call an accessor on the solr document" do
|
610
|
+
doc = double(:solr_doc_accessor => "123")
|
611
|
+
value = helper.render_index_field_value :document => doc, :field => 'solr_doc_accessor'
|
612
|
+
expect(value).to eq "123"
|
613
|
+
end
|
614
|
+
|
615
|
+
it "should call an explicit accessor on the solr document" do
|
616
|
+
doc = double(:solr_doc_accessor => "123")
|
617
|
+
value = helper.render_index_field_value :document => doc, :field => 'explicit_accessor'
|
618
|
+
expect(value).to eq "123"
|
619
|
+
end
|
620
|
+
|
621
|
+
it "should call an implicit accessor on the solr document" do
|
622
|
+
doc = double()
|
623
|
+
expect(doc).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
|
624
|
+
value = helper.render_index_field_value :document => doc, :field => 'explicit_accessor_with_arg'
|
625
|
+
expect(value).to eq "123"
|
626
|
+
end
|
585
627
|
end
|
586
628
|
|
587
629
|
|
@@ -593,7 +635,12 @@ describe BlacklightHelper do
|
|
593
635
|
config.add_show_field 'link_to_search_true', :link_to_search => true
|
594
636
|
config.add_show_field 'link_to_search_named', :link_to_search => :some_field
|
595
637
|
config.add_show_field 'highlight', :highlight => true
|
638
|
+
config.add_show_field 'solr_doc_accessor', :accessor => true
|
639
|
+
config.add_show_field 'explicit_accessor', :accessor => :solr_doc_accessor
|
640
|
+
config.add_show_field 'explicit_array_accessor', :accessor => [:solr_doc_accessor, :some_method]
|
641
|
+
config.add_show_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
|
596
642
|
end
|
643
|
+
|
597
644
|
helper.stub(:blacklight_config).and_return(@config)
|
598
645
|
end
|
599
646
|
|
@@ -607,7 +654,7 @@ describe BlacklightHelper do
|
|
607
654
|
|
608
655
|
it "should check for a helper method to call" do
|
609
656
|
doc = double()
|
610
|
-
doc.
|
657
|
+
doc.should_receive(:get).with('asdf', :sep => nil)
|
611
658
|
helper.stub(:render_asdf_document_show_field).and_return('custom asdf value')
|
612
659
|
value = helper.render_document_show_field_value :document => doc, :field => 'asdf'
|
613
660
|
expect(value).to eq 'custom asdf value'
|
@@ -658,6 +705,31 @@ describe BlacklightHelper do
|
|
658
705
|
value = helper.render_document_show_field_value :document => doc, :field => 'mnbv'
|
659
706
|
expect(value).to eq 'document mnbv value'
|
660
707
|
end
|
708
|
+
|
709
|
+
it "should call an accessor on the solr document" do
|
710
|
+
doc = double(:solr_doc_accessor => "123")
|
711
|
+
value = helper.render_document_show_field_value :document => doc, :field => 'solr_doc_accessor'
|
712
|
+
expect(value).to eq "123"
|
713
|
+
end
|
714
|
+
|
715
|
+
it "should call an explicit accessor on the solr document" do
|
716
|
+
doc = double(:solr_doc_accessor => "123")
|
717
|
+
value = helper.render_document_show_field_value :document => doc, :field => 'explicit_accessor'
|
718
|
+
expect(value).to eq "123"
|
719
|
+
end
|
720
|
+
|
721
|
+
it "should call an explicit array-style accessor on the solr document" do
|
722
|
+
doc = double(:solr_doc_accessor => double(:some_method => "123"))
|
723
|
+
value = helper.render_document_show_field_value :document => doc, :field => 'explicit_array_accessor'
|
724
|
+
expect(value).to eq "123"
|
725
|
+
end
|
726
|
+
|
727
|
+
it "should call an accessor on the solr document with the field as an argument" do
|
728
|
+
doc = double()
|
729
|
+
expect(doc).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
|
730
|
+
value = helper.render_document_show_field_value :document => doc, :field => 'explicit_accessor_with_arg'
|
731
|
+
expect(value).to eq "123"
|
732
|
+
end
|
661
733
|
end
|
662
734
|
|
663
735
|
describe "#should_render_index_field?" do
|
@@ -675,6 +747,14 @@ describe BlacklightHelper do
|
|
675
747
|
field_config = double(:field => 'asdf', :highlight => true)
|
676
748
|
helper.should_render_index_field?(doc, field_config).should == true
|
677
749
|
end
|
750
|
+
|
751
|
+
it "should if the field has a model accessor" do
|
752
|
+
doc = double()
|
753
|
+
doc.stub(:has?).with('asdf').and_return(false)
|
754
|
+
doc.stub(:has_highlight_field?).with('asdf').and_return(false)
|
755
|
+
field_config = double(:field => 'asdf', :highlight => true, :accessor => true)
|
756
|
+
helper.should_render_index_field?(doc, field_config).should == true
|
757
|
+
end
|
678
758
|
end
|
679
759
|
|
680
760
|
|
@@ -693,6 +773,14 @@ describe BlacklightHelper do
|
|
693
773
|
field_config = double(:field => 'asdf', :highlight => true)
|
694
774
|
expect(helper.should_render_show_field?(doc, field_config)).to be_true
|
695
775
|
end
|
776
|
+
|
777
|
+
it "should if the field has a model accessor" do
|
778
|
+
doc = double()
|
779
|
+
doc.stub(:has?).with('asdf').and_return(false)
|
780
|
+
doc.stub(:has_highlight_field?).with('asdf').and_return(false)
|
781
|
+
field_config = double(:field => 'asdf', :highlight => true, :accessor => true)
|
782
|
+
helper.should_render_show_field?(doc, field_config).should == true
|
783
|
+
end
|
696
784
|
end
|
697
785
|
|
698
786
|
|
@@ -33,11 +33,16 @@ describe FacetsHelper do
|
|
33
33
|
before do
|
34
34
|
@config = Blacklight::Configuration.new do |config|
|
35
35
|
config.add_facet_field 'basic_field'
|
36
|
-
config.add_facet_field 'no_show', :show=>false
|
36
|
+
config.add_facet_field 'no_show', :show => false
|
37
|
+
config.add_facet_field 'helper_show', :show => :my_helper
|
38
|
+
config.add_facet_field 'helper_with_an_arg_show', :show => :my_helper_with_an_arg
|
39
|
+
config.add_facet_field 'lambda_show', :show => lambda { |context, config, field| true }
|
40
|
+
config.add_facet_field 'lambda_no_show', :show => lambda { |context, config, field| false }
|
37
41
|
end
|
38
42
|
|
39
43
|
helper.stub(:blacklight_config => @config)
|
40
44
|
end
|
45
|
+
|
41
46
|
it "should render facets with items" do
|
42
47
|
a = double(:items => [1,2], :name=>'basic_field')
|
43
48
|
expect(helper.should_render_facet?(a)).to be_true
|
@@ -51,6 +56,53 @@ describe FacetsHelper do
|
|
51
56
|
a = double(:items => [1,2], :name=>'no_show')
|
52
57
|
expect(helper.should_render_facet?(a)).to be_false
|
53
58
|
end
|
59
|
+
|
60
|
+
it "should call a helper to determine if it should render a field" do
|
61
|
+
helper.stub(:my_helper => true)
|
62
|
+
a = double(:items => [1,2], :name=>'helper_show')
|
63
|
+
expect(helper.should_render_facet?(a)).to be_true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should call a helper to determine if it should render a field" do
|
67
|
+
a = double(:items => [1,2], :name=>'helper_with_an_arg_show')
|
68
|
+
helper.should_receive(:my_helper_with_an_arg).with(a).and_return(true)
|
69
|
+
expect(helper.should_render_facet?(a)).to be_true
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
it "should evaluate a Proc to determine if it should render a field" do
|
74
|
+
a = double(:items => [1,2], :name=>'lambda_show')
|
75
|
+
expect(helper.should_render_facet?(a)).to be_true
|
76
|
+
|
77
|
+
a = double(:items => [1,2], :name=>'lambda_no_show')
|
78
|
+
expect(helper.should_render_facet?(a)).to be_false
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "should_collapse_facet?" do
|
83
|
+
before do
|
84
|
+
@config = Blacklight::Configuration.new do |config|
|
85
|
+
config.add_facet_field 'basic_field'
|
86
|
+
config.add_facet_field 'no_collapse', collapse: false
|
87
|
+
end
|
88
|
+
|
89
|
+
helper.stub(blacklight_config: @config)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should be collapsed by default" do
|
93
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to be_true
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should not be collapsed if the configuration says so" do
|
97
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to be_false
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not be collapsed if it is in the params" do
|
101
|
+
params[:f] = { basic_field: [1], no_collapse: [2] }.with_indifferent_access
|
102
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to be_false
|
103
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to be_false
|
104
|
+
end
|
105
|
+
|
54
106
|
end
|
55
107
|
|
56
108
|
describe "facet_by_field_name" do
|
@@ -1146,5 +1146,40 @@ describe 'Blacklight::SolrHelper' do
|
|
1146
1146
|
end
|
1147
1147
|
end
|
1148
1148
|
|
1149
|
+
describe "http_method configuration" do
|
1150
|
+
describe "using default" do
|
1151
|
+
let (:blacklight_config) {Blacklight::Configuration.new}
|
1152
|
+
|
1153
|
+
it "defaults to get" do
|
1154
|
+
expect(blacklight_config.http_method).to eq :get
|
1155
|
+
Blacklight.solr.should_receive(:send_and_receive) do |path, params|
|
1156
|
+
expect(path).to eq 'select'
|
1157
|
+
expect(params[:method]).to eq :get
|
1158
|
+
expect(params[:params]).to include(:q)
|
1159
|
+
end.and_return({'response'=>{'docs'=>[]}})
|
1160
|
+
get_search_results(:q => @all_docs_query)
|
1161
|
+
end
|
1162
|
+
end
|
1163
|
+
|
1164
|
+
describe "setting to post" do
|
1165
|
+
let (:blacklight_config) {config = Blacklight::Configuration.new; config.http_method=:post; config}
|
1166
|
+
|
1167
|
+
it "keep value set to post" do
|
1168
|
+
expect(blacklight_config.http_method).to eq :post
|
1169
|
+
Blacklight.solr.should_receive(:send_and_receive) do |path, params|
|
1170
|
+
expect(path).to eq 'select'
|
1171
|
+
expect(params[:method]).to eq :post
|
1172
|
+
expect(params[:data]).to include(:q)
|
1173
|
+
end.and_return({'response'=>{'docs'=>[]}})
|
1174
|
+
get_search_results(:q => @all_docs_query)
|
1175
|
+
end
|
1176
|
+
|
1177
|
+
it "should send a post request to solr", :integration => true do
|
1178
|
+
response, docs = get_search_results(:q => @all_docs_query)
|
1179
|
+
expect(docs.length).to be >= 1
|
1180
|
+
end
|
1181
|
+
end
|
1182
|
+
end
|
1183
|
+
|
1149
1184
|
end
|
1150
1185
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Blacklight::Routes" do
|
4
|
+
describe "default_route_sets" do
|
5
|
+
around do |example|
|
6
|
+
@original = Blacklight::Routes.default_route_sets.dup.freeze
|
7
|
+
|
8
|
+
example.run
|
9
|
+
|
10
|
+
Blacklight::Routes.default_route_sets = @original
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is settable" do
|
14
|
+
Blacklight::Routes.default_route_sets += [:foo]
|
15
|
+
|
16
|
+
# Order DOES matter.
|
17
|
+
expect(Blacklight::Routes.default_route_sets).to eq(@original + [:foo])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "catalog/constraints" do
|
4
|
+
let :blacklight_config do
|
5
|
+
Blacklight::Configuration.new :document_index_view_types => ['list', 'xyz']
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should render nothing if no constraints are set" do
|
9
|
+
view.stub(query_has_constraints?: false)
|
10
|
+
render partial: "catalog/constraints"
|
11
|
+
expect(rendered).to be_empty
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should render a start over link" do
|
15
|
+
view.should_receive(:search_action_url).with({}).and_return('http://xyz')
|
16
|
+
view.stub(query_has_constraints?: true)
|
17
|
+
view.stub(:blacklight_config).and_return(blacklight_config)
|
18
|
+
render partial: "catalog/constraints"
|
19
|
+
expect(rendered).to have_selector("#startOverLink")
|
20
|
+
expect(rendered).to have_link("Start Over", :href => 'http://xyz')
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should render a start over link with the current view type" do
|
24
|
+
view.should_receive(:search_action_url).with(view: 'xyz').and_return('http://xyz?view=xyz')
|
25
|
+
view.stub(query_has_constraints?: true)
|
26
|
+
params[:view] = 'xyz'
|
27
|
+
view.stub(:blacklight_config).and_return(blacklight_config)
|
28
|
+
render partial: "catalog/constraints"
|
29
|
+
expect(rendered).to have_selector("#startOverLink")
|
30
|
+
expect(rendered).to have_link("Start Over", :href => 'http://xyz?view=xyz')
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "catalog/facet_layout" do
|
4
|
+
|
5
|
+
let :blacklight_config do
|
6
|
+
Blacklight::Configuration.new
|
7
|
+
end
|
8
|
+
|
9
|
+
let :facet_field do
|
10
|
+
Blacklight::Configuration::FacetField.new(field: 'some_field').normalize!
|
11
|
+
end
|
12
|
+
|
13
|
+
before do
|
14
|
+
view.stub(blacklight_config: blacklight_config)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have a facet-specific class" do
|
18
|
+
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
19
|
+
expect(rendered).to have_selector '.blacklight-some_field'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have a title with a link for a11y" do
|
23
|
+
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
24
|
+
expect(rendered).to have_selector 'h5 a', text: 'Some Field'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should be collapsable" do
|
28
|
+
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
29
|
+
expect(rendered).to have_selector '.panel-heading.collapsed'
|
30
|
+
expect(rendered).to have_selector '.collapse .panel-body'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should be configured to be open by default" do
|
34
|
+
facet_field.stub(collapse: false)
|
35
|
+
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
36
|
+
expect(rendered).to_not have_selector '.panel-heading.collapsed'
|
37
|
+
expect(rendered).to have_selector '.in .panel-body'
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
@@ -47,8 +47,12 @@ describe "catalog/_facets" do
|
|
47
47
|
|
48
48
|
it "should list values" do
|
49
49
|
render
|
50
|
-
|
51
|
-
|
50
|
+
|
51
|
+
# The .facet-content class is used by blacklight_range_limit js, and
|
52
|
+
# should be applied to the .panel-collapse div that contains the collapsible
|
53
|
+
# facet content. Please make sure it remains if possible.
|
54
|
+
expect(rendered).to have_selector('.facet-content a.facet_select')
|
55
|
+
expect(rendered).to have_selector('.facet-content .facet-count')
|
52
56
|
end
|
53
57
|
|
54
58
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "catalog/_index_header_default" do
|
4
|
+
let :document do
|
5
|
+
SolrDocument.new :id => 'xyz', :format => 'a'
|
6
|
+
end
|
7
|
+
|
8
|
+
let :blacklight_config do
|
9
|
+
Blacklight::Configuration.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should render the document header" do
|
13
|
+
assign :response, double(:params => {})
|
14
|
+
view.stub(:current_search_session).and_return nil
|
15
|
+
view.stub(:render_grouped_response?).and_return false
|
16
|
+
view.stub(:blacklight_config).and_return(blacklight_config)
|
17
|
+
view.stub(:render_bookmarks_control?).and_return false
|
18
|
+
render :partial => "catalog/index_header_default", :locals => {:document => document, :document_counter => 1}
|
19
|
+
expect(rendered).to have_selector('.document-counter', text: "2")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "catalog/_sort_and_per_page" do
|
4
|
+
|
5
|
+
let :blacklight_config do
|
6
|
+
Blacklight::Configuration.new
|
7
|
+
end
|
8
|
+
|
9
|
+
before do
|
10
|
+
view.stub(blacklight_config: blacklight_config)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should render the pagination, sort, per page and view type controls" do
|
14
|
+
stub_template "catalog/_paginate_compact.html.erb" => "paginate_compact"
|
15
|
+
stub_template "catalog/_sort_widget.html.erb" => "sort_widget"
|
16
|
+
stub_template "catalog/_per_page_widget.html.erb" => "per_page_widget"
|
17
|
+
stub_template "catalog/_view_type_group.html.erb" => "view_type_group"
|
18
|
+
render
|
19
|
+
expect(rendered).to match /paginate_compact/
|
20
|
+
expect(rendered).to match /sort_widget/
|
21
|
+
expect(rendered).to match /per_page_widget/
|
22
|
+
expect(rendered).to match /view_type_group/
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "catalog/_view_type_group" do
|
4
|
+
|
5
|
+
let :blacklight_config do
|
6
|
+
Blacklight::Configuration.new
|
7
|
+
end
|
8
|
+
|
9
|
+
before do
|
10
|
+
view.stub(blacklight_config: blacklight_config)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should not display the group when there's only one option" do
|
14
|
+
blacklight_config.stub document_index_view_types: ['a']
|
15
|
+
render partial: 'catalog/view_type_group'
|
16
|
+
expect(rendered).to be_empty
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should display the group" do
|
20
|
+
blacklight_config.stub document_index_view_types: ['a', 'b', 'c']
|
21
|
+
render partial: 'catalog/view_type_group'
|
22
|
+
expect(rendered).to have_selector('.btn-group.view-type-group')
|
23
|
+
expect(rendered).to have_selector('.view-type-a', :text => 'A')
|
24
|
+
expect(rendered).to have_selector('.view-type-b', :text => 'B')
|
25
|
+
expect(rendered).to have_selector('.view-type-c', :text => 'C')
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
it "should set the current view to 'active'" do
|
30
|
+
blacklight_config.stub document_index_view_types: ['a', 'b']
|
31
|
+
render partial: 'catalog/view_type_group'
|
32
|
+
expect(rendered).to have_selector('.active', :text => 'A')
|
33
|
+
expect(rendered).to_not have_selector('.active', :text => 'B')
|
34
|
+
expect(rendered).to have_selector('.btn', :text => 'B')
|
35
|
+
end
|
36
|
+
|
37
|
+
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: 5.0.0.
|
4
|
+
version: 5.0.0.pre3
|
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: 2014-01-
|
20
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -242,7 +242,6 @@ files:
|
|
242
242
|
- app/assets/stylesheets/blacklight/blacklight_defaults.css.scss
|
243
243
|
- app/controllers/bookmarks_controller.rb
|
244
244
|
- app/controllers/catalog_controller.rb
|
245
|
-
- app/controllers/feedback_controller.rb
|
246
245
|
- app/controllers/saved_searches_controller.rb
|
247
246
|
- app/controllers/search_history_controller.rb
|
248
247
|
- app/helpers/blacklight/blacklight_helper_behavior.rb
|
@@ -300,6 +299,7 @@ files:
|
|
300
299
|
- app/views/catalog/_sort_and_per_page.html.erb
|
301
300
|
- app/views/catalog/_sort_widget.html.erb
|
302
301
|
- app/views/catalog/_thumbnail_default.html.erb
|
302
|
+
- app/views/catalog/_view_type_group.html.erb
|
303
303
|
- app/views/catalog/_zero_results.html.erb
|
304
304
|
- app/views/catalog/citation.html.erb
|
305
305
|
- app/views/catalog/citation.js.erb
|
@@ -318,8 +318,6 @@ files:
|
|
318
318
|
- app/views/catalog/show.refworks.erb
|
319
319
|
- app/views/catalog/sms.html.erb
|
320
320
|
- app/views/catalog/sms_sent.html.erb
|
321
|
-
- app/views/feedback/complete.html.erb
|
322
|
-
- app/views/feedback/show.html.erb
|
323
321
|
- app/views/kaminari/blacklight/_first_page.html.erb
|
324
322
|
- app/views/kaminari/blacklight/_gap.html.erb
|
325
323
|
- app/views/kaminari/blacklight/_last_page.html.erb
|
@@ -450,6 +448,7 @@ files:
|
|
450
448
|
- spec/models/search_spec.rb
|
451
449
|
- spec/models/solr_document_spec.rb
|
452
450
|
- spec/routing/catalog_routing_spec.rb
|
451
|
+
- spec/routing/routes_spec.rb
|
453
452
|
- spec/spec.opts
|
454
453
|
- spec/spec_helper.rb
|
455
454
|
- spec/support/features.rb
|
@@ -458,16 +457,21 @@ files:
|
|
458
457
|
- spec/test_app_templates/Gemfile.extra
|
459
458
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
460
459
|
- spec/test_app_templates/lib/tasks/blacklight_test_app.rake
|
460
|
+
- spec/views/catalog/_constraints.html.erb_spec.rb
|
461
461
|
- spec/views/catalog/_constraints_element.html.erb_spec.rb
|
462
462
|
- spec/views/catalog/_document.html.erb_spec.rb
|
463
463
|
- spec/views/catalog/_document_list.html.erb_spec.rb
|
464
|
+
- spec/views/catalog/_facet_layout.html.erb_spec.rb
|
464
465
|
- spec/views/catalog/_facets.html.erb_spec.rb
|
465
466
|
- spec/views/catalog/_index_default.erb_spec.rb
|
467
|
+
- spec/views/catalog/_index_header_default.html.erb_spec.rb
|
466
468
|
- spec/views/catalog/_paginate_compact.html.erb_spec.rb
|
467
469
|
- spec/views/catalog/_search_header.erb_spec.rb
|
468
470
|
- spec/views/catalog/_show_default.erb_spec.rb
|
469
471
|
- spec/views/catalog/_show_sidebar.erb_spec.rb
|
472
|
+
- spec/views/catalog/_sort_and_per_page.html.erb_spec.rb
|
470
473
|
- spec/views/catalog/_thumbnail_default.erb_spec.rb
|
474
|
+
- spec/views/catalog/_view_type_group.html.erb_spec.rb
|
471
475
|
- spec/views/catalog/index.atom.builder_spec.rb
|
472
476
|
- spec/views/catalog/index.html.erb_spec.rb
|
473
477
|
- spec/views/catalog/show.html.erb_spec.rb
|
@@ -546,6 +550,7 @@ test_files:
|
|
546
550
|
- spec/models/search_spec.rb
|
547
551
|
- spec/models/solr_document_spec.rb
|
548
552
|
- spec/routing/catalog_routing_spec.rb
|
553
|
+
- spec/routing/routes_spec.rb
|
549
554
|
- spec/spec.opts
|
550
555
|
- spec/spec_helper.rb
|
551
556
|
- spec/support/features.rb
|
@@ -554,16 +559,21 @@ test_files:
|
|
554
559
|
- spec/test_app_templates/Gemfile.extra
|
555
560
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
556
561
|
- spec/test_app_templates/lib/tasks/blacklight_test_app.rake
|
562
|
+
- spec/views/catalog/_constraints.html.erb_spec.rb
|
557
563
|
- spec/views/catalog/_constraints_element.html.erb_spec.rb
|
558
564
|
- spec/views/catalog/_document.html.erb_spec.rb
|
559
565
|
- spec/views/catalog/_document_list.html.erb_spec.rb
|
566
|
+
- spec/views/catalog/_facet_layout.html.erb_spec.rb
|
560
567
|
- spec/views/catalog/_facets.html.erb_spec.rb
|
561
568
|
- spec/views/catalog/_index_default.erb_spec.rb
|
569
|
+
- spec/views/catalog/_index_header_default.html.erb_spec.rb
|
562
570
|
- spec/views/catalog/_paginate_compact.html.erb_spec.rb
|
563
571
|
- spec/views/catalog/_search_header.erb_spec.rb
|
564
572
|
- spec/views/catalog/_show_default.erb_spec.rb
|
565
573
|
- spec/views/catalog/_show_sidebar.erb_spec.rb
|
574
|
+
- spec/views/catalog/_sort_and_per_page.html.erb_spec.rb
|
566
575
|
- spec/views/catalog/_thumbnail_default.erb_spec.rb
|
576
|
+
- spec/views/catalog/_view_type_group.html.erb_spec.rb
|
567
577
|
- spec/views/catalog/index.atom.builder_spec.rb
|
568
578
|
- spec/views/catalog/index.html.erb_spec.rb
|
569
579
|
- spec/views/catalog/show.html.erb_spec.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class FeedbackController < ApplicationController
|
3
|
-
|
4
|
-
# http://expressica.com/simple_captcha/
|
5
|
-
# include SimpleCaptcha::ControllerHelpers
|
6
|
-
|
7
|
-
# show the feedback form
|
8
|
-
def show
|
9
|
-
@errors=[]
|
10
|
-
if request.post?
|
11
|
-
if validate
|
12
|
-
Notifier.feedback(params)
|
13
|
-
redirect_to feedback_complete_path
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
protected
|
19
|
-
|
20
|
-
# validates the incoming params
|
21
|
-
# returns either an empty array or an array with error messages
|
22
|
-
def validate
|
23
|
-
unless params[:name] =~ /\w+/
|
24
|
-
@errors << I18n.t('blacklight.feedback.valid_name')
|
25
|
-
end
|
26
|
-
unless params[:email] =~ /\w+@\w+\.\w+/
|
27
|
-
@errors << I18n.t('blacklight.feedback.valid_email')
|
28
|
-
end
|
29
|
-
unless params[:message] =~ /\w+/
|
30
|
-
@errors << I18n.t('blacklight.feedback.need_message')
|
31
|
-
end
|
32
|
-
#unless simple_captcha_valid?
|
33
|
-
# @errors << 'Captcha did not match'
|
34
|
-
#end
|
35
|
-
@errors.empty?
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
<div id="content" class="col-md-9">
|
2
|
-
<h1>Send Us Feedback</h1>
|
3
|
-
|
4
|
-
<% unless @errors.empty? %>
|
5
|
-
<strong><%= t('blacklight.feedback.errors.title') %></strong>
|
6
|
-
<ul class="errors">
|
7
|
-
<% @errors.each do |msg| %>
|
8
|
-
<li><%= msg %></li>
|
9
|
-
<% end %>
|
10
|
-
</ul>
|
11
|
-
<% end %>
|
12
|
-
|
13
|
-
<%= form_tag do %>
|
14
|
-
<fieldset>
|
15
|
-
<%= label_tag t('active_record.attributes.feedback.name') %> <%= text_field_tag :name, params[:name] %>
|
16
|
-
<%= label_tag t('active_record.attributes.feedback.email') %> <%= text_field_tag :email, params[:email] %>
|
17
|
-
<%= label_tag t('active_record.attributes.feedback.message') %> <%= text_area_tag :message, params[:message] %>
|
18
|
-
|
19
|
-
<%= label_tag '' %><%= submit_tag t('blacklight.feedback.submit') %>
|
20
|
-
</fieldset>
|
21
|
-
<% end %>
|
22
|
-
</div>
|