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
@@ -18,12 +18,12 @@ module Blacklight::Solr
18
18
  def default_solr_parameters(solr_parameters)
19
19
  blacklight_config.default_solr_params.each do |key, value|
20
20
  solr_parameters[key] = if value.respond_to? :deep_dup
21
- value.deep_dup
22
- elsif value.respond_to? :dup and value.duplicable?
23
- value.dup
24
- else
25
- value
26
- end
21
+ value.deep_dup
22
+ elsif value.respond_to?(:dup) && value.duplicable?
23
+ value.dup
24
+ else
25
+ value
26
+ end
27
27
  end
28
28
  end
29
29
 
@@ -44,7 +44,7 @@ module Blacklight::Solr
44
44
 
45
45
  if search_field
46
46
  solr_parameters[:qt] = search_field.qt
47
- solr_parameters.merge!( search_field.solr_parameters) if search_field.solr_parameters
47
+ solr_parameters.merge!(search_field.solr_parameters) if search_field.solr_parameters
48
48
  end
49
49
 
50
50
  ##
@@ -54,7 +54,7 @@ module Blacklight::Solr
54
54
  ##
55
55
  if search_field && search_field.solr_local_parameters.present?
56
56
  local_params = search_field.solr_local_parameters.map do |key, val|
57
- key.to_s + "=" + solr_param_quote(val, :quote => "'")
57
+ key.to_s + "=" + solr_param_quote(val, quote: "'")
58
58
  end.join(" ")
59
59
  solr_parameters[:q] = "{!#{local_params}}#{blacklight_params[:q]}"
60
60
 
@@ -66,13 +66,13 @@ module Blacklight::Solr
66
66
  elsif blacklight_params[:q].is_a? Hash
67
67
  q = blacklight_params[:q]
68
68
  solr_parameters[:q] = if q.values.any?(&:blank?)
69
- # if any field parameters are empty, exclude _all_ results
70
- "{!lucene}NOT *:*"
71
- else
72
- "{!lucene}" + q.map do |field, values|
73
- "#{field}:(#{Array(values).map { |x| solr_param_quote(x) }.join(' OR ')})"
74
- end.join(" AND ")
75
- end
69
+ # if any field parameters are empty, exclude _all_ results
70
+ "{!lucene}NOT *:*"
71
+ else
72
+ "{!lucene}" + q.map do |field, values|
73
+ "#{field}:(#{Array(values).map { |x| solr_param_quote(x) }.join(' OR ')})"
74
+ end.join(" AND ")
75
+ end
76
76
 
77
77
  solr_parameters[:defType] = 'lucene'
78
78
  solr_parameters[:spellcheck] = 'false'
@@ -113,7 +113,7 @@ module Blacklight::Solr
113
113
  if facet.pivot
114
114
  solr_parameters.append_facet_pivot with_ex_local_param(facet.ex, facet.pivot.join(","))
115
115
  elsif facet.query
116
- solr_parameters.append_facet_query facet.query.map { |k, x| with_ex_local_param(facet.ex, x[:fq]) }
116
+ solr_parameters.append_facet_query facet.query.values.map { |x| with_ex_local_param(facet.ex, x[:fq]) }
117
117
  else
118
118
  solr_parameters.append_facet_fields with_ex_local_param(facet.ex, facet.field)
119
119
  end
@@ -134,13 +134,13 @@ module Blacklight::Solr
134
134
  end
135
135
 
136
136
  def add_solr_fields_to_query solr_parameters
137
- blacklight_config.show_fields.select(&method(:should_add_field_to_request?)).each do |field_name, field|
137
+ blacklight_config.show_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
138
138
  field.solr_params.each do |k, v|
139
139
  solr_parameters[:"f.#{field.field}.#{k}"] = v
140
140
  end if field.solr_params
141
141
  end
142
142
 
143
- blacklight_config.index_fields.select(&method(:should_add_field_to_request?)).each do |field_name, field|
143
+ blacklight_config.index_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
144
144
  if field.highlight
145
145
  solr_parameters[:hl] = true
146
146
  solr_parameters.append_highlight_field field.field
@@ -171,7 +171,7 @@ module Blacklight::Solr
171
171
 
172
172
  # Remove the group parameter if we've faceted on the group field (e.g. for the full results for a group)
173
173
  def add_group_config_to_solr solr_parameters
174
- if blacklight_params[:f] and blacklight_params[:f][grouped_key_for_results]
174
+ if blacklight_params[:f] && blacklight_params[:f][grouped_key_for_results]
175
175
  solr_parameters[:group] = false
176
176
  end
177
177
  end
@@ -185,11 +185,7 @@ module Blacklight::Solr
185
185
  facet_ex = facet_config.respond_to?(:ex) ? facet_config.ex : nil
186
186
  solr_params[:"facet.field"] = with_ex_local_param(facet_ex, facet_config.field)
187
187
 
188
- limit = if scope.respond_to?(:facet_list_limit)
189
- Deprecation.warn(self, "The use of facet_list_limit is deprecated and will be removed in 7.0. " \
190
- "Consider using the 'more_limit' option in the field configuration or 'default_more_limit' instead.")
191
- scope.facet_list_limit.to_s.to_i
192
- elsif solr_params["facet.limit"]
188
+ limit = if solr_params["facet.limit"]
193
189
  solr_params["facet.limit"].to_i
194
190
  else
195
191
  facet_config.fetch(:more_limit, blacklight_config.default_more_limit)
@@ -274,15 +270,15 @@ module Blacklight::Solr
274
270
  def facet_value_to_fq_string(facet_field, value)
275
271
  facet_config = blacklight_config.facet_fields[facet_field]
276
272
 
277
- solr_field = facet_config.field if facet_config and !facet_config.query
273
+ solr_field = facet_config.field if facet_config && !facet_config.query
278
274
  solr_field ||= facet_field
279
275
 
280
276
  local_params = []
281
- local_params << "tag=#{facet_config.tag}" if facet_config and facet_config.tag
277
+ local_params << "tag=#{facet_config.tag}" if facet_config && facet_config.tag
282
278
 
283
279
  prefix = "{!#{local_params.join(' ')}}" unless local_params.empty?
284
280
 
285
- if facet_config and facet_config.query
281
+ if facet_config && facet_config.query
286
282
  if facet_config.query[value]
287
283
  facet_config.query[value][:fq]
288
284
  else
@@ -297,7 +293,7 @@ module Blacklight::Solr
297
293
  end
298
294
 
299
295
  def convert_to_term_value(value)
300
- if value.is_a?(DateTime) or value.is_a?(Time)
296
+ if value.is_a?(DateTime) || value.is_a?(Time)
301
297
  value.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
302
298
  elsif value.is_a?(Date)
303
299
  value.to_time(:local).strftime("%Y-%m-%dT%H:%M:%SZ")
@@ -313,7 +309,7 @@ module Blacklight::Solr
313
309
  end
314
310
 
315
311
  def facet_fields_to_include_in_request
316
- blacklight_config.facet_fields.select do |field_name,facet|
312
+ blacklight_config.facet_fields.select do |_field_name, facet|
317
313
  facet.include_in_request || (facet.include_in_request.nil? && blacklight_config.add_facet_fields_to_solr_request)
318
314
  end
319
315
  end
@@ -5,6 +5,6 @@ module Blacklight
5
5
  @version ||= File.read(File.join(File.dirname(__FILE__), '..', '..', 'VERSION')).chomp
6
6
  end
7
7
 
8
- VERSION = self.version
8
+ VERSION = version
9
9
  end
10
10
  end
data/lib/blacklight.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  require 'kaminari'
3
3
  require 'deprecation'
4
- require 'blacklight/utils'
5
- require 'active_support/hash_with_indifferent_access'
4
+ require 'blacklight/open_struct_with_hash_access'
5
+ require 'blacklight/nested_open_struct_with_hash_access'
6
+ require 'jbuilder'
6
7
 
7
8
  module Blacklight
8
9
  autoload :AbstractRepository, 'blacklight/abstract_repository'
@@ -46,6 +47,7 @@ module Blacklight
46
47
  connection_config[:adapter].constantize
47
48
  else
48
49
  raise "The value for :adapter was not found in the blacklight.yml config" unless connection_config.key? :adapter
50
+
49
51
  Blacklight.const_get("#{connection_config.fetch(:adapter)}/Repository".classify)
50
52
  end
51
53
  end
@@ -59,6 +61,7 @@ module Blacklight
59
61
  def self.connection_config
60
62
  Blacklight::RuntimeRegistry.connection_config ||= begin
61
63
  raise "The #{::Rails.env} environment settings were not found in the blacklight.yml config" unless blacklight_yml[::Rails.env]
64
+
62
65
  blacklight_yml[::Rails.env].symbolize_keys
63
66
  end
64
67
  end
@@ -83,7 +86,7 @@ module Blacklight
83
86
  end
84
87
 
85
88
  begin
86
- @blacklight_yml = YAML.load(blacklight_erb)
89
+ @blacklight_yml = YAML.safe_load(blacklight_erb)
87
90
  rescue => e
88
91
  raise("#{blacklight_config_file} was found, but could not be parsed.\n#{e.inspect}")
89
92
  end
@@ -97,7 +100,7 @@ module Blacklight
97
100
 
98
101
  def self.logger
99
102
  @logger ||= begin
100
- ::Rails.logger if defined? Rails and Rails.respond_to? :logger
103
+ ::Rails.logger if defined? Rails && Rails.respond_to?(:logger)
101
104
  end
102
105
  end
103
106
 
@@ -105,17 +108,16 @@ module Blacklight
105
108
  @logger = logger
106
109
  end
107
110
 
108
- #############
111
+ #############
109
112
  # Methods for figuring out path to BL plugin, and then locate various files
110
113
  # either in the app itself or defaults in the plugin -- whether you are running
111
114
  # from the plugin itself or from an actual app using te plugin.
112
115
  # In a seperate module so it can be used by both Blacklight class, and
113
- # by rake tasks without loading the whole Rails environment.
116
+ # by rake tasks without loading the whole Rails environment.
114
117
  #############
115
-
118
+
116
119
  # returns the full path the the blacklight plugin installation
117
120
  def self.root
118
121
  @root ||= File.expand_path(File.dirname(File.dirname(__FILE__)))
119
122
  end
120
-
121
123
  end
@@ -2,40 +2,46 @@
2
2
  module Blacklight
3
3
  class Assets < Rails::Generators::Base
4
4
  source_root File.expand_path('../templates', __FILE__)
5
-
5
+
6
+ # This could be skipped if you want to use webpacker
7
+ def add_javascript_dependencies
8
+ gem 'bootstrap', '~> 4.0'
9
+ gem 'popper_js'
10
+ gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
11
+ end
12
+
6
13
  def assets
7
14
  copy_file "blacklight.scss", "app/assets/stylesheets/blacklight.scss"
8
15
 
16
+ # Ensure this method is idempotent
9
17
  return if has_blacklight_assets?
10
18
 
11
19
  contents = "\n//\n// Required by Blacklight\n"
12
- contents += "//= require jquery\n" if rails_5_1?
20
+ contents += "//= require jquery\n"
21
+ contents += "//= require popper\n"
22
+ contents += "// Twitter Typeahead for autocomplete\n"
23
+ contents += "//= require twitter/typeahead\n"
24
+ contents += "//= require bootstrap\n"
13
25
  contents += "//= require blacklight/blacklight\n"
14
26
 
15
27
  marker = if turbolinks?
16
28
  '//= require turbolinks'
17
- elsif rails_5_1?
18
- '//= require rails-ujs'
19
29
  else
20
- '//= require jquery_ujs'
30
+ '//= require rails-ujs'
21
31
  end
22
32
 
23
- insert_into_file "app/assets/javascripts/application.js", :after => marker do
33
+ insert_into_file "app/assets/javascripts/application.js", after: marker do
24
34
  contents
25
35
  end
26
36
  end
27
37
 
28
- # This is not a default in Rails 5.1
38
+ # This is not a default in Rails 5.1+
29
39
  def add_jquery
30
- gem 'jquery-rails' if rails_5_1?
40
+ gem 'jquery-rails'
31
41
  end
32
42
 
33
43
  private
34
44
 
35
- def rails_5_1?
36
- Rails.version =~ /5\.1/
37
- end
38
-
39
45
  def turbolinks?
40
46
  @turbolinks ||= IO.read("app/assets/javascripts/application.js").include?('turbolinks')
41
47
  end
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight
3
3
  class ControllerGenerator < Rails::Generators::Base
4
-
5
4
  source_root File.expand_path('../templates', __FILE__)
6
-
7
- argument :controller_name , type: :string , default: "catalog"
5
+
6
+ argument :controller_name, type: :string, default: "catalog"
8
7
 
9
8
  desc <<-EOS
10
9
  This generator makes the following changes to your application:
@@ -18,10 +17,10 @@ module Blacklight
18
17
  inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
19
18
  " # Adds a few additional behaviors into the application controller\n" \
20
19
  " include Blacklight::Controller\n" \
21
- " layout 'blacklight'\n\n"
20
+ " layout :determine_layout if respond_to? :layout\n\n"
22
21
  end
23
22
  end
24
-
23
+
25
24
  # Generate blacklight catalog controller
26
25
  def create_blacklight_catalog
27
26
  template "catalog_controller.rb", "app/controllers/#{controller_name}_controller.rb"
@@ -7,7 +7,7 @@ module Blacklight
7
7
 
8
8
  source_root File.expand_path('../templates', __FILE__)
9
9
 
10
- argument :model_name, :type => :string , :default => "solr_document"
10
+ argument :model_name, type: :string, default: "solr_document"
11
11
 
12
12
  desc <<-EOS
13
13
  This generator makes the following changes to your application:
@@ -3,16 +3,15 @@ module Blacklight
3
3
  class Install < Rails::Generators::Base
4
4
  source_root File.expand_path('../templates', __FILE__)
5
5
 
6
- argument :model_name , type: :string , default: "user"
7
- argument :controller_name, type: :string , default: "catalog"
8
- argument :document_name, type: :string , default: "solr_document"
9
- argument :search_builder_name, type: :string , default: "search_builder"
10
- argument :solr_version, type: :string , default: "latest"
11
-
12
- class_option :devise , type: :boolean, default: false, aliases: "-d", desc: "Use Devise as authentication logic."
13
- class_option :jettywrapper, type: :boolean, default: false, desc: "Use jettywrapper to download and control Jetty"
14
- class_option :marc , type: :boolean, default: false, aliases: "-m", desc: "Generate MARC-based demo ."
15
- class_option :'skip-assets', type: :boolean, default: false, desc: "Skip generating javascript and css assets into the application"
6
+ argument :model_name, type: :string, default: "user"
7
+ argument :controller_name, type: :string, default: "catalog"
8
+ argument :document_name, type: :string, default: "solr_document"
9
+ argument :search_builder_name, type: :string, default: "search_builder"
10
+ argument :solr_version, type: :string, default: "latest"
11
+
12
+ class_option :devise, type: :boolean, default: false, aliases: "-d", desc: "Use Devise as authentication logic."
13
+ class_option :marc, type: :boolean, default: false, aliases: "-m", desc: "Generate MARC-based demo."
14
+ class_option :'skip-assets', type: :boolean, default: !defined?(Sprockets), desc: "Skip generating javascript and css assets into the application"
16
15
  class_option :'skip-solr', type: :boolean, default: false, desc: "Skip generating solr configurations."
17
16
 
18
17
  desc <<-EOS
@@ -28,22 +27,7 @@ module Blacklight
28
27
  EOS
29
28
 
30
29
  def add_solr_wrapper
31
- return if options[:'skip-solr']
32
- generator_options = '--jettywrapper' if options[:jettywrapper]
33
- solr_generator = if options[:jettywrapper]
34
- 'blacklight:solr4'
35
- elsif solr_version == 'latest'
36
- 'blacklight:solr5'
37
- else
38
- "blacklight:solr#{solr_version}"
39
- end
40
- generate solr_generator, generator_options
41
- end
42
-
43
- def bundle_install
44
- Bundler.with_clean_env do
45
- run "bundle install"
46
- end
30
+ generate 'blacklight:solr' unless options[:'skip-solr']
47
31
  end
48
32
 
49
33
  # Copy all files in templates/public/ directory to public/
@@ -53,6 +37,12 @@ module Blacklight
53
37
  generate "blacklight:assets" unless options[:'skip-assets']
54
38
  end
55
39
 
40
+ def bundle_install
41
+ Bundler.with_clean_env do
42
+ run "bundle install"
43
+ end
44
+ end
45
+
56
46
  def generate_blacklight_document
57
47
  generate 'blacklight:document', document_name
58
48
  end
@@ -83,7 +73,7 @@ module Blacklight
83
73
  end
84
74
 
85
75
  def add_sass_configuration
86
- insert_into_file "config/application.rb", :after => "config.assets.enabled = true" do <<EOF
76
+ insert_into_file "config/application.rb", after: "config.assets.enabled = true" do <<EOF
87
77
  # Default SASS Configuration, check out https://github.com/rails/sass-rails for details
88
78
  config.assets.compress = !Rails.env.development?
89
79
  EOF
@@ -98,7 +88,7 @@ EOF
98
88
  return unless options[:marc]
99
89
 
100
90
  blacklight_marc = String.new('blacklight-marc')
101
- gem blacklight_marc, '~> 6.1'
91
+ gem blacklight_marc, '< 8'
102
92
 
103
93
  Bundler.with_clean_env do
104
94
  run "bundle install"
@@ -7,7 +7,7 @@ module Blacklight
7
7
 
8
8
  source_root File.expand_path('../templates', __FILE__)
9
9
 
10
- argument :model_name, :type => :string , :default => "search_builder"
10
+ argument :model_name, type: :string, default: "search_builder"
11
11
 
12
12
  desc <<-EOS
13
13
  This generator makes the following changes to your application:
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
 
3
5
  module Blacklight
4
- class Solr5Generator < Rails::Generators::Base
5
- # Set source_root to grab .solr_wrapper and solr config dir
6
- # from the root of the blacklight gem
7
- source_root Blacklight.root
6
+ class SolrGenerator < Rails::Generators::Base
7
+ source_root ::File.expand_path('../templates', __FILE__)
8
8
 
9
9
  desc <<-EOF
10
10
  This generator makes the following changes to your application:
@@ -23,15 +23,21 @@ module Blacklight
23
23
  end
24
24
 
25
25
  def copy_solr_conf
26
- directory 'solr', 'solr'
26
+ directory 'solr'
27
27
  end
28
28
 
29
29
  def solr_wrapper_config
30
- copy_file '.solr_wrapper.yml', '.solr_wrapper.yml'
30
+ copy_file '.solr_wrapper.yml'
31
31
  end
32
32
 
33
33
  def add_rsolr_gem
34
34
  gem 'rsolr', '>= 1.0', '< 3'
35
35
  end
36
+
37
+ def bundle_install
38
+ Bundler.with_clean_env do
39
+ run "bundle install"
40
+ end
41
+ end
36
42
  end
37
43
  end
@@ -0,0 +1,5 @@
1
+ # Place any default configuration for solr_wrapper here
2
+ # port: 8983
3
+ collection:
4
+ dir: solr/conf/
5
+ name: blacklight-core
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- class AlternateController < CatalogController
2
+ class AlternateController < CatalogController
3
3
  configure_blacklight do |config|
4
4
  config.index.thumbnail_method = :xyz
5
5
  end
@@ -7,7 +7,7 @@ class AlternateController < CatalogController
7
7
  def xyz *args
8
8
  view_context.tag "img"
9
9
  end
10
-
11
- helper_method :xyz
12
10
 
13
- end
11
+ helper_method :xyz if respond_to? :helper_method
12
+
13
+ end
@@ -1,5 +1,3 @@
1
- @import 'bootstrap-sprockets';
2
-
3
1
  @import 'bootstrap';
4
2
 
5
3
  @import 'blacklight/blacklight';
@@ -12,6 +12,9 @@ class <%= controller_name.classify %>Controller < ApplicationController
12
12
  #
13
13
  ## Model that maps search index responses to the blacklight response model
14
14
  # config.response_model = Blacklight::Solr::Response
15
+ #
16
+ ## Should the raw solr document endpoint (e.g. /catalog/:id/raw) be enabled
17
+ # config.raw_endpoint.enabled = false
15
18
 
16
19
  ## Default parameters to send to solr for all search-like requests. See also SearchBuilder#processed_parameters
17
20
  config.default_solr_params = {
@@ -20,28 +23,32 @@ class <%= controller_name.classify %>Controller < ApplicationController
20
23
 
21
24
  # solr path which will be added to solr base url before the other solr params.
22
25
  #config.solr_path = 'select'
26
+ #config.document_solr_path = 'get'
23
27
 
24
28
  # items to show per page, each number in the array represent another option to choose from.
25
29
  #config.per_page = [10,20,50,100]
26
30
 
27
- ## Default parameters to send on single-document requests to Solr. These settings are the Blackligt defaults (see SearchHelper#solr_doc_params) or
28
- ## parameters included in the Blacklight-jetty document requestHandler.
29
- #
30
- #config.default_document_solr_params = {
31
- # qt: 'document',
32
- # ## These are hard-coded in the blacklight 'document' requestHandler
33
- # # fl: '*',
34
- # # rows: 1,
35
- # # q: '{!term f=id v=$id}'
36
- #}
37
-
38
31
  # solr field configuration for search results/index views
39
- config.index.title_field = 'title_display'
40
- config.index.display_type_field = 'format'
32
+ config.index.title_field = 'title_tsim'
33
+ #config.index.display_type_field = 'format'
41
34
  #config.index.thumbnail_field = 'thumbnail_path_ss'
42
35
 
36
+ config.add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
37
+
38
+ config.add_results_collection_tool(:sort_widget)
39
+ config.add_results_collection_tool(:per_page_widget)
40
+ config.add_results_collection_tool(:view_type_group)
41
+
42
+ config.add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
43
+ config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params)
44
+ config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params)
45
+ config.add_show_tools_partial(:citation)
46
+
47
+ config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?)
48
+ config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
49
+
43
50
  # solr field configuration for document/show views
44
- #config.show.title_field = 'title_display'
51
+ #config.show.title_field = 'title_tsim'
45
52
  #config.show.display_type_field = 'format'
46
53
  #config.show.thumbnail_field = 'thumbnail_path_ss'
47
54
 
@@ -70,19 +77,19 @@ class <%= controller_name.classify %>Controller < ApplicationController
70
77
  # :index_range can be an array or range of prefixes that will be used to create the navigation (note: It is case sensitive when searching values)
71
78
 
72
79
  config.add_facet_field 'format', label: 'Format'
73
- config.add_facet_field 'pub_date', label: 'Publication Year', single: true
74
- config.add_facet_field 'subject_topic_facet', label: 'Topic', limit: 20, index_range: 'A'..'Z'
75
- config.add_facet_field 'language_facet', label: 'Language', limit: true
76
- config.add_facet_field 'lc_1letter_facet', label: 'Call Number'
77
- config.add_facet_field 'subject_geo_facet', label: 'Region'
78
- config.add_facet_field 'subject_era_facet', label: 'Era'
80
+ config.add_facet_field 'pub_date_ssim', label: 'Publication Year', single: true
81
+ config.add_facet_field 'subject_ssim', label: 'Topic', limit: 20, index_range: 'A'..'Z'
82
+ config.add_facet_field 'language_ssim', label: 'Language', limit: true
83
+ config.add_facet_field 'lc_1letter_ssim', label: 'Call Number'
84
+ config.add_facet_field 'subject_geo_ssim', label: 'Region'
85
+ config.add_facet_field 'subject_era_ssim', label: 'Era'
79
86
 
80
- config.add_facet_field 'example_pivot_field', label: 'Pivot Field', :pivot => ['format', 'language_facet']
87
+ config.add_facet_field 'example_pivot_field', label: 'Pivot Field', :pivot => ['format', 'language_ssim']
81
88
 
82
89
  config.add_facet_field 'example_query_facet_field', label: 'Publish Date', :query => {
83
- :years_5 => { label: 'within 5 Years', fq: "pub_date:[#{Time.zone.now.year - 5 } TO *]" },
84
- :years_10 => { label: 'within 10 Years', fq: "pub_date:[#{Time.zone.now.year - 10 } TO *]" },
85
- :years_25 => { label: 'within 25 Years', fq: "pub_date:[#{Time.zone.now.year - 25 } TO *]" }
90
+ :years_5 => { label: 'within 5 Years', fq: "pub_date_ssim:[#{Time.zone.now.year - 5 } TO *]" },
91
+ :years_10 => { label: 'within 10 Years', fq: "pub_date_ssim:[#{Time.zone.now.year - 10 } TO *]" },
92
+ :years_25 => { label: 'within 25 Years', fq: "pub_date_ssim:[#{Time.zone.now.year - 25 } TO *]" }
86
93
  }
87
94
 
88
95
 
@@ -93,32 +100,32 @@ class <%= controller_name.classify %>Controller < ApplicationController
93
100
 
94
101
  # solr fields to be displayed in the index (search results) view
95
102
  # The ordering of the field names is the order of the display
96
- config.add_index_field 'title_display', label: 'Title'
97
- config.add_index_field 'title_vern_display', label: 'Title'
98
- config.add_index_field 'author_display', label: 'Author'
99
- config.add_index_field 'author_vern_display', label: 'Author'
103
+ config.add_index_field 'title_tsim', label: 'Title'
104
+ config.add_index_field 'title_vern_ssim', label: 'Title'
105
+ config.add_index_field 'author_tsim', label: 'Author'
106
+ config.add_index_field 'author_vern_ssim', label: 'Author'
100
107
  config.add_index_field 'format', label: 'Format'
101
- config.add_index_field 'language_facet', label: 'Language'
102
- config.add_index_field 'published_display', label: 'Published'
103
- config.add_index_field 'published_vern_display', label: 'Published'
104
- config.add_index_field 'lc_callnum_display', label: 'Call number'
108
+ config.add_index_field 'language_ssim', label: 'Language'
109
+ config.add_index_field 'published_ssim', label: 'Published'
110
+ config.add_index_field 'published_vern_ssim', label: 'Published'
111
+ config.add_index_field 'lc_callnum_ssim', label: 'Call number'
105
112
 
106
113
  # solr fields to be displayed in the show (single result) view
107
114
  # The ordering of the field names is the order of the display
108
- config.add_show_field 'title_display', label: 'Title'
109
- config.add_show_field 'title_vern_display', label: 'Title'
110
- config.add_show_field 'subtitle_display', label: 'Subtitle'
111
- config.add_show_field 'subtitle_vern_display', label: 'Subtitle'
112
- config.add_show_field 'author_display', label: 'Author'
113
- config.add_show_field 'author_vern_display', label: 'Author'
115
+ config.add_show_field 'title_tsim', label: 'Title'
116
+ config.add_show_field 'title_vern_ssim', label: 'Title'
117
+ config.add_show_field 'subtitle_tsim', label: 'Subtitle'
118
+ config.add_show_field 'subtitle_vern_ssim', label: 'Subtitle'
119
+ config.add_show_field 'author_tsim', label: 'Author'
120
+ config.add_show_field 'author_vern_ssim', label: 'Author'
114
121
  config.add_show_field 'format', label: 'Format'
115
- config.add_show_field 'url_fulltext_display', label: 'URL'
116
- config.add_show_field 'url_suppl_display', label: 'More Information'
117
- config.add_show_field 'language_facet', label: 'Language'
118
- config.add_show_field 'published_display', label: 'Published'
119
- config.add_show_field 'published_vern_display', label: 'Published'
120
- config.add_show_field 'lc_callnum_display', label: 'Call number'
121
- config.add_show_field 'isbn_t', label: 'ISBN'
122
+ config.add_show_field 'url_fulltext_ssim', label: 'URL'
123
+ config.add_show_field 'url_suppl_ssim', label: 'More Information'
124
+ config.add_show_field 'language_ssim', label: 'Language'
125
+ config.add_show_field 'published_ssim', label: 'Published'
126
+ config.add_show_field 'published_vern_ssim', label: 'Published'
127
+ config.add_show_field 'lc_callnum_ssim', label: 'Call number'
128
+ config.add_show_field 'isbn_ssim', label: 'ISBN'
122
129
 
123
130
  # "fielded" search configuration. Used by pulldown among other places.
124
131
  # For supported keys in hash, see rdoc for Blacklight::SearchFields
@@ -178,10 +185,10 @@ class <%= controller_name.classify %>Controller < ApplicationController
178
185
  # label in pulldown is followed by the name of the SOLR field to sort by and
179
186
  # whether the sort is ascending or descending (it must be asc or desc
180
187
  # except in the relevancy case).
181
- config.add_sort_field 'score desc, pub_date_sort desc, title_sort asc', label: 'relevance'
182
- config.add_sort_field 'pub_date_sort desc, title_sort asc', label: 'year'
183
- config.add_sort_field 'author_sort asc, title_sort asc', label: 'author'
184
- config.add_sort_field 'title_sort asc, pub_date_sort desc', label: 'title'
188
+ config.add_sort_field 'score desc, pub_date_si desc, title_si asc', label: 'relevance'
189
+ config.add_sort_field 'pub_date_si desc, title_si asc', label: 'year'
190
+ config.add_sort_field 'author_si asc, title_si asc', label: 'author'
191
+ config.add_sort_field 'title_si asc, pub_date_si desc', label: 'title'
185
192
 
186
193
  # If there are more than this many search results, no spelling ("did you
187
194
  # mean") suggestion is offered.
@@ -190,5 +197,8 @@ class <%= controller_name.classify %>Controller < ApplicationController
190
197
  # Configuration for autocomplete suggestor
191
198
  config.autocomplete_enabled = true
192
199
  config.autocomplete_path = 'suggest'
200
+ # if the name of the solr.SuggestComponent provided in your solrcongig.xml is not the
201
+ # default 'mySuggester', uncomment and provide it below
202
+ # config.autocomplete_suggester = 'mySuggester'
193
203
  end
194
204
  end