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
@@ -12,13 +12,10 @@ sq:
12
12
  next: 'Tjetra »'
13
13
 
14
14
  blacklight:
15
- application_name: 'Blacklight'
16
-
17
15
  header_links:
18
16
  login: 'Hyr'
19
17
  logout: 'Dil'
20
18
  bookmarks: 'Memorizimet'
21
- saved_searches: 'Kërkimet e ruajtura'
22
19
  search_history: 'Historia'
23
20
 
24
21
  welcome: 'Mirësevini!'
@@ -52,25 +49,6 @@ sq:
52
49
  list_title: 'Memorizimet e juaja'
53
50
  delete: 'Fshije'
54
51
 
55
- saved_searches:
56
- add:
57
- success: 'Kërkimi u ruajt me sukses.'
58
- failure: 'Ka pasur një problem gjatë ruajt së kërkimit.'
59
- remove:
60
- success: 'Kërkimi i ruajtur u fshi me sukses.'
61
- failure: 'Ka pasur një problem gjatë fshirjes së kërkimit.'
62
- clear:
63
- action_title: 'Fshij Kërkimet E Ruajtura'
64
- action_confirm: "Dëshiron t'i fshishë kërkimet e ruajtua?"
65
- success: 'Kërkimet e ruajtua u fshinë'
66
- failure: 'Ka pasur një problem gjatë fshirjes së kërkimeve.'
67
- title: 'Kërkimet e ruajtura'
68
- page_title: 'Kërkimet E Ruajtura - %{application_name}'
69
- need_login: 'Ju lutemi kyçuni për të menaxhuar dhe për të parë kërkimet e ruajtura.'
70
- no_searches: 'Nuk keni kerkime të ruajtura'
71
- list_title: 'Kërkimet e ruajtura'
72
- delete: 'fshije'
73
-
74
52
  search_history:
75
53
  clear:
76
54
  action_title: 'Fshij Historinë E Kërkimit'
@@ -144,13 +122,12 @@ sq:
144
122
  back_to_bookmarks: 'Kthehu te memorizimet'
145
123
 
146
124
  search:
147
- # i18n key 'title' is deprecated and will be removed in Blacklight 6.0
148
- title: '%{application_name} Rezultatet e kërkimit'
149
125
  page_title:
150
126
  title: '%{constraints} - %{application_name} Rezultatet e kërkimit'
151
127
  constraint: '%{label}: %{value}'
152
128
  many_constraint_values: '%{values} zgjedhura'
153
- search_results_header: 'Kufizimet e kërkimit'
129
+ header: 'Kërkimit'
130
+ search_constraints_header: 'Kufizimet e kërkimit'
154
131
  search_results: 'Rezultatet e kërkimit'
155
132
  errors:
156
133
  request_error: "Na vjen keq, unë nuk e kuptoj kërkimin tuaj."
@@ -188,6 +165,7 @@ sq:
188
165
  facets:
189
166
  title: 'Kufizo këkimin'
190
167
  clear: 'Fshij filterin'
168
+ all: 'Gjithë'
191
169
  sort:
192
170
  count: 'Renditja numerike'
193
171
  index: 'A-Z Renditja'
@@ -212,8 +190,6 @@ sq:
212
190
  label: '%{label}:'
213
191
  rss_feed: 'RSS për rezultatet'
214
192
  atom_feed: 'Atom për rezultatet'
215
- fields:
216
- default: 'Fjala'
217
193
  bookmarks:
218
194
  present: "Në memorizime"
219
195
  absent: "Memorizo"
@@ -231,4 +207,4 @@ sq:
231
207
  entry_name:
232
208
  default: 'entry'
233
209
 
234
- did_you_mean: 'A keni menduar: %{options}?'
210
+ did_you_mean: 'A keni menduar: %{options}?'
@@ -18,7 +18,6 @@ zh:
18
18
  login: '登陆'
19
19
  logout: '注销'
20
20
  bookmarks: '书签'
21
- saved_searches: '保存的搜索'
22
21
  search_history: '搜索历史'
23
22
 
24
23
  welcome: '欢迎!'
@@ -52,25 +51,6 @@ zh:
52
51
  list_title: '你的书签'
53
52
  delete: '删除'
54
53
 
55
- saved_searches:
56
- add:
57
- success: '成功保存了您的搜索。'
58
- failure: '保存搜索时出现问题。'
59
- remove:
60
- success: '成功删除保存的搜索。'
61
- failure: '删除您的搜索时出现问题。'
62
- clear:
63
- action_title: '清除保存的搜索'
64
- action_confirm: '清除您保存的搜索?'
65
- success: '清除您保存的搜索。'
66
- failure: '清除搜索时出现问题。'
67
- title: '保存的搜索'
68
- page_title: '保存的搜索 - %{application_name}'
69
- need_login: '请登录来管理和查看您保存的搜索。'
70
- no_searches: '您没有保存的搜索'
71
- list_title: '您保存的搜索'
72
- delete: '删除'
73
-
74
54
  search_history:
75
55
  clear:
76
56
  action_title: '清除搜索历史'
@@ -144,13 +124,12 @@ zh:
144
124
  back_to_bookmarks: '返回书签页面'
145
125
 
146
126
  search:
147
- # i18n key 'title' is deprecated and will be removed in Blacklight 6.0
148
- title: '%{application_name} 搜索结果'
149
127
  page_title:
150
128
  title: '%{constraints} - %{application_name} 搜索结果'
151
129
  constraint: '%{label}: %{value}'
152
130
  many_constraint_values: '%{values} 已选'
153
- search_results_header: '搜索条件'
131
+ header: ''
132
+ search_constraints_header: '搜索条件'
154
133
  search_results: '搜索结果'
155
134
  errors:
156
135
  request_error: "抱歉,我不明白你要找什么。"
@@ -188,6 +167,7 @@ zh:
188
167
  facets:
189
168
  title: '限定搜索'
190
169
  clear: '清除搜索条件'
170
+ all: '皆'
191
171
  sort:
192
172
  count: '按数量排序'
193
173
  index: '按字母排序'
@@ -212,8 +192,6 @@ zh:
212
192
  label: '%{label}:'
213
193
  rss_feed: '搜索结果RSS'
214
194
  atom_feed: '搜索结果Atom'
215
- fields:
216
- default: '关键词'
217
195
  bookmarks:
218
196
  present: "在书签中"
219
197
  absent: "加入书签"
data/config/routes.rb CHANGED
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  Blacklight::Engine.routes.draw do
3
- get "search_history", :to => "search_history#index", :as => "search_history"
4
- delete "search_history/clear", :to => "search_history#clear", :as => "clear_search_history"
5
- delete "saved_searches/clear", :to => "saved_searches#clear", :as => "clear_saved_searches"
6
- get "saved_searches", :to => "saved_searches#index", :as => "saved_searches"
7
- put "saved_searches/save/:id", :to => "saved_searches#save", :as => "save_search"
8
- delete "saved_searches/forget/:id", :to => "saved_searches#forget", :as => "forget_search"
9
- post "saved_searches/forget/:id", :to => "saved_searches#forget"
10
- post "/catalog/:id/track", to: 'catalog#track', as: 'track_search_context'
11
-
12
- resources :suggest, only: :index, defaults: { format: 'json' }
3
+ get "search_history", to: "search_history#index", as: "search_history"
4
+ delete "search_history/clear", to: "search_history#clear", as: "clear_search_history"
13
5
  end
@@ -14,5 +14,4 @@ class CreateBookmarks < ActiveRecord::Migration[4.2]
14
14
  def self.down
15
15
  drop_table :bookmarks
16
16
  end
17
-
18
17
  end
@@ -2,7 +2,7 @@
2
2
  class AddPolymorphicTypeToBookmarks < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column(:bookmarks, :document_type, :string) unless Bookmark.connection.column_exists? :bookmarks, :document_type
5
-
5
+
6
6
  add_index :bookmarks, :user_id unless Bookmark.connection.index_exists? :bookmarks, :user_id
7
7
  end
8
8
  end
@@ -5,7 +5,7 @@ module Blacklight
5
5
  attr_writer :connection
6
6
 
7
7
  # ActiveSupport::Benchmarkable requires a logger method
8
- attr_accessor :logger
8
+ attr_writer :logger
9
9
 
10
10
  include ActiveSupport::Benchmarkable
11
11
 
@@ -21,25 +21,37 @@ module Blacklight
21
21
  # Find a single document result by a known id
22
22
  # @param [String] id document's unique key value
23
23
  # @param [Hash] params additional query parameters
24
- def find(id, params = {})
24
+ def find(_id, _params = {})
25
25
  raise NotImplementedError
26
26
  end
27
27
 
28
28
  ##
29
29
  # Execute a search query against a search index
30
30
  # @param [Hash] params query parameters
31
- def search(params = {})
31
+ def search(_params = {})
32
32
  raise NotImplementedError
33
33
  end
34
34
 
35
- protected
35
+ # Query the fields that exist from the index
36
+ # @return [Hash]
37
+ def reflect_fields
38
+ raise NotImplementedError
39
+ end
36
40
 
37
- def connection_config
38
- blacklight_config.connection_config
39
- end
41
+ ##
42
+ # Is the repository in a working state?
43
+ def ping
44
+ raise NotImplementedError
45
+ end
40
46
 
41
- def logger
42
- @logger ||= Blacklight.logger
43
- end
47
+ private
48
+
49
+ def connection_config
50
+ blacklight_config.connection_config
51
+ end
52
+
53
+ def logger
54
+ @logger ||= Blacklight.logger
55
+ end
44
56
  end
45
57
  end
@@ -1,6 +1,17 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Blacklight
3
4
  class Configuration
5
+ # This class helps determine whether a specific field/tool should display for a
6
+ # particular controller. This is used when the field/tool is configured with an
7
+ # _if_ or _unless_ argument.
8
+ #
9
+ # e.g.
10
+ # config.add_results_document_tool(:bookmark,
11
+ # partial: 'bookmark_control',
12
+ # if: :render_bookmarks_control?)
13
+ #
14
+ # The context points at the scope for where to evaluate the method _render_bookmarks_control?_
4
15
  class Context
5
16
  attr_reader :context
6
17
 
@@ -14,7 +25,7 @@ module Blacklight
14
25
  # @param [#if,#unless] config an object that responds to if/unless
15
26
  # @return [Boolean]
16
27
  def evaluate_if_unless_configuration(config, *args)
17
- return config if config == true or config == false
28
+ return config if config == true || config == false
18
29
 
19
30
  if_value = !config.respond_to?(:if) ||
20
31
  config.if.nil? ||
@@ -1,19 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight
3
3
  class Configuration::FacetField < Blacklight::Configuration::Field
4
+ extend Deprecation
5
+
4
6
  def normalize! blacklight_config = nil
5
- self.query.stringify_keys! if self.query
7
+ query.stringify_keys! if query
8
+
9
+ self.collapse = true if collapse.nil?
10
+ self.show = true if show.nil?
11
+ self.if = show if self.if.nil?
12
+ self.index_range = 'A'..'Z' if index_range == true
6
13
 
7
- self.collapse = true if self.collapse.nil?
8
- self.show = true if self.show.nil?
9
- self.if = self.show if self.if.nil?
10
- self.index_range = 'A'..'Z' if self.index_range == true
14
+ if link_to_search
15
+ Deprecation.warn(Blacklight::Configuration::FacetField, '`link_to_search:` is deprecated, use `link_to_facet:` instead')
16
+ self.link_to_facet = link_to_search if link_to_facet.nil?
17
+ end
11
18
 
12
19
  super
13
-
14
- if self.single and self.tag.blank? and self.ex.blank?
15
- self.tag = "#{self.key}_single"
16
- self.ex = "#{self.key}_single"
20
+
21
+ if single && tag.blank? && ex.blank?
22
+ self.tag = "#{key}_single"
23
+ self.ex = "#{key}_single"
17
24
  end
18
25
 
19
26
  self
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight
3
3
  class Configuration::Field < OpenStructWithHashAccess
4
- def normalize! blacklight_config = nil
5
- self.field ||= self.key
4
+ def normalize! _blacklight_config = nil
5
+ self.field ||= key
6
6
  self.key ||= self.field
7
7
 
8
8
  self.label ||= default_label
@@ -14,11 +14,20 @@ module Blacklight
14
14
 
15
15
  self
16
16
  end
17
-
17
+
18
18
  def validate!
19
19
  raise ArgumentError, "Must supply a field name" if self.field.nil?
20
20
  end
21
21
 
22
+ def display_label(context = nil)
23
+ field_label(
24
+ (:"blacklight.search.fields.#{context}.#{key}" if context),
25
+ :"blacklight.search.fields.#{key}",
26
+ label,
27
+ default_label
28
+ )
29
+ end
30
+
22
31
  def default_label
23
32
  if self.key.respond_to?(:titleize)
24
33
  self.key.try(:titleize)
@@ -26,5 +35,25 @@ module Blacklight
26
35
  self.key.to_s.titleize
27
36
  end
28
37
  end
38
+
39
+ private
40
+
41
+ ##
42
+ # Look up the label for a solr field.
43
+ #
44
+ # @overload label
45
+ # @param [Symbol] an i18n key
46
+ #
47
+ # @overload label, i18n_key, another_i18n_key, and_another_i18n_key
48
+ # @param [String] default label to display if the i18n look up fails
49
+ # @param [Symbol] i18n keys to attempt to look up
50
+ # before falling back to the label
51
+ # @param [Symbol] any number of additional keys
52
+ # @param [Symbol] ...
53
+ def field_label *i18n_keys
54
+ first, *rest = i18n_keys.compact
55
+
56
+ I18n.t(first, default: rest)
57
+ end
29
58
  end
30
59
  end
@@ -5,22 +5,24 @@ module Blacklight
5
5
  # solr fields configuration
6
6
  module Fields
7
7
  extend ActiveSupport::Concern
8
+ extend Deprecation
9
+ self.deprecation_horizon = 'blacklight version 8.0.0'
8
10
 
9
11
  module ClassMethods
10
12
  # Add a configuration block for a collection of solr fields
11
13
  def define_field_access(key, options = {})
12
14
  key = key.to_s if respond_to? :to_s
13
15
 
14
- self.default_values[key.pluralize.to_sym] = ActiveSupport::OrderedHash.new
16
+ default_values[key.pluralize.to_sym] = ActiveSupport::OrderedHash.new
15
17
 
16
18
  base_class_name = options.fetch(:class, Field)
17
19
 
18
- unless self.const_defined? key.camelcase
20
+ unless const_defined? key.camelcase
19
21
  class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
20
22
  class #{key.camelcase} < #{base_class_name}; end
21
23
  END_EVAL
22
24
  end
23
-
25
+
24
26
  class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
25
27
  def add_#{key}(*args, &block)
26
28
  add_blacklight_field("#{key}", *args, &block)
@@ -32,7 +34,7 @@ module Blacklight
32
34
  # Add a solr field configuration to the given configuration key
33
35
  #
34
36
  # The recommended and strongly encouraged format is a field name, configuration pair, e.g.:
35
- # add_blacklight_field :index_field, 'format', :label => 'Format'
37
+ # add_blacklight_field :index_field, 'format', :label => 'Format'
36
38
  #
37
39
  # Alternative formats include:
38
40
  #
@@ -56,7 +58,7 @@ module Blacklight
56
58
  # field.field = 'format'
57
59
  # field.label = 'Format'
58
60
  # end
59
- #
61
+ #
60
62
  # * a configuration hash:
61
63
  #
62
64
  # @overload add_blacklight_field(config_key, options)
@@ -64,8 +66,8 @@ module Blacklight
64
66
  # @param [Hash] options
65
67
  #
66
68
  # add_blacklight_field :index_field, :field => 'format', :label => 'Format'
67
- #
68
- # * a Field instance:
69
+ #
70
+ # * a Field instance:
69
71
  #
70
72
  # @overload add_blacklight_field(config_key, field)
71
73
  # @param [Symbol] config_key
@@ -74,7 +76,7 @@ module Blacklight
74
76
  #
75
77
  # add_blacklight_field :index_field, IndexField.new(:field => 'format', :label => 'Format')
76
78
  #
77
- # * an array of hashes:
79
+ # * an array of hashes:
78
80
  #
79
81
  # @overload add_blacklight_field(config_key, fields)
80
82
  # @param [Symbol] config_key
@@ -84,17 +86,17 @@ module Blacklight
84
86
  #
85
87
  def add_blacklight_field config_key, *args, &block
86
88
  field_config = case args.first
87
- when String
88
- field_config_from_key_and_hash(config_key, *args)
89
- when Symbol
90
- args[0] = args[0].to_s
91
- field_config_from_key_and_hash(config_key, *args)
92
- when Array
93
- field_config_from_array(config_key, *args, &block)
94
- return # we've iterated over the array above.
95
- else
96
- field_config_from_field_or_hash(config_key, *args)
97
- end
89
+ when String
90
+ field_config_from_key_and_hash(config_key, *args)
91
+ when Symbol
92
+ args[0] = args[0].to_s
93
+ field_config_from_key_and_hash(config_key, *args)
94
+ when Array
95
+ field_config_from_array(config_key, *args, &block)
96
+ return # we've iterated over the array above.
97
+ else
98
+ field_config_from_field_or_hash(config_key, *args)
99
+ end
98
100
 
99
101
  if (field_config.field || field_config.key).to_s =~ /\*/
100
102
  field_config.match = Regexp.new("^" + (field_config.field || field_config.key).to_s.gsub('*', '.+') + "$")
@@ -102,62 +104,65 @@ module Blacklight
102
104
 
103
105
  # look up any dynamic fields
104
106
  if field_config.match
105
-
106
- salient_fields = luke_fields.select do |k,v|
107
- k =~ field_config.match
108
- end
109
-
110
- salient_fields.each do |field, luke_config|
111
- config = field_config.dup
112
- config.match = nil
113
- config.field = field
114
- config.key = field
115
-
116
- if self[config_key.pluralize][ config.key ]
117
- self[config_key.pluralize][ config.key ] = config.merge(self[config_key.pluralize][ config.key ])
118
- else
119
- add_blacklight_field(config_key, config, &block)
120
- end
121
- end
122
-
107
+ handle_matching_fields(config_key, field_config, &block)
123
108
  return
124
109
  end
125
-
110
+
126
111
  if block_given?
127
112
  yield field_config
128
113
  end
129
-
114
+
130
115
  field_config.normalize!(self)
131
116
  field_config.validate!
132
117
 
133
118
  raise "A #{config_key} with the key #{field_config.key} already exists." if self[config_key.pluralize][field_config.key].present?
134
119
 
135
- self[config_key.pluralize][ field_config.key ] = field_config
120
+ self[config_key.pluralize][field_config.key] = field_config
136
121
  end
137
122
 
138
- protected
123
+ private
124
+
125
+ ##
126
+ # Using reflection into the index, add any fields in the index that match the field_config
127
+ def handle_matching_fields(config_key, field_config, &block)
128
+ salient_fields = reflected_fields.select do |k, _v|
129
+ k =~ field_config.match
130
+ end
131
+
132
+ salient_fields.each_key do |field|
133
+ config = field_config.dup
134
+ config.match = nil
135
+ config.field = field
136
+ config.key = field
137
+ if self[config_key.pluralize][config.key]
138
+ self[config_key.pluralize][config.key] = config.merge(self[config_key.pluralize][config.key])
139
+ else
140
+ add_blacklight_field(config_key, config, &block)
141
+ end
142
+ end
143
+ end
139
144
 
140
- def luke_fields
141
- if @table[:luke_fields] == false
145
+ def reflected_fields
146
+ if @table[:reflected_fields] == false
142
147
  return nil
143
148
  end
144
149
 
145
- @table[:luke_fields] ||= Rails.cache.fetch("blacklight_configuration/admin/luke", expires_in: 1.hour) do
150
+ @table[:reflected_fields] ||= Rails.cache.fetch("blacklight_configuration/admin/reflected_fields", expires_in: 1.hour) do
146
151
  begin
147
- if repository_class <= Blacklight::Solr::Repository
148
- repository = repository_class.new(self)
149
- repository.send_and_receive('admin/luke', params: { fl: '*', 'json.nl' => 'map' })['fields']
150
- end
152
+ repository = repository_class.new(self)
153
+ repository.reflect_fields
151
154
  rescue => e
152
155
  Blacklight.logger.warn "Error retrieving field metadata: #{e}"
153
156
  false
154
157
  end
155
158
  end
156
159
 
157
- @table[:luke_fields] || {}
160
+ @table[:reflected_fields] || {}
158
161
  end
162
+ alias luke_fields reflected_fields
163
+ deprecation_deprecate luke_fields: 'use reflected_fields instead'
159
164
 
160
- # Add a solr field by a solr field name and hash
165
+ # Add a solr field by a solr field name and hash
161
166
  def field_config_from_key_and_hash config_key, field_name, field_or_hash = {}
162
167
  field_config = field_config_from_field_or_hash(config_key, field_or_hash)
163
168
  field_config.key = field_name
@@ -166,7 +171,7 @@ module Blacklight
166
171
 
167
172
  # Add multiple solr fields using a hash or Field instance
168
173
  def field_config_from_array config_key, array_of_fields_or_hashes, &block
169
- array_of_fields_or_hashes.map do |field_or_hash|
174
+ array_of_fields_or_hashes.map do |field_or_hash|
170
175
  add_blacklight_field(config_key, field_or_hash, &block)
171
176
  end
172
177
  end
@@ -180,22 +185,20 @@ module Blacklight
180
185
  # and makes it into a specific config OpenStruct, like
181
186
  # FacetField or SearchField. Or if the param already was
182
187
  # one, that's cool. Or if the param is nil, make
183
- # an empty one. Second argument is an actual class object.
188
+ # an empty one. Second argument is an actual class object.
184
189
  def hash_arg_to_config(hash_arg, klass)
185
190
  case hash_arg
186
- when Hash
191
+ when Hash
187
192
  klass.new(hash_arg)
188
- when NilClass
193
+ when NilClass
189
194
  klass.new
190
- else
195
+ else
191
196
  # this assumes it already is an element of klass, or acts like one,
192
- # if not something bad will happen later, that's your problem.
197
+ # if not something bad will happen later, that's your problem.
193
198
  hash_arg
194
199
  end
195
200
  end
196
201
 
197
- private
198
-
199
202
  # convert a config key to the appropriate Field class
200
203
  def field_class_from_key key
201
204
  "Blacklight::Configuration::#{key.camelcase}".constantize
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Blacklight
2
4
  # Returned if no config is defined for the field in the Blacklight::Configuration
3
5
  class Configuration::NullField < Blacklight::Configuration::Field
@@ -2,7 +2,7 @@
2
2
  module Blacklight
3
3
  class Configuration::SearchField < Blacklight::Configuration::Field
4
4
  def normalize! blacklight_config = nil
5
- self.if = self.include_in_simple_select if self.if.nil?
5
+ self.if = include_in_simple_select if self.if.nil?
6
6
 
7
7
  super
8
8
  self.qt ||= blacklight_config.default_solr_params[:qt] if blacklight_config && blacklight_config.default_solr_params
@@ -11,7 +11,7 @@ module Blacklight
11
11
  end
12
12
 
13
13
  def validate!
14
- raise ArgumentError, "Must supply a search field key" if self.key.nil?
14
+ raise ArgumentError, "Must supply a search field key" if key.nil?
15
15
  end
16
16
  end
17
17
  end
@@ -3,8 +3,8 @@ module Blacklight
3
3
  class Configuration::SortField < Blacklight::Configuration::Field
4
4
  def normalize! blacklight_config = nil
5
5
  super
6
- self.field ||= self.label.try(:parameterize)
7
- self.field ||= self.sort
6
+ self.field ||= label.try(:parameterize)
7
+ self.field ||= sort
8
8
 
9
9
  self.sort ||= self.field
10
10
 
@@ -1,6 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  class Blacklight::Configuration
3
3
  class ViewConfig < Blacklight::OpenStructWithHashAccess
4
+ def search_bar_presenter_class
5
+ super || Blacklight::SearchBarPresenter
6
+ end
7
+
4
8
  class Show < ViewConfig
5
9
  def document_presenter_class
6
10
  super || Blacklight::ShowPresenter