blacklight 5.4.0 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/ajax_modal.js +37 -20
- data/app/assets/javascripts/blacklight/checkbox_submit.js +7 -2
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +6 -2
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +3 -1
- data/app/helpers/blacklight/configuration_helper_behavior.rb +18 -0
- data/app/helpers/blacklight/facets_helper_behavior.rb +25 -1
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -17
- data/app/views/catalog/_constraints_element.html.erb +24 -25
- data/app/views/catalog/_facet_limit.html.erb +5 -14
- data/app/views/catalog/_search_results.html.erb +25 -0
- data/app/views/catalog/index.html.erb +9 -38
- data/blacklight.gemspec +2 -1
- data/lib/blacklight/request_builders.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +52 -30
- data/spec/helpers/facets_helper_spec.rb +48 -19
- data/spec/helpers/render_constraints_helper_spec.rb +22 -6
- data/spec/lib/blacklight/facet_paginator_spec.rb +50 -58
- data/spec/lib/blacklight/solr_helper_spec.rb +8 -0
- data/spec/spec_helper.rb +2 -9
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +6 -4
- data/template.demo.rb +9 -5
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fac08d13bf67f849e356efeeea75395d3dd66b44
|
4
|
+
data.tar.gz: 1ed742c6ae84f16f1361950eb4fdcdc7dbfb38f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8106b0abf9286780e5446572ac0d47e375d75f628981086cd9101f6b994688ba9cc4f3329319be812edece3723c974be889f2a488cda8ae60929383bf1ff775
|
7
|
+
data.tar.gz: 5addaec1c1bfaf038aa6b1c010ec4942c40059345d344a805c4f062e47cce95eff2e15969ec6ddc3c7288ce0790453f06da79bab42ceca5b64964b7c4ff3e014
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.5.0
|
@@ -102,27 +102,44 @@ Blacklight.ajaxModal.containerSelector = "[data-ajax-modal~=container]";
|
|
102
102
|
|
103
103
|
Blacklight.ajaxModal.modalCloseSelector = "[data-ajax-modal~=close], span.ajax-close-modal";
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
$(Blacklight.ajaxModal.modalSelector).find('.modal-content').html(contents);
|
118
|
-
|
119
|
-
// send custom event with the modal dialog div as the target
|
120
|
-
var e = $.Event('loaded.blacklight.ajax-modal')
|
121
|
-
$(Blacklight.ajaxModal.modalSelector).trigger(e);
|
122
|
-
// if they did preventDefault, don't show the dialog
|
123
|
-
if (e.isDefaultPrevented()) return;
|
105
|
+
// Called on fatal failure of ajax load, function returns content
|
106
|
+
// to show to user in modal. Right now called only for extreme
|
107
|
+
// network errors.
|
108
|
+
Blacklight.ajaxModal.onFailure = function(data) {
|
109
|
+
var contents = "<div class='modal-header'>" +
|
110
|
+
"<button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>" +
|
111
|
+
"Network Error</div>";
|
112
|
+
$(Blacklight.ajaxModal.modalSelector).find('.modal-content').html(contents);
|
113
|
+
$(Blacklight.ajaxModal.modalSelector).modal('show');
|
114
|
+
}
|
124
115
|
|
125
|
-
|
116
|
+
Blacklight.ajaxModal.receiveAjax = function (data) {
|
117
|
+
if (data.readyState == 0) {
|
118
|
+
// Network error, could not contact server.
|
119
|
+
Blacklight.ajaxModal.onFailure(data)
|
120
|
+
}
|
121
|
+
else {
|
122
|
+
var contents = data.responseText;
|
123
|
+
|
124
|
+
// does it have a data- selector for container?
|
125
|
+
// important we don't execute script tags, we shouldn't.
|
126
|
+
// code modelled off of JQuery ajax.load. https://github.com/jquery/jquery/blob/master/src/ajax/load.js?source=c#L62
|
127
|
+
var container = $("<div>").
|
128
|
+
append( jQuery.parseHTML(contents) ).find( Blacklight.ajaxModal.containerSelector ).first();
|
129
|
+
if (container.size() !== 0) {
|
130
|
+
contents = container.html();
|
131
|
+
}
|
132
|
+
|
133
|
+
$(Blacklight.ajaxModal.modalSelector).find('.modal-content').html(contents);
|
134
|
+
|
135
|
+
// send custom event with the modal dialog div as the target
|
136
|
+
var e = $.Event('loaded.blacklight.ajax-modal')
|
137
|
+
$(Blacklight.ajaxModal.modalSelector).trigger(e);
|
138
|
+
// if they did preventDefault, don't show the dialog
|
139
|
+
if (e.isDefaultPrevented()) return;
|
140
|
+
|
141
|
+
$(Blacklight.ajaxModal.modalSelector).modal('show');
|
142
|
+
}
|
126
143
|
};
|
127
144
|
|
128
145
|
|
@@ -13,6 +13,8 @@
|
|
13
13
|
attribute (HTML5-style doc-*) that contains the id/primary key
|
14
14
|
of the object in question -- used by plugin for a unique value for
|
15
15
|
DOM id's.
|
16
|
+
|
17
|
+
Uses HTML for a checkbox compatible with Bootstrap 3.
|
16
18
|
|
17
19
|
Pass in options for your class name and labels:
|
18
20
|
$("form.something").bl_checkbox_submit({
|
@@ -54,7 +56,6 @@
|
|
54
56
|
.attr("id", options.css_class + "_" + unique_id);
|
55
57
|
var label = $('<label>')
|
56
58
|
.addClass( options.css_class )
|
57
|
-
.addClass('checkbox')
|
58
59
|
.attr("for", options.css_class + '_' + unique_id)
|
59
60
|
.attr("title", form.attr("title") || "");
|
60
61
|
var span = $('<span>');
|
@@ -62,6 +63,10 @@
|
|
62
63
|
label.append(checkbox);
|
63
64
|
label.append(" ");
|
64
65
|
label.append(span);
|
66
|
+
|
67
|
+
var checkbox_div = $("<div class='checkbox' />")
|
68
|
+
.addClass(options.css_class)
|
69
|
+
.append(label);
|
65
70
|
|
66
71
|
function update_state_for(state) {
|
67
72
|
checkbox.prop("checked", state);
|
@@ -77,7 +82,7 @@
|
|
77
82
|
}
|
78
83
|
}
|
79
84
|
|
80
|
-
form.append(
|
85
|
+
form.append(checkbox_div);
|
81
86
|
update_state_for(checked);
|
82
87
|
|
83
88
|
checkbox.click(function() {
|
@@ -56,13 +56,17 @@ span.constraints-label {
|
|
56
56
|
&:hover, &:active {
|
57
57
|
background-color: $btn-default-bg;
|
58
58
|
border-color: $btn-default-border;
|
59
|
+
box-shadow: none;
|
59
60
|
}
|
60
61
|
}
|
61
62
|
|
62
63
|
.filterName:after
|
63
64
|
{
|
64
65
|
@extend .text-muted;
|
65
|
-
|
66
|
+
font-family: 'Glyphicons Halflings';
|
67
|
+
/* glyphicon-chevron-right */
|
68
|
+
content: "\e080";
|
69
|
+
font-size: 70%;
|
66
70
|
padding-left: $caret-width-base;
|
67
71
|
}
|
68
72
|
|
@@ -185,4 +189,4 @@ label.toggle_bookmark
|
|
185
189
|
.caption {
|
186
190
|
@extend .sr-only;
|
187
191
|
}
|
188
|
-
}
|
192
|
+
}
|
@@ -505,7 +505,9 @@ module Blacklight::BlacklightHelperBehavior
|
|
505
505
|
# XXX rather than handling this logic through exceptions, maybe there's a Rails internals method
|
506
506
|
# for determining if a partial template exists..
|
507
507
|
begin
|
508
|
-
|
508
|
+
partial = str % { action_name: base_name, format: format, index_view_type: document_index_view_type }
|
509
|
+
logger.debug "Looking for document partial #{partial}"
|
510
|
+
return render partial: partial, locals: locals.merge(document: doc)
|
509
511
|
rescue ActionView::MissingTemplate
|
510
512
|
nil
|
511
513
|
end
|
@@ -37,6 +37,24 @@ module Blacklight::ConfigurationHelperBehavior
|
|
37
37
|
blacklight_config.show_fields
|
38
38
|
end
|
39
39
|
|
40
|
+
##
|
41
|
+
# Return a label for the currently selected search field.
|
42
|
+
# If no "search_field" or the default (e.g. "all_fields") is selected, then return nil
|
43
|
+
# Otherwise grab the label of the selected search field.
|
44
|
+
# @param [Hash] query parameters
|
45
|
+
# @return [String]
|
46
|
+
def constraint_query_label(localized_params = params)
|
47
|
+
label_for_search_field(localized_params[:search_field]) unless default_search_field?(localized_params[:search_field])
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Is the search form using the default search field ("all_fields" by default)?
|
52
|
+
# @param [String] the currently selected search_field
|
53
|
+
# @return [Boolean]
|
54
|
+
def default_search_field?(selected_search_field)
|
55
|
+
selected_search_field.blank? || (default_search_field && selected_search_field == default_search_field[:key])
|
56
|
+
end
|
57
|
+
|
40
58
|
##
|
41
59
|
# Look up the label for the index field
|
42
60
|
def index_field_label document, field
|
@@ -50,6 +50,27 @@ module Blacklight::FacetsHelperBehavior
|
|
50
50
|
render(options)
|
51
51
|
end
|
52
52
|
|
53
|
+
##
|
54
|
+
# Renders the list of values
|
55
|
+
# removes any elements where render_facet_item returns a nil value. This enables an application
|
56
|
+
# to filter undesireable facet items so they don't appear in the UI
|
57
|
+
def render_facet_limit_list(paginator, solr_field, wrapping_element=:li)
|
58
|
+
safe_join(paginator.items.
|
59
|
+
map { |item| render_facet_item(solr_field, item) }.compact.
|
60
|
+
map { |item| content_tag(wrapping_element,item)}
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Renders a single facet item
|
66
|
+
def render_facet_item(solr_field, item)
|
67
|
+
if facet_in_params?( solr_field, item.value )
|
68
|
+
render_selected_facet_value(solr_field, item)
|
69
|
+
else
|
70
|
+
render_facet_value(solr_field, item)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
53
74
|
##
|
54
75
|
# Determine if Blacklight should render the display_facet or not
|
55
76
|
#
|
@@ -77,7 +98,10 @@ module Blacklight::FacetsHelperBehavior
|
|
77
98
|
end
|
78
99
|
|
79
100
|
##
|
80
|
-
#
|
101
|
+
# The name of the partial to use to render a facet field.
|
102
|
+
# uses the value of the "partial" field if set in the facet configuration
|
103
|
+
# otherwise uses "facet_pivot" if this facet is a pivot facet
|
104
|
+
# defaults to 'facet_limit'
|
81
105
|
#
|
82
106
|
# @return [String]
|
83
107
|
def facet_partial_name(display_facet = nil)
|
@@ -33,21 +33,12 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
33
33
|
# @return [String]
|
34
34
|
def render_constraints_query(localized_params = params)
|
35
35
|
# So simple don't need a view template, we can just do it here.
|
36
|
-
if
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
render_constraint_element(label,
|
45
|
-
localized_params[:q],
|
46
|
-
:classes => ["query"],
|
47
|
-
:remove => url_for(localized_params.merge(:q=>nil, :action=>'index')))
|
48
|
-
else
|
49
|
-
"".html_safe
|
50
|
-
end
|
36
|
+
return "".html_safe if localized_params[:q].blank?
|
37
|
+
|
38
|
+
render_constraint_element(constraint_query_label(localized_params),
|
39
|
+
localized_params[:q],
|
40
|
+
:classes => ["query"],
|
41
|
+
:remove => url_for(localized_params.merge(:q=>nil, :action=>'index')))
|
51
42
|
end
|
52
43
|
|
53
44
|
##
|
@@ -76,8 +67,8 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
76
67
|
facet_config = facet_configuration_for_field(facet)
|
77
68
|
|
78
69
|
safe_join(values.map do |val|
|
79
|
-
|
80
|
-
|
70
|
+
next if val.blank? # skip empty string
|
71
|
+
render_constraint_element( facet_field_label(facet), facet_display_value(facet, val),
|
81
72
|
:remove => search_action_path(remove_facet_params(facet, val, localized_params)),
|
82
73
|
:classes => ["filter", "filter-" + facet.parameterize]
|
83
74
|
)
|
@@ -1,34 +1,33 @@
|
|
1
|
-
|
2
|
-
# label
|
1
|
+
<% # local params:
|
2
|
+
# label
|
3
3
|
# value
|
4
4
|
# options =>
|
5
5
|
# :remove => url for a remove constraint link
|
6
6
|
# :classes => array of classes to add to container span
|
7
7
|
options ||= {}
|
8
|
-
|
8
|
+
%>
|
9
9
|
|
10
10
|
<span class="btn-group appliedFilter constraint <%= options[:classes].join(" ") if options[:classes] %>">
|
11
|
-
<
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
<span class="constraint-value btn btn-sm btn-default btn-disabled">
|
12
|
+
<% unless label.blank? %>
|
13
|
+
<span class="filterName"><%= label %></span>
|
14
|
+
<% end %>
|
15
|
+
<% unless value.blank? %>
|
16
|
+
<span class="filterValue"><%= value %></span>
|
17
|
+
<% end %>
|
18
|
+
</span>
|
19
|
+
<% unless options[:remove].blank? %>
|
20
|
+
<% accessible_remove_label = content_tag :span, class: 'sr-only' do
|
21
|
+
if label.blank?
|
22
|
+
t('blacklight.search.filters.remove.value', value: value)
|
23
|
+
else
|
24
|
+
t('blacklight.search.filters.remove.label_value', label: label, value: value)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
%>
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
else
|
25
|
-
t('blacklight.search.filters.remove.label_value', :label => label, :value => value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
%>
|
29
|
-
|
30
|
-
<%= link_to(content_tag(:span, '', :class => 'glyphicon glyphicon-remove') + accessible_remove_label,
|
31
|
-
options[:remove], :class => 'btn btn-default btn-sm remove dropdown-toggle'
|
32
|
-
) %>
|
33
|
-
<%- end -%>
|
29
|
+
<%= link_to(content_tag(:span, '', class: 'glyphicon glyphicon-remove') + accessible_remove_label,
|
30
|
+
options[:remove], class: 'btn btn-default btn-sm remove dropdown-toggle'
|
31
|
+
) %>
|
32
|
+
<%- end -%>
|
34
33
|
</span>
|
@@ -1,18 +1,9 @@
|
|
1
1
|
<ul class="facet-values list-unstyled">
|
2
|
-
<% paginator = facet_paginator(facet_field, display_facet)
|
3
|
-
%>
|
4
|
-
<% paginator.items.each do |item| -%>
|
5
|
-
<li>
|
6
|
-
<% if facet_in_params?( solr_field, item.value ) %>
|
7
|
-
<%= render_selected_facet_value(solr_field, item) %>
|
8
|
-
<% else %>
|
9
|
-
<%= render_facet_value(solr_field, item) %>
|
10
|
-
<% end -%>
|
11
|
-
</li>
|
12
|
-
<% end %>
|
2
|
+
<% paginator = facet_paginator(facet_field, display_facet) %>
|
3
|
+
<%= render_facet_limit_list paginator, solr_field %>
|
13
4
|
|
14
|
-
<%
|
15
|
-
<li class="more_facets_link"><%= link_to
|
5
|
+
<% unless paginator.last_page? || params[:action] == "facet" %>
|
6
|
+
<li class="more_facets_link"><%= link_to t('blacklight.search.facets.more'),
|
7
|
+
params.merge(id: solr_field, action: "facet", page: nil), class: "more_facets_link" %></li>
|
16
8
|
<% end %>
|
17
|
-
|
18
9
|
</ul>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<h2 class="sr-only top-content-title"><%= t('blacklight.search.search_results_header') %></h2>
|
2
|
+
|
3
|
+
<% @page_title = t('blacklight.search.title', :application_name => application_name) %>
|
4
|
+
|
5
|
+
|
6
|
+
<% content_for(:head) do -%>
|
7
|
+
<%= render_opensearch_response_metadata %>
|
8
|
+
<%= auto_discovery_link_tag(:rss, url_for(params.merge(:format => 'rss')), :title => t('blacklight.search.rss_feed') ) %>
|
9
|
+
<%= auto_discovery_link_tag(:atom, url_for(params.merge(:format => 'atom')), :title => t('blacklight.search.atom_feed') ) %>
|
10
|
+
<% end -%>
|
11
|
+
|
12
|
+
|
13
|
+
<%= render 'search_header' %>
|
14
|
+
|
15
|
+
<h2 class="sr-only"><%= t('blacklight.search.search_results') %></h2>
|
16
|
+
|
17
|
+
<%- if @response.empty? %>
|
18
|
+
<%= render "zero_results" %>
|
19
|
+
<%- elsif render_grouped_response? %>
|
20
|
+
<%= render_grouped_document_index %>
|
21
|
+
<%- else %>
|
22
|
+
<%= render_document_index %>
|
23
|
+
<%- end %>
|
24
|
+
|
25
|
+
<%= render 'results_pagination' %>
|
@@ -1,41 +1,12 @@
|
|
1
|
-
<div id="sidebar" class="col-md-3">
|
2
|
-
|
1
|
+
<div id="sidebar" class="col-md-3 col-sm-4">
|
2
|
+
<%= render 'search_sidebar' %>
|
3
3
|
</div>
|
4
4
|
|
5
|
-
<div id="content" class="col-md-9">
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<h2 class="sr-only top-content-title"><%= t('blacklight.search.search_results_header') %></h2>
|
13
|
-
|
14
|
-
<% @page_title = t('blacklight.search.title', :application_name => application_name) %>
|
15
|
-
|
16
|
-
|
17
|
-
<% content_for(:head) do -%>
|
18
|
-
<%= render_opensearch_response_metadata %>
|
19
|
-
<%= auto_discovery_link_tag(:rss, url_for(params.merge(:format => 'rss')), :title => t('blacklight.search.rss_feed') ) %>
|
20
|
-
<%= auto_discovery_link_tag(:atom, url_for(params.merge(:format => 'atom')), :title => t('blacklight.search.atom_feed') ) %>
|
21
|
-
<% end -%>
|
22
|
-
|
23
|
-
|
24
|
-
<%= render 'search_header' %>
|
25
|
-
|
26
|
-
<h2 class="sr-only"><%= t('blacklight.search.search_results') %></h2>
|
27
|
-
|
28
|
-
<%- if @response.empty? %>
|
29
|
-
<%= render "zero_results" %>
|
30
|
-
<%- elsif render_grouped_response? %>
|
31
|
-
<%= render_grouped_document_index %>
|
32
|
-
<%- else %>
|
33
|
-
<%= render_document_index %>
|
34
|
-
<%- end %>
|
35
|
-
|
36
|
-
<%= render 'results_pagination' %>
|
37
|
-
|
38
|
-
|
39
|
-
<% end %>
|
40
|
-
|
5
|
+
<div id="content" class="col-md-9 col-sm-8">
|
6
|
+
<% unless has_search_parameters? %>
|
7
|
+
<%# if there are no input/search related params, display the "home" partial -%>
|
8
|
+
<%= render 'home' %>
|
9
|
+
<% else %>
|
10
|
+
<%= render 'search_results' %>
|
11
|
+
<% end %>
|
41
12
|
</div>
|
data/blacklight.gemspec
CHANGED
@@ -26,7 +26,8 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
s.add_development_dependency "jettywrapper", ">= 1.7.0"
|
28
28
|
s.add_development_dependency "blacklight-marc", "~> 5.0"
|
29
|
-
s.add_development_dependency "rspec-rails"
|
29
|
+
s.add_development_dependency "rspec-rails", "~> 2.99"
|
30
|
+
s.add_development_dependency "rspec-its"
|
30
31
|
s.add_development_dependency "capybara"
|
31
32
|
s.add_development_dependency "poltergeist"
|
32
33
|
s.add_development_dependency 'engine_cart', ">= 0.1.0"
|
@@ -121,6 +121,7 @@ module Blacklight
|
|
121
121
|
|
122
122
|
f_request_params.each_pair do |facet_field, value_list|
|
123
123
|
Array(value_list).each do |value|
|
124
|
+
next if value.blank? # skip empty strings
|
124
125
|
solr_parameters.append_filter_query facet_value_to_fq_string(facet_field, value)
|
125
126
|
end
|
126
127
|
end
|
@@ -12,6 +12,10 @@ module Blacklight::Solr
|
|
12
12
|
# so we cannot know how many "pages" there are.
|
13
13
|
#
|
14
14
|
class FacetPaginator
|
15
|
+
extend Deprecation
|
16
|
+
|
17
|
+
self.deprecation_horizon = 'blacklight version 6.0.0'
|
18
|
+
|
15
19
|
# What request keys will we use for the parameters need. Need to
|
16
20
|
# make sure they do NOT conflict with catalog/index request params,
|
17
21
|
# and need to make them accessible in a list so we can easily
|
@@ -21,7 +25,7 @@ module Blacklight::Solr
|
|
21
25
|
class << self; attr_accessor :request_keys end # create a class method
|
22
26
|
def request_keys ; self.class.request_keys ; end # shortcut
|
23
27
|
|
24
|
-
attr_reader :
|
28
|
+
attr_reader :total_count, :items, :offset, :limit, :sort
|
25
29
|
|
26
30
|
# all_facet_values is a list of facet value objects returned by solr,
|
27
31
|
# asking solr for n+1 facet values.
|
@@ -33,54 +37,72 @@ module Blacklight::Solr
|
|
33
37
|
def initialize(all_facet_values, arguments)
|
34
38
|
# to_s.to_i will conveniently default to 0 if nil
|
35
39
|
@offset = arguments[:offset].to_s.to_i
|
36
|
-
@limit = arguments[:limit].to_s.to_i
|
40
|
+
@limit = arguments[:limit].to_s.to_i
|
37
41
|
# count is solr's default
|
38
42
|
@sort = arguments[:sort] || "count"
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
else # nil limit
|
46
|
-
@items = all_facet_values
|
47
|
-
@has_next = false
|
48
|
-
@has_previous = false
|
49
|
-
end
|
43
|
+
@total_count = all_facet_values.size
|
44
|
+
@items = items_for_limit(all_facet_values)
|
45
|
+
end
|
46
|
+
|
47
|
+
def prev_page
|
48
|
+
current_page - 1 unless first_page?
|
50
49
|
end
|
51
50
|
|
52
51
|
def current_page
|
53
|
-
|
52
|
+
if limit == 0 #check for divide by zero
|
53
|
+
1
|
54
|
+
else
|
55
|
+
@offset / limit + 1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def next_page
|
60
|
+
current_page + 1 unless last_page?
|
54
61
|
end
|
55
62
|
|
63
|
+
#@deprecated
|
56
64
|
def has_next?
|
57
|
-
|
65
|
+
!last_page?
|
58
66
|
end
|
67
|
+
deprecation_deprecate :has_next?
|
59
68
|
|
69
|
+
#@deprecated
|
60
70
|
def has_previous?
|
61
|
-
|
71
|
+
!first_page?
|
62
72
|
end
|
73
|
+
deprecation_deprecate :has_next?
|
63
74
|
|
64
75
|
def last_page?
|
65
|
-
|
76
|
+
current_page >= total_pages
|
66
77
|
end
|
67
78
|
|
68
79
|
def first_page?
|
69
|
-
|
80
|
+
current_page == 1
|
70
81
|
end
|
71
82
|
|
83
|
+
def total_pages
|
84
|
+
if limit == 0 #check for divide by zero
|
85
|
+
1
|
86
|
+
else
|
87
|
+
(total_count.to_f / limit).ceil
|
88
|
+
end
|
89
|
+
end
|
72
90
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
91
|
+
# Pass in a desired solr facet solr key ('count' or 'index', see
|
92
|
+
# http://wiki.apache.org/solr/SimpleFacetParameters#facet.limit
|
93
|
+
# under facet.sort ), and your current request params.
|
94
|
+
# Get back params suitable to passing to an ActionHelper method for
|
95
|
+
# creating a url, to resort by that method.
|
96
|
+
def params_for_resort_url(sort_method, params)
|
97
|
+
# When resorting, we've got to reset the offset to start at beginning,
|
98
|
+
# no way to make it make sense otherwise.
|
99
|
+
params.merge(request_keys[:sort] => sort_method, request_keys[:page] => nil)
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
# setting limit to 0 implies no limit
|
104
|
+
def items_for_limit(values)
|
105
|
+
limit != 0 ? values.slice(offset, limit) : values
|
106
|
+
end
|
84
107
|
end
|
85
|
-
|
86
108
|
end
|
@@ -17,7 +17,7 @@ describe FacetsHelper do
|
|
17
17
|
empty = double(:items => [])
|
18
18
|
|
19
19
|
fields = [a,b,empty]
|
20
|
-
expect(helper.has_facet_values?(fields)).to
|
20
|
+
expect(helper.has_facet_values?(fields)).to be true
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should be false if all facets are empty" do
|
@@ -25,7 +25,7 @@ describe FacetsHelper do
|
|
25
25
|
empty = double(:items => [])
|
26
26
|
|
27
27
|
fields = [empty]
|
28
|
-
expect(helper.has_facet_values?(fields)).to
|
28
|
+
expect(helper.has_facet_values?(fields)).to be false
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -45,37 +45,37 @@ describe FacetsHelper do
|
|
45
45
|
|
46
46
|
it "should render facets with items" do
|
47
47
|
a = double(:items => [1,2], :name=>'basic_field')
|
48
|
-
expect(helper.should_render_facet?(a)).to
|
48
|
+
expect(helper.should_render_facet?(a)).to be true
|
49
49
|
end
|
50
50
|
it "should not render facets without items" do
|
51
51
|
empty = double(:items => [], :name=>'basic_field')
|
52
|
-
expect(helper.should_render_facet?(empty)).to
|
52
|
+
expect(helper.should_render_facet?(empty)).to be false
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should not render facets where show is set to false" do
|
56
56
|
a = double(:items => [1,2], :name=>'no_show')
|
57
|
-
expect(helper.should_render_facet?(a)).to
|
57
|
+
expect(helper.should_render_facet?(a)).to be false
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should call a helper to determine if it should render a field" do
|
61
61
|
helper.stub(:my_helper => true)
|
62
62
|
a = double(:items => [1,2], :name=>'helper_show')
|
63
|
-
expect(helper.should_render_facet?(a)).to
|
63
|
+
expect(helper.should_render_facet?(a)).to be true
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should call a helper to determine if it should render a field" do
|
67
67
|
a = double(:items => [1,2], :name=>'helper_with_an_arg_show')
|
68
68
|
helper.should_receive(:my_helper_with_an_arg).with(@config.facet_fields['helper_with_an_arg_show'], a).and_return(true)
|
69
|
-
expect(helper.should_render_facet?(a)).to
|
69
|
+
expect(helper.should_render_facet?(a)).to be true
|
70
70
|
end
|
71
71
|
|
72
72
|
|
73
73
|
it "should evaluate a Proc to determine if it should render a field" do
|
74
74
|
a = double(:items => [1,2], :name=>'lambda_show')
|
75
|
-
expect(helper.should_render_facet?(a)).to
|
75
|
+
expect(helper.should_render_facet?(a)).to be true
|
76
76
|
|
77
77
|
a = double(:items => [1,2], :name=>'lambda_no_show')
|
78
|
-
expect(helper.should_render_facet?(a)).to
|
78
|
+
expect(helper.should_render_facet?(a)).to be false
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -90,17 +90,17 @@ describe FacetsHelper do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should be collapsed by default" do
|
93
|
-
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to
|
93
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to be true
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should not be collapsed if the configuration says so" do
|
97
|
-
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to
|
97
|
+
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to be false
|
98
98
|
end
|
99
99
|
|
100
100
|
it "should not be collapsed if it is in the params" do
|
101
101
|
params[:f] = { basic_field: [1], no_collapse: [2] }.with_indifferent_access
|
102
|
-
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to
|
103
|
-
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to
|
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
104
|
end
|
105
105
|
|
106
106
|
end
|
@@ -152,7 +152,7 @@ describe FacetsHelper do
|
|
152
152
|
field.should be_a_kind_of Blacklight::SolrResponse::Facets::FacetField
|
153
153
|
|
154
154
|
expect(field.name).to eq'my_query_facet_field'
|
155
|
-
expect(field.items).to
|
155
|
+
expect(field.items.size).to eq 2
|
156
156
|
expect(field.items.map { |x| x.value }).to_not include 'field:not_appearing_in_the_config'
|
157
157
|
|
158
158
|
facet_item = field.items.select { |x| x.value == 'a_simple_query' }.first
|
@@ -180,11 +180,11 @@ describe FacetsHelper do
|
|
180
180
|
|
181
181
|
expect(field.name).to eq 'my_pivot_facet_field'
|
182
182
|
|
183
|
-
expect(field.items).to
|
183
|
+
expect(field.items.size).to eq 1
|
184
184
|
|
185
185
|
expect(field.items.first).to respond_to(:items)
|
186
186
|
|
187
|
-
expect(field.items.first.items).to
|
187
|
+
expect(field.items.first.items.size).to eq 1
|
188
188
|
expect(field.items.first.items.first.fq).to eq({ 'field_a' => 'a' })
|
189
189
|
end
|
190
190
|
end
|
@@ -281,11 +281,40 @@ describe FacetsHelper do
|
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
284
|
+
describe "render_facet_limit_list" do
|
285
|
+
let(:f1) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '792', value: 'Book') }
|
286
|
+
let(:f2) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '65', value: 'Musical Score') }
|
287
|
+
let(:paginator) { Blacklight::Solr::FacetPaginator.new([f1, f2], limit: 10) }
|
288
|
+
subject { helper.render_facet_limit_list(paginator, 'type_solr_field') }
|
289
|
+
before do
|
290
|
+
allow(helper).to receive(:search_action_path) do |*args|
|
291
|
+
catalog_index_path *args
|
292
|
+
end
|
293
|
+
end
|
294
|
+
it "should draw a list of elements" do
|
295
|
+
expect(subject).to have_selector 'li', count: 2
|
296
|
+
expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
|
297
|
+
expect(subject).to have_selector 'li:nth-child(2) a.facet_select', text: 'Musical Score'
|
298
|
+
end
|
299
|
+
|
300
|
+
context "when one of the facet items is rendered as nil" do
|
301
|
+
# An app may override render_facet_item to filter out some undesired facet items by returning nil.
|
302
|
+
|
303
|
+
before { allow(helper).to receive(:render_facet_item).and_return("<a class=\"facet_select\">Book</a>".html_safe, nil) }
|
304
|
+
|
305
|
+
it "should draw a list of elements" do
|
306
|
+
expect(subject).to have_selector 'li', count: 1
|
307
|
+
expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
|
308
|
+
end
|
309
|
+
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
284
313
|
describe "facet_field_in_params?" do
|
285
314
|
it "should check if the facet field is selected in the user params" do
|
286
315
|
helper.stub(:params => { :f => { "some-field" => ["x"]}})
|
287
|
-
expect(helper.facet_field_in_params?("some-field")).to
|
288
|
-
expect(helper.facet_field_in_params?("other-field")).to_not
|
316
|
+
expect(helper.facet_field_in_params?("some-field")).to be_truthy
|
317
|
+
expect(helper.facet_field_in_params?("other-field")).to_not be true
|
289
318
|
end
|
290
319
|
end
|
291
320
|
|
@@ -300,7 +329,7 @@ describe FacetsHelper do
|
|
300
329
|
helper.should_receive(:facet_display_value).and_return('Z')
|
301
330
|
helper.should_receive(:add_facet_params_and_redirect).and_return({controller:'catalog'})
|
302
331
|
|
303
|
-
helper.
|
332
|
+
allow(helper).to receive(:search_action_path) do |*args|
|
304
333
|
catalog_index_path *args
|
305
334
|
end
|
306
335
|
end
|
@@ -2,6 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe RenderConstraintsHelper do
|
4
4
|
|
5
|
+
let(:config) do
|
6
|
+
Blacklight::Configuration.new do |config|
|
7
|
+
config.add_facet_field 'type'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
before do
|
6
12
|
# the helper methods below infer paths from the current route
|
7
13
|
controller.request.path_parameters["controller"] = 'catalog'
|
@@ -18,15 +24,25 @@ describe RenderConstraintsHelper do
|
|
18
24
|
|
19
25
|
describe '#render_filter_element' do
|
20
26
|
before do
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
helper.stub(:blacklight_config => @config)
|
27
|
+
allow(helper).to receive(:blacklight_config).and_return(config)
|
28
|
+
expect(helper).to receive(:facet_field_label).with('type').and_return("Item Type")
|
25
29
|
end
|
30
|
+
subject { helper.render_filter_element('type', ['journal'], {:q=>'biz'}) }
|
31
|
+
|
26
32
|
it "should have a link relative to the current url" do
|
27
|
-
|
28
|
-
expect(
|
33
|
+
expect(subject).to have_link "Remove constraint Item Type: journal", href: "/catalog?q=biz"
|
34
|
+
expect(subject).to have_selector ".filterName", text: 'Item Type'
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
38
|
+
describe "#render_constraints_filters" do
|
39
|
+
before do
|
40
|
+
allow(helper).to receive(:blacklight_config).and_return(config)
|
41
|
+
end
|
42
|
+
subject { helper.render_constraints_filters(:f=>{'type'=>['']}) }
|
43
|
+
|
44
|
+
it "should render nothing for empty facet limit param" do
|
45
|
+
expect(subject).to be_blank
|
46
|
+
end
|
47
|
+
end
|
32
48
|
end
|
@@ -1,75 +1,67 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'Blacklight::Solr::FacetPaginator' do
|
4
|
-
before(:all) do
|
5
|
-
require 'yaml'
|
6
|
-
@seven_facet_values = YAML::load("--- \n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 792\n value: Book\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 65\n value: Musical Score\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 58\n value: Serial\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 48\n value: Musical Recording\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 37\n value: Microform\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 27\n value: Thesis\n- !ruby/object:Blacklight::SolrResponse::Facets::FacetItem \n hits: 0\n value: \n")
|
7
|
-
@six_facet_values = @seven_facet_values.slice(1,6)
|
8
|
-
@limit = 6
|
9
4
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
5
|
+
let(:f1) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '792', value: 'Book') }
|
6
|
+
let(:f2) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '65', value: 'Musical Score') }
|
7
|
+
let(:f3) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '58', value: 'Serial') }
|
8
|
+
let(:f4) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '48', value: 'Musical Recording') }
|
9
|
+
let(:f5) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '37', value: 'Microform') }
|
10
|
+
let(:f6) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '27', value: 'Thesis') }
|
11
|
+
let(:f7) { Blacklight::SolrResponse::Facets::FacetItem.new(hits: '0') }
|
12
|
+
let(:seven_facet_values) { [f1, f2, f3, f4, f5, f6, f7] }
|
13
|
+
let(:six_facet_values) { [f1, f2, f3, f4, f5, f6] }
|
14
|
+
let(:limit) { 6 }
|
20
15
|
|
16
|
+
context 'on the first page of two pages' do
|
17
|
+
subject { Blacklight::Solr::FacetPaginator.new(seven_facet_values, limit: limit) }
|
18
|
+
it { should be_first_page }
|
19
|
+
it { should_not be_last_page }
|
20
|
+
its(:current_page) { should eq 1 }
|
21
|
+
its(:prev_page) { should be_nil }
|
22
|
+
its(:next_page) { should eq 2 }
|
23
|
+
it 'should limit items to limit, if limit is smaller than items.length' do
|
24
|
+
expect(subject.items.size).to eq 6
|
25
|
+
end
|
21
26
|
end
|
22
|
-
it 'should not have next when there are fewer results' do
|
23
|
-
paginator = Blacklight::Solr::FacetPaginator.new(@six_facet_values, :offset => 0, :limit => @limit)
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
expect(@paginator).to have_previous
|
28
|
+
context 'on the last page of two pages' do
|
29
|
+
subject { Blacklight::Solr::FacetPaginator.new(seven_facet_values, offset: 6, limit: limit) }
|
30
|
+
it { should_not be_first_page }
|
31
|
+
it { should be_last_page }
|
32
|
+
its(:current_page) { should eq 2 }
|
33
|
+
its(:prev_page) { should eq 1 }
|
34
|
+
its(:next_page) { should be_nil }
|
35
|
+
it 'should return all items when limit is greater than items.length' do
|
36
|
+
expect(subject.items.size).to eq 1
|
35
37
|
end
|
36
|
-
|
37
38
|
end
|
38
|
-
it 'should not have previous when offset is 0' do
|
39
|
-
paginator = Blacklight::Solr::FacetPaginator.new(@seven_facet_values, :offset => 0, :limit => @limit)
|
40
39
|
|
41
|
-
|
40
|
+
context 'on the first page of one page' do
|
41
|
+
subject { Blacklight::Solr::FacetPaginator.new(six_facet_values, offset: 0, limit: limit) }
|
42
|
+
it { should be_first_page }
|
43
|
+
it { should be_last_page }
|
42
44
|
end
|
43
|
-
it 'should know a manually set sort, and produce proper sort url' do
|
44
|
-
paginator = Blacklight::Solr::FacetPaginator.new(@seven_facet_values, :offset => 100, :limit => @limit, :sort => 'index')
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
describe "params_for_resort_url" do
|
47
|
+
let(:sort_key) { Blacklight::Solr::FacetPaginator.request_keys[:sort] }
|
48
|
+
let(:page_key) { Blacklight::Solr::FacetPaginator.request_keys[:page] }
|
49
|
+
let(:paginator) { Blacklight::Solr::FacetPaginator.new(seven_facet_values, offset: 100, limit: limit, sort: 'index') }
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
it 'should return all items when limit is greater than items.length' do
|
58
|
-
paginator = Blacklight::Solr::FacetPaginator.new(@six_facet_values, :offset => 100, :limit => 6, :sort => 'index')
|
59
|
-
expect(paginator.items).to have(6).items
|
60
|
-
end
|
61
|
-
describe "for a nil :limit" do
|
62
|
-
before(:all) do
|
63
|
-
@paginator = Blacklight::Solr::FacetPaginator.new(@seven_facet_values, :offset => 100, :limit => nil, :sort => 'index')
|
64
|
-
end
|
65
|
-
it 'should return all items' do
|
66
|
-
expect(@paginator.items).to eq @seven_facet_values
|
67
|
-
end
|
68
|
-
it 'should not has_next?' do
|
69
|
-
expect(@paginator).not_to have_next
|
51
|
+
it 'should know a manually set sort, and produce proper sort url' do
|
52
|
+
expect(paginator.sort).to eq 'index'
|
53
|
+
|
54
|
+
click_params = paginator.params_for_resort_url('count', {})
|
55
|
+
|
56
|
+
expect(click_params[ sort_key ]).to eq 'count'
|
57
|
+
expect(click_params[ page_key ]).to be_nil
|
70
58
|
end
|
71
|
-
|
72
|
-
|
59
|
+
end
|
60
|
+
|
61
|
+
context "for a nil :limit" do
|
62
|
+
subject { Blacklight::Solr::FacetPaginator.new(seven_facet_values, offset: 0, limit: nil) }
|
63
|
+
it "should return all the items" do
|
64
|
+
expect(subject.items).to eq seven_facet_values
|
73
65
|
end
|
74
66
|
end
|
75
67
|
|
@@ -191,6 +191,14 @@ describe Blacklight::SolrHelper do
|
|
191
191
|
end
|
192
192
|
end
|
193
193
|
|
194
|
+
describe "for an empty facet limit param" do
|
195
|
+
it "should not add any fq to solr" do
|
196
|
+
solr_params = subject.solr_search_params(:f => {"format" => [""]})
|
197
|
+
|
198
|
+
expect(solr_params[:fq]).to be_blank
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
194
202
|
describe "with Multi Facets, No Query" do
|
195
203
|
it 'should have fq set properly' do
|
196
204
|
solr_params = subject.solr_search_params(:f => @multi_facets)
|
data/spec/spec_helper.rb
CHANGED
@@ -22,6 +22,7 @@ require 'engine_cart'
|
|
22
22
|
EngineCart.load_application!
|
23
23
|
|
24
24
|
require 'rspec/rails'
|
25
|
+
require 'rspec/its'
|
25
26
|
require 'capybara/rspec'
|
26
27
|
require 'capybara/poltergeist'
|
27
28
|
|
@@ -43,15 +44,6 @@ end
|
|
43
44
|
Dir[Pathname.new(File.expand_path("../support/**/*.rb", __FILE__))].each {|f| require f}
|
44
45
|
|
45
46
|
RSpec.configure do |config|
|
46
|
-
# == Mock Framework
|
47
|
-
#
|
48
|
-
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
49
|
-
#
|
50
|
-
# config.mock_with :mocha
|
51
|
-
# config.mock_with :flexmock
|
52
|
-
# config.mock_with :rr
|
53
|
-
config.mock_with :rspec
|
54
|
-
|
55
47
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
56
48
|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
57
49
|
|
@@ -61,4 +53,5 @@ RSpec.configure do |config|
|
|
61
53
|
config.use_transactional_fixtures = true
|
62
54
|
|
63
55
|
config.include Devise::TestHelpers, type: :controller
|
56
|
+
config.infer_spec_type_from_file_location!
|
64
57
|
end
|
@@ -7,8 +7,10 @@ describe "catalog/_constraints_element.html.erb" do
|
|
7
7
|
end
|
8
8
|
it "should render label and value" do
|
9
9
|
expect(rendered).to have_selector("span.appliedFilter.constraint") do |s|
|
10
|
+
expect(s).to have_css("span.constraint-value")
|
11
|
+
expect(s).to_not have_css("a.constraint-value")
|
10
12
|
expect(s).to have_selector "span.filterName", :content => "my label"
|
11
|
-
expect(s).to have_selector "span.filterValue", :content => "my value"
|
13
|
+
expect(s).to have_selector "span.filterValue", :content => "my value"
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -20,7 +22,7 @@ describe "catalog/_constraints_element.html.erb" do
|
|
20
22
|
it "should include remove link" do
|
21
23
|
expect(rendered).to have_selector("span.appliedFilter") do |s|
|
22
24
|
expect(s).to have_selector(".remove[href='http://remove']")
|
23
|
-
end
|
25
|
+
end
|
24
26
|
end
|
25
27
|
|
26
28
|
it "should have an accessible remove label" do
|
@@ -37,7 +39,7 @@ describe "catalog/_constraints_element.html.erb" do
|
|
37
39
|
it "should not include checkmark" do
|
38
40
|
expect(rendered).to have_selector("span.appliedFilter") do |s|
|
39
41
|
expect(s).to_not have_selector("img[src$='checkmark.gif']")
|
40
|
-
end
|
42
|
+
end
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
@@ -60,6 +62,6 @@ describe "catalog/_constraints_element.html.erb" do
|
|
60
62
|
end
|
61
63
|
|
62
64
|
end
|
63
|
-
|
65
|
+
|
64
66
|
|
65
67
|
end
|
data/template.demo.rb
CHANGED
@@ -3,13 +3,17 @@ gem "blacklight", ">= 5.3.0"
|
|
3
3
|
run "bundle install"
|
4
4
|
|
5
5
|
# run the blacklight install generator
|
6
|
-
|
6
|
+
options = ENV.fetch("BLACKLIGHT_INSTALL_OPTIONS", '--devise --marc --jettywrapper')
|
7
|
+
|
8
|
+
generate 'blacklight:install', options
|
7
9
|
|
8
10
|
# run the database migrations
|
9
11
|
rake "db:migrate"
|
10
12
|
|
11
13
|
# index some data
|
12
|
-
|
13
|
-
rake "jetty:
|
14
|
-
rake "
|
15
|
-
rake "
|
14
|
+
if options =~ /jettywrapper/
|
15
|
+
rake "jetty:clean"
|
16
|
+
rake "jetty:start"
|
17
|
+
rake "blacklight:solr:seed"
|
18
|
+
rake "jetty:stop"
|
19
|
+
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.
|
4
|
+
version: 5.5.0
|
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-
|
20
|
+
date: 2014-07-07 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -139,6 +139,20 @@ dependencies:
|
|
139
139
|
version: '5.0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: rspec-rails
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '2.99'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '2.99'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: rspec-its
|
142
156
|
requirement: !ruby/object:Gem::Requirement
|
143
157
|
requirements:
|
144
158
|
- - ">="
|
@@ -308,6 +322,7 @@ files:
|
|
308
322
|
- app/views/catalog/_results_pagination.html.erb
|
309
323
|
- app/views/catalog/_search_form.html.erb
|
310
324
|
- app/views/catalog/_search_header.html.erb
|
325
|
+
- app/views/catalog/_search_results.html.erb
|
311
326
|
- app/views/catalog/_search_sidebar.html.erb
|
312
327
|
- app/views/catalog/_show_default.html.erb
|
313
328
|
- app/views/catalog/_show_header_default.html.erb
|