blacklight 5.7.2 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -3
  3. data/Gemfile +1 -4
  4. data/VERSION +1 -1
  5. data/app/assets/stylesheets/blacklight/_catalog.css.scss +38 -1
  6. data/app/assets/stylesheets/blacklight/_facets.css.scss +10 -0
  7. data/app/assets/stylesheets/blacklight/_layout.css.scss +6 -0
  8. data/app/controllers/bookmarks_controller.rb +3 -163
  9. data/app/helpers/blacklight/blacklight_helper_behavior.rb +18 -186
  10. data/app/helpers/blacklight/catalog_helper_behavior.rb +36 -2
  11. data/app/helpers/blacklight/component_helper_behavior.rb +77 -0
  12. data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -21
  13. data/app/helpers/blacklight/render_partials_helper.rb +185 -0
  14. data/app/helpers/blacklight/url_helper_behavior.rb +24 -3
  15. data/app/helpers/component_helper.rb +3 -0
  16. data/app/views/_user_util_links.html.erb +2 -15
  17. data/app/views/blacklight/nav/_bookmark.html.erb +4 -0
  18. data/app/views/blacklight/nav/_saved_searches.html.erb +1 -0
  19. data/app/views/blacklight/nav/_search_history.html.erb +1 -0
  20. data/app/views/bookmarks/_tools.html.erb +6 -9
  21. data/app/views/bookmarks/index.html.erb +1 -1
  22. data/app/views/catalog/_bookmark_control.html.erb +8 -8
  23. data/app/views/catalog/_constraints_element.html.erb +1 -1
  24. data/app/views/catalog/_document_action.html.erb +4 -0
  25. data/app/views/catalog/_email_form.html.erb +1 -1
  26. data/app/views/catalog/_facet_limit.html.erb +1 -1
  27. data/app/views/catalog/_index_header_default.html.erb +5 -6
  28. data/app/views/catalog/_per_page_widget.html.erb +3 -1
  29. data/app/views/catalog/_results_pagination.html.erb +1 -1
  30. data/app/views/catalog/_search_form.html.erb +5 -8
  31. data/app/views/catalog/_show_more_like_this.html.erb +2 -2
  32. data/app/views/catalog/_show_tools.html.erb +5 -34
  33. data/app/views/catalog/_sms_form.html.erb +1 -1
  34. data/app/views/catalog/_sort_and_per_page.html.erb +2 -6
  35. data/app/views/catalog/_sort_widget.html.erb +1 -1
  36. data/app/views/catalog/_zero_results.html.erb +2 -2
  37. data/app/views/catalog/citation.js.erb +1 -1
  38. data/app/views/catalog/email_sent.html.erb +2 -9
  39. data/app/views/catalog/email_success.html.erb +9 -0
  40. data/app/views/catalog/sms_sent.html.erb +2 -9
  41. data/app/views/catalog/sms_success.html.erb +9 -0
  42. data/app/views/kaminari/blacklight/_gap.html.erb +1 -1
  43. data/app/views/kaminari/blacklight/_page.html.erb +5 -1
  44. data/app/views/shared/_header_navbar.html.erb +1 -1
  45. data/config/locales/blacklight.en.yml +1 -1
  46. data/config/locales/blacklight.es.yml +1 -1
  47. data/config/locales/blacklight.fr.yml +1 -1
  48. data/config/locales/blacklight.pt-BR.yml +1 -1
  49. data/lib/blacklight.rb +3 -0
  50. data/lib/blacklight/base.rb +0 -1
  51. data/lib/blacklight/bookmarks.rb +135 -0
  52. data/lib/blacklight/catalog.rb +58 -77
  53. data/lib/blacklight/catalog/component_configuration.rb +99 -0
  54. data/lib/blacklight/configuration.rb +82 -4
  55. data/lib/blacklight/configuration/tool_config.rb +4 -0
  56. data/lib/blacklight/controller.rb +5 -1
  57. data/lib/blacklight/document_presenter.rb +17 -8
  58. data/lib/blacklight/request_builders.rb +136 -4
  59. data/lib/blacklight/routes.rb +5 -0
  60. data/lib/blacklight/solr_helper.rb +90 -208
  61. data/lib/blacklight/solr_repository.rb +69 -0
  62. data/lib/blacklight/token_based_user.rb +58 -0
  63. data/lib/blacklight/utils.rb +13 -1
  64. data/lib/generators/blacklight/install_generator.rb +6 -7
  65. data/spec/controllers/alternate_controller_spec.rb +19 -0
  66. data/spec/controllers/catalog_controller_spec.rb +89 -4
  67. data/spec/features/alternate_controller_spec.rb +0 -1
  68. data/spec/features/bookmarks_spec.rb +31 -6
  69. data/spec/features/search_results_spec.rb +11 -0
  70. data/spec/features/search_spec.rb +5 -0
  71. data/spec/helpers/blacklight_helper_spec.rb +49 -8
  72. data/spec/helpers/catalog_helper_spec.rb +56 -8
  73. data/spec/helpers/configuration_helper_spec.rb +5 -5
  74. data/spec/helpers/url_helper_spec.rb +15 -8
  75. data/spec/lib/blacklight/catalog/component_configuration_spec.rb +29 -0
  76. data/spec/lib/blacklight/configuration_spec.rb +15 -0
  77. data/spec/lib/blacklight/solr_helper_spec.rb +44 -104
  78. data/spec/lib/blacklight/solr_repository_spec.rb +113 -0
  79. data/spec/lib/utils_spec.rb +27 -0
  80. data/spec/views/_user_util_links.html.erb_spec.rb +6 -3
  81. data/spec/views/catalog/_show_sidebar.erb_spec.rb +8 -2
  82. data/spec/views/catalog/_show_tools.html.erb_spec.rb +82 -0
  83. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +15 -1
  84. data/tasks/blacklight.rake +25 -1
  85. metadata +24 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31aa3ab54992e5866424bca93671473ae6c92b3a
4
- data.tar.gz: 36ddb1ad5da8378c261c921154bc5858908a6cba
3
+ metadata.gz: 2e6abf19233b0973dff8cfaff353836ee5af69e6
4
+ data.tar.gz: ae4e3d469b37f1ae8f469470fb6e87e2976cb788
5
5
  SHA512:
6
- metadata.gz: fd067ca4fb5e30e3d89dd97b74a7770040c0c729c79a5e42ef9235554a44f8182784a53532335e1e2a71900c02374d178701d3af49a1f8fd280e8e25ce4e285c
7
- data.tar.gz: b65151e3ebc7493ca386cd174326db50dc7b023960b4b7b48b038c853cc141b25ec0db9a119a8c3a5b70862f6900877d9d0ab945bf13d7a1f2640614a425d070
6
+ metadata.gz: 7244ed7c511e061c63bf949889671cbcfcfac42bafc87d98b95093dcd2d1596629be83fbec0fffe02715ebb23fbd9ac626fcd35d3fd59b06e1b488eb412cc206
7
+ data.tar.gz: a3f3d9b2ccb72941967790c380735dabceff82c4bf5eb22a885771ceeda226d60cc7ac86a81e90136decdcce537ffbdd48adc43b095b7cd956c13a559f3ebc2f
data/.travis.yml CHANGED
@@ -15,9 +15,7 @@ matrix:
15
15
  - rvm: jruby
16
16
  env: "RAILS_VERSION=4.1.7 JRUBY_OPTS=\"-J-Xms512m -J-Xmx1024m\""
17
17
  - rvm: 2.1.4
18
- env: "RAILS_VERSION=4.2.0.beta4"
19
- allow_failures:
20
- - env: "RAILS_VERSION=4.2.0.beta4"
18
+ env: "RAILS_VERSION=4.2.0.rc1"
21
19
 
22
20
  before_install:
23
21
  - gem install bundler
data/Gemfile CHANGED
@@ -22,11 +22,8 @@ if File.exists?(file)
22
22
  else
23
23
  gem 'rails', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
24
24
 
25
- # explicitly include sass-rails to get compatible sprocket dependencies
26
25
  if ENV['RAILS_VERSION'] and ENV['RAILS_VERSION'] =~ /^4.2/
27
- gem 'sass-rails', ">= 5.0.0.beta1"
28
26
  gem 'responders', "~> 2.0"
29
- else
30
- gem 'sass-rails'
31
27
  end
28
+ gem 'sass-rails'
32
29
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.7.2
1
+ 5.8.0
@@ -52,7 +52,25 @@ span.constraints-label {
52
52
  {
53
53
  .constraint-value {
54
54
  cursor: default;
55
-
55
+ text-overflow: ellipsis;
56
+ overflow: hidden;
57
+
58
+ @media (max-width: $screen-xs-max) {
59
+ max-width: $screen-xs-min / 2;
60
+ }
61
+
62
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
63
+ max-width: $screen-sm-min / 2;
64
+ }
65
+
66
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
67
+ max-width: $screen-md-min / 2;
68
+ }
69
+
70
+ @media (min-width: $screen-lg-min) {
71
+ max-width: $screen-lg-min / 2;
72
+ }
73
+
56
74
  &:hover, &:active {
57
75
  background-color: $btn-default-bg;
58
76
  border-color: $btn-default-border;
@@ -190,3 +208,22 @@ label.toggle_bookmark
190
208
  @extend .sr-only;
191
209
  }
192
210
  }
211
+
212
+ #sort-dropdown .dropdown-toggle, #per_page-dropdown .dropdown-toggle {
213
+ color: $link-color;
214
+
215
+ .caret {
216
+ color: $text-color;
217
+ }
218
+ }
219
+
220
+
221
+ .search-input-group {
222
+ width: 80%;
223
+ }
224
+
225
+ @media (max-width: $screen-sm-min) {
226
+ .search-input-group {
227
+ width: auto;
228
+ }
229
+ }
@@ -49,6 +49,16 @@
49
49
  .remove {
50
50
  @extend .text-muted;
51
51
  text-indent: $padding-base-horizontal;
52
+
53
+ .glyphicon {
54
+ top: 0.1em;
55
+ vertical-align: text-top;
56
+ }
57
+
58
+ &:hover {
59
+ color: $brand-danger;
60
+ }
61
+
52
62
  }
53
63
  }
54
64
 
@@ -2,4 +2,10 @@
2
2
 
3
3
  .navbar + .navbar {
4
4
  margin-top: -$navbar-margin-bottom;
5
+ }
6
+
7
+ .navbar-inverse .navbar-toggle {
8
+ &:focus, &:hover {
9
+ border-color: $gray-light;
10
+ }
5
11
  }
@@ -1,166 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
- # note that while this is mostly restful routing, the #update and #destroy actions
3
- # take the Solr document ID as the :id, NOT the id of the actual Bookmark action.
4
- class BookmarksController < CatalogController
2
+ class BookmarksController < CatalogController
5
3
 
6
- ##
7
- # Give Bookmarks access to the CatalogController configuration
8
- include Blacklight::Configurable
9
- include Blacklight::SolrHelper
4
+ include Blacklight::Bookmarks
10
5
 
11
- copy_blacklight_config_from(CatalogController)
12
-
13
- rescue_from Blacklight::Exceptions::ExpiredSessionToken do
14
- head :unauthorized
15
- end
16
-
17
- # Blacklight uses #search_action_url to figure out the right URL for
18
- # the global search box
19
- def search_action_url *args
20
- catalog_index_url *args
21
- end
22
-
23
- before_filter :verify_user
24
-
25
- def index
26
- @bookmarks = token_or_current_or_guest_user.bookmarks
27
- bookmark_ids = @bookmarks.collect { |b| b.document_id.to_s }
28
-
29
- @response, @document_list = get_solr_response_for_document_ids(bookmark_ids)
30
-
31
- respond_to do |format|
32
- format.html { }
33
- format.rss { render :layout => false }
34
- format.atom { render :layout => false }
35
- format.json do
36
- render json: render_search_results_as_json
37
- end
38
-
39
- additional_response_formats(format)
40
- document_export_formats(format)
41
- end
42
- end
43
-
44
-
45
- def update
46
- create
47
- end
48
-
49
- # For adding a single bookmark, suggest use PUT/#update to
50
- # /bookmarks/$docuemnt_id instead.
51
- # But this method, accessed via POST to /bookmarks, can be used for
52
- # creating multiple bookmarks at once, by posting with keys
53
- # such as bookmarks[n][document_id], bookmarks[n][title].
54
- # It can also be used for creating a single bookmark by including keys
55
- # bookmark[title] and bookmark[document_id], but in that case #update
56
- # is simpler.
57
- def create
58
- if params[:bookmarks]
59
- @bookmarks = params[:bookmarks]
60
- else
61
- @bookmarks = [{ document_id: params[:id], document_type: blacklight_config.solr_document_model.to_s }]
62
- end
63
-
64
- current_or_guest_user.save! unless current_or_guest_user.persisted?
65
-
66
- success = @bookmarks.all? do |bookmark|
67
- current_or_guest_user.bookmarks.where(bookmark).exists? || current_or_guest_user.bookmarks.create(bookmark)
68
- end
69
-
70
- if request.xhr?
71
- success ? render(json: { bookmarks: { count: current_or_guest_user.bookmarks.count }}) : render(:text => "", :status => "500")
72
- else
73
- if @bookmarks.length > 0 && success
74
- flash[:notice] = I18n.t('blacklight.bookmarks.add.success', :count => @bookmarks.length)
75
- elsif @bookmarks.length > 0
76
- flash[:error] = I18n.t('blacklight.bookmarks.add.failure', :count => @bookmarks.length)
77
- end
78
-
79
- redirect_to :back
80
- end
81
- end
82
-
83
- # Beware, :id is the Solr document_id, not the actual Bookmark id.
84
- # idempotent, as DELETE is supposed to be.
85
- def destroy
86
- bookmark = current_or_guest_user.bookmarks.where(document_id: params[:id], document_type: blacklight_config.solr_document_model).first
87
-
88
- success = bookmark && bookmark.delete && bookmark.destroyed?
89
-
90
- unless request.xhr?
91
- if success
92
- flash[:notice] = I18n.t('blacklight.bookmarks.remove.success')
93
- else
94
- flash[:error] = I18n.t('blacklight.bookmarks.remove.failure')
95
- end
96
- redirect_to :back
97
- else
98
- # ajaxy request needs no redirect and should not have flash set
99
- success ? render(json: { bookmarks: { count: current_or_guest_user.bookmarks.count }}) : render(:text => "", :status => "500")
100
- end
101
- end
102
-
103
- def clear
104
- if current_or_guest_user.bookmarks.clear
105
- flash[:notice] = I18n.t('blacklight.bookmarks.clear.success')
106
- else
107
- flash[:error] = I18n.t('blacklight.bookmarks.clear.failure')
108
- end
109
- redirect_to :action => "index"
110
- end
111
-
112
- protected
113
- def verify_user
114
- unless current_or_guest_user or (action == "index" and token_or_current_or_guest_user)
115
- flash[:notice] = I18n.t('blacklight.bookmarks.need_login') and raise Blacklight::Exceptions::AccessDenied
116
- end
117
- end
118
-
119
- def start_new_search_session?
120
- action_name == "index"
121
- end
122
-
123
- # Used for #export action, with encrypted user_id.
124
- def decrypt_user_id(encrypted_user_id)
125
- user_id, timestamp = message_encryptor.decrypt_and_verify(encrypted_user_id)
126
-
127
- if timestamp < 1.hour.ago
128
- raise Blacklight::Exceptions::ExpiredSessionToken.new
129
- end
130
-
131
- user_id
132
- end
133
-
134
- # Used for #export action with encrypted user_id, available
135
- # as a helper method for views.
136
- def encrypt_user_id(user_id)
137
- message_encryptor.encrypt_and_sign([user_id, Time.now])
138
- end
139
- helper_method :encrypt_user_id
140
-
141
- ##
142
- # This method provides Rails 3 compatibility to our message encryptor.
143
- # When we drop support for Rails 3, we can just use the AS::KeyGenerator
144
- # directly instead of this helper.
145
- def bookmarks_export_secret_token salt
146
- OpenSSL::PKCS5.pbkdf2_hmac_sha1(Blacklight.secret_key, salt, 1000, 64)
147
- end
148
-
149
- def message_encryptor
150
- derived_secret = bookmarks_export_secret_token("bookmarks session key")
151
- ActiveSupport::MessageEncryptor.new(derived_secret)
152
- end
153
-
154
- def token_or_current_or_guest_user
155
- token_user || current_or_guest_user
156
- end
157
-
158
- def token_user
159
- @token_user ||= if params[:encrypted_user_id]
160
- user_id = decrypt_user_id params[:encrypted_user_id]
161
- User.find(user_id)
162
- else
163
- nil
164
- end
165
- end
166
- end
6
+ end
@@ -8,7 +8,9 @@ module Blacklight::BlacklightHelperBehavior
8
8
  include BlacklightConfigurationHelper
9
9
  include HashAsHiddenFieldsHelper
10
10
  include RenderConstraintsHelper
11
+ include RenderPartialsHelper
11
12
  include FacetsHelper
13
+ extend Deprecation
12
14
 
13
15
  ##
14
16
  # Get the name of this application, from either:
@@ -91,42 +93,6 @@ module Blacklight::BlacklightHelperBehavior
91
93
  render :partial=>'catalog/search_form'
92
94
  end
93
95
 
94
- ##
95
- # Render "docuemnt actions" area for search results view
96
- # (normally renders next to title in the list view)
97
- #
98
- # @param [SolrDocument] document
99
- # @param [Hash] options
100
- # @option options [String] :wrapping_class
101
- # @return [String]
102
- def render_index_doc_actions(document, options={})
103
- wrapping_class = options.delete(:wrapping_class) || "index-document-functions"
104
-
105
- content = []
106
- content << render(:partial => 'catalog/bookmark_control', :locals => {:document=> document}.merge(options)) if render_bookmarks_control?
107
-
108
- content_tag("div", safe_join(content, "\n"), :class=> wrapping_class)
109
- end
110
-
111
- ##
112
- # Render "docuemnt actions" for the item detail 'show' view.
113
- # (this normally renders next to title)
114
- #
115
- # By default includes 'Bookmarks'
116
- #
117
- # @param [SolrDocument] document
118
- # @param [Hash] options
119
- # @option options [String] :wrapping_class
120
- # @return [String]
121
- def render_show_doc_actions(document=@document, options={})
122
- wrapping_class = options.delete(:wrapping_class) || "documentFunctions"
123
-
124
- content = []
125
- content << render(:partial => 'catalog/bookmark_control', :locals => {:document=> document}.merge(options)) if render_bookmarks_control?
126
-
127
- content_tag("div", safe_join(content, "\n"), :class=> wrapping_class)
128
- end
129
-
130
96
  ##
131
97
  # Determine whether to render a given field in the index view.
132
98
  #
@@ -378,162 +344,22 @@ module Blacklight::BlacklightHelperBehavior
378
344
  end
379
345
  end
380
346
 
381
- ##
382
- # Render the document index view
383
- #
384
- # @param [Array<SolrDocument>] list of documents to render
385
- # @param [Hash] locals to pass to the render call
386
- # @return [String]
387
- def render_document_index documents = nil, locals = {}
388
- documents ||= @document_list
389
- render_document_index_with_view(document_index_view_type, documents, locals)
390
- end
391
-
392
- ##
393
- # Render the document index for a grouped response
394
- def render_grouped_document_index
395
- render :partial => 'catalog/group_default'
396
- end
397
-
398
- ##
399
- # Render the document index for the given view type with the
400
- # list of documents.
401
- #
402
- # This method will interpolate the list of templates with
403
- # the current view, and gracefully handles missing templates.
404
- #
405
- # @see #document_index_path_templates
406
- #
407
- # @param [String] view type
408
- # @param [Array<SolrDocument>] list of documents to render
409
- # @param [Hash] locals to pass to the render call
410
- # @return [String]
411
- def render_document_index_with_view view, documents, locals = {}
412
- document_index_path_templates.each do |str|
413
- partial = str % { index_view_type: view }
414
- logger.debug "Looking for document index partial #{partial}"
415
- template = lookup_context.find_all(partial, lookup_context.prefixes + [""], true, locals.keys + [:documents], {}).first
416
- return template.render(self, locals.merge(documents: documents)) if template
417
- end
418
-
419
- return ""
420
- end
421
-
422
- ##
423
- # A list of document partial templates to attempt to render
424
- #
425
- # @see #render_document_index_with_view
426
- # @return [Array<String>]
427
- def document_index_path_templates
428
- # first, the legacy template names for backwards compatbility
429
- # followed by the new, inheritable style
430
- # finally, a controller-specific path for non-catalog subclasses
431
- @document_index_path_templates ||= ["document_%{index_view_type}", "catalog/document_%{index_view_type}", "catalog/document_list"]
432
- end
433
-
434
- ##
435
- # Return a normalized partial name for rendering a single document
436
- #
437
- # @param [SolrDocument]
438
- # @param [Symbol] base name for the partial
439
- # @return [String]
440
- def document_partial_name(document, base_name = nil)
441
- view_config = blacklight_config.view_config(:show)
442
-
443
- display_type = if base_name and view_config.has_key? :"#{base_name}_display_type_field"
444
- document[view_config[:"#{base_name}_display_type_field"]]
445
- end
446
-
447
- display_type ||= document[view_config.display_type_field]
448
-
449
- display_type ||= 'default'
450
-
451
- type_field_to_partial_name(document, display_type)
452
- end
453
-
454
- ##
455
- # Return a partial name for rendering a document
456
- # this method can be overridden in order to transform the value
457
- # (e.g. 'PdfBook' => 'pdf_book')
458
- #
459
- # @param [SolrDocument] document
460
- # @param [String, Array] display_type a value suggestive of a partial
461
- # @return [String] the name of the partial to render
462
- # @example
463
- # type_field_to_partial_name(['a book-article'])
464
- # => 'a_book_article'
465
- def type_field_to_partial_name(document, display_type)
466
- # using "_" as sep. to more closely follow the views file naming conventions
467
- # parameterize uses "-" as the default sep. which throws errors
468
- Array(display_type).join(" ").gsub("-","_").parameterize("_")
469
- end
470
-
471
- ##
472
- # Return the list of partials for a given solr document
473
- # @param [SolrDocument]
474
- # @return [String]
475
- def render_document_partials(doc, partials = [], locals ={})
476
- safe_join(partials.map do |action_name|
477
- render_document_partial(doc, action_name, locals)
478
- end, "\n")
479
- end
480
-
481
- ##
482
- # Given a doc and a base name for a partial, this method will attempt to render
483
- # an appropriate partial based on the document format and view type.
484
- #
485
- # If a partial that matches the document format is not found,
486
- # render a default partial for the base name.
487
- #
488
- # @see #document_partial_path_templates
489
- #
490
- # @param [SolrDocument] doc
491
- # @param [String] base name for the partial
492
- # @param [Hash] locales to pass through to the partials
493
- def render_document_partial(doc, base_name, locals = {})
494
- format = if method(:document_partial_name).arity == 1
495
- Deprecation.warn self, "The #document_partial_name with a single argument is deprecated. Update your override to include a second argument for the 'base name'"
496
- document_partial_name(doc)
497
- else
498
- document_partial_name(doc, base_name)
499
- end
500
-
501
- document_partial_path_templates.each do |str|
502
- partial = str % { action_name: base_name, format: format, index_view_type: document_index_view_type }
503
- logger.debug "Looking for document partial #{partial}"
504
- template = lookup_context.find_all(partial, lookup_context.prefixes + [""], true, locals.keys + [:document], {}).first
505
- return template.render(self, locals.merge(document: doc)) if template
506
- end
507
-
508
- return ''
509
- end
510
-
511
- ##
512
- # A list of document partial templates to try to render for a document
513
- #
514
- # The partial names will be interpolated with the following variables:
515
- # - action_name: (e.g. index, show)
516
- # - index_view_type: (the current view type, e.g. list, gallery)
517
- # - format: the document's format (e.g. book)
518
- #
519
- # @see #render_document_partial
520
- def document_partial_path_templates
521
- # first, the legacy template names for backwards compatbility
522
- # followed by the new, inheritable style
523
- # finally, a controller-specific path for non-catalog subclasses
524
- @partial_path_templates ||= ["%{action_name}_%{index_view_type}_%{format}", "%{action_name}_%{index_view_type}_default", "%{action_name}_%{format}", "%{action_name}_default", "catalog/%{action_name}_%{format}", "catalog/_%{action_name}_partials/%{format}", "catalog/_%{action_name}_partials/default"]
525
- end
526
-
527
347
  ##
528
348
  # Render the document index heading
529
349
  #
530
350
  # @param [SolrDocument] doc
531
- # @param [Hash] opts
351
+ # @param [Hash] opts (deprecated)
532
352
  # @option opts [Symbol] :label Render the given field from the document
533
353
  # @option opts [Proc] :label Evaluate the given proc
534
354
  # @option opts [String] :label Render the given string
535
- def render_document_index_label doc, opts = {}
536
- presenter(doc).render_document_index_label opts
355
+ # @param [Symbol, Proc, String] field Render the given field or evaluate the proc or render the given string
356
+ def render_document_index_label doc, field, opts = {}
357
+ Deprecation.warn self, "render_document_index_label is deprecated"
358
+ if field.kind_of? Hash
359
+ Deprecation.warn self, "Calling render_document_index_label with a hash is deprecated"
360
+ field = field[:label]
361
+ end
362
+ presenter(doc).render_document_index_label field, opts
537
363
  end
538
364
 
539
365
  ##
@@ -566,6 +392,12 @@ module Blacklight::BlacklightHelperBehavior
566
392
  has_user_authentication_provider? and current_or_guest_user.present?
567
393
  end
568
394
 
395
+ ##
396
+ # Determine whether to render the saved searches link
397
+ def render_saved_searches?
398
+ has_user_authentication_provider? and current_user
399
+ end
400
+
569
401
  ##
570
402
  # Returns a document presenter for the given document
571
403
  def presenter(document)
@@ -575,7 +407,7 @@ module Blacklight::BlacklightHelperBehavior
575
407
  ##
576
408
  # Override this method if you want to use a different presenter class
577
409
  def presenter_class
578
- Blacklight::DocumentPresenter
410
+ blacklight_config.document_presenter_class || Blacklight::DocumentPresenter
579
411
  end
580
412
 
581
413
  ##