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
@@ -24,8 +24,8 @@ module Blacklight::Document::Extensions
24
24
  # Needs to be called in initializer of class including this module, to
25
25
  # apply all registered extensions on a per-document basis
26
26
  def apply_extensions
27
- self.class.registered_extensions.each do | registration|
28
- self.extend( registration[:module_obj] ) if registration[:condition_proc].nil? || registration[:condition_proc].call( self )
27
+ self.class.registered_extensions.each do |registration|
28
+ extend(registration[:module_obj]) if registration[:condition_proc].nil? || registration[:condition_proc].call(self)
29
29
  end
30
30
  end
31
31
 
@@ -43,15 +43,15 @@ module Blacklight::Document::Extensions
43
43
  end
44
44
 
45
45
  # Register an extension module with the class. A block taking one
46
- # parameter can be supplied; the block will be passed an instance of
46
+ # parameter can be supplied; the block will be passed an instance of
47
47
  # a Document, and the extension will be applied only if the block
48
48
  # evaluates as true. If no condition is given, the extension will
49
49
  # be applied to every instance of the class.
50
50
  #
51
51
  # SolrDocument.use_extension( SomeExtensionModule ) { | document | should_apply_some_extension?(document) }
52
52
  # SolrDocument.use_extension( SomeExtensionModule) # will be applied to all docs
53
- def use_extension( module_obj, &condition )
54
- registered_extensions << {module_obj: module_obj, condition_proc: condition}
53
+ def use_extension(module_obj, &condition)
54
+ registered_extensions << { module_obj: module_obj, condition_proc: condition }
55
55
  end
56
56
  end
57
57
  end
@@ -7,7 +7,7 @@ module Blacklight::Document
7
7
  # Returns array of hashes of registered extensions. Each hash
8
8
  # has a :module_obj key and a :condition_proc key. Usually this
9
9
  # method is only used internally in #apply_extensions, but if you
10
-
10
+
11
11
  # Class-level method for accessing/setting semantic mappings
12
12
  # for solr stored fields. Can be set by local app, key is
13
13
  # a symbol for a semantic, value is a solr _stored_ field.
@@ -17,22 +17,22 @@ module Blacklight::Document
17
17
  #
18
18
  # Currently documented semantic tokens, not all may be
19
19
  # used by core BL, but some may be used by plugins present
20
- # or future.
21
- # :title, :author, :year, :language => User-presentable strings.
20
+ # or future.
21
+ # :title, :author, :year, :language => User-presentable strings.
22
22
  def field_semantics
23
23
  @field_semantics ||= {}
24
- end
24
+ end
25
25
  end
26
-
26
+
27
27
  # Returns a hash keyed by semantic tokens, value is an array of
28
28
  # strings. (Array to handle multi-value fields). If no value(s)
29
- # available, empty array is returned.
29
+ # available, empty array is returned.
30
30
  #
31
31
  # Default implementation here uses field_semantics
32
- # to just take values from Solr stored fields.
32
+ # to just take values from Solr stored fields.
33
33
  # Extensions can over-ride this method to provide better/different lookup,
34
34
  # but extensions should call super and modify hash returned, to avoid
35
- # unintentionally erasing values provided by other extensions.
35
+ # unintentionally erasing values provided by other extensions.
36
36
  def to_semantic_values
37
37
  @semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new([])) do |(key, field_names), hash|
38
38
  ##
@@ -45,6 +45,6 @@ module Blacklight::Document
45
45
  end
46
46
 
47
47
  @semantic_value_hash ||= {}
48
- end
48
+ end
49
49
  end
50
50
  end
@@ -3,7 +3,7 @@
3
3
  module Blacklight::Document::Sms
4
4
  # Return a text string that will be the body of the email
5
5
  def to_sms_text
6
- semantics = self.to_semantic_values
6
+ semantics = to_semantic_values
7
7
  body = []
8
8
  body << I18n.t('blacklight.sms.text.title', value: semantics[:title].first) unless semantics[:title].blank?
9
9
  body << I18n.t('blacklight.sms.text.author', value: semantics[:author].first) unless semantics[:author].blank?
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
- ##
2
+
3
+ require 'globalid'
4
+
3
5
  ##
4
6
  # = Introduction
5
7
  # Blacklight::Document is the module with logic for a class representing
@@ -14,9 +16,6 @@
14
16
  # transformation formats.
15
17
  #
16
18
  module Blacklight::Document
17
- extend Deprecation
18
- self.deprecation_horizon = 'blacklight 7.0'
19
-
20
19
  autoload :ActiveModelShim, 'blacklight/document/active_model_shim'
21
20
  autoload :SchemaOrg, 'blacklight/document/schema_org'
22
21
  autoload :CacheKey, 'blacklight/document/cache_key'
@@ -41,36 +40,13 @@ module Blacklight::Document
41
40
 
42
41
  attr_reader :response, :_source
43
42
  alias_method :solr_response, :response
44
- delegate :[], :key?, :keys, :to_h, to: :_source
45
-
46
- def initialize(source_doc={}, response=nil)
47
- @_source = if source_doc.respond_to?(:to_hash)
48
- ActiveSupport::HashWithIndifferentAccess.new(source_doc)
49
- else
50
- Deprecation.warn(Blacklight::Document, "Blacklight::Document#initialize expects a hash-like object, received #{source_doc.class}.")
51
- ActiveSupport::HashWithIndifferentAccess.new(source_doc.to_h)
52
- end
53
- @response = response
54
- apply_extensions
55
- end
56
43
 
57
- # the wrapper method to the @_source object.
58
- # If a method is missing, it gets sent to @_source
59
- # with all of the original params and block
60
- def method_missing(m, *args, &b)
61
- return super if m == :to_hash
44
+ delegate :[], :key?, :keys, :to_h, :as_json, to: :_source
62
45
 
63
- if _source_responds_to?(m)
64
- Deprecation.warn(Blacklight::Solr::Document, "Blacklight::Document##{m} is deprecated; use obj.to_h.#{m} instead.")
65
- _source.send(m, *args, &b)
66
- else
67
- super
68
- end
69
- end
70
-
71
- def respond_to_missing? m, *args
72
- return super if %i(empty? to_hash).include?(m)
73
- _source_responds_to?(m, *args) || super
46
+ def initialize(source_doc = {}, response = nil)
47
+ @_source = ActiveSupport::HashWithIndifferentAccess.new(source_doc).freeze
48
+ @response = response
49
+ apply_extensions
74
50
  end
75
51
 
76
52
  # Helper method to check if value/multi-values exist for a given key.
@@ -105,7 +81,7 @@ module Blacklight::Document
105
81
  def fetch key, *default
106
82
  if key? key
107
83
  self[key]
108
- elsif default.empty? and !block_given?
84
+ elsif default.empty? && !block_given?
109
85
  raise KeyError, "key not found \"#{key}\""
110
86
  else
111
87
  (yield(self) if block_given?) || default.first
@@ -120,11 +96,11 @@ module Blacklight::Document
120
96
  'catalog/document'
121
97
  end
122
98
 
123
- def has_highlight_field? k
99
+ def has_highlight_field? _k
124
100
  false
125
101
  end
126
102
 
127
- def highlight_field k
103
+ def highlight_field _k
128
104
  nil
129
105
  end
130
106
 
@@ -142,11 +118,21 @@ module Blacklight::Document
142
118
  def unique_key
143
119
  @unique_key ||= 'id'
144
120
  end
145
- end
146
-
147
- private
148
121
 
149
- def _source_responds_to? *args
150
- _source && self != _source && _source.respond_to?(*args)
122
+ # Define an attribute reader on a document model
123
+ # @Example
124
+ # class SolrDocument
125
+ # include Blacklight::Solr::Document
126
+ # attribute :title, Blacklight::Types::String, 'title_tesim'
127
+ # end
128
+ #
129
+ # doc = SolrDocument.new(title_tesim: ["One flew over the cuckoo's nest"])
130
+ # doc.title
131
+ # #=> "One flew over the cuckoo's nest"
132
+ def attribute(name, type, field)
133
+ define_method name do
134
+ type.coerce(self[field])
135
+ end
136
+ end
151
137
  end
152
138
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require 'rsolr'
3
2
  ##
4
3
  ##
5
4
  # = Introduction
@@ -16,20 +15,21 @@ require 'rsolr'
16
15
  #
17
16
 
18
17
  module Blacklight::Solr::Document
19
- autoload :MoreLikeThis, 'blacklight/solr/document/more_like_this'
20
-
21
18
  extend ActiveSupport::Concern
22
19
  include Blacklight::Document
23
20
  include Blacklight::Document::ActiveModelShim
24
- include Blacklight::Solr::Document::MoreLikeThis
21
+
22
+ def more_like_this
23
+ response.more_like(self).map { |doc| self.class.new(doc, response) }
24
+ end
25
25
 
26
26
  def has_highlight_field? k
27
- return false if response['highlighting'].blank? or response['highlighting'][self.id].blank?
28
-
29
- response['highlighting'][self.id].key? k.to_s
27
+ return false if response['highlighting'].blank? || response['highlighting'][id].blank?
28
+
29
+ response['highlighting'][id].key? k.to_s
30
30
  end
31
31
 
32
32
  def highlight_field k
33
- response['highlighting'][self.id][k.to_s].map(&:html_safe) if has_highlight_field? k
33
+ response['highlighting'][id][k.to_s].map(&:html_safe) if has_highlight_field? k
34
34
  end
35
35
  end
@@ -2,17 +2,19 @@
2
2
  module Blacklight
3
3
  module Suggest
4
4
  class Response
5
- attr_reader :response, :request_params, :suggest_path
5
+ attr_reader :response, :request_params, :suggest_path, :suggester_name
6
6
 
7
7
  ##
8
8
  # Creates a suggest response
9
9
  # @param [RSolr::HashWithResponse] response
10
10
  # @param [Hash] request_params
11
11
  # @param [String] suggest_path
12
- def initialize(response, request_params, suggest_path)
12
+ # @param [String] suggester_name
13
+ def initialize(response, request_params, suggest_path, suggester_name)
13
14
  @response = response
14
15
  @request_params = request_params
15
16
  @suggest_path = suggest_path
17
+ @suggester_name = suggester_name
16
18
  end
17
19
 
18
20
  ##
@@ -20,7 +22,7 @@ module Blacklight
20
22
  # present
21
23
  # @return [Array]
22
24
  def suggestions
23
- response.try(:[], suggest_path).try(:[], 'mySuggester').try(:[], request_params[:q]).try(:[], 'suggestions') || []
25
+ (response.try(:[], suggest_path).try(:[], suggester_name).try(:[], request_params[:q]).try(:[], 'suggestions') || []).uniq
24
26
  end
25
27
  end
26
28
  end
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::User
3
3
  # This gives us an is_blacklight_user method that can be included in
4
- # the containing applications models.
5
- # SEE ALSO: The /lib/blacklight/engine.rb class for how when this
4
+ # the containing applications models.
5
+ # SEE ALSO: The /lib/blacklight/engine.rb class for how when this
6
6
  # is injected into the hosting application through ActiveRecord::Base extend
7
7
  def self.included(base)
8
8
  return unless base.respond_to? :has_many
9
- base.send :has_many, :bookmarks, :dependent => :destroy, :as => :user
10
- base.send :has_many, :searches, :dependent => :destroy, :as => :user
9
+
10
+ base.send :has_many, :bookmarks, dependent: :destroy, as: :user
11
+ base.send :has_many, :searches, dependent: :destroy, as: :user
11
12
  end
12
13
 
13
14
  def bookmarks_for_documents documents = []
@@ -21,9 +22,9 @@ module Blacklight::User
21
22
  def document_is_bookmarked?(document)
22
23
  bookmarks_for_documents([document]).any?
23
24
  end
24
-
25
+
25
26
  # returns a Bookmark object if there is one for document_id, else
26
- # nil.
27
+ # nil.
27
28
  def existing_bookmark_for(document)
28
29
  bookmarks_for_documents([document]).first
29
30
  end
@@ -1,25 +1,24 @@
1
1
  # frozen_string_literal: true
2
- # Only works for documents with a #to_marc right now.
2
+ # Only works for documents with a #to_marc right now.
3
3
  class RecordMailer < ActionMailer::Base
4
4
  def email_record(documents, details, url_gen_params)
5
-
6
5
  title = begin
7
6
  documents.first.to_semantic_values[:title]
8
7
  rescue
9
8
  I18n.t('blacklight.email.text.default_title')
10
9
  end
11
- subject = I18n.t('blacklight.email.text.subject', :count => documents.length, :title => title )
10
+ subject = I18n.t('blacklight.email.text.subject', count: documents.length, title: title)
12
11
 
13
12
  @documents = documents
14
13
  @message = details[:message]
15
14
  @url_gen_params = url_gen_params
16
15
 
17
- mail(:to => details[:to], :subject => subject)
16
+ mail(to: details[:to], subject: subject)
18
17
  end
19
-
18
+
20
19
  def sms_record(documents, details, url_gen_params)
21
20
  @documents = documents
22
21
  @url_gen_params = url_gen_params
23
- mail(:to => details[:to], :subject => "")
22
+ mail(to: details[:to], subject: "")
24
23
  end
25
24
  end
data/app/models/search.rb CHANGED
@@ -1,22 +1,20 @@
1
1
  # frozen_string_literal: true
2
- class Search < ActiveRecord::Base
3
- belongs_to_arguments = { optional: true } if Rails.version >= '5.0.0'
4
2
 
5
- belongs_to :user, belongs_to_arguments
3
+ class Search < ApplicationRecord
4
+ belongs_to :user, optional: true
6
5
 
7
6
  serialize :query_params
8
7
 
9
- attr_accessible :query_params if Blacklight::Utils.needs_attr_accessible?
10
-
11
8
  # A Search instance is considered a saved search if it has a user_id.
12
9
  def saved?
13
- self.user_id?
10
+ user_id?
14
11
  end
15
12
 
16
13
  # delete old, unsaved searches
17
14
  def self.delete_old_searches(days_old)
18
15
  raise ArgumentError, 'days_old is expected to be a number' unless days_old.is_a?(Numeric)
19
16
  raise ArgumentError, 'days_old is expected to be greater than 0' if days_old <= 0
20
- self.where(['created_at < ? AND user_id IS NULL', Time.zone.today - days_old]).destroy_all
17
+
18
+ where(['created_at < ? AND user_id IS NULL', Time.zone.today - days_old]).destroy_all
21
19
  end
22
20
  end
@@ -1,153 +1,38 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Blacklight
3
- # @deprecated
4
+ # An abstract class that the view presenters for SolrDocuments descend from
4
5
  class DocumentPresenter
5
- extend Deprecation
6
- self.deprecation_horizon = 'Blacklight version 7.0.0'
7
-
8
- # @param [SolrDocument] document
9
- # @param [ActionController::Base] controller scope for linking and generating urls
10
- # @param [Blacklight::Configuration] configuration
11
- def initialize(document, controller, configuration = controller.blacklight_config)
12
- @document = document
13
- @configuration = configuration
14
- @controller = controller
15
- end
16
-
17
- ##
18
- # Get the value of the document's "title" field, or a placeholder
19
- # value (if empty)
20
- #
21
- # @return [String]
22
- # @deprecated use ShowPresenter#heading instead
23
- def document_heading
24
- show_presenter.heading
25
- end
26
- deprecation_deprecate document_heading: "use ShowPresenter#heading instead"
27
-
28
- ##
29
- # Create <link rel="alternate"> links from a documents dynamically
30
- # provided export formats. Returns empty string if no links available.
31
- #
32
- # @param [Hash] options
33
- # @option options [Boolean] :unique ensures only one link is output for every
34
- # content type, e.g. as required by atom
35
- # @option options [Array<String>] :exclude array of format shortnames to not include in the output
36
- # @deprecated moved to ShowPresenter#link_rel_alternates
37
- def link_rel_alternates(options = {})
38
- show_presenter.link_rel_alternates(options)
39
- end
40
- deprecation_deprecate link_rel_alternates: "use ShowPresenter#link_rel_alternates instead"
41
-
42
- ##
43
- # Get the document's "title" to display in the <title> element.
44
- # (by default, use the #document_heading)
45
- #
46
- # @see #document_heading
47
- # @return [String]
48
- # @deprecated use ShowPresenter#html_title instead
49
- def document_show_html_title
50
- show_presenter.html_title
51
- end
52
- deprecation_deprecate document_show_html_title: "use ShowPresenter#html_title instead"
53
-
54
- ##
55
- # Render the document index heading
56
- #
57
- # @overload render_document_index_label(field, opts)
58
- # @param [Symbol, Proc, String] field Render the given field or evaluate the proc or render the given string
59
- # @param [Hash] opts
60
- # @deprecated use IndexPresenter#label instead
61
- def render_document_index_label(*args)
62
- index_presenter.label(*args)
63
- end
64
- deprecation_deprecate render_document_index_label: "use IndexPresenter#label instead"
65
-
66
- ##
67
- # Render the index field label for a document
68
- #
69
- # Allow an extention point where information in the document
70
- # may drive the value of the field
71
- # @overload render_index_field_value(field, opts)
72
- # @param [String] field
73
- # @param [Hash] opts
74
- # @option opts [String] :value
75
- # @deprecated use IndexPresenter#field_value instead
76
- def render_index_field_value *args
77
- index_presenter.field_value(*args)
6
+ attr_reader :document, :configuration, :view_context
7
+
8
+ # @return [Hash<String,Configuration::Field>] all the fields for this index view that should be rendered
9
+ def fields_to_render
10
+ fields.select do |_name, field_config|
11
+ # rubocop:disable Style/PreferredHashMethods
12
+ render_field?(field_config) && has_value?(field_config)
13
+ # rubocop:enable Style/PreferredHashMethods
14
+ end
78
15
  end
79
- deprecation_deprecate render_index_field_value: "use IndexPresenter#field_value instead"
80
16
 
81
- ##
82
- # Render the show field value for a document
83
- #
84
- # Allow an extention point where information in the document
85
- # may drive the value of the field
86
- #
87
- # @overload render_index_field_value(field, options)
88
- # @param [String] field
89
- # @param [Hash] options
90
- # @option options [String] :value
91
- # @deprecated use ShowPresenter#field_value
92
- def render_document_show_field_value *args
93
- show_presenter.field_value(*args)
94
- end
95
- deprecation_deprecate render_document_show_field_value: "use ShowPresenter#field_value instead"
17
+ private
96
18
 
97
19
  ##
98
- # Get the value for a document's field, and prepare to render it.
99
- # - highlight_field
100
- # - accessor
101
- # - solr field
102
- #
103
- # Rendering:
104
- # - helper_method
105
- # - link_to_search
106
- # @param [String] _field name
107
- # @param [Blacklight::Configuration::Field] field_config solr field configuration
108
- # @param [Hash] options additional options to pass to the rendering helpers
109
- # @deprecated
110
- def get_field_values _field, field_config, options = {}
111
- field_values(field_config, options)
20
+ # Check to see if the given field should be rendered in this context
21
+ # @param [Blacklight::Configuration::Field] field_config
22
+ # @return [Boolean]
23
+ def render_field?(field_config)
24
+ view_context.should_render_field?(field_config, document)
112
25
  end
113
- deprecation_deprecate get_field_values: 'Use field_values instead'
114
26
 
115
27
  ##
116
- # Get the value for a document's field, and prepare to render it.
117
- # - highlight_field
118
- # - accessor
119
- # - solr field
120
- #
121
- # Rendering:
122
- # - helper_method
123
- # - link_to_search
124
- # @param [Blacklight::Configuration::Field] field_config solr field configuration
125
- # @param [Hash] options additional options to pass to the rendering helpers
126
- def field_values(field_config, options={})
127
- FieldPresenter.new(@controller, @document, field_config, options).render
128
- end
129
- deprecation_deprecate field_values: 'Use ShowPresenter or IndexPresenter field_values instead'
130
-
131
- # @deprecated
132
- def render_field_value(values, field_config = Configuration::NullField.new)
133
- field_values(field_config, value: Array(values))
28
+ # Check if a document has (or, might have, in the case of accessor methods) a value for
29
+ # the given solr field
30
+ # @param [Blacklight::Configuration::Field] field_config
31
+ # @return [Boolean]
32
+ def has_value? field_config
33
+ document.has?(field_config.field) ||
34
+ (document.has_highlight_field? field_config.field if field_config.highlight) ||
35
+ field_config.accessor
134
36
  end
135
- deprecation_deprecate render_field_value: 'Use FieldPresenter instead'
136
-
137
- # @deprecated
138
- def render_values(values, field_config = Configuration::NullField.new)
139
- field_values(field_config, value: Array(values))
140
- end
141
- deprecation_deprecate render_values: 'Use FieldPresenter instead'
142
-
143
- private
144
-
145
- def index_presenter
146
- @controller.index_presenter(@document)
147
- end
148
-
149
- def show_presenter
150
- @controller.show_presenter(@document)
151
- end
152
37
  end
153
38
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Blacklight
2
- # Renders a field and handles link_to_search or helper_method if supplied
4
+ # Renders a field and handles link_to_facet or helper_method if supplied
3
5
  class FieldPresenter
4
6
  def initialize(controller, document, field_config, options)
5
7
  @controller = controller
@@ -9,7 +11,7 @@ module Blacklight
9
11
  end
10
12
 
11
13
  attr_reader :controller, :document, :field_config, :options
12
-
14
+
13
15
  def render
14
16
  if options[:value]
15
17
  # This prevents helper methods from drawing.
@@ -24,8 +26,8 @@ module Blacklight
24
26
 
25
27
  private
26
28
 
27
- def retrieve_values
28
- FieldRetriever.new(document, field_config).fetch
29
- end
29
+ def retrieve_values
30
+ FieldRetriever.new(document, field_config).fetch
31
+ end
30
32
  end
31
33
  end