blacklight 6.14.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +40 -16
  5. data/.rubocop_todo.yml +479 -375
  6. data/.solr_wrapper.yml +9 -2
  7. data/.travis.yml +27 -20
  8. data/Gemfile +3 -1
  9. data/README.md +22 -5
  10. data/Rakefile +3 -2
  11. data/VERSION +1 -1
  12. data/Vagrantfile +2 -0
  13. data/app/assets/images/blacklight/list.svg +1 -0
  14. data/app/assets/images/blacklight/search.svg +1 -0
  15. data/app/assets/javascripts/blacklight/blacklight.js +497 -57
  16. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  20. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  21. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  22. data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
  23. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  24. data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
  25. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  26. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  27. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  28. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  29. data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
  30. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  31. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  32. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  33. data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
  34. data/app/builders/blacklight/action_builder.rb +57 -0
  35. data/app/controllers/bookmarks_controller.rb +2 -2
  36. data/app/controllers/catalog_controller.rb +2 -2
  37. data/app/controllers/concerns/blacklight/base.rb +0 -33
  38. data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
  39. data/app/controllers/concerns/blacklight/catalog.rb +266 -210
  40. data/app/controllers/concerns/blacklight/controller.rb +111 -126
  41. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  42. data/app/controllers/concerns/blacklight/facet.rb +3 -0
  43. data/app/controllers/concerns/blacklight/search_context.rb +16 -14
  44. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  45. data/app/controllers/concerns/blacklight/search_history.rb +1 -6
  46. data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
  47. data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
  48. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  49. data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
  50. data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
  51. data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
  52. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  53. data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
  54. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
  55. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
  56. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  57. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
  58. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  59. data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
  60. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  61. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  62. data/app/javascript/blacklight/checkbox_submit.js +134 -0
  63. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  64. data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
  65. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  66. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
  67. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
  68. data/app/models/blacklight/facet_paginator.rb +3 -3
  69. data/app/models/blacklight/icon.rb +56 -0
  70. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  71. data/app/models/blacklight/suggest_search.rb +4 -15
  72. data/app/models/bookmark.rb +5 -10
  73. data/app/models/concerns/blacklight/configurable.rb +13 -13
  74. data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
  75. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  76. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  77. data/app/models/concerns/blacklight/document/email.rb +1 -1
  78. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  79. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  80. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  81. data/app/models/concerns/blacklight/document.rb +26 -40
  82. data/app/models/concerns/blacklight/solr/document.rb +8 -8
  83. data/app/models/concerns/blacklight/suggest/response.rb +5 -3
  84. data/app/models/concerns/blacklight/user.rb +7 -6
  85. data/app/models/record_mailer.rb +5 -6
  86. data/app/models/search.rb +5 -7
  87. data/app/presenters/blacklight/document_presenter.rb +25 -140
  88. data/app/presenters/blacklight/field_presenter.rb +7 -5
  89. data/app/presenters/blacklight/index_presenter.rb +41 -58
  90. data/app/presenters/blacklight/json_presenter.rb +10 -14
  91. data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
  92. data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
  93. data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
  94. data/app/presenters/blacklight/rendering/join.rb +5 -3
  95. data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
  96. data/app/presenters/blacklight/rendering/microdata.rb +6 -3
  97. data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
  98. data/app/presenters/blacklight/rendering/terminator.rb +2 -0
  99. data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
  100. data/app/presenters/blacklight/show_presenter.rb +26 -63
  101. data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
  102. data/app/services/blacklight/document_factory.rb +13 -0
  103. data/app/services/blacklight/field_retriever.rb +26 -24
  104. data/app/services/blacklight/search_service.rb +152 -0
  105. data/app/values/blacklight/types.rb +31 -0
  106. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  107. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  108. data/app/views/bookmarks/_tools.html.erb +2 -2
  109. data/app/views/bookmarks/index.html.erb +12 -13
  110. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  111. data/app/views/catalog/_citation.html.erb +4 -4
  112. data/app/views/catalog/_constraints.html.erb +6 -7
  113. data/app/views/catalog/_constraints_element.html.erb +6 -6
  114. data/app/views/catalog/_did_you_mean.html.erb +1 -1
  115. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
  116. data/app/views/catalog/_document.html.erb +5 -3
  117. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
  118. data/app/views/catalog/_document_action.html.erb +2 -1
  119. data/app/views/catalog/_email_form.html.erb +8 -4
  120. data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
  121. data/app/views/catalog/_facet_layout.html.erb +6 -10
  122. data/app/views/catalog/_facet_limit.html.erb +3 -2
  123. data/app/views/catalog/_facet_pagination.html.erb +8 -8
  124. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  125. data/app/views/catalog/_facets.html.erb +9 -12
  126. data/app/views/catalog/_field.json.jbuilder +10 -0
  127. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
  128. data/app/views/catalog/_home_text.html.erb +32 -36
  129. data/app/views/catalog/_index.html.erb +10 -0
  130. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
  131. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  132. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  133. data/app/views/catalog/_results_pagination.html.erb +2 -2
  134. data/app/views/catalog/_search_form.html.erb +12 -8
  135. data/app/views/catalog/_search_header.html.erb +0 -3
  136. data/app/views/catalog/_search_results.html.erb +6 -2
  137. data/app/views/catalog/_show.html.erb +8 -0
  138. data/app/views/catalog/_show_main_content.html.erb +4 -4
  139. data/app/views/catalog/_show_more_like_this.html.erb +1 -1
  140. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  141. data/app/views/catalog/_show_tools.html.erb +10 -12
  142. data/app/views/catalog/_sms_form.html.erb +8 -4
  143. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  144. data/app/views/catalog/_sort_widget.html.erb +7 -7
  145. data/app/views/catalog/_thumbnail.html.erb +5 -0
  146. data/app/views/catalog/_view_type_group.html.erb +2 -2
  147. data/app/views/catalog/_zero_results.html.erb +1 -1
  148. data/app/views/catalog/citation.js.erb +4 -2
  149. data/app/views/catalog/email.html.erb +5 -3
  150. data/app/views/catalog/email_success.html.erb +12 -8
  151. data/app/views/catalog/facet.html.erb +10 -8
  152. data/app/views/catalog/facet.json.jbuilder +2 -0
  153. data/app/views/catalog/index.atom.builder +13 -16
  154. data/app/views/catalog/index.html.erb +9 -11
  155. data/app/views/catalog/index.json.jbuilder +84 -3
  156. data/app/views/catalog/index.rss.builder +7 -5
  157. data/app/views/catalog/opensearch.xml.builder +12 -10
  158. data/app/views/catalog/show.html.erb +11 -6
  159. data/app/views/catalog/show.json.jbuilder +21 -0
  160. data/app/views/catalog/sms.html.erb +3 -1
  161. data/app/views/catalog/sms_success.html.erb +12 -8
  162. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  163. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  164. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  165. data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
  166. data/app/views/kaminari/blacklight/_page.html.erb +5 -3
  167. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  168. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  169. data/app/views/layouts/blacklight/base.html.erb +35 -0
  170. data/app/views/layouts/blacklight.html.erb +14 -41
  171. data/app/views/layouts/catalog_result.html.erb +11 -0
  172. data/app/views/search_history/index.html.erb +16 -21
  173. data/app/views/shared/_header_navbar.html.erb +8 -13
  174. data/app/views/shared/_modal.html.erb +6 -0
  175. data/app/views/shared/_user_util_links.html.erb +22 -0
  176. data/blacklight.gemspec +10 -11
  177. data/config/i18n-tasks.yml +17 -0
  178. data/config/locales/blacklight.de.yml +71 -82
  179. data/config/locales/blacklight.en.yml +15 -27
  180. data/config/locales/blacklight.es.yml +14 -26
  181. data/config/locales/blacklight.fr.yml +16 -33
  182. data/config/locales/blacklight.hu.yml +212 -0
  183. data/config/locales/blacklight.it.yml +15 -26
  184. data/config/locales/blacklight.nl.yml +212 -0
  185. data/config/locales/blacklight.pt-BR.yml +24 -29
  186. data/config/locales/blacklight.sq.yml +4 -28
  187. data/config/locales/blacklight.zh.yml +3 -25
  188. data/config/routes.rb +2 -10
  189. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  190. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  191. data/lib/blacklight/abstract_repository.rb +22 -10
  192. data/lib/blacklight/configuration/context.rb +12 -1
  193. data/lib/blacklight/configuration/facet_field.rb +16 -9
  194. data/lib/blacklight/configuration/field.rb +32 -3
  195. data/lib/blacklight/configuration/fields.rb +61 -58
  196. data/lib/blacklight/configuration/null_field.rb +2 -0
  197. data/lib/blacklight/configuration/search_field.rb +2 -2
  198. data/lib/blacklight/configuration/sort_field.rb +2 -2
  199. data/lib/blacklight/configuration/view_config.rb +4 -0
  200. data/lib/blacklight/configuration.rb +101 -88
  201. data/lib/blacklight/engine.rb +11 -7
  202. data/lib/blacklight/exceptions.rb +4 -7
  203. data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
  204. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  205. data/lib/blacklight/parameters.rb +1 -1
  206. data/lib/blacklight/routes/exportable.rb +1 -3
  207. data/lib/blacklight/routes/searchable.rb +3 -3
  208. data/lib/blacklight/runtime_registry.rb +2 -0
  209. data/lib/blacklight/search_builder.rb +28 -35
  210. data/lib/blacklight/search_state.rb +10 -8
  211. data/lib/blacklight/solr/repository.rb +40 -6
  212. data/lib/blacklight/solr/request.rb +1 -1
  213. data/lib/blacklight/solr/response/facets.rb +29 -31
  214. data/lib/blacklight/solr/response/group.rb +3 -3
  215. data/lib/blacklight/solr/response/group_response.rb +1 -1
  216. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  217. data/lib/blacklight/solr/response/response.rb +2 -2
  218. data/lib/blacklight/solr/response/spelling.rb +4 -3
  219. data/lib/blacklight/solr/response.rb +29 -30
  220. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  221. data/lib/blacklight/version.rb +1 -1
  222. data/lib/blacklight.rb +10 -8
  223. data/lib/generators/blacklight/assets_generator.rb +18 -12
  224. data/lib/generators/blacklight/controller_generator.rb +4 -5
  225. data/lib/generators/blacklight/document_generator.rb +1 -1
  226. data/lib/generators/blacklight/install_generator.rb +18 -28
  227. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  228. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
  229. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  230. data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
  231. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  232. data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
  233. data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
  234. data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
  235. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  236. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  237. data/lib/generators/blacklight/user_generator.rb +5 -6
  238. data/lib/railties/blacklight.rake +17 -21
  239. data/package-lock.json +2195 -0
  240. data/package.json +29 -0
  241. data/spec/controllers/alternate_controller_spec.rb +5 -4
  242. data/spec/controllers/application_controller_spec.rb +1 -5
  243. data/spec/controllers/blacklight/base_spec.rb +6 -3
  244. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  245. data/spec/controllers/blacklight/facet_spec.rb +1 -2
  246. data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
  247. data/spec/controllers/bookmarks_controller_spec.rb +46 -11
  248. data/spec/controllers/catalog_controller_spec.rb +334 -161
  249. data/spec/controllers/search_history_controller_spec.rb +6 -6
  250. data/spec/features/alternate_controller_spec.rb +4 -4
  251. data/spec/features/autocomplete_spec.rb +4 -2
  252. data/spec/features/bookmarks_spec.rb +10 -10
  253. data/spec/features/did_you_mean_spec.rb +7 -12
  254. data/spec/features/facets_spec.rb +29 -17
  255. data/spec/features/record_view_spec.rb +12 -18
  256. data/spec/features/search_context_spec.rb +6 -7
  257. data/spec/features/search_crawler_spec.rb +3 -5
  258. data/spec/features/search_filters_spec.rb +80 -80
  259. data/spec/features/search_formats_spec.rb +1 -1
  260. data/spec/features/search_history_spec.rb +6 -29
  261. data/spec/features/search_pagination_spec.rb +4 -2
  262. data/spec/features/search_results_spec.rb +14 -12
  263. data/spec/features/search_sort_spec.rb +2 -2
  264. data/spec/features/search_spec.rb +8 -9
  265. data/spec/features/sitelinks_search_box.rb +4 -4
  266. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  267. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
  268. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
  269. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
  270. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
  271. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
  272. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
  273. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
  274. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
  275. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
  276. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
  277. data/spec/helpers/blacklight_helper_spec.rb +65 -150
  278. data/spec/helpers/catalog_helper_spec.rb +80 -96
  279. data/spec/i18n_spec.rb +18 -0
  280. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
  281. data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
  282. data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
  283. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  284. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
  285. data/spec/lib/blacklight/parameters_spec.rb +4 -2
  286. data/spec/lib/blacklight/search_state_spec.rb +53 -36
  287. data/spec/lib/blacklight_spec.rb +14 -15
  288. data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
  289. data/spec/models/blacklight/configurable_spec.rb +24 -27
  290. data/spec/models/blacklight/configuration/context_spec.rb +9 -10
  291. data/spec/models/blacklight/configuration_spec.rb +248 -223
  292. data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
  293. data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
  294. data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
  295. data/spec/models/blacklight/document/email_spec.rb +10 -10
  296. data/spec/models/blacklight/document/sms_spec.rb +10 -10
  297. data/spec/models/blacklight/document_spec.rb +10 -22
  298. data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
  299. data/spec/models/blacklight/icon_spec.rb +44 -0
  300. data/spec/models/blacklight/search_builder_spec.rb +41 -26
  301. data/spec/models/blacklight/solr/document_spec.rb +224 -216
  302. data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
  303. data/spec/models/blacklight/solr/repository_spec.rb +61 -46
  304. data/spec/models/blacklight/solr/request_spec.rb +17 -18
  305. data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
  306. data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
  307. data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
  308. data/spec/models/blacklight/solr/response_spec.rb +56 -55
  309. data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
  310. data/spec/models/blacklight/suggest/response_spec.rb +6 -4
  311. data/spec/models/blacklight/suggest_search_spec.rb +9 -16
  312. data/spec/models/blacklight/user_spec.rb +9 -11
  313. data/spec/models/bookmark_spec.rb +7 -6
  314. data/spec/models/record_mailer_spec.rb +23 -21
  315. data/spec/models/search_spec.rb +19 -18
  316. data/spec/models/solr_document_spec.rb +33 -5
  317. data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
  318. data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
  319. data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
  320. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
  321. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
  322. data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
  323. data/spec/presenters/pipeline_spec.rb +18 -11
  324. data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
  325. data/spec/routing/catalog_routing_spec.rb +13 -15
  326. data/spec/services/blacklight/search_service_spec.rb +488 -0
  327. data/spec/spec_helper.rb +20 -19
  328. data/spec/support/features/session_helpers.rb +4 -4
  329. data/spec/support/features.rb +1 -1
  330. data/spec/test_app_templates/Gemfile.extra +2 -4
  331. data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
  332. data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
  333. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
  334. data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
  335. data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
  336. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
  337. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  338. data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
  339. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
  340. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
  341. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
  342. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  343. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
  344. data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
  345. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
  346. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
  347. data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
  348. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
  349. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
  350. data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
  351. data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
  352. data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
  353. data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
  354. data/spec/views/catalog/index.html.erb_spec.rb +6 -8
  355. data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
  356. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  357. data/spec/views/catalog/show.html.erb_spec.rb +8 -8
  358. data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
  359. data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
  360. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
  361. data/tasks/blacklight.rake +10 -8
  362. data/template.demo.rb +3 -11
  363. metadata +188 -189
  364. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  365. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  366. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
  367. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  368. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  369. data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
  370. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  371. data/app/controllers/saved_searches_controller.rb +0 -4
  372. data/app/controllers/suggest_controller.rb +0 -4
  373. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  374. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  375. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  376. data/app/helpers/blacklight_url_helper.rb +0 -4
  377. data/app/helpers/component_helper.rb +0 -4
  378. data/app/helpers/facets_helper.rb +0 -4
  379. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  380. data/app/helpers/layout_helper.rb +0 -4
  381. data/app/helpers/render_constraints_helper.rb +0 -4
  382. data/app/helpers/search_history_constraints_helper.rb +0 -4
  383. data/app/helpers/suggest_helper.rb +0 -4
  384. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  385. data/app/views/_user_util_links.html.erb +0 -26
  386. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  387. data/app/views/catalog/_index_default.html.erb +0 -12
  388. data/app/views/catalog/_show_default.html.erb +0 -10
  389. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  390. data/app/views/saved_searches/index.html.erb +0 -32
  391. data/app/views/shared/_ajax_modal.html.erb +0 -6
  392. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  393. data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
  394. data/solr/conf/schema.xml +0 -629
  395. data/solr/conf/solrconfig.xml +0 -411
  396. data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
  397. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  398. data/spec/controllers/suggest_controller_spec.rb +0 -17
  399. data/spec/features/saved_searches_spec.rb +0 -47
  400. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  401. data/spec/lib/blacklight/utils_spec.rb +0 -167
  402. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  403. data/spec/presenters/document_presenter_spec.rb +0 -438
  404. data/spec/presenters/index_presenter_spec.rb +0 -173
  405. data/spec/presenters/show_presenter_spec.rb +0 -313
  406. data/spec/support/backport_test.rb +0 -14
  407. /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  408. /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  409. /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  410. /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  411. /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  412. /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  413. /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  414. /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  415. /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  416. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  417. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  418. /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  419. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  420. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  421. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  422. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
@@ -1,19 +1,45 @@
1
1
  # frozen_string_literal: true
2
- describe BlacklightHelper do
3
- before(:each) do
2
+ RSpec.describe BlacklightHelper do
3
+ before do
4
4
  allow(helper).to receive(:current_or_guest_user).and_return(User.new)
5
5
  allow(helper).to receive(:search_action_path) do |*args|
6
6
  search_catalog_url *args
7
7
  end
8
8
  end
9
9
 
10
- describe "#application_name", :test => true do
10
+ describe "#application_name" do
11
+ before do
12
+ allow(Rails).to receive(:cache).and_return(ActiveSupport::Cache::NullStore.new)
13
+ end
14
+
11
15
  it "defaults to 'Blacklight'" do
12
16
  expect(application_name).to eq "Blacklight"
13
17
  end
14
- it "uses the Rails application config application_name if available" do
15
- allow(Rails.application).to receive(:config).and_return(double(application_name: "asdf"))
16
- expect(application_name).to eq "asdf"
18
+
19
+ context "when the language is not english " do
20
+ around do |example|
21
+ I18n.locale = :de
22
+ example.run
23
+ I18n.locale = :en
24
+ end
25
+
26
+ context "and no translation exists for that language" do
27
+ it "defaults to 'Blacklight'" do
28
+ expect(application_name).to eq "Blacklight"
29
+ end
30
+ end
31
+
32
+ context "and a translation exists for that language" do
33
+ around do |example|
34
+ I18n.backend.store_translations(:de, 'blacklight' => { 'application_name' => 'Schwarzlicht' })
35
+ example.run
36
+ I18n.backend.reload!
37
+ end
38
+
39
+ it "uses the provided value" do
40
+ expect(application_name).to eq "Schwarzlicht"
41
+ end
42
+ end
17
43
  end
18
44
  end
19
45
 
@@ -34,10 +60,11 @@ describe BlacklightHelper do
34
60
  describe "render_link_rel_alternates" do
35
61
  let(:document) { instance_double(SolrDocument) }
36
62
  let(:result) { double }
37
- let(:presenter) { Blacklight::DocumentPresenter.new(document, self) }
63
+ let(:view_context) { double(blacklight_config: blacklight_config, document_index_view_type: 'index') }
64
+ let(:presenter) { Blacklight::IndexPresenter.new(document, view_context) }
38
65
  let(:blacklight_config) do
39
66
  Blacklight::Configuration.new.configure do |config|
40
- config.index.title_field = 'title_display'
67
+ config.index.title_field = 'title_tsim'
41
68
  config.index.display_type_field = 'format'
42
69
  end
43
70
  end
@@ -61,11 +88,11 @@ describe BlacklightHelper do
61
88
  describe "with a config" do
62
89
  let(:config) do
63
90
  Blacklight::Configuration.new.configure do |config|
64
- config.index.title_field = 'title_display'
91
+ config.index.title_field = 'title_tsim'
65
92
  config.index.display_type_field = 'format'
66
93
  end
67
94
  end
68
- let(:document) { SolrDocument.new('title_display' => "A Fake Document", 'id'=>'8') }
95
+ let(:document) { SolrDocument.new('title_tsim' => "A Fake Document", 'id' => '8') }
69
96
 
70
97
  before do
71
98
  config.add_show_tools_partial(:bookmark, partial: 'catalog/bookmark_control')
@@ -78,7 +105,7 @@ describe BlacklightHelper do
78
105
  describe "render_nav_actions" do
79
106
  it "renders partials" do
80
107
  buff = String.new
81
- helper.render_nav_actions { |config, item| buff << "<foo>#{item}</foo>" }
108
+ helper.render_nav_actions { |_config, item| buff << "<foo>#{item}</foo>" }
82
109
  expect(buff).to have_selector "foo a#bookmarks_nav[href=\"/bookmarks\"]"
83
110
  expect(buff).to have_selector "foo a span[data-role='bookmark-counter']", text: '0'
84
111
  end
@@ -88,7 +115,7 @@ describe BlacklightHelper do
88
115
  it "renders partials" do
89
116
  allow(controller).to receive(:render_bookmarks_control?).and_return(true)
90
117
  response = helper.render_index_doc_actions(document)
91
- expect(response).to have_selector(".bookmark_toggle")
118
+ expect(response).to have_selector(".bookmark-toggle")
92
119
  end
93
120
 
94
121
  it "is nil if no partials are renderable" do
@@ -106,7 +133,7 @@ describe BlacklightHelper do
106
133
  describe "render_show_doc_actions" do
107
134
  it "renders partials" do
108
135
  response = helper.render_show_doc_actions(document)
109
- expect(response).to have_selector(".bookmark_toggle")
136
+ expect(response).to have_selector(".bookmark-toggle")
110
137
  end
111
138
  end
112
139
  end
@@ -117,15 +144,18 @@ describe BlacklightHelper do
117
144
  end
118
145
 
119
146
  it "is true" do
147
+ expect(Deprecation).to receive(:warn)
120
148
  expect(helper.should_render_index_field?(double, double)).to be true
121
149
  end
122
150
 
123
151
  it "is false if the document doesn't have a value for the field" do
152
+ expect(Deprecation).to receive(:warn)
124
153
  allow(helper).to receive_messages(document_has_value?: false)
125
154
  expect(helper.should_render_index_field?(double, double)).to be false
126
155
  end
127
156
 
128
157
  it "is false if the configuration has the field disabled" do
158
+ expect(Deprecation).to receive(:warn)
129
159
  allow(helper).to receive_messages(should_render_field?: false)
130
160
  expect(helper.should_render_index_field?(double, double)).to be false
131
161
  end
@@ -137,81 +167,43 @@ describe BlacklightHelper do
137
167
  end
138
168
 
139
169
  it "is true" do
170
+ expect(Deprecation).to receive(:warn)
140
171
  expect(helper.should_render_show_field?(double, double)).to be true
141
172
  end
142
173
 
143
174
  it "is false if the document doesn't have a value for the field" do
175
+ expect(Deprecation).to receive(:warn)
144
176
  allow(helper).to receive_messages(document_has_value?: false)
145
177
  expect(helper.should_render_show_field?(double, double)).to be false
146
178
  end
147
179
 
148
180
  it "is false if the configuration has the field disabled" do
181
+ expect(Deprecation).to receive(:warn)
149
182
  allow(helper).to receive_messages(should_render_field?: false)
150
183
  expect(helper.should_render_show_field?(double, double)).to be false
151
184
  end
152
185
  end
153
186
 
154
- context "render methods" do
155
- let(:field) { "some_field" }
156
- let(:doc) { instance_double(SolrDocument) }
157
- let(:presenter) { instance_double(Blacklight::ShowPresenter) }
158
- before do
159
- allow(Deprecation).to receive(:warn) # TODO: purge Deprecations
160
- allow(helper).to receive(:presenter).with(doc).and_return(presenter)
161
- end
162
-
163
- describe "#render_index_field_value" do
164
- it "passes the document and field through to the presenter" do
165
- expect(presenter).to receive(:field_value).with(field, {})
166
- helper.render_index_field_value(doc, field)
167
- end
168
-
169
- it "allows the document and field to be passed as hash arguments" do
170
- expect(presenter).to receive(:field_value).with(field, {})
171
- helper.render_index_field_value(document: doc, field: field)
172
- end
173
-
174
- it "allows additional options to be passed to the presenter" do
175
- expect(presenter).to receive(:field_value).with(field, x: 1)
176
- helper.render_index_field_value(document: doc, field: field, x: 1)
177
- end
178
- end
179
-
180
- describe "#render_document_show_field_value" do
181
- it "passes the document and field through to the presenter" do
182
- expect(presenter).to receive(:field_value).with(field, {})
183
- helper.render_document_show_field_value(doc, field)
184
- end
185
-
186
- it "allows the document and field to be passed as hash arguments" do
187
- expect(presenter).to receive(:field_value).with(field, {})
188
- helper.render_document_show_field_value(document: doc, field: field)
189
- end
190
-
191
- it "allows additional options to be passed to the presenter" do
192
- expect(presenter).to receive(:field_value).with(field, x: 1)
193
- helper.render_document_show_field_value(document: doc, field: field, x: 1)
194
- end
195
- end
196
- end
197
-
198
187
  describe "#document_has_value?" do
199
188
  let(:doc) { double(SolrDocument) }
189
+
190
+ before { allow(Deprecation).to receive(:warn) }
191
+
200
192
  it "ifs the document has the field value" do
201
193
  allow(doc).to receive(:has?).with('asdf').and_return(true)
202
- field_config = double(:field => 'asdf')
194
+ field_config = double(field: 'asdf')
203
195
  expect(helper.document_has_value?(doc, field_config)).to eq true
204
196
  end
205
197
  it "ifs the document has a highlight field value" do
206
198
  allow(doc).to receive(:has?).with('asdf').and_return(false)
207
199
  allow(doc).to receive(:has_highlight_field?).with('asdf').and_return(true)
208
- field_config = double(:field => 'asdf', :highlight => true)
200
+ field_config = double(field: 'asdf', highlight: true)
209
201
  expect(helper.document_has_value?(doc, field_config)).to eq true
210
202
  end
211
203
  it "ifs the field has a model accessor" do
212
204
  allow(doc).to receive(:has?).with('asdf').and_return(false)
213
205
  allow(doc).to receive(:has_highlight_field?).with('asdf').and_return(false)
214
- field_config = double(:field => 'asdf', :highlight => true, :accessor => true)
206
+ field_config = double(field: 'asdf', highlight: true, accessor: true)
215
207
  expect(helper.document_has_value?(doc, field_config)).to eq true
216
208
  end
217
209
  end
@@ -236,95 +228,28 @@ describe BlacklightHelper do
236
228
  before do
237
229
  allow(helper).to receive_messages spell_check_max: 5
238
230
  end
231
+
239
232
  it "does not show suggestions if there are enough results" do
240
233
  response = double(total: 10)
241
- expect(helper.should_show_spellcheck_suggestions? response).to be false
234
+ expect(helper.should_show_spellcheck_suggestions?(response)).to be false
242
235
  end
243
- it "onlies show suggestions if there are very few results" do
236
+ it "only shows suggestions if there are very few results" do
244
237
  response = double(total: 4, spelling: double(words: [1]))
245
- expect(helper.should_show_spellcheck_suggestions? response).to be true
238
+ expect(helper.should_show_spellcheck_suggestions?(response)).to be true
246
239
  end
247
240
  it "shows suggestions only if there are spelling suggestions available" do
248
241
  response = double(total: 4, spelling: double(words: []))
249
- expect(helper.should_show_spellcheck_suggestions? response).to be false
242
+ expect(helper.should_show_spellcheck_suggestions?(response)).to be false
250
243
  end
251
- end
252
-
253
- describe "#render_document_partials" do
254
- let(:doc) { double }
255
- before do
256
- allow(helper).to receive_messages(document_partial_path_templates: [])
257
- allow(helper).to receive_messages(document_index_view_type: 'index_header')
258
- end
259
-
260
- it "gets the document format from document_partial_name" do
261
- allow(helper).to receive(:document_partial_name).with(doc, :xyz)
262
- helper.render_document_partial(doc, :xyz)
263
- end
264
- end
265
-
266
- describe "#document_partial_name" do
267
- let(:blacklight_config) { Blacklight::Configuration.new }
268
- before do
269
- allow(helper).to receive_messages(blacklight_config: blacklight_config)
270
- end
271
-
272
- context "with a solr document with empty fields" do
273
- let(:document) { SolrDocument.new }
274
- it "is the default value" do
275
- expect(helper.document_partial_name(document)).to eq 'default'
276
- end
277
- end
278
-
279
- context "with a solr document with the display type field set" do
280
- let(:document) { SolrDocument.new 'my_field' => 'xyz'}
281
- before do
282
- blacklight_config.show.display_type_field = 'my_field'
283
- end
284
-
285
- it "uses the value in the configured display type field" do
286
- expect(helper.document_partial_name(document)).to eq 'xyz'
287
- end
288
- it "uses the value in the configured display type field if the action-specific field is empty" do
289
- expect(helper.document_partial_name(document, :some_action)).to eq 'xyz'
290
- end
291
- end
292
-
293
- context "with a solr doucment with an action-specific field set" do
294
- let(:document) { SolrDocument.new 'my_field' => 'xyz', 'other_field' => 'abc' }
295
- before do
296
- blacklight_config.show.media_display_type_field = 'my_field'
297
- blacklight_config.show.metadata_display_type_field = 'other_field'
298
- end
299
- it "uses the value in the action-specific fields" do
300
- expect(helper.document_partial_name(document, :media)).to eq 'xyz'
301
- expect(helper.document_partial_name(document, :metadata)).to eq 'abc'
302
- end
303
- end
304
- end
305
-
306
- describe "#type_field_to_partial_name" do
307
- let(:document) { double }
308
- context "with default value" do
309
- subject { helper.type_field_to_partial_name(document, 'default') }
310
- it { should eq 'default' }
311
- end
312
- context "with spaces" do
313
- subject { helper.type_field_to_partial_name(document, 'one two three') }
314
- it { should eq 'one_two_three' }
315
- end
316
- context "with hyphens" do
317
- subject { helper.type_field_to_partial_name(document, 'one-two-three') }
318
- it { should eq 'one_two_three' }
319
- end
320
- context "an array" do
321
- subject { helper.type_field_to_partial_name(document, ['one', 'two', 'three']) }
322
- it { should eq 'one_two_three' }
244
+ it "does not show suggestions if spelling is not available" do
245
+ response = double(total: 4, spelling: nil)
246
+ expect(helper.should_show_spellcheck_suggestions?(response)).to be false
323
247
  end
324
248
  end
325
249
 
326
250
  describe "#opensearch_description_tag" do
327
251
  subject { helper.opensearch_description_tag 'title', 'href' }
252
+
328
253
  it "has a search rel" do
329
254
  expect(subject).to have_selector "link[rel='search']", visible: false
330
255
  end
@@ -349,6 +274,7 @@ describe BlacklightHelper do
349
274
 
350
275
  describe "#render_document_index_with_view" do
351
276
  let(:obj1) { SolrDocument.new }
277
+
352
278
  before do
353
279
  allow(helper).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
354
280
  assign(:response, instance_double(Blacklight::Solr::Response, grouped?: false, start: 0))
@@ -409,23 +335,11 @@ describe BlacklightHelper do
409
335
  context "related classes" do
410
336
  let(:presenter_class) { double }
411
337
  let(:blacklight_config) { Blacklight::Configuration.new }
338
+
412
339
  before do
413
340
  allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
414
341
  end
415
342
 
416
- describe "#presenter_class" do
417
- it "uses the value defined in the blacklight configuration" do
418
- expect(Deprecation).to receive(:warn).exactly(2).times
419
- blacklight_config.document_presenter_class = presenter_class
420
- expect(helper.presenter_class).to eq presenter_class
421
- end
422
-
423
- it "defaults to Blacklight::DocumentPresenter" do
424
- expect(Deprecation).to receive(:warn)
425
- expect(helper.presenter_class).to eq Blacklight::DocumentPresenter
426
- end
427
- end
428
-
429
343
  describe "#index_presenter_class" do
430
344
  it "uses the value defined in the blacklight configuration" do
431
345
  blacklight_config.index.document_presenter_class = presenter_class
@@ -451,6 +365,7 @@ describe BlacklightHelper do
451
365
 
452
366
  describe "#render_document_heading" do
453
367
  let(:document) { double }
368
+
454
369
  before do
455
370
  allow(helper).to receive(:presenter).and_return(double(heading: "Heading"))
456
371
  end
@@ -460,7 +375,7 @@ describe BlacklightHelper do
460
375
  end
461
376
 
462
377
  it "accepts the tag name as an option" do
463
- expect(helper.render_document_heading tag: "h1").to have_selector "h1", text: "Heading"
378
+ expect(helper.render_document_heading(tag: "h1")).to have_selector "h1", text: "Heading"
464
379
  end
465
380
 
466
381
  it "accepts an explicit document argument" do