blacklight 6.24.0 → 7.0.0.rc1

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 (393) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +15 -3
  5. data/.rubocop_todo.yml +242 -379
  6. data/.solr_wrapper.yml +1 -1
  7. data/.travis.yml +20 -24
  8. data/Gemfile +1 -4
  9. data/README.md +21 -4
  10. data/Rakefile +1 -2
  11. data/VERSION +1 -1
  12. data/app/assets/images/blacklight/list.svg +1 -0
  13. data/app/assets/images/blacklight/search.svg +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +496 -56
  15. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  16. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
  17. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  18. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  19. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  20. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  21. data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
  22. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  23. data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
  24. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  25. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  26. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  27. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  28. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  29. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  30. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  31. data/app/builders/blacklight/action_builder.rb +56 -0
  32. data/app/controllers/bookmarks_controller.rb +2 -2
  33. data/app/controllers/catalog_controller.rb +2 -2
  34. data/app/controllers/concerns/blacklight/base.rb +0 -33
  35. data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
  36. data/app/controllers/concerns/blacklight/catalog.rb +254 -213
  37. data/app/controllers/concerns/blacklight/controller.rb +117 -133
  38. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  39. data/app/controllers/concerns/blacklight/search_context.rb +10 -14
  40. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  41. data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
  42. data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
  43. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  44. data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
  45. data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
  46. data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
  47. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  48. data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
  49. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
  50. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
  51. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  52. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
  53. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  54. data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
  55. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  56. data/app/javascript/blacklight/autofocus.js +20 -0
  57. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  58. data/app/javascript/blacklight/checkbox_submit.js +133 -0
  59. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  60. data/app/javascript/blacklight/core.js +39 -0
  61. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  62. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
  63. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
  64. data/app/models/blacklight/facet_paginator.rb +3 -3
  65. data/app/models/blacklight/icon.rb +53 -0
  66. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  67. data/app/models/blacklight/suggest_search.rb +15 -4
  68. data/app/models/bookmark.rb +4 -9
  69. data/app/models/concerns/blacklight/configurable.rb +13 -13
  70. data/app/models/concerns/blacklight/document.rb +8 -42
  71. data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
  72. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  73. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  74. data/app/models/concerns/blacklight/document/email.rb +1 -1
  75. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  76. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  77. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  78. data/app/models/concerns/blacklight/solr/document.rb +7 -8
  79. data/app/models/concerns/blacklight/suggest/response.rb +3 -5
  80. data/app/models/concerns/blacklight/user.rb +6 -6
  81. data/app/models/record_mailer.rb +5 -6
  82. data/app/models/search.rb +4 -7
  83. data/app/presenters/blacklight/field_presenter.rb +5 -5
  84. data/app/presenters/blacklight/index_presenter.rb +34 -71
  85. data/app/presenters/blacklight/json_presenter.rb +7 -4
  86. data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
  87. data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
  88. data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
  89. data/app/presenters/blacklight/rendering/join.rb +3 -3
  90. data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
  91. data/app/presenters/blacklight/rendering/microdata.rb +3 -3
  92. data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
  93. data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
  94. data/app/presenters/blacklight/show_presenter.rb +20 -69
  95. data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
  96. data/app/services/blacklight/document_factory.rb +11 -0
  97. data/app/services/blacklight/field_retriever.rb +24 -24
  98. data/app/services/blacklight/search_service.rb +154 -0
  99. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  100. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  101. data/app/views/bookmarks/_tools.html.erb +2 -2
  102. data/app/views/bookmarks/index.html.erb +2 -2
  103. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  104. data/app/views/catalog/_citation.html.erb +18 -23
  105. data/app/views/catalog/_constraints.html.erb +5 -8
  106. data/app/views/catalog/_constraints_element.html.erb +6 -6
  107. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
  108. data/app/views/catalog/_document.html.erb +5 -3
  109. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
  110. data/app/views/catalog/_document_action.html.erb +2 -1
  111. data/app/views/catalog/_email_form.html.erb +8 -4
  112. data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
  113. data/app/views/catalog/_facet_layout.html.erb +5 -7
  114. data/app/views/catalog/_facet_limit.html.erb +3 -2
  115. data/app/views/catalog/_facet_pagination.html.erb +10 -10
  116. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  117. data/app/views/catalog/_facets.html.erb +8 -12
  118. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
  119. data/app/views/catalog/_home_text.html.erb +32 -36
  120. data/app/views/catalog/_index.html.erb +12 -0
  121. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
  122. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  123. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  124. data/app/views/catalog/_search_form.html.erb +12 -8
  125. data/app/views/catalog/_search_header.html.erb +0 -3
  126. data/app/views/catalog/_search_results.html.erb +4 -0
  127. data/app/views/catalog/_show.html.erb +10 -0
  128. data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  129. data/app/views/catalog/_show_main_content.html.erb +4 -4
  130. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  131. data/app/views/catalog/_show_tools.html.erb +9 -11
  132. data/app/views/catalog/_sms_form.html.erb +8 -4
  133. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  134. data/app/views/catalog/_sort_widget.html.erb +7 -7
  135. data/app/views/catalog/_thumbnail.html.erb +5 -0
  136. data/app/views/catalog/_view_type_group.html.erb +2 -2
  137. data/app/views/catalog/citation.html.erb +1 -1
  138. data/app/views/catalog/citation.js.erb +9 -1
  139. data/app/views/catalog/email.html.erb +5 -5
  140. data/app/views/catalog/email_success.html.erb +11 -9
  141. data/app/views/catalog/facet.html.erb +5 -6
  142. data/app/views/catalog/index.atom.builder +10 -15
  143. data/app/views/catalog/index.html.erb +9 -11
  144. data/app/views/catalog/index.json.jbuilder +65 -3
  145. data/app/views/catalog/index.rss.builder +5 -5
  146. data/app/views/catalog/opensearch.xml.builder +10 -10
  147. data/app/views/catalog/show.html.erb +11 -6
  148. data/app/views/catalog/sms.html.erb +2 -3
  149. data/app/views/catalog/sms_success.html.erb +11 -10
  150. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  151. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  152. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  153. data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
  154. data/app/views/kaminari/blacklight/_page.html.erb +3 -3
  155. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  156. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  157. data/app/views/layouts/blacklight.html.erb +14 -41
  158. data/app/views/layouts/blacklight/base.html.erb +43 -0
  159. data/app/views/layouts/catalog_result.html.erb +11 -0
  160. data/app/views/search_history/index.html.erb +16 -21
  161. data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  162. data/app/views/shared/_header_navbar.html.erb +8 -13
  163. data/app/views/shared/_modal.html.erb +6 -0
  164. data/app/views/shared/_user_util_links.html.erb +22 -0
  165. data/blacklight.gemspec +10 -11
  166. data/config/locales/blacklight.de.yml +0 -30
  167. data/config/locales/blacklight.en.yml +1 -27
  168. data/config/locales/blacklight.es.yml +0 -30
  169. data/config/locales/blacklight.fr.yml +0 -30
  170. data/config/locales/blacklight.hu.yml +210 -0
  171. data/config/locales/blacklight.it.yml +0 -30
  172. data/config/locales/blacklight.nl.yml +210 -0
  173. data/config/locales/blacklight.pt-BR.yml +6 -32
  174. data/config/locales/blacklight.sq.yml +1 -28
  175. data/config/locales/blacklight.zh.yml +0 -25
  176. data/config/routes.rb +3 -10
  177. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  178. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  179. data/lib/blacklight.rb +4 -5
  180. data/lib/blacklight/abstract_repository.rb +9 -21
  181. data/lib/blacklight/configuration.rb +82 -89
  182. data/lib/blacklight/configuration/context.rb +1 -1
  183. data/lib/blacklight/configuration/facet_field.rb +16 -9
  184. data/lib/blacklight/configuration/field.rb +32 -3
  185. data/lib/blacklight/configuration/fields.rb +41 -48
  186. data/lib/blacklight/configuration/search_field.rb +2 -2
  187. data/lib/blacklight/configuration/sort_field.rb +2 -2
  188. data/lib/blacklight/configuration/view_config.rb +4 -0
  189. data/lib/blacklight/engine.rb +6 -10
  190. data/lib/blacklight/exceptions.rb +4 -7
  191. data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
  192. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  193. data/lib/blacklight/parameters.rb +1 -1
  194. data/lib/blacklight/routes/searchable.rb +1 -0
  195. data/lib/blacklight/search_builder.rb +26 -35
  196. data/lib/blacklight/search_state.rb +8 -8
  197. data/lib/blacklight/solr/repository.rb +3 -36
  198. data/lib/blacklight/solr/request.rb +1 -1
  199. data/lib/blacklight/solr/response.rb +29 -30
  200. data/lib/blacklight/solr/response/facets.rb +29 -31
  201. data/lib/blacklight/solr/response/group.rb +3 -3
  202. data/lib/blacklight/solr/response/group_response.rb +1 -1
  203. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  204. data/lib/blacklight/solr/response/response.rb +2 -2
  205. data/lib/blacklight/solr/response/spelling.rb +3 -3
  206. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  207. data/lib/blacklight/version.rb +1 -1
  208. data/lib/generators/blacklight/assets_generator.rb +8 -8
  209. data/lib/generators/blacklight/controller_generator.rb +4 -5
  210. data/lib/generators/blacklight/document_generator.rb +1 -1
  211. data/lib/generators/blacklight/install_generator.rb +18 -21
  212. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  213. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
  214. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  215. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  216. data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
  217. data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  218. data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  219. data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  220. data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  221. data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  222. data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
  223. data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  224. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  225. data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  226. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  227. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  228. data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  229. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  230. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  231. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  232. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
  233. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  234. data/lib/generators/blacklight/user_generator.rb +3 -6
  235. data/lib/railties/blacklight.rake +19 -14
  236. data/package-lock.json +2057 -0
  237. data/package.json +28 -0
  238. data/spec/controllers/alternate_controller_spec.rb +1 -1
  239. data/spec/controllers/application_controller_spec.rb +1 -1
  240. data/spec/controllers/blacklight/base_spec.rb +1 -1
  241. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  242. data/spec/controllers/blacklight/facet_spec.rb +1 -1
  243. data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
  244. data/spec/controllers/bookmarks_controller_spec.rb +1 -36
  245. data/spec/controllers/catalog_controller_spec.rb +153 -53
  246. data/spec/controllers/search_history_controller_spec.rb +2 -2
  247. data/spec/features/alternate_controller_spec.rb +1 -1
  248. data/spec/features/autocomplete_spec.rb +2 -2
  249. data/spec/features/bookmarks_spec.rb +10 -10
  250. data/spec/features/did_you_mean_spec.rb +3 -9
  251. data/spec/features/facets_spec.rb +11 -11
  252. data/spec/features/record_view_spec.rb +1 -6
  253. data/spec/features/search_context_spec.rb +2 -2
  254. data/spec/features/search_filters_spec.rb +41 -41
  255. data/spec/features/search_formats_spec.rb +1 -1
  256. data/spec/features/search_history_spec.rb +1 -26
  257. data/spec/features/search_pagination_spec.rb +1 -1
  258. data/spec/features/search_results_spec.rb +3 -4
  259. data/spec/features/search_sort_spec.rb +2 -2
  260. data/spec/features/search_spec.rb +5 -10
  261. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  262. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
  263. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
  264. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
  265. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  266. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
  267. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
  268. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
  269. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
  270. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
  271. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
  272. data/spec/helpers/blacklight_helper_spec.rb +36 -141
  273. data/spec/helpers/catalog_helper_spec.rb +37 -56
  274. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
  275. data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
  276. data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
  277. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  278. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
  279. data/spec/lib/blacklight/parameters_spec.rb +1 -1
  280. data/spec/lib/blacklight/search_state_spec.rb +2 -2
  281. data/spec/lib/blacklight_spec.rb +1 -1
  282. data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
  283. data/spec/models/blacklight/configurable_spec.rb +15 -16
  284. data/spec/models/blacklight/configuration/context_spec.rb +1 -1
  285. data/spec/models/blacklight/configuration_spec.rb +146 -135
  286. data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
  287. data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
  288. data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
  289. data/spec/models/blacklight/document/email_spec.rb +3 -3
  290. data/spec/models/blacklight/document/sms_spec.rb +3 -3
  291. data/spec/models/blacklight/document_spec.rb +3 -16
  292. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  293. data/spec/models/blacklight/icon_spec.rb +34 -0
  294. data/spec/models/blacklight/search_builder_spec.rb +33 -27
  295. data/spec/models/blacklight/solr/document_spec.rb +18 -7
  296. data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
  297. data/spec/models/blacklight/solr/repository_spec.rb +32 -27
  298. data/spec/models/blacklight/solr/request_spec.rb +1 -1
  299. data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
  300. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
  301. data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
  302. data/spec/models/blacklight/solr/response_spec.rb +9 -6
  303. data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
  304. data/spec/models/blacklight/suggest/response_spec.rb +4 -5
  305. data/spec/models/blacklight/suggest_search_spec.rb +14 -7
  306. data/spec/models/blacklight/user_spec.rb +1 -1
  307. data/spec/models/bookmark_spec.rb +1 -1
  308. data/spec/models/record_mailer_spec.rb +2 -2
  309. data/spec/models/search_spec.rb +1 -1
  310. data/spec/models/solr_document_spec.rb +3 -3
  311. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
  312. data/spec/presenters/index_presenter_spec.rb +70 -143
  313. data/spec/presenters/pipeline_spec.rb +4 -4
  314. data/spec/presenters/show_presenter_spec.rb +83 -145
  315. data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
  316. data/spec/routing/catalog_routing_spec.rb +1 -17
  317. data/spec/services/blacklight/search_service_spec.rb +446 -0
  318. data/spec/spec_helper.rb +22 -9
  319. data/spec/test_app_templates/Gemfile.extra +2 -5
  320. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  321. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
  322. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
  323. data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
  324. data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
  325. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  326. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  327. data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
  328. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
  329. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
  330. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
  331. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  332. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
  333. data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
  334. data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
  335. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
  336. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
  337. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
  338. data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
  339. data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
  340. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  341. data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
  342. data/spec/views/catalog/index.html.erb_spec.rb +4 -7
  343. data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
  344. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  345. data/spec/views/catalog/show.html.erb_spec.rb +2 -2
  346. data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
  347. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
  348. data/tasks/blacklight.rake +10 -8
  349. data/template.demo.rb +1 -11
  350. metadata +171 -189
  351. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  352. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  353. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
  354. data/app/assets/javascripts/blacklight/core.js +0 -30
  355. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  356. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  357. data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
  358. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  359. data/app/controllers/saved_searches_controller.rb +0 -4
  360. data/app/controllers/suggest_controller.rb +0 -4
  361. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  362. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  363. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  364. data/app/helpers/blacklight_url_helper.rb +0 -4
  365. data/app/helpers/component_helper.rb +0 -4
  366. data/app/helpers/facets_helper.rb +0 -4
  367. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  368. data/app/helpers/layout_helper.rb +0 -4
  369. data/app/helpers/render_constraints_helper.rb +0 -4
  370. data/app/helpers/search_history_constraints_helper.rb +0 -4
  371. data/app/helpers/suggest_helper.rb +0 -4
  372. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  373. data/app/presenters/blacklight/document_presenter.rb +0 -153
  374. data/app/views/_user_util_links.html.erb +0 -26
  375. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  376. data/app/views/catalog/_index_default.html.erb +0 -12
  377. data/app/views/catalog/_show_default.html.erb +0 -10
  378. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  379. data/app/views/saved_searches/index.html.erb +0 -32
  380. data/app/views/shared/_ajax_modal.html.erb +0 -6
  381. data/lib/blacklight/utils.rb +0 -183
  382. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  383. data/solr/conf/schema.xml +0 -627
  384. data/solr/conf/solrconfig.xml +0 -411
  385. data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
  386. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  387. data/spec/controllers/suggest_controller_spec.rb +0 -17
  388. data/spec/features/saved_searches_spec.rb +0 -47
  389. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  390. data/spec/lib/blacklight/utils_spec.rb +0 -167
  391. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  392. data/spec/presenters/document_presenter_spec.rb +0 -438
  393. data/spec/support/backport_test.rb +0 -14
@@ -7,7 +7,7 @@
7
7
  #
8
8
  # = Search Field blacklight_configuration Hash =
9
9
  # [:key]
10
- # "title", required, unique key used in search URLs to specify search_field
10
+ # "title", required, unique key used in search URLs to specify search_field
11
11
  # [:label]
12
12
  # "Title", # user-displayable label, optional, if not supplied :key.titlecase will be used
13
13
  # [:qt]
@@ -18,30 +18,20 @@
18
18
  # { :qf => "$something" } # optional hash of additional parameters that will be passed using Solr LocalParams syntax, that can use dollar sign to reference other solr variables.
19
19
  # [:include_in_simple_select]
20
20
  # false. Defaults to true, but you can set to false to have a search field defined for deep-links or BL extensions, but not actually included in the HTML select for simple search choice.
21
- #
21
+ #
22
22
  # Optionally you can supply a :key, which is what Blacklight will use
23
23
  # to identify this search field in HTTP query params. If no :key is
24
24
  # supplied, one will be computed from the :label. If that will
25
- # result in a collision of keys, you should supply one explicitly.
25
+ # result in a collision of keys, you should supply one explicitly.
26
26
  #
27
27
  ##
28
28
  module Blacklight::SearchFields
29
- extend Deprecation
30
- self.deprecation_horizon = 'blacklight 7.x'
31
-
32
29
  # Looks up search field config list from blacklight_config[:search_fields], and
33
- # 'normalizes' all field config hashes using normalize_config method.
30
+ # 'normalizes' all field config hashes using normalize_config method.
34
31
  def search_field_list
35
32
  blacklight_config.search_fields.values
36
33
  end
37
34
 
38
- # Looks up a search field blacklight_config hash from search_field_list having
39
- # a certain supplied :key.
40
- def search_field_def_for_key(key)
41
- blacklight_config.search_fields[key]
42
- end
43
- deprecation_deprecate search_field_def_for_key: "Use blacklight_config.search_fields[key]"
44
-
45
35
  # Returns default search field, used for simpler display in history, etc.
46
36
  # if not set in blacklight_config, defaults to first field listed in #search_field_list
47
37
  def default_search_field
@@ -3,16 +3,14 @@ module Blacklight::TokenBasedUser
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- if respond_to? :helper_method
7
- helper_method :encrypt_user_id
8
- end
6
+ helper_method :encrypt_user_id
9
7
 
10
8
  rescue_from Blacklight::Exceptions::ExpiredSessionToken do
11
9
  head :unauthorized
12
10
  end
13
11
  end
14
12
 
15
- protected
13
+ private
16
14
 
17
15
  def token_or_current_or_guest_user
18
16
  token_user || current_or_guest_user
@@ -20,9 +18,9 @@ module Blacklight::TokenBasedUser
20
18
 
21
19
  def token_user
22
20
  @token_user ||= if params[:encrypted_user_id]
23
- user_id = decrypt_user_id params[:encrypted_user_id]
24
- User.find(user_id)
25
- end
21
+ user_id = decrypt_user_id params[:encrypted_user_id]
22
+ User.find(user_id)
23
+ end
26
24
  end
27
25
 
28
26
  # Used for #export action, with encrypted user_id.
@@ -66,14 +64,12 @@ module Blacklight::TokenBasedUser
66
64
  ActiveSupport::MessageEncryptor.new(export_secret_token)
67
65
  end
68
66
 
69
- private
70
-
71
67
  # Ruby 2.4 requires keys of very particular lengths
72
68
  def key_len
73
69
  if ActiveSupport::MessageEncryptor.respond_to? :key_len
74
70
  ActiveSupport::MessageEncryptor.key_len
75
71
  else
76
- 0
72
+ 0
77
73
  end
78
74
  end
79
75
  end
@@ -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,7 +40,7 @@ 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?
49
45
  presenter(document).link_rel_alternates(options)
50
46
  end
@@ -53,7 +49,7 @@ module Blacklight::BlacklightHelperBehavior
53
49
  # Render OpenSearch headers for this search
54
50
  # @return [String]
55
51
  def render_opensearch_response_metadata
56
- render :partial => 'catalog/opensearch_response_metadata'
52
+ render partial: 'catalog/opensearch_response_metadata'
57
53
  end
58
54
 
59
55
  ##
@@ -75,7 +71,11 @@ module Blacklight::BlacklightHelperBehavior
75
71
  # Render the search navbar
76
72
  # @return [String]
77
73
  def render_search_bar
78
- render :partial=>'catalog/search_form'
74
+ search_bar_presenter.render
75
+ end
76
+
77
+ def search_bar_presenter
78
+ @search_bar ||= search_bar_presenter_class.new(controller, blacklight_config)
79
79
  end
80
80
 
81
81
  ##
@@ -116,6 +116,7 @@ module Blacklight::BlacklightHelperBehavior
116
116
  # @param [Blacklight::Solr::Response] response
117
117
  # @return [Boolean]
118
118
  def should_show_spellcheck_suggestions? response
119
+ # The spelling response field may be missing from non solr repositories.
119
120
  response.total <= spell_check_max &&
120
121
  !response.spelling.nil? &&
121
122
  response.spelling.words.any?
@@ -124,6 +125,9 @@ module Blacklight::BlacklightHelperBehavior
124
125
  ##
125
126
  # Render the index field label for a document
126
127
  #
128
+ # Translations for index field labels should go under blacklight.search.fields
129
+ # They are picked up from there by a value "%{label}" in blacklight.search.index.label
130
+ #
127
131
  # @overload render_index_field_label(options)
128
132
  # Use the default, document-agnostic configuration
129
133
  # @param [Hash] opts
@@ -142,45 +146,6 @@ module Blacklight::BlacklightHelperBehavior
142
146
  html_escape t(:"blacklight.search.index.#{document_index_view_type}.label", default: :'blacklight.search.index.label', label: index_field_label(document, field))
143
147
  end
144
148
 
145
- ##
146
- # Render the index field label for a document
147
- #
148
- # @overload render_index_field_value(options)
149
- # Use the default, document-agnostic configuration
150
- # @param [Hash] opts
151
- # @option opts [String] :field
152
- # @option opts [String] :value
153
- # @option opts [String] :document
154
- # @overload render_index_field_value(document, options)
155
- # Allow an extention point where information in the document
156
- # may drive the value of the field
157
- # @param [SolrDocument] doc
158
- # @param [Hash] opts
159
- # @option opts [String] :field
160
- # @option opts [String] :value
161
- # @overload render_index_field_value(document, field, options)
162
- # Allow an extention point where information in the document
163
- # may drive the value of the field
164
- # @param [SolrDocument] doc
165
- # @param [String] field
166
- # @param [Hash] opts
167
- # @option opts [String] :value
168
- # @deprecated use IndexPresenter#field_value
169
- def render_index_field_value *args
170
- render_field_value(*args)
171
- end
172
- deprecation_deprecate render_index_field_value: 'replaced by IndexPresenter#field_value'
173
-
174
- # @deprecated use IndexPresenter#field_value
175
- def render_field_value(*args)
176
- options = args.extract_options!
177
- document = args.shift || options[:document]
178
-
179
- field = args.shift || options[:field]
180
- presenter(document).field_value field, options.except(:document, :field)
181
- end
182
- deprecation_deprecate render_field_value: 'replaced by IndexPresenter#field_value'
183
-
184
149
  ##
185
150
  # Render the show field label for a document
186
151
  #
@@ -203,42 +168,13 @@ module Blacklight::BlacklightHelperBehavior
203
168
  t(:'blacklight.search.show.label', label: document_show_field_label(document, field))
204
169
  end
205
170
 
206
- ##
207
- # Render the index field label for a document
208
- #
209
- # @overload render_document_show_field_value(options)
210
- # Use the default, document-agnostic configuration
211
- # @param [Hash] opts
212
- # @option opts [String] :field
213
- # @option opts [String] :value
214
- # @option opts [String] :document
215
- # @overload render_document_show_field_value(document, options)
216
- # Allow an extention point where information in the document
217
- # may drive the value of the field
218
- # @param [SolrDocument] doc
219
- # @param [Hash] opts
220
- # @option opts [String] :field
221
- # @option opts [String] :value
222
- # @overload render_document_show_field_value(document, field, options)
223
- # Allow an extention point where information in the document
224
- # may drive the value of the field
225
- # @param [SolrDocument] doc
226
- # @param [String] field
227
- # @param [Hash] opts
228
- # @option opts [String] :value
229
- # @deprecated use ShowPresenter#field_value
230
- def render_document_show_field_value *args
231
- render_field_value(*args)
232
- end
233
- deprecation_deprecate render_document_show_field_value: 'replaced by ShowPresenter#field_value'
234
-
235
171
  ##
236
172
  # Get the value of the document's "title" field, or a placeholder
237
173
  # value (if empty)
238
174
  #
239
175
  # @param [SolrDocument] document
240
176
  # @return [String]
241
- def document_heading document=nil
177
+ def document_heading document = nil
242
178
  document ||= @document
243
179
  presenter(document).heading
244
180
  end
@@ -250,7 +186,7 @@ module Blacklight::BlacklightHelperBehavior
250
186
  # @see #document_heading
251
187
  # @param [SolrDocument] document
252
188
  # @return [String]
253
- def document_show_html_title document=nil
189
+ def document_show_html_title document = nil
254
190
  document ||= @document
255
191
 
256
192
  presenter(document).html_title
@@ -274,33 +210,15 @@ module Blacklight::BlacklightHelperBehavior
274
210
  content_tag(tag, presenter(document).heading, itemprop: "name")
275
211
  end
276
212
 
277
- ##
278
- # Get the value for a document's field, and prepare to render it.
279
- # - highlight_field
280
- # - accessor
281
- # - solr field
282
- #
283
- # Rendering:
284
- # - helper_method
285
- # - link_to_search
286
- # @param [SolrDocument] document
287
- # @param [String] _field name
288
- # @param [Blacklight::Configuration::Field] field_config solr field configuration
289
- # @param [Hash] options additional options to pass to the rendering helpers
290
- def get_field_values document, _field, field_config, options = {}
291
- presenter(document).field_values field_config, options
292
- end
293
- deprecation_deprecate :get_field_values
294
-
295
213
  ##
296
214
  # Get the current "view type" (and ensure it is a valid type)
297
215
  #
298
216
  # @param [Hash] query_params the query parameters to check
299
217
  # @return [Symbol]
300
- def document_index_view_type query_params=params
218
+ def document_index_view_type query_params = params
301
219
  view_param = query_params[:view]
302
220
  view_param ||= session[:preferred_view]
303
- if view_param and document_index_views.keys.include? view_param.to_sym
221
+ if view_param && document_index_views.keys.include?(view_param.to_sym)
304
222
  view_param.to_sym
305
223
  else
306
224
  default_document_index_view_type
@@ -316,7 +234,7 @@ module Blacklight::BlacklightHelperBehavior
316
234
  #
317
235
  # @param [String] format suffix
318
236
  # @yield
319
- def with_format(format, &block)
237
+ def with_format(format)
320
238
  old_formats = formats
321
239
  self.formats = [format]
322
240
  yield
@@ -340,9 +258,6 @@ module Blacklight::BlacklightHelperBehavior
340
258
  show_presenter(document)
341
259
  when 'index'
342
260
  index_presenter(document)
343
- else
344
- Deprecation.warn(Blacklight::BlacklightHelperBehavior, "Unable to determine presenter type for #{action_name} on #{controller_name}, falling back on deprecated Blacklight::DocumentPresenter")
345
- presenter_class.new(document, self)
346
261
  end
347
262
  end
348
263
 
@@ -354,11 +269,6 @@ module Blacklight::BlacklightHelperBehavior
354
269
  index_presenter_class(document).new(document, self)
355
270
  end
356
271
 
357
- def presenter_class
358
- blacklight_config.document_presenter_class
359
- end
360
- deprecation_deprecate presenter_class: "replaced by show_presenter_class and index_presenter_class"
361
-
362
272
  ##
363
273
  # Override this method if you want to use a different presenter class
364
274
  def show_presenter_class(_document)
@@ -369,6 +279,10 @@ module Blacklight::BlacklightHelperBehavior
369
279
  blacklight_config.index.document_presenter_class
370
280
  end
371
281
 
282
+ def search_bar_presenter_class
283
+ blacklight_config.index.search_bar_presenter_class
284
+ end
285
+
372
286
  ##
373
287
  # Open Search discovery tag for HTML <head> links
374
288
  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