blacklight 3.0.0pre6 → 3.0.0pre7
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.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/feedback_controller.rb +1 -0
- data/app/controllers/folder_controller.rb +11 -10
- data/app/controllers/saved_searches_controller.rb +1 -0
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/bookmarks_helper.rb +2 -1
- data/app/helpers/catalog_helper.rb +23 -10
- data/app/helpers/feedback_helper.rb +1 -0
- data/app/helpers/hash_as_hidden_fields.rb +1 -0
- data/app/helpers/render_constraints_helper.rb +1 -0
- data/app/helpers/saved_searches_helper.rb +1 -0
- data/app/helpers/search_history_helper.rb +2 -1
- data/app/models/bookmark.rb +2 -1
- data/app/models/record_mailer.rb +1 -0
- data/app/models/search.rb +2 -1
- data/app/views/catalog/_opensearch_response_metadata.html.erb +3 -2
- data/app/views/catalog/_results_pagination.html.erb +3 -3
- data/app/views/kaminari/blacklight/_page.html.erb +1 -1
- data/blacklight.gemspec +2 -20
- data/config/routes.rb +1 -0
- data/db/seeds.rb +1 -0
- data/install.rb +1 -0
- data/lib/blacklight.rb +1 -0
- data/lib/blacklight/catalog.rb +1 -0
- data/lib/blacklight/comma_link_renderer.rb +1 -0
- data/lib/blacklight/configurable.rb +1 -0
- data/lib/blacklight/controller.rb +1 -0
- data/lib/blacklight/engine.rb +1 -0
- data/lib/blacklight/exceptions.rb +1 -0
- data/lib/blacklight/routes.rb +1 -0
- data/lib/blacklight/search_fields.rb +1 -0
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/solr/document.rb +1 -0
- data/lib/blacklight/solr/document/dublin_core.rb +1 -0
- data/lib/blacklight/solr/document/email.rb +1 -0
- data/lib/blacklight/solr/document/marc.rb +1 -0
- data/lib/blacklight/solr/document/marc_export.rb +1 -0
- data/lib/blacklight/solr/document/sms.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +2 -1
- data/lib/blacklight/solr_helper.rb +32 -11
- data/lib/blacklight/user.rb +1 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/colorize.rb +1 -0
- data/lib/generators/blacklight/assets_generator.rb +1 -0
- data/lib/generators/blacklight/blacklight_generator.rb +10 -0
- data/lib/generators/blacklight/jetty_generator.rb +3 -0
- data/lib/generators/blacklight/solr_conf_generator.rb +1 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +1 -0
- data/lib/generators/blacklight/templates/config/blacklight_config.rb +1 -0
- data/lib/generators/blacklight/templates/migrations/add_user_types_to_bookmarks_searches.rb +7 -0
- data/lib/generators/blacklight/templates/migrations/create_bookmarks.rb +2 -1
- data/lib/generators/blacklight/templates/migrations/create_searches.rb +1 -0
- data/lib/generators/blacklight/templates/migrations/remove_editable_fields_from_bookmarks.rb +1 -0
- data/lib/generators/blacklight/templates/public/javascripts/blacklight/blacklight.js +1 -0
- data/lib/generators/blacklight/templates/public/stylesheets/blacklight/blacklight.css +1 -1
- data/lib/generators/blacklight/templates/solr_document.rb +1 -0
- data/lib/railties/blacklight_cucumber.rake +3 -2
- data/lib/railties/jetty_solr_server.rb +1 -0
- data/test_support/bin/test.sh +121 -0
- data/test_support/features/search_results.feature +1 -1
- data/test_support/features/step_definitions/bookmarks_steps.rb +1 -0
- data/test_support/features/step_definitions/error_steps.rb +1 -0
- data/test_support/features/step_definitions/folder_steps.rb +1 -0
- data/test_support/features/step_definitions/general_steps.rb +1 -0
- data/test_support/features/step_definitions/record_view_steps.rb +1 -0
- data/test_support/features/step_definitions/saved_searches_steps.rb +1 -0
- data/test_support/features/step_definitions/search_facets_steps.rb +1 -0
- data/test_support/features/step_definitions/search_history_steps.rb +1 -0
- data/test_support/features/step_definitions/search_result_steps.rb +1 -0
- data/test_support/features/step_definitions/search_steps.rb +1 -0
- data/test_support/features/step_definitions/user_steps.rb +2 -1
- data/test_support/features/step_definitions/web_steps.rb +1 -0
- data/test_support/features/support/env.rb +5 -0
- data/test_support/features/support/paths.rb +1 -0
- data/test_support/features/support/selectors.rb +1 -0
- data/test_support/spec/controllers/application_controller_spec.rb +1 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +1 -0
- data/test_support/spec/controllers/folder_controller_spec.rb +1 -0
- data/test_support/spec/controllers/search_history_controller_spec.rb +1 -0
- data/test_support/spec/data/sample_docs.yml +1 -1
- data/test_support/spec/helpers/blacklight_helper_spec.rb +1 -0
- data/test_support/spec/helpers/catalog_helper_spec.rb +1 -0
- data/test_support/spec/helpers/hash_as_hidden_fields_spec.rb +1 -0
- data/test_support/spec/helpers/render_constraints_helper_spec.rb +1 -0
- data/test_support/spec/helpers/search_history_helper_spec.rb +1 -0
- data/test_support/spec/helpers/solr_helper_spec.rb +33 -5
- data/test_support/spec/lib/blacklight_email_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_sms_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_solr_document_dublin_core_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_solr_document_marc_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_solr_document_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_spec.rb +1 -0
- data/test_support/spec/lib/blacklight_user_spec.rb +1 -0
- data/test_support/spec/lib/configurable_spec.rb +1 -0
- data/test_support/spec/lib/facet_paginator_spec.rb +1 -0
- data/test_support/spec/lib/marc_export_spec.rb +1 -0
- data/test_support/spec/lib/search_fields_spec.rb +1 -0
- data/test_support/spec/lib/tasks/blacklight_task_spec.rb +1 -0
- data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +1 -0
- data/test_support/spec/models/bookmark_spec.rb +1 -0
- data/test_support/spec/models/record_mailer_spec.rb +1 -1
- data/test_support/spec/models/search_spec.rb +1 -0
- data/test_support/spec/models/solr_docment_spec.rb +1 -1
- data/test_support/spec/spec_helper.rb +1 -0
- data/test_support/spec/support/action_controller.rb +1 -0
- data/test_support/spec/support/assert_difference.rb +1 -0
- data/test_support/spec/support/include_text.rb +1 -0
- data/test_support/spec/views/catalog/_constraints_element.html.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/_document_list.html.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/_index_partials/_default.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/_show_partials/_default.html.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/index.atom.builder_spec.rb +3 -5
- data/test_support/spec/views/catalog/show.html.erb_spec.rb +1 -0
- data/test_support/spec/views/catalog/unapi.xml.builder_spec.rb +1 -0
- data/uninstall.rb +1 -0
- metadata +29 -44
- data/features/default_setup.feature +0 -52
- data/features/generators.feature +0 -58
- data/features/support/aruba.rb +0 -9
data/Rakefile
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.0.
|
|
1
|
+
3.0.0pre7
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
1
2
|
class FolderController < ApplicationController
|
|
2
3
|
include Blacklight::SolrHelper
|
|
3
4
|
helper CatalogHelper
|
|
@@ -23,17 +24,17 @@ class FolderController < ApplicationController
|
|
|
23
24
|
# remove a document_id from the folder. :id of action is solr_doc_id
|
|
24
25
|
def destroy
|
|
25
26
|
session[:folder_document_ids].delete(params[:id])
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
redirect_to :back
|
|
32
|
-
end
|
|
27
|
+
|
|
28
|
+
respond_to do |format|
|
|
29
|
+
format.html do
|
|
30
|
+
flash[:notice] = "#{params[:title] || "Item"} successfully removed from selected items"
|
|
31
|
+
redirect_to :back
|
|
33
32
|
end
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
format.js do
|
|
34
|
+
render :json => {"OK" => "OK"}
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
# get rid of the items in the folder
|
|
@@ -1,22 +1,34 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
1
2
|
module CatalogHelper
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# Pass in an RSolr::Response (or duck-typed similar) object,
|
|
5
|
+
# it translates to a Kaminari-paginatable
|
|
6
|
+
# object, with the keys Kaminari views expect.
|
|
7
|
+
def paginate_params(response)
|
|
4
8
|
per_page = response.rows
|
|
5
9
|
per_page = 1 if per_page < 1
|
|
6
10
|
current_page = (response.start / per_page).ceil + 1
|
|
7
11
|
num_pages = (response.total / per_page.to_f).ceil
|
|
12
|
+
Struct.new(:current_page, :num_pages, :limit_value).new(current_page, num_pages, per_page)
|
|
13
|
+
end
|
|
8
14
|
|
|
9
|
-
|
|
15
|
+
# Equivalent to kaminari "paginate", but takes an RSolr::Response as first argument.
|
|
16
|
+
# Will convert it to something kaminari can deal with (using #paginate_params), and
|
|
17
|
+
# then call kaminari paginate with that. Other arguments (options and block) same as
|
|
18
|
+
# kaminari paginate, passed on through.
|
|
19
|
+
# will output HTML pagination controls.
|
|
20
|
+
def paginate_rsolr_response(response, options = {}, &block)
|
|
21
|
+
paginate paginate_params(response), options, &block
|
|
10
22
|
end
|
|
11
23
|
|
|
12
24
|
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
# shortcut for built-in Rails helper, "number_with_delimiter"
|
|
26
|
+
#
|
|
27
|
+
def format_num(num); number_with_delimiter(num) end
|
|
16
28
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
#
|
|
30
|
+
# Pass in an RSolr::Response. Displays the "showing X through Y of N" message.
|
|
31
|
+
def render_pagination_info(response, options = {})
|
|
20
32
|
start = response.start + 1
|
|
21
33
|
per_page = response.rows
|
|
22
34
|
current_page = (response.start / per_page).ceil + 1
|
|
@@ -41,8 +53,9 @@ module CatalogHelper
|
|
|
41
53
|
end
|
|
42
54
|
end
|
|
43
55
|
|
|
44
|
-
# Like
|
|
45
|
-
# item show page. Displays "showing X of Y items" message.
|
|
56
|
+
# Like #render_pagination_info above, but for an individual
|
|
57
|
+
# item show page. Displays "showing X of Y items" message. Actually takes
|
|
58
|
+
# data from session though (not a great design).
|
|
46
59
|
# Code should call this method rather than interrogating session directly,
|
|
47
60
|
# because implementation of where this data is stored/retrieved may change.
|
|
48
61
|
def item_page_entry_info
|
data/app/models/bookmark.rb
CHANGED
data/app/models/record_mailer.rb
CHANGED
data/app/models/search.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<% page_info = paginate_params(@response) %>
|
|
1
2
|
<%= tag :meta, :name => "totalResults", :content => @response.total %>
|
|
2
|
-
<%= tag :meta, :name => "startIndex", :content => (
|
|
3
|
-
<%= tag :meta, :name => "itemsPerPage", :content =>
|
|
3
|
+
<%= tag :meta, :name => "startIndex", :content => (page_info.current_page == 1 ? 1 : @response.start ) %>
|
|
4
|
+
<%= tag :meta, :name => "itemsPerPage", :content => page_info.limit_value %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
<% if paginate_params(@response).num_pages > 1 %>
|
|
2
2
|
<div class="pagination">
|
|
3
3
|
<h2>Results navigation</h2>
|
|
4
|
-
<%= paginate_rsolr_response @response, :theme => 'blacklight' %>
|
|
4
|
+
<%= paginate_rsolr_response @response, :outer_window => 2, :theme => 'blacklight' %>
|
|
5
5
|
</div>
|
|
6
|
-
|
|
6
|
+
<% end %>
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
remote: data-remote
|
|
9
9
|
-%>
|
|
10
10
|
<span class="page<%= ' current' if page.current? %>">
|
|
11
|
-
<%= link_to_unless page.current?, page, url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} %>
|
|
11
|
+
<%= link_to_unless page.current?, number_with_delimiter(page.to_s), url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} %>
|
|
12
12
|
</span>
|
data/blacklight.gemspec
CHANGED
|
@@ -19,31 +19,13 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
s.require_paths = ["lib"]
|
|
20
20
|
|
|
21
21
|
# PRODUCTION GEM REQUIREMENTS
|
|
22
|
-
# ---------------------------------------
|
|
23
|
-
# JRuby Specific Gems - and their counterparts
|
|
24
|
-
if defined?(JRUBY_VERSION)
|
|
25
|
-
# Jruby specific gems should go here.
|
|
26
|
-
else
|
|
27
|
-
s.add_dependency "unicode" # provides C-form normalization of unicode characters, as required by refworks.
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Required Gems
|
|
22
|
+
# ---------------------------------------
|
|
31
23
|
s.add_dependency "rails", "~> 3.0"
|
|
32
24
|
s.add_dependency "nokogiri", "~>1.5.0.beta.3" # XML Parser
|
|
25
|
+
s.add_dependency "unicode" # provides C-form normalization of unicode characters, as required by refworks.
|
|
33
26
|
s.add_dependency "marc", "~> 0.4.3" # Marc record parser
|
|
34
27
|
s.add_dependency "rsolr", '~> 1.0' # Library for interacting with rSolr.
|
|
35
28
|
s.add_dependency "rsolr-ext", '~> 1.0' # extension to the above for some rails-ish behaviors - currently embedded in our solr document ojbect.
|
|
36
29
|
s.add_dependency "kaminari" # the pagination (page 1,2,3, etc..) of our search results
|
|
37
30
|
|
|
38
|
-
# TESTING GEM REQUIREMENTS
|
|
39
|
-
# -------------------------------------------
|
|
40
|
-
# For testing the generators
|
|
41
|
-
# s.add_dependency "cucumber-rails"
|
|
42
|
-
# s.add_dependency "capybara"
|
|
43
|
-
# s.add_dependency "aruba"
|
|
44
|
-
|
|
45
|
-
# s.add_dependency "rspec-rails", "~>2.3.0"
|
|
46
|
-
# s.add_dependency "webrat"
|
|
47
|
-
# s.add_dependency "database_cleaner"
|
|
48
|
-
|
|
49
31
|
end
|
data/config/routes.rb
CHANGED
data/db/seeds.rb
CHANGED
data/install.rb
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
data/lib/blacklight.rb
CHANGED
data/lib/blacklight/catalog.rb
CHANGED
data/lib/blacklight/engine.rb
CHANGED
data/lib/blacklight/routes.rb
CHANGED
data/lib/blacklight/solr.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
1
2
|
# SolrHelper is a controller layer mixin. It is in the controller scope: request params, session etc.
|
|
2
3
|
#
|
|
3
4
|
# NOTE: Be careful when creating variables here as they may be overriding something that already exists.
|
|
@@ -69,6 +70,23 @@ module Blacklight::SolrHelper
|
|
|
69
70
|
# CatalogController.solr_search_params_logic.delete(:we_dont_want)
|
|
70
71
|
self.solr_search_params_logic = [:default_solr_parameters , :add_query_to_solr, :add_facet_fq_to_solr, :add_facetting_to_solr, :add_sorting_paging_to_solr ]
|
|
71
72
|
end
|
|
73
|
+
|
|
74
|
+
def force_to_utf8(value)
|
|
75
|
+
case value
|
|
76
|
+
when Hash
|
|
77
|
+
value.each { |k, v| value[k] = force_to_utf8(v) }
|
|
78
|
+
when Array
|
|
79
|
+
value.each { |v| force_to_utf8(v) }
|
|
80
|
+
when String
|
|
81
|
+
value.force_encoding("utf-8") if value.respond_to?(:force_encoding)
|
|
82
|
+
end
|
|
83
|
+
value
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def find(params)
|
|
87
|
+
response = force_to_utf8(Blacklight.solr.find(params))
|
|
88
|
+
end
|
|
89
|
+
|
|
72
90
|
|
|
73
91
|
# A helper method used for generating solr LocalParams, put quotes
|
|
74
92
|
# around the term unless it's a bare-word. Escape internal quotes
|
|
@@ -128,9 +146,14 @@ module Blacklight::SolrHelper
|
|
|
128
146
|
# Omit empty strings and nil values.
|
|
129
147
|
# Apparently RSolr takes :per_page and converts it to Solr :rows,
|
|
130
148
|
# so we let it.
|
|
131
|
-
[:page, :
|
|
149
|
+
[:page, :per_page, :sort].each do |key|
|
|
132
150
|
solr_parameters[key] = user_params[key] unless user_params[key].blank?
|
|
133
151
|
end
|
|
152
|
+
|
|
153
|
+
if solr_parameters[:sort].blank?
|
|
154
|
+
default_sort_field = Blacklight.config[:sort_fields].first || [nil, nil]
|
|
155
|
+
solr_parameters[:sort] = default_sort_field.last unless default_sort_field.last.blank?
|
|
156
|
+
end
|
|
134
157
|
|
|
135
158
|
# limit to MaxPerPage (100). Tests want this to be a string not an integer,
|
|
136
159
|
# not sure why.
|
|
@@ -246,11 +269,9 @@ module Blacklight::SolrHelper
|
|
|
246
269
|
# better for us.
|
|
247
270
|
bench_start = Time.now
|
|
248
271
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
Rails.logger.debug("Solr fetch: #{self.class}#get_search_results (#{'%.1f' % ((Time.now.to_f - bench_start.to_f)*1000)}ms)")
|
|
272
|
+
solr_response = find(self.solr_search_params(user_params).merge(extra_controller_params))
|
|
273
|
+
document_list = solr_response.docs.collect {|doc| SolrDocument.new(doc, solr_response)}
|
|
274
|
+
Rails.logger.debug("Solr fetch: #{self.class}#get_search_results (#{'%.1f' % ((Time.now.to_f - bench_start.to_f)*1000)}ms)")
|
|
254
275
|
|
|
255
276
|
return [solr_response, document_list]
|
|
256
277
|
end
|
|
@@ -270,7 +291,7 @@ module Blacklight::SolrHelper
|
|
|
270
291
|
# a solr query method
|
|
271
292
|
# retrieve a solr document, given the doc id
|
|
272
293
|
def get_solr_response_for_doc_id(id=nil, extra_controller_params={})
|
|
273
|
-
solr_response =
|
|
294
|
+
solr_response = find solr_doc_params(id).merge(extra_controller_params)
|
|
274
295
|
raise Blacklight::Exceptions::InvalidSolrID.new if solr_response.docs.empty?
|
|
275
296
|
document = SolrDocument.new(solr_response.docs.first, solr_response)
|
|
276
297
|
[solr_response, document]
|
|
@@ -294,7 +315,7 @@ module Blacklight::SolrHelper
|
|
|
294
315
|
:spellcheck => 'false'
|
|
295
316
|
}.merge(extra_solr_params)
|
|
296
317
|
|
|
297
|
-
solr_response =
|
|
318
|
+
solr_response = find( self.solr_search_params().merge(solr_params) )
|
|
298
319
|
document_list = solr_response.docs.collect{|doc| SolrDocument.new(doc, solr_response) }
|
|
299
320
|
[solr_response,document_list]
|
|
300
321
|
end
|
|
@@ -340,7 +361,7 @@ module Blacklight::SolrHelper
|
|
|
340
361
|
solr_params = solr_facet_params(facet_field, params, extra_controller_params)
|
|
341
362
|
|
|
342
363
|
# Make the solr call
|
|
343
|
-
response =
|
|
364
|
+
response =find(solr_params)
|
|
344
365
|
|
|
345
366
|
limit =
|
|
346
367
|
if respond_to?(:facet_list_limit)
|
|
@@ -376,7 +397,7 @@ module Blacklight::SolrHelper
|
|
|
376
397
|
solr_params[:per_page] = 1
|
|
377
398
|
solr_params[:rows] = 1
|
|
378
399
|
solr_params[:fl] = '*'
|
|
379
|
-
|
|
400
|
+
solr_response = find(solr_params).docs.first
|
|
380
401
|
end
|
|
381
402
|
|
|
382
403
|
# returns a solr params hash
|
|
@@ -398,7 +419,7 @@ module Blacklight::SolrHelper
|
|
|
398
419
|
# where the field is the "field" argument passed in.
|
|
399
420
|
def get_opensearch_response(field=nil, extra_controller_params={})
|
|
400
421
|
solr_params = solr_opensearch_params().merge(extra_controller_params)
|
|
401
|
-
response =
|
|
422
|
+
response = find(solr_params)
|
|
402
423
|
a = [solr_params[:q]]
|
|
403
424
|
a << response.docs.map {|doc| doc[solr_params[:fl]].to_s }
|
|
404
425
|
end
|