blacklight 3.0.0pre6 → 3.0.0pre7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|