blacklight 6.14.0 → 7.0.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 (422) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +40 -16
  5. data/.rubocop_todo.yml +479 -375
  6. data/.solr_wrapper.yml +9 -2
  7. data/.travis.yml +27 -20
  8. data/Gemfile +3 -1
  9. data/README.md +22 -5
  10. data/Rakefile +3 -2
  11. data/VERSION +1 -1
  12. data/Vagrantfile +2 -0
  13. data/app/assets/images/blacklight/list.svg +1 -0
  14. data/app/assets/images/blacklight/search.svg +1 -0
  15. data/app/assets/javascripts/blacklight/blacklight.js +497 -57
  16. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  20. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  21. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  22. data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
  23. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  24. data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
  25. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  26. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  27. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  28. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  29. data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
  30. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  31. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  32. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  33. data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
  34. data/app/builders/blacklight/action_builder.rb +57 -0
  35. data/app/controllers/bookmarks_controller.rb +2 -2
  36. data/app/controllers/catalog_controller.rb +2 -2
  37. data/app/controllers/concerns/blacklight/base.rb +0 -33
  38. data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
  39. data/app/controllers/concerns/blacklight/catalog.rb +266 -210
  40. data/app/controllers/concerns/blacklight/controller.rb +111 -126
  41. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  42. data/app/controllers/concerns/blacklight/facet.rb +3 -0
  43. data/app/controllers/concerns/blacklight/search_context.rb +16 -14
  44. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  45. data/app/controllers/concerns/blacklight/search_history.rb +1 -6
  46. data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
  47. data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
  48. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  49. data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
  50. data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
  51. data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
  52. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  53. data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
  54. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
  55. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
  56. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  57. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
  58. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  59. data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
  60. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  61. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  62. data/app/javascript/blacklight/checkbox_submit.js +134 -0
  63. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  64. data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
  65. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  66. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
  67. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
  68. data/app/models/blacklight/facet_paginator.rb +3 -3
  69. data/app/models/blacklight/icon.rb +56 -0
  70. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  71. data/app/models/blacklight/suggest_search.rb +4 -15
  72. data/app/models/bookmark.rb +5 -10
  73. data/app/models/concerns/blacklight/configurable.rb +13 -13
  74. data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
  75. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  76. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  77. data/app/models/concerns/blacklight/document/email.rb +1 -1
  78. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  79. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  80. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  81. data/app/models/concerns/blacklight/document.rb +26 -40
  82. data/app/models/concerns/blacklight/solr/document.rb +8 -8
  83. data/app/models/concerns/blacklight/suggest/response.rb +5 -3
  84. data/app/models/concerns/blacklight/user.rb +7 -6
  85. data/app/models/record_mailer.rb +5 -6
  86. data/app/models/search.rb +5 -7
  87. data/app/presenters/blacklight/document_presenter.rb +25 -140
  88. data/app/presenters/blacklight/field_presenter.rb +7 -5
  89. data/app/presenters/blacklight/index_presenter.rb +41 -58
  90. data/app/presenters/blacklight/json_presenter.rb +10 -14
  91. data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
  92. data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
  93. data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
  94. data/app/presenters/blacklight/rendering/join.rb +5 -3
  95. data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
  96. data/app/presenters/blacklight/rendering/microdata.rb +6 -3
  97. data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
  98. data/app/presenters/blacklight/rendering/terminator.rb +2 -0
  99. data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
  100. data/app/presenters/blacklight/show_presenter.rb +26 -63
  101. data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
  102. data/app/services/blacklight/document_factory.rb +13 -0
  103. data/app/services/blacklight/field_retriever.rb +26 -24
  104. data/app/services/blacklight/search_service.rb +152 -0
  105. data/app/values/blacklight/types.rb +31 -0
  106. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  107. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  108. data/app/views/bookmarks/_tools.html.erb +2 -2
  109. data/app/views/bookmarks/index.html.erb +12 -13
  110. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  111. data/app/views/catalog/_citation.html.erb +4 -4
  112. data/app/views/catalog/_constraints.html.erb +6 -7
  113. data/app/views/catalog/_constraints_element.html.erb +6 -6
  114. data/app/views/catalog/_did_you_mean.html.erb +1 -1
  115. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
  116. data/app/views/catalog/_document.html.erb +5 -3
  117. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
  118. data/app/views/catalog/_document_action.html.erb +2 -1
  119. data/app/views/catalog/_email_form.html.erb +8 -4
  120. data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
  121. data/app/views/catalog/_facet_layout.html.erb +6 -10
  122. data/app/views/catalog/_facet_limit.html.erb +3 -2
  123. data/app/views/catalog/_facet_pagination.html.erb +8 -8
  124. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  125. data/app/views/catalog/_facets.html.erb +9 -12
  126. data/app/views/catalog/_field.json.jbuilder +10 -0
  127. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
  128. data/app/views/catalog/_home_text.html.erb +32 -36
  129. data/app/views/catalog/_index.html.erb +10 -0
  130. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
  131. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  132. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  133. data/app/views/catalog/_results_pagination.html.erb +2 -2
  134. data/app/views/catalog/_search_form.html.erb +12 -8
  135. data/app/views/catalog/_search_header.html.erb +0 -3
  136. data/app/views/catalog/_search_results.html.erb +6 -2
  137. data/app/views/catalog/_show.html.erb +8 -0
  138. data/app/views/catalog/_show_main_content.html.erb +4 -4
  139. data/app/views/catalog/_show_more_like_this.html.erb +1 -1
  140. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  141. data/app/views/catalog/_show_tools.html.erb +10 -12
  142. data/app/views/catalog/_sms_form.html.erb +8 -4
  143. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  144. data/app/views/catalog/_sort_widget.html.erb +7 -7
  145. data/app/views/catalog/_thumbnail.html.erb +5 -0
  146. data/app/views/catalog/_view_type_group.html.erb +2 -2
  147. data/app/views/catalog/_zero_results.html.erb +1 -1
  148. data/app/views/catalog/citation.js.erb +4 -2
  149. data/app/views/catalog/email.html.erb +5 -3
  150. data/app/views/catalog/email_success.html.erb +12 -8
  151. data/app/views/catalog/facet.html.erb +10 -8
  152. data/app/views/catalog/facet.json.jbuilder +2 -0
  153. data/app/views/catalog/index.atom.builder +13 -16
  154. data/app/views/catalog/index.html.erb +9 -11
  155. data/app/views/catalog/index.json.jbuilder +84 -3
  156. data/app/views/catalog/index.rss.builder +7 -5
  157. data/app/views/catalog/opensearch.xml.builder +12 -10
  158. data/app/views/catalog/show.html.erb +11 -6
  159. data/app/views/catalog/show.json.jbuilder +21 -0
  160. data/app/views/catalog/sms.html.erb +3 -1
  161. data/app/views/catalog/sms_success.html.erb +12 -8
  162. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  163. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  164. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  165. data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
  166. data/app/views/kaminari/blacklight/_page.html.erb +5 -3
  167. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  168. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  169. data/app/views/layouts/blacklight/base.html.erb +35 -0
  170. data/app/views/layouts/blacklight.html.erb +14 -41
  171. data/app/views/layouts/catalog_result.html.erb +11 -0
  172. data/app/views/search_history/index.html.erb +16 -21
  173. data/app/views/shared/_header_navbar.html.erb +8 -13
  174. data/app/views/shared/_modal.html.erb +6 -0
  175. data/app/views/shared/_user_util_links.html.erb +22 -0
  176. data/blacklight.gemspec +10 -11
  177. data/config/i18n-tasks.yml +17 -0
  178. data/config/locales/blacklight.de.yml +71 -82
  179. data/config/locales/blacklight.en.yml +15 -27
  180. data/config/locales/blacklight.es.yml +14 -26
  181. data/config/locales/blacklight.fr.yml +16 -33
  182. data/config/locales/blacklight.hu.yml +212 -0
  183. data/config/locales/blacklight.it.yml +15 -26
  184. data/config/locales/blacklight.nl.yml +212 -0
  185. data/config/locales/blacklight.pt-BR.yml +24 -29
  186. data/config/locales/blacklight.sq.yml +4 -28
  187. data/config/locales/blacklight.zh.yml +3 -25
  188. data/config/routes.rb +2 -10
  189. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  190. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  191. data/lib/blacklight/abstract_repository.rb +22 -10
  192. data/lib/blacklight/configuration/context.rb +12 -1
  193. data/lib/blacklight/configuration/facet_field.rb +16 -9
  194. data/lib/blacklight/configuration/field.rb +32 -3
  195. data/lib/blacklight/configuration/fields.rb +61 -58
  196. data/lib/blacklight/configuration/null_field.rb +2 -0
  197. data/lib/blacklight/configuration/search_field.rb +2 -2
  198. data/lib/blacklight/configuration/sort_field.rb +2 -2
  199. data/lib/blacklight/configuration/view_config.rb +4 -0
  200. data/lib/blacklight/configuration.rb +101 -88
  201. data/lib/blacklight/engine.rb +11 -7
  202. data/lib/blacklight/exceptions.rb +4 -7
  203. data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
  204. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  205. data/lib/blacklight/parameters.rb +1 -1
  206. data/lib/blacklight/routes/exportable.rb +1 -3
  207. data/lib/blacklight/routes/searchable.rb +3 -3
  208. data/lib/blacklight/runtime_registry.rb +2 -0
  209. data/lib/blacklight/search_builder.rb +28 -35
  210. data/lib/blacklight/search_state.rb +10 -8
  211. data/lib/blacklight/solr/repository.rb +40 -6
  212. data/lib/blacklight/solr/request.rb +1 -1
  213. data/lib/blacklight/solr/response/facets.rb +29 -31
  214. data/lib/blacklight/solr/response/group.rb +3 -3
  215. data/lib/blacklight/solr/response/group_response.rb +1 -1
  216. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  217. data/lib/blacklight/solr/response/response.rb +2 -2
  218. data/lib/blacklight/solr/response/spelling.rb +4 -3
  219. data/lib/blacklight/solr/response.rb +29 -30
  220. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  221. data/lib/blacklight/version.rb +1 -1
  222. data/lib/blacklight.rb +10 -8
  223. data/lib/generators/blacklight/assets_generator.rb +18 -12
  224. data/lib/generators/blacklight/controller_generator.rb +4 -5
  225. data/lib/generators/blacklight/document_generator.rb +1 -1
  226. data/lib/generators/blacklight/install_generator.rb +18 -28
  227. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  228. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
  229. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  230. data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
  231. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  232. data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
  233. data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
  234. data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
  235. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  236. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  237. data/lib/generators/blacklight/user_generator.rb +5 -6
  238. data/lib/railties/blacklight.rake +17 -21
  239. data/package-lock.json +2195 -0
  240. data/package.json +29 -0
  241. data/spec/controllers/alternate_controller_spec.rb +5 -4
  242. data/spec/controllers/application_controller_spec.rb +1 -5
  243. data/spec/controllers/blacklight/base_spec.rb +6 -3
  244. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  245. data/spec/controllers/blacklight/facet_spec.rb +1 -2
  246. data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
  247. data/spec/controllers/bookmarks_controller_spec.rb +46 -11
  248. data/spec/controllers/catalog_controller_spec.rb +334 -161
  249. data/spec/controllers/search_history_controller_spec.rb +6 -6
  250. data/spec/features/alternate_controller_spec.rb +4 -4
  251. data/spec/features/autocomplete_spec.rb +4 -2
  252. data/spec/features/bookmarks_spec.rb +10 -10
  253. data/spec/features/did_you_mean_spec.rb +7 -12
  254. data/spec/features/facets_spec.rb +29 -17
  255. data/spec/features/record_view_spec.rb +12 -18
  256. data/spec/features/search_context_spec.rb +6 -7
  257. data/spec/features/search_crawler_spec.rb +3 -5
  258. data/spec/features/search_filters_spec.rb +80 -80
  259. data/spec/features/search_formats_spec.rb +1 -1
  260. data/spec/features/search_history_spec.rb +6 -29
  261. data/spec/features/search_pagination_spec.rb +4 -2
  262. data/spec/features/search_results_spec.rb +14 -12
  263. data/spec/features/search_sort_spec.rb +2 -2
  264. data/spec/features/search_spec.rb +8 -9
  265. data/spec/features/sitelinks_search_box.rb +4 -4
  266. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  267. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
  268. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
  269. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
  270. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
  271. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
  272. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
  273. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
  274. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
  275. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
  276. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
  277. data/spec/helpers/blacklight_helper_spec.rb +65 -150
  278. data/spec/helpers/catalog_helper_spec.rb +80 -96
  279. data/spec/i18n_spec.rb +18 -0
  280. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
  281. data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
  282. data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
  283. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  284. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
  285. data/spec/lib/blacklight/parameters_spec.rb +4 -2
  286. data/spec/lib/blacklight/search_state_spec.rb +53 -36
  287. data/spec/lib/blacklight_spec.rb +14 -15
  288. data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
  289. data/spec/models/blacklight/configurable_spec.rb +24 -27
  290. data/spec/models/blacklight/configuration/context_spec.rb +9 -10
  291. data/spec/models/blacklight/configuration_spec.rb +248 -223
  292. data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
  293. data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
  294. data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
  295. data/spec/models/blacklight/document/email_spec.rb +10 -10
  296. data/spec/models/blacklight/document/sms_spec.rb +10 -10
  297. data/spec/models/blacklight/document_spec.rb +10 -22
  298. data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
  299. data/spec/models/blacklight/icon_spec.rb +44 -0
  300. data/spec/models/blacklight/search_builder_spec.rb +41 -26
  301. data/spec/models/blacklight/solr/document_spec.rb +224 -216
  302. data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
  303. data/spec/models/blacklight/solr/repository_spec.rb +61 -46
  304. data/spec/models/blacklight/solr/request_spec.rb +17 -18
  305. data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
  306. data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
  307. data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
  308. data/spec/models/blacklight/solr/response_spec.rb +56 -55
  309. data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
  310. data/spec/models/blacklight/suggest/response_spec.rb +6 -4
  311. data/spec/models/blacklight/suggest_search_spec.rb +9 -16
  312. data/spec/models/blacklight/user_spec.rb +9 -11
  313. data/spec/models/bookmark_spec.rb +7 -6
  314. data/spec/models/record_mailer_spec.rb +23 -21
  315. data/spec/models/search_spec.rb +19 -18
  316. data/spec/models/solr_document_spec.rb +33 -5
  317. data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
  318. data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
  319. data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
  320. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
  321. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
  322. data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
  323. data/spec/presenters/pipeline_spec.rb +18 -11
  324. data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
  325. data/spec/routing/catalog_routing_spec.rb +13 -15
  326. data/spec/services/blacklight/search_service_spec.rb +488 -0
  327. data/spec/spec_helper.rb +20 -19
  328. data/spec/support/features/session_helpers.rb +4 -4
  329. data/spec/support/features.rb +1 -1
  330. data/spec/test_app_templates/Gemfile.extra +2 -4
  331. data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
  332. data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
  333. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
  334. data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
  335. data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
  336. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
  337. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  338. data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
  339. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
  340. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
  341. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
  342. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  343. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
  344. data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
  345. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
  346. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
  347. data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
  348. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
  349. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
  350. data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
  351. data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
  352. data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
  353. data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
  354. data/spec/views/catalog/index.html.erb_spec.rb +6 -8
  355. data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
  356. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  357. data/spec/views/catalog/show.html.erb_spec.rb +8 -8
  358. data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
  359. data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
  360. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
  361. data/tasks/blacklight.rake +10 -8
  362. data/template.demo.rb +3 -11
  363. metadata +188 -189
  364. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  365. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  366. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
  367. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  368. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  369. data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
  370. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  371. data/app/controllers/saved_searches_controller.rb +0 -4
  372. data/app/controllers/suggest_controller.rb +0 -4
  373. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  374. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  375. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  376. data/app/helpers/blacklight_url_helper.rb +0 -4
  377. data/app/helpers/component_helper.rb +0 -4
  378. data/app/helpers/facets_helper.rb +0 -4
  379. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  380. data/app/helpers/layout_helper.rb +0 -4
  381. data/app/helpers/render_constraints_helper.rb +0 -4
  382. data/app/helpers/search_history_constraints_helper.rb +0 -4
  383. data/app/helpers/suggest_helper.rb +0 -4
  384. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  385. data/app/views/_user_util_links.html.erb +0 -26
  386. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  387. data/app/views/catalog/_index_default.html.erb +0 -12
  388. data/app/views/catalog/_show_default.html.erb +0 -10
  389. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  390. data/app/views/saved_searches/index.html.erb +0 -32
  391. data/app/views/shared/_ajax_modal.html.erb +0 -6
  392. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  393. data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
  394. data/solr/conf/schema.xml +0 -629
  395. data/solr/conf/solrconfig.xml +0 -411
  396. data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
  397. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  398. data/spec/controllers/suggest_controller_spec.rb +0 -17
  399. data/spec/features/saved_searches_spec.rb +0 -47
  400. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  401. data/spec/lib/blacklight/utils_spec.rb +0 -167
  402. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  403. data/spec/presenters/document_presenter_spec.rb +0 -438
  404. data/spec/presenters/index_presenter_spec.rb +0 -173
  405. data/spec/presenters/show_presenter_spec.rb +0 -313
  406. data/spec/support/backport_test.rb +0 -14
  407. /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  408. /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  409. /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  410. /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  411. /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  412. /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  413. /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  414. /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  415. /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  416. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  417. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  418. /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  419. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  420. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  421. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  422. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
@@ -1,28 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
  # Methods added to this helper will be available to all templates in the hosting application
3
3
  module Blacklight::BlacklightHelperBehavior
4
- include BlacklightUrlHelper
5
- include BlacklightConfigurationHelper
6
- include HashAsHiddenFieldsHelper
7
- include RenderConstraintsHelper
8
- include RenderPartialsHelper
9
- include FacetsHelper
10
- extend Deprecation
11
- self.deprecation_horizon = 'Blacklight version 7.0.0'
4
+ include UrlHelperBehavior
5
+ include HashAsHiddenFieldsHelperBehavior
6
+ include LayoutHelperBehavior
7
+ include IconHelperBehavior
12
8
 
13
9
  ##
14
- # Get the name of this application, from either:
15
- # - the Rails configuration
16
- # - an i18n string (key: blacklight.application_name; preferred)
10
+ # Get the name of this application from an i18n string
11
+ # key: blacklight.application_name
12
+ # Try first in the current locale, then the default locale
17
13
  #
18
14
  # @return [String] the application name
19
15
  def application_name
20
- if Rails.application.config.respond_to? :application_name
21
- Deprecation.warn(self, "BlacklightHelper#application_name will no longer delegate to config.application_name in version 7.0. Set the i18n for blacklight.application_name instead")
22
- return Rails.application.config.application_name
16
+ # It's important that we don't use ActionView::Helpers::CacheHelper#cache here
17
+ # because it returns nil.
18
+ Rails.cache.fetch 'blacklight/application_name' do
19
+ t('blacklight.application_name',
20
+ default: t('blacklight.application_name', locale: I18n.default_locale))
23
21
  end
24
-
25
- t('blacklight.application_name')
26
22
  end
27
23
 
28
24
  ##
@@ -44,8 +40,9 @@ module Blacklight::BlacklightHelperBehavior
44
40
  # @option options [Boolean] :unique ensures only one link is output for every
45
41
  # content type, e.g. as required by atom
46
42
  # @option options [Array<String>] :exclude array of format shortnames to not include in the output
47
- def render_link_rel_alternates(document=@document, options = {})
43
+ def render_link_rel_alternates(document = @document, options = {})
48
44
  return if document.nil?
45
+
49
46
  presenter(document).link_rel_alternates(options)
50
47
  end
51
48
 
@@ -53,7 +50,7 @@ module Blacklight::BlacklightHelperBehavior
53
50
  # Render OpenSearch headers for this search
54
51
  # @return [String]
55
52
  def render_opensearch_response_metadata
56
- render :partial => 'catalog/opensearch_response_metadata'
53
+ render partial: 'catalog/opensearch_response_metadata'
57
54
  end
58
55
 
59
56
  ##
@@ -75,7 +72,11 @@ module Blacklight::BlacklightHelperBehavior
75
72
  # Render the search navbar
76
73
  # @return [String]
77
74
  def render_search_bar
78
- render :partial=>'catalog/search_form'
75
+ search_bar_presenter.render
76
+ end
77
+
78
+ def search_bar_presenter
79
+ @search_bar ||= search_bar_presenter_class.new(controller, blacklight_config)
79
80
  end
80
81
 
81
82
  ##
@@ -85,6 +86,7 @@ module Blacklight::BlacklightHelperBehavior
85
86
  # @param [Blacklight::Configuration::Field] field_config
86
87
  # @return [Boolean]
87
88
  def should_render_index_field? document, field_config
89
+ Deprecation.warn self, "should_render_index_field? is deprecated and will be removed in Blacklight 8. Use IndexPresenter#render_field? instead."
88
90
  should_render_field?(field_config, document) && document_has_value?(document, field_config)
89
91
  end
90
92
 
@@ -95,6 +97,7 @@ module Blacklight::BlacklightHelperBehavior
95
97
  # @param [Blacklight::Configuration::Field] field_config
96
98
  # @return [Boolean]
97
99
  def should_render_show_field? document, field_config
100
+ Deprecation.warn self, "should_render_show_field? is deprecated and will be removed in Blacklight 8. Use ShowPresenter#render_field? instead."
98
101
  should_render_field?(field_config, document) && document_has_value?(document, field_config)
99
102
  end
100
103
 
@@ -105,6 +108,7 @@ module Blacklight::BlacklightHelperBehavior
105
108
  # @param [Blacklight::Configuration::Field] field_config
106
109
  # @return [Boolean]
107
110
  def document_has_value? document, field_config
111
+ Deprecation.warn self, "document_has_value? is deprecated and will be removed in Blacklight 8. Use DocumentPresenter#has_value? instead."
108
112
  document.has?(field_config.field) ||
109
113
  (document.has_highlight_field? field_config.field if field_config.highlight) ||
110
114
  field_config.accessor
@@ -116,12 +120,18 @@ module Blacklight::BlacklightHelperBehavior
116
120
  # @param [Blacklight::Solr::Response] response
117
121
  # @return [Boolean]
118
122
  def should_show_spellcheck_suggestions? response
119
- response.total <= spell_check_max and response.spelling.words.any?
123
+ # The spelling response field may be missing from non solr repositories.
124
+ response.total <= spell_check_max &&
125
+ !response.spelling.nil? &&
126
+ response.spelling.words.any?
120
127
  end
121
128
 
122
129
  ##
123
130
  # Render the index field label for a document
124
131
  #
132
+ # Translations for index field labels should go under blacklight.search.fields
133
+ # They are picked up from there by a value "%{label}" in blacklight.search.index.label
134
+ #
125
135
  # @overload render_index_field_label(options)
126
136
  # Use the default, document-agnostic configuration
127
137
  # @param [Hash] opts
@@ -140,45 +150,6 @@ module Blacklight::BlacklightHelperBehavior
140
150
  html_escape t(:"blacklight.search.index.#{document_index_view_type}.label", default: :'blacklight.search.index.label', label: index_field_label(document, field))
141
151
  end
142
152
 
143
- ##
144
- # Render the index field label for a document
145
- #
146
- # @overload render_index_field_value(options)
147
- # Use the default, document-agnostic configuration
148
- # @param [Hash] opts
149
- # @option opts [String] :field
150
- # @option opts [String] :value
151
- # @option opts [String] :document
152
- # @overload render_index_field_value(document, options)
153
- # Allow an extention point where information in the document
154
- # may drive the value of the field
155
- # @param [SolrDocument] doc
156
- # @param [Hash] opts
157
- # @option opts [String] :field
158
- # @option opts [String] :value
159
- # @overload render_index_field_value(document, field, options)
160
- # Allow an extention point where information in the document
161
- # may drive the value of the field
162
- # @param [SolrDocument] doc
163
- # @param [String] field
164
- # @param [Hash] opts
165
- # @option opts [String] :value
166
- # @deprecated use IndexPresenter#field_value
167
- def render_index_field_value *args
168
- render_field_value(*args)
169
- end
170
- deprecation_deprecate render_index_field_value: 'replaced by IndexPresenter#field_value'
171
-
172
- # @deprecated use IndexPresenter#field_value
173
- def render_field_value(*args)
174
- options = args.extract_options!
175
- document = args.shift || options[:document]
176
-
177
- field = args.shift || options[:field]
178
- presenter(document).field_value field, options.except(:document, :field)
179
- end
180
- deprecation_deprecate render_field_value: 'replaced by IndexPresenter#field_value'
181
-
182
153
  ##
183
154
  # Render the show field label for a document
184
155
  #
@@ -201,42 +172,13 @@ module Blacklight::BlacklightHelperBehavior
201
172
  t(:'blacklight.search.show.label', label: document_show_field_label(document, field))
202
173
  end
203
174
 
204
- ##
205
- # Render the index field label for a document
206
- #
207
- # @overload render_document_show_field_value(options)
208
- # Use the default, document-agnostic configuration
209
- # @param [Hash] opts
210
- # @option opts [String] :field
211
- # @option opts [String] :value
212
- # @option opts [String] :document
213
- # @overload render_document_show_field_value(document, options)
214
- # Allow an extention point where information in the document
215
- # may drive the value of the field
216
- # @param [SolrDocument] doc
217
- # @param [Hash] opts
218
- # @option opts [String] :field
219
- # @option opts [String] :value
220
- # @overload render_document_show_field_value(document, field, options)
221
- # Allow an extention point where information in the document
222
- # may drive the value of the field
223
- # @param [SolrDocument] doc
224
- # @param [String] field
225
- # @param [Hash] opts
226
- # @option opts [String] :value
227
- # @deprecated use ShowPresenter#field_value
228
- def render_document_show_field_value *args
229
- render_field_value(*args)
230
- end
231
- deprecation_deprecate render_document_show_field_value: 'replaced by ShowPresenter#field_value'
232
-
233
175
  ##
234
176
  # Get the value of the document's "title" field, or a placeholder
235
177
  # value (if empty)
236
178
  #
237
179
  # @param [SolrDocument] document
238
180
  # @return [String]
239
- def document_heading document=nil
181
+ def document_heading document = nil
240
182
  document ||= @document
241
183
  presenter(document).heading
242
184
  end
@@ -248,7 +190,7 @@ module Blacklight::BlacklightHelperBehavior
248
190
  # @see #document_heading
249
191
  # @param [SolrDocument] document
250
192
  # @return [String]
251
- def document_show_html_title document=nil
193
+ def document_show_html_title document = nil
252
194
  document ||= @document
253
195
 
254
196
  presenter(document).html_title
@@ -272,33 +214,15 @@ module Blacklight::BlacklightHelperBehavior
272
214
  content_tag(tag, presenter(document).heading, itemprop: "name")
273
215
  end
274
216
 
275
- ##
276
- # Get the value for a document's field, and prepare to render it.
277
- # - highlight_field
278
- # - accessor
279
- # - solr field
280
- #
281
- # Rendering:
282
- # - helper_method
283
- # - link_to_search
284
- # @param [SolrDocument] document
285
- # @param [String] _field name
286
- # @param [Blacklight::Configuration::Field] field_config solr field configuration
287
- # @param [Hash] options additional options to pass to the rendering helpers
288
- def get_field_values document, _field, field_config, options = {}
289
- presenter(document).field_values field_config, options
290
- end
291
- deprecation_deprecate :get_field_values
292
-
293
217
  ##
294
218
  # Get the current "view type" (and ensure it is a valid type)
295
219
  #
296
220
  # @param [Hash] query_params the query parameters to check
297
221
  # @return [Symbol]
298
- def document_index_view_type query_params=params
222
+ def document_index_view_type query_params = params
299
223
  view_param = query_params[:view]
300
224
  view_param ||= session[:preferred_view]
301
- if view_param and document_index_views.keys.include? view_param.to_sym
225
+ if view_param && document_index_views.key?(view_param.to_sym)
302
226
  view_param.to_sym
303
227
  else
304
228
  default_document_index_view_type
@@ -314,7 +238,7 @@ module Blacklight::BlacklightHelperBehavior
314
238
  #
315
239
  # @param [String] format suffix
316
240
  # @yield
317
- def with_format(format, &block)
241
+ def with_format(format)
318
242
  old_formats = formats
319
243
  self.formats = [format]
320
244
  yield
@@ -338,9 +262,6 @@ module Blacklight::BlacklightHelperBehavior
338
262
  show_presenter(document)
339
263
  when 'index'
340
264
  index_presenter(document)
341
- else
342
- Deprecation.warn(Blacklight::BlacklightHelperBehavior, "Unable to determine presenter type for #{action_name} on #{controller_name}, falling back on deprecated Blacklight::DocumentPresenter")
343
- presenter_class.new(document, self)
344
265
  end
345
266
  end
346
267
 
@@ -352,11 +273,6 @@ module Blacklight::BlacklightHelperBehavior
352
273
  index_presenter_class(document).new(document, self)
353
274
  end
354
275
 
355
- def presenter_class
356
- blacklight_config.document_presenter_class
357
- end
358
- deprecation_deprecate presenter_class: "replaced by show_presenter_class and index_presenter_class"
359
-
360
276
  ##
361
277
  # Override this method if you want to use a different presenter class
362
278
  def show_presenter_class(_document)
@@ -367,6 +283,10 @@ module Blacklight::BlacklightHelperBehavior
367
283
  blacklight_config.index.document_presenter_class
368
284
  end
369
285
 
286
+ def search_bar_presenter_class
287
+ blacklight_config.index.search_bar_presenter_class
288
+ end
289
+
370
290
  ##
371
291
  # Open Search discovery tag for HTML <head> links
372
292
  def opensearch_description_tag title, href
@@ -1,12 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::CatalogHelperBehavior
3
- # @param [Hash] options
3
+ extend Deprecation
4
+ self.deprecation_horizon = 'blacklight 8.0'
5
+
6
+ include ConfigurationHelperBehavior
7
+ include ComponentHelperBehavior
8
+ include FacetsHelperBehavior
9
+ include RenderConstraintsHelperBehavior
10
+ include RenderPartialsHelperBehavior
11
+ include SearchHistoryConstraintsHelperBehavior
12
+ include SuggestHelperBehavior
13
+
14
+ # @param [Hash] options
4
15
  # @option options :route_set the route scope to use when constructing the link
5
16
  def rss_feed_link_tag(options = {})
6
17
  auto_discovery_link_tag(:rss, feed_link_url('rss', options), title: t('blacklight.search.rss_feed'))
7
18
  end
8
19
 
9
- # @param [Hash] options
20
+ # @param [Hash] options
10
21
  # @option options :route_set the route scope to use when constructing the link
11
22
  def atom_feed_link_tag(options = {})
12
23
  auto_discovery_link_tag(:atom, feed_link_url('atom', options), title: t('blacklight.search.atom_feed'))
@@ -29,43 +40,43 @@ module Blacklight::CatalogHelperBehavior
29
40
  return unless show_pagination? collection
30
41
 
31
42
  entry_name = if options[:entry_name]
32
- options[:entry_name]
33
- elsif collection.respond_to? :model # DataMapper
34
- collection.model.model_name.human.downcase
35
- elsif collection.respond_to? :model_name and !collection.model_name.nil? # AR, Blacklight::PaginationMethods
36
- collection.model_name.human.downcase
37
- else
38
- t('blacklight.entry_name.default')
39
- end
43
+ options[:entry_name]
44
+ elsif collection.respond_to? :model # DataMapper
45
+ collection.model.model_name.human.downcase
46
+ elsif collection.respond_to?(:model_name) && !collection.model_name.nil? # AR, Blacklight::PaginationMethods
47
+ collection.model_name.human.downcase
48
+ else
49
+ t('blacklight.entry_name.default')
50
+ end
40
51
 
41
52
  entry_name = entry_name.pluralize unless collection.total_count == 1
42
53
 
43
54
  # grouped response objects need special handling
44
- end_num = if collection.respond_to? :groups and render_grouped_response? collection
45
- collection.groups.length
46
- else
47
- collection.limit_value
48
- end
55
+ end_num = if collection.respond_to?(:groups) && render_grouped_response?(collection)
56
+ collection.groups.length
57
+ else
58
+ collection.limit_value
59
+ end
49
60
 
50
61
  end_num = if collection.offset_value + end_num <= collection.total_count
51
- collection.offset_value + end_num
52
- else
53
- collection.total_count
54
- end
55
-
62
+ collection.offset_value + end_num
63
+ else
64
+ collection.total_count
65
+ end
66
+
56
67
  case collection.total_count
57
68
  when 0
58
- t('blacklight.search.pagination_info.no_items_found', :entry_name => entry_name ).html_safe
69
+ t('blacklight.search.pagination_info.no_items_found', entry_name: entry_name).html_safe
59
70
  when 1
60
- t('blacklight.search.pagination_info.single_item_found', :entry_name => entry_name).html_safe
71
+ t('blacklight.search.pagination_info.single_item_found', entry_name: entry_name).html_safe
61
72
  else
62
- t('blacklight.search.pagination_info.pages', :entry_name => entry_name,
63
- :current_page => collection.current_page,
64
- :num_pages => collection.total_pages,
65
- :start_num => number_with_delimiter(collection.offset_value + 1),
66
- :end_num => number_with_delimiter(end_num),
67
- :total_num => number_with_delimiter(collection.total_count),
68
- :count => collection.total_pages).html_safe
73
+ t('blacklight.search.pagination_info.pages', entry_name: entry_name,
74
+ current_page: collection.current_page,
75
+ num_pages: collection.total_pages,
76
+ start_num: number_with_delimiter(collection.offset_value + 1),
77
+ end_num: number_with_delimiter(end_num),
78
+ total_num: number_with_delimiter(collection.total_count),
79
+ count: collection.total_pages).html_safe
69
80
  end
70
81
  end
71
82
 
@@ -79,7 +90,7 @@ module Blacklight::CatalogHelperBehavior
79
90
  offset ||= @response.start if @response
80
91
  offset ||= 0
81
92
 
82
- unless render_grouped_response?
93
+ unless render_grouped_response?
83
94
  idx + 1 + offset
84
95
  end
85
96
  end
@@ -87,20 +98,20 @@ module Blacklight::CatalogHelperBehavior
87
98
  ##
88
99
  # Like #page_entries_info above, but for an individual
89
100
  # item show page. Displays "showing X of Y items" message.
90
- #
101
+ #
91
102
  # @see #page_entries_info
92
103
  # @return [String]
93
104
  def item_page_entry_info
94
- t('blacklight.search.entry_pagination_info.other', :current => number_with_delimiter(search_session['counter']),
95
- :total => number_with_delimiter(search_session['total']),
96
- :count => search_session['total'].to_i).html_safe
105
+ t('blacklight.search.entry_pagination_info.other', current: number_with_delimiter(search_session['counter']),
106
+ total: number_with_delimiter(search_session['total']),
107
+ count: search_session['total'].to_i).html_safe
97
108
  end
98
109
 
99
110
  ##
100
111
  # Look up search field user-displayable label
101
112
  # based on params[:qt] and blacklight_configuration.
102
113
  def search_field_label(params)
103
- h( label_for_search_field(params[:search_field]) )
114
+ h(label_for_search_field(params[:search_field]))
104
115
  end
105
116
 
106
117
  ##
@@ -108,20 +119,20 @@ module Blacklight::CatalogHelperBehavior
108
119
  #
109
120
  # @return [Blacklight::Configuration::SortField]
110
121
  def current_sort_field
111
- (blacklight_config.sort_fields.values.find {|f| f.sort == @response.sort} if @response and @response.sort.present?) || blacklight_config.sort_fields[params[:sort]] || default_sort_field
122
+ (blacklight_config.sort_fields.values.find { |f| f.sort == @response.sort } if @response && @response.sort.present?) || blacklight_config.sort_fields[params[:sort]] || default_sort_field
112
123
  end
113
124
 
114
125
  ##
115
126
  # Look up the current per page value, or the default if none if set
116
- #
127
+ #
117
128
  # @return [Integer]
118
129
  def current_per_page
119
- (@response.rows if @response and @response.rows > 0) || params.fetch(:per_page, default_per_page).to_i
130
+ (@response.rows if @response && @response.rows > 0) || params.fetch(:per_page, blacklight_config.default_per_page).to_i
120
131
  end
121
132
 
122
133
  ##
123
134
  # Get the classes to add to a document's div
124
- #
135
+ #
125
136
  # @return [String]
126
137
  def render_document_class(document = @document)
127
138
  types = document[blacklight_config.view_config(document_index_view_type).display_type_field]
@@ -142,8 +153,8 @@ module Blacklight::CatalogHelperBehavior
142
153
  #
143
154
  # @param [SolrDocument] document
144
155
  # @return [String]
145
- def render_document_sidebar_partial(document = @document)
146
- render :partial => 'show_sidebar'
156
+ def render_document_sidebar_partial(_document = @document)
157
+ render partial: 'show_sidebar'
147
158
  end
148
159
 
149
160
  ##
@@ -151,13 +162,13 @@ module Blacklight::CatalogHelperBehavior
151
162
  #
152
163
  # @param [SolrDocument] document
153
164
  # @return [String]
154
- def render_document_main_content_partial(document = @document)
165
+ def render_document_main_content_partial(_document = @document)
155
166
  render partial: 'show_main_content'
156
167
  end
157
168
 
158
169
  ##
159
170
  # Should we display the sort and per page widget?
160
- #
171
+ #
161
172
  # @param [Blacklight::Solr::Response] response
162
173
  # @return [Boolean]
163
174
  def show_sort_and_per_page? response = nil
@@ -178,57 +189,41 @@ module Blacklight::CatalogHelperBehavior
178
189
  ##
179
190
  # If no search parameters have been given, we should
180
191
  # auto-focus the user's cursor into the searchbox
181
- #
192
+ #
182
193
  # @return [Boolean]
183
194
  def should_autofocus_on_search_box?
184
- controller.is_a? Blacklight::Catalog and
185
- action_name == "index" and
195
+ controller.is_a?(Blacklight::Catalog) &&
196
+ action_name == "index" &&
186
197
  !has_search_parameters?
187
198
  end
199
+ deprecation_deprecate should_autofocus_on_search_box?: "use SearchBarPresenter#autofocus?"
188
200
 
189
201
  ##
190
202
  # Does the document have a thumbnail to render?
191
- #
203
+ #
192
204
  # @param [SolrDocument] document
193
205
  # @return [Boolean]
194
206
  def has_thumbnail? document
195
- blacklight_config.view_config(document_index_view_type).thumbnail_method.present? or
196
- blacklight_config.view_config(document_index_view_type).thumbnail_field && document.has?(blacklight_config.view_config(document_index_view_type).thumbnail_field)
207
+ index_presenter(document).thumbnail.exists?
197
208
  end
209
+ deprecation_deprecate has_thumbnail?: "use IndexPresenter#thumbnail.exists?"
198
210
 
199
211
  ##
200
212
  # Render the thumbnail, if available, for a document and
201
213
  # link it to the document record.
202
- #
214
+ #
203
215
  # @param [SolrDocument] document
204
216
  # @param [Hash] image_options to pass to the image tag
205
217
  # @param [Hash] url_options to pass to #link_to_document
206
218
  # @return [String]
207
219
  def render_thumbnail_tag document, image_options = {}, url_options = {}
208
- value = if blacklight_config.view_config(document_index_view_type).thumbnail_method
209
- send(blacklight_config.view_config(document_index_view_type).thumbnail_method, document, image_options)
210
- elsif blacklight_config.view_config(document_index_view_type).thumbnail_field
211
- url = thumbnail_url(document)
212
-
213
- image_tag url, image_options if url.present?
214
- end
215
-
216
- if value
217
- if url_options == false
218
- Deprecation.warn(self, "passing false as the second argument to render_thumbnail_tag is deprecated. Use suppress_link: true instead. This behavior will be removed in Blacklight 7")
219
- url_options = { suppress_link: true }
220
- end
221
- if url_options[:suppress_link]
222
- value
223
- else
224
- link_to_document document, value, url_options
225
- end
226
- end
220
+ index_presenter(document).thumbnail.thumbnail_tag(image_options, url_options)
227
221
  end
222
+ deprecation_deprecate render_thumbnail_tag: "Use IndexPresenter#thumbnail.thumbnail_tag"
228
223
 
229
224
  ##
230
225
  # Get the URL to a document's thumbnail image
231
- #
226
+ #
232
227
  # @param [SolrDocument] document
233
228
  # @return [String]
234
229
  def thumbnail_url document
@@ -236,14 +231,15 @@ module Blacklight::CatalogHelperBehavior
236
231
  document.first(blacklight_config.view_config(document_index_view_type).thumbnail_field)
237
232
  end
238
233
  end
234
+ deprecation_deprecate thumbnail_url: "this method will be removed without replacement"
239
235
 
240
236
  ##
241
237
  # Render the view type icon for the results view picker
242
- #
238
+ #
243
239
  # @param [String] view
244
240
  # @return [String]
245
241
  def render_view_type_group_icon view
246
- content_tag :span, '', class: "glyphicon #{blacklight_config.view[view].icon_class || default_view_type_group_icon_classes(view)}"
242
+ blacklight_icon(view)
247
243
  end
248
244
 
249
245
  ##
@@ -252,28 +248,38 @@ module Blacklight::CatalogHelperBehavior
252
248
  # @param [String] view
253
249
  # @return [String]
254
250
  def default_view_type_group_icon_classes view
251
+ Deprecation.warn(Blacklight::CatalogHelperBehavior, 'This method has been deprecated, use blacklight_icons helper instead')
255
252
  "glyphicon-#{view.to_s.parameterize} view-icon-#{view.to_s.parameterize}"
256
253
  end
257
-
258
- def current_bookmarks response = nil
259
- response ||= @response
260
- @current_bookmarks ||= current_or_guest_user.bookmarks_for_documents(response.documents).to_a
254
+
255
+ def current_bookmarks documents_or_response = nil
256
+ documents = if documents_or_response.respond_to? :documents
257
+ Deprecation.warn(Blacklight::CatalogHelperBehavior, "Passing a response to #current_bookmarks is deprecated; pass response.documents instead")
258
+ documents_or_response.documents
259
+ else
260
+ documents_or_response
261
+ end
262
+
263
+ documents ||= [@document] if @document.present?
264
+ documents ||= @response.documents
265
+
266
+ @current_bookmarks ||= current_or_guest_user.bookmarks_for_documents(documents).to_a
261
267
  end
262
268
 
263
269
  ##
264
270
  # Check if the document is in the user's bookmarks
265
271
  def bookmarked? document
266
- current_bookmarks.any? { |x| x.document_id == document.id and x.document_type == document.class }
272
+ current_bookmarks.any? { |x| x.document_id == document.id && x.document_type == document.class }
267
273
  end
268
274
 
269
275
  def render_search_to_page_title_filter(facet, values)
270
276
  facet_config = facet_configuration_for_field(facet)
271
277
  filter_label = facet_field_label(facet_config.key)
272
278
  filter_value = if values.size < 3
273
- values.map {|value| facet_display_value(facet, value)}.to_sentence
274
- else
275
- t('blacklight.search.page_title.many_constraint_values', values: values.size)
276
- end
279
+ values.map { |value| facet_display_value(facet, value) }.to_sentence
280
+ else
281
+ t('blacklight.search.page_title.many_constraint_values', values: values.size)
282
+ end
277
283
  t('blacklight.search.page_title.constraint', label: filter_label, value: filter_value)
278
284
  end
279
285
 
@@ -299,11 +305,11 @@ module Blacklight::CatalogHelperBehavior
299
305
 
300
306
  private
301
307
 
302
- # @param [String] format
303
- # @param [Hash] options
304
- # @option options :route_set the route scope to use when constructing the link
305
- def feed_link_url(format, options = {})
306
- scope = options.delete(:route_set) || self
307
- scope.url_for search_state.to_h.merge(format: format)
308
- end
308
+ # @param [String] format
309
+ # @param [Hash] options
310
+ # @option options :route_set the route scope to use when constructing the link
311
+ def feed_link_url(format, options = {})
312
+ scope = options.delete(:route_set) || self
313
+ scope.url_for search_state.to_h.merge(format: format)
314
+ end
309
315
  end