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
@@ -7,21 +7,23 @@ module Blacklight
7
7
 
8
8
  def document_action_path action_opts, url_opts = nil
9
9
  if action_opts.path
10
- self.send(action_opts.path, url_opts)
10
+ send(action_opts.path, url_opts)
11
11
  elsif url_opts[:id].class.respond_to?(:model_name)
12
12
  url_for([action_opts.key, url_opts[:id]])
13
13
  else
14
- self.send("#{action_opts.key}_#{controller_name}_path", url_opts)
14
+ send("#{action_opts.key}_#{controller_name}_path", url_opts)
15
15
  end
16
16
  end
17
17
 
18
18
  ##
19
19
  # Render "document actions" area for navigation header
20
20
  # (normally renders "Saved Searches", "History", "Bookmarks")
21
+ # These things are added by add_nav_action and the default config is
22
+ # provided by DefaultComponentConfiguration
21
23
  #
22
24
  # @param [Hash] options
23
25
  # @return [String]
24
- def render_nav_actions(options={}, &block)
26
+ def render_nav_actions(options = {}, &block)
25
27
  render_filtered_partials(blacklight_config.navbar.partials, options, &block)
26
28
  end
27
29
 
@@ -33,7 +35,7 @@ module Blacklight
33
35
  # @param [Hash] options
34
36
  # @option options [String] :wrapping_class
35
37
  # @return [String]
36
- def render_index_doc_actions(document, options={})
38
+ def render_index_doc_actions(document, options = {})
37
39
  wrapping_class = options.delete(:wrapping_class) || "index-document-functions"
38
40
  rendered = render_filtered_partials(blacklight_config.view_config(document_index_view_type).document_actions, { document: document }.merge(options))
39
41
  content_tag("div", rendered, class: wrapping_class) unless rendered.blank?
@@ -52,20 +54,6 @@ module Blacklight
52
54
  content_tag("div", rendered, class: wrapping_class) unless rendered.blank?
53
55
  end
54
56
 
55
- def render_filtered_partials(partials, options={}, &block)
56
- content = []
57
- filter_partials(partials, options).each do |key, config|
58
- config.key ||= key
59
- rendered = render(partial: config.partial || key.to_s, locals: { document_action_config: config }.merge(options))
60
- if block_given?
61
- yield config, rendered
62
- else
63
- content << rendered
64
- end
65
- end
66
- safe_join(content, "\n") unless block_given?
67
- end
68
-
69
57
  ##
70
58
  # Render "document actions" for the item detail 'show' view.
71
59
  # (this normally renders next to title)
@@ -75,7 +63,7 @@ module Blacklight
75
63
  # @param [SolrDocument] document
76
64
  # @param [Hash] options
77
65
  # @return [String]
78
- def render_show_doc_actions(document=@document, options={}, &block)
66
+ def render_show_doc_actions(document = @document, options = {}, &block)
79
67
  render_filtered_partials(blacklight_config.show.document_actions, { document: document }.merge(options), &block)
80
68
  end
81
69
 
@@ -85,6 +73,20 @@ module Blacklight
85
73
 
86
74
  private
87
75
 
76
+ def render_filtered_partials(partials, options = {})
77
+ content = []
78
+ filter_partials(partials, options).each do |key, config|
79
+ config.key ||= key
80
+ rendered = render(partial: config.partial || key.to_s, locals: { document_action_config: config }.merge(options))
81
+ if block_given?
82
+ yield config, rendered
83
+ else
84
+ content << rendered
85
+ end
86
+ end
87
+ safe_join(content, "\n") unless block_given?
88
+ end
89
+
88
90
  def filter_partials(partials, options)
89
91
  partials.select { |_, config| blacklight_configuration_context.evaluate_if_unless_configuration config, options }
90
92
  end
@@ -1,32 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::ConfigurationHelperBehavior
3
- extend Deprecation
4
- self.deprecation_horizon = 'blacklight 7.x'
5
-
6
3
  ##
7
4
  # Index fields to display for a type of document
8
- #
5
+ #
9
6
  # @param [SolrDocument] document
10
- # @return [Array<Blacklight::Configuration::Field>]
11
- def index_fields document=nil
7
+ # @return [Array<Blacklight::Configuration::Field>]
8
+ def index_fields _document = nil
9
+ Deprecation.warn(self, "index_fields is deprecated and will be removed in Blacklight 8. Use IndexPresenter#fields instead")
12
10
  blacklight_config.index_fields
13
11
  end
14
12
 
15
- # Used in the document_list partial (search view) for building a select element
16
- def sort_fields
17
- active_sort_fields.map { |_sort_key, field_config| [sort_field_label(field_config.key), field_config.key] }
18
- end
19
- deprecation_deprecate :sort_fields
20
-
21
13
  def active_sort_fields
22
- blacklight_config.sort_fields.select { |sort_key, field_config| should_render_field?(field_config) }
14
+ blacklight_config.sort_fields.select { |_sort_key, field_config| should_render_field?(field_config) }
23
15
  end
24
16
 
25
17
  # Used in the search form partial for building a select tag
26
18
  def search_fields
27
19
  search_field_options_for_select
28
20
  end
29
-
21
+
30
22
  # Returns suitable argument to options_for_select method, to create
31
23
  # an html select based on #search_field_list. Skips search_fields
32
24
  # marked :include_in_simple_select => false
@@ -36,8 +28,9 @@ module Blacklight::ConfigurationHelperBehavior
36
28
  end.compact
37
29
  end
38
30
 
39
- # used in the catalog/_show/_default partial
40
- def document_show_fields document=nil
31
+ # used in the catalog/_show partial
32
+ def document_show_fields _document = nil
33
+ Deprecation.warn(self, "document_show_fields is deprecated and will be removed in Blacklight 8. Use ShowPresenter#fields instead")
41
34
  blacklight_config.show_fields
42
35
  end
43
36
 
@@ -62,38 +55,28 @@ module Blacklight::ConfigurationHelperBehavior
62
55
  ##
63
56
  # Look up the label for the index field
64
57
  def index_field_label document, field
65
- field_config = index_fields(document)[field]
58
+ field_config = blacklight_config.index_fields_for(document)[field]
59
+ field_config ||= Blacklight::Configuration::NullField.new(key: field)
66
60
 
67
- field_label(
68
- :"blacklight.search.fields.index.#{field}",
69
- :"blacklight.search.fields.#{field}",
70
- (field_config.label if field_config),
71
- field.to_s.humanize
72
- )
61
+ field_config.display_label('index')
73
62
  end
74
63
 
75
64
  ##
76
65
  # Look up the label for the show field
77
66
  def document_show_field_label document, field
78
- field_config = document_show_fields(document)[field]
67
+ field_config = blacklight_config.show_fields_for(document)[field]
68
+ field_config ||= Blacklight::Configuration::NullField.new(key: field)
79
69
 
80
- field_label(
81
- :"blacklight.search.fields.show.#{field}",
82
- :"blacklight.search.fields.#{field}",
83
- (field_config.label if field_config),
84
- field.to_s.humanize
85
- )
70
+ field_config.display_label('show')
86
71
  end
87
72
 
88
73
  ##
89
74
  # Look up the label for the facet field
90
75
  def facet_field_label field
91
76
  field_config = blacklight_config.facet_fields[field]
92
- defaults = [:"blacklight.search.fields.facet.#{field}", :"blacklight.search.fields.#{field}"]
93
- defaults << field_config.label if field_config
94
- defaults << field.to_s.humanize
77
+ field_config ||= Blacklight::Configuration::NullField.new(key: field)
95
78
 
96
- field_label(*defaults)
79
+ field_config.display_label('facet')
97
80
  end
98
81
 
99
82
  def view_label view
@@ -114,34 +97,25 @@ module Blacklight::ConfigurationHelperBehavior
114
97
  field_config = blacklight_config.search_fields[key]
115
98
  field_config ||= Blacklight::Configuration::NullField.new(key: key)
116
99
 
117
- field_label(
118
- :"blacklight.search.fields.search.#{field_config.key}",
119
- :"blacklight.search.fields.#{field_config.key}",
120
- (field_config.label if field_config),
121
- key.to_s.humanize
122
- )
100
+ field_config.display_label('search')
123
101
  end
124
102
 
125
103
  def sort_field_label(key)
126
104
  field_config = blacklight_config.sort_fields[key]
127
105
  field_config ||= Blacklight::Configuration::NullField.new(key: key)
128
106
 
129
- field_label(
130
- :"blacklight.search.fields.sort.#{key}",
131
- (field_config.label if field_config),
132
- key.to_s.humanize
133
- )
107
+ field_config.display_label('sort')
134
108
  end
135
109
 
136
110
  ##
137
111
  # Look up the label for a solr field.
138
112
  #
139
113
  # @overload label
140
- # @param [Symbol] an i18n key
114
+ # @param [Symbol] an i18n key
141
115
  #
142
116
  # @overload label, i18n_key, another_i18n_key, and_another_i18n_key
143
117
  # @param [String] default label to display if the i18n look up fails
144
- # @param [Symbol] i18n keys to attempt to look up
118
+ # @param [Symbol] i18n keys to attempt to look up
145
119
  # before falling back to the label
146
120
  # @param [Symbol] any number of additional keys
147
121
  # @param [Symbol] ...
@@ -152,7 +126,7 @@ module Blacklight::ConfigurationHelperBehavior
152
126
  end
153
127
 
154
128
  def document_index_views
155
- blacklight_config.view.select do |k, config|
129
+ blacklight_config.view.select do |_k, config|
156
130
  should_render_field? config
157
131
  end
158
132
  end
@@ -167,7 +141,7 @@ module Blacklight::ConfigurationHelperBehavior
167
141
  ##
168
142
  # Get the default index view type
169
143
  def default_document_index_view_type
170
- document_index_views.select { |k,config| config.respond_to? :default and config.default }.keys.first || document_index_views.keys.first
144
+ document_index_views.select { |_k, config| config.respond_to?(:default) && config.default }.keys.first || document_index_views.keys.first
171
145
  end
172
146
 
173
147
  ##
@@ -183,7 +157,7 @@ module Blacklight::ConfigurationHelperBehavior
183
157
  end
184
158
 
185
159
  # Used in the document list partial (search view) for creating a link to the document show action
186
- def document_show_link_field document=nil
160
+ def document_show_link_field document = nil
187
161
  fields = Array(blacklight_config.view_config(document_index_view_type).title_field)
188
162
 
189
163
  field = fields.first if document.nil?
@@ -197,23 +171,22 @@ module Blacklight::ConfigurationHelperBehavior
197
171
  ##
198
172
  # Default sort field
199
173
  def default_sort_field
200
- (active_sort_fields.find { |k,config| config.respond_to? :default and config.default } || active_sort_fields.first).try(:last)
174
+ (active_sort_fields.find { |_k, config| config.respond_to?(:default) && config.default } || active_sort_fields.first).try(:last)
201
175
  end
202
176
 
203
177
  ##
204
178
  # The default value for search results per page
205
- def default_per_page
206
- blacklight_config.default_per_page || blacklight_config.per_page.first
207
- end
208
-
179
+ delegate :default_per_page, to: :blacklight_config
180
+ deprecation_deprecate default_per_page: "Use blacklight_config.default_per_page instead"
181
+
209
182
  ##
210
183
  # The available options for results per page, in the style of #options_for_select
211
184
  def per_page_options_for_select
212
185
  blacklight_config.per_page.map do |count|
213
- [t(:'blacklight.search.per_page.label', :count => count).html_safe, count]
186
+ [t(:'blacklight.search.per_page.label', count: count).html_safe, count]
214
187
  end
215
188
  end
216
-
189
+
217
190
  ##
218
191
  # Determine whether to render a field by evaluating :if and :unless conditions
219
192
  #
@@ -6,16 +6,15 @@ module Blacklight::FacetsHelperBehavior
6
6
  # Check if any of the given fields have values
7
7
  #
8
8
  # @param [Array<String>] fields
9
- # @param [Hash] options
10
9
  # @return [Boolean]
11
- def has_facet_values? fields = facet_field_names, options = {}
12
- facets_from_request(fields).any? { |display_facet| !display_facet.items.empty? && should_render_facet?(display_facet) }
10
+ def has_facet_values? fields = facet_field_names
11
+ facets_from_request(fields).any? { |display_facet| should_render_facet?(display_facet) }
13
12
  end
14
13
 
15
14
  ##
16
15
  # Render a collection of facet fields.
17
- # @see #render_facet_limit
18
- #
16
+ # @see #render_facet_limit
17
+ #
19
18
  # @param [Array<String>] fields
20
19
  # @param [Hash] options
21
20
  # @return String
@@ -28,41 +27,42 @@ module Blacklight::FacetsHelperBehavior
28
27
  ##
29
28
  # Renders a single section for facet limit with a specified
30
29
  # solr field used for faceting. Can be over-ridden for custom
31
- # display on a per-facet basis.
30
+ # display on a per-facet basis.
32
31
  #
33
- # @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
32
+ # @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
34
33
  # @param [Hash] options parameters to use for rendering the facet limit partial
35
34
  # @option options [String] :partial partial to render
36
35
  # @option options [String] :layout partial layout to render
37
36
  # @option options [Hash] :locals locals to pass to the partial
38
- # @return [String]
37
+ # @return [String]
39
38
  def render_facet_limit(display_facet, options = {})
40
- return unless should_render_facet?(display_facet)
39
+ field_config = facet_configuration_for_field(display_facet.name)
40
+ return unless should_render_facet?(display_facet, field_config)
41
+
41
42
  options = options.dup
42
43
  options[:partial] ||= facet_partial_name(display_facet)
43
44
  options[:layout] ||= "facet_layout" unless options.key?(:layout)
44
45
  options[:locals] ||= {}
45
46
  options[:locals][:field_name] ||= display_facet.name
46
- options[:locals][:solr_field] ||= display_facet.name # deprecated
47
- options[:locals][:facet_field] ||= facet_configuration_for_field(display_facet.name)
48
- options[:locals][:display_facet] ||= display_facet
47
+ options[:locals][:facet_field] ||= field_config
48
+ options[:locals][:display_facet] ||= display_facet
49
49
 
50
50
  render(options)
51
51
  end
52
52
 
53
53
  ##
54
- # Renders the list of values
54
+ # Renders the list of values
55
55
  # removes any elements where render_facet_item returns a nil value. This enables an application
56
56
  # to filter undesireable facet items so they don't appear in the UI
57
- def render_facet_limit_list(paginator, facet_field, wrapping_element=:li)
58
- safe_join(paginator.items.map { |item| render_facet_item(facet_field, item) }.compact.map { |item| content_tag(wrapping_element,item)})
57
+ def render_facet_limit_list(paginator, facet_field, wrapping_element = :li)
58
+ safe_join(paginator.items.map { |item| render_facet_item(facet_field, item) }.compact.map { |item| content_tag(wrapping_element, item) })
59
59
  end
60
60
 
61
61
  ##
62
62
  # Renders a single facet item
63
63
  def render_facet_item(facet_field, item)
64
- if facet_in_params?(facet_field, item.value )
65
- render_selected_facet_value(facet_field, item)
64
+ if facet_in_params?(facet_field, item.value)
65
+ render_selected_facet_value(facet_field, item)
66
66
  else
67
67
  render_facet_value(facet_field, item)
68
68
  end
@@ -74,12 +74,14 @@ module Blacklight::FacetsHelperBehavior
74
74
  # By default, only render facets with items.
75
75
  #
76
76
  # @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
77
- # @return [Boolean]
78
- def should_render_facet? display_facet
77
+ # @param [Blacklight::Configuration::FacetField] facet_config
78
+ # @return [Boolean]
79
+ def should_render_facet? display_facet, facet_config = nil
80
+ return false if display_facet.items.blank?
81
+
79
82
  # display when show is nil or true
80
- facet_config = facet_configuration_for_field(display_facet.name)
81
- display = should_render_field?(facet_config, display_facet)
82
- display && display_facet.items.present?
83
+ facet_config ||= facet_configuration_for_field(display_facet.name)
84
+ should_render_field?(facet_config, display_facet)
83
85
  end
84
86
 
85
87
  ##
@@ -87,7 +89,7 @@ module Blacklight::FacetsHelperBehavior
87
89
  # - if the facet is 'active', don't collapse
88
90
  # - if the facet is configured to collapse (the default), collapse
89
91
  # - if the facet is configured not to collapse, don't collapse
90
- #
92
+ #
91
93
  # @param [Blacklight::Configuration::FacetField] facet_field
92
94
  # @return [Boolean]
93
95
  def should_collapse_facet? facet_field
@@ -97,7 +99,7 @@ module Blacklight::FacetsHelperBehavior
97
99
  ##
98
100
  # The name of the partial to use to render a facet field.
99
101
  # uses the value of the "partial" field if set in the facet configuration
100
- # otherwise uses "facet_pivot" if this facet is a pivot facet
102
+ # otherwise uses "facet_pivot" if this facet is a pivot facet
101
103
  # defaults to 'facet_limit'
102
104
  #
103
105
  # @return [String]
@@ -105,9 +107,9 @@ module Blacklight::FacetsHelperBehavior
105
107
  config = facet_configuration_for_field(display_facet.name)
106
108
  name = config.try(:partial)
107
109
  name ||= "facet_pivot" if config.pivot
108
- name ||= "facet_limit"
110
+ name || "facet_limit"
109
111
  end
110
-
112
+
111
113
  ##
112
114
  # Standard display of a facet value in a list. Used in both _facets sidebar
113
115
  # partial and catalog/facet expanded list. Will output facet value name as
@@ -118,10 +120,13 @@ module Blacklight::FacetsHelperBehavior
118
120
  # @param [Hash] options
119
121
  # @option options [Boolean] :suppress_link display the facet, but don't link to it
120
122
  # @return [String]
121
- def render_facet_value(facet_field, item, options ={})
123
+ def render_facet_value(facet_field, item, options = {})
122
124
  path = path_for_facet(facet_field, item)
123
- content_tag(:span, :class => "facet-label") do
124
- link_to_unless(options[:suppress_link], facet_display_value(facet_field, item), path, :class=>"facet_select")
125
+ content_tag(:span, class: "facet-label") do
126
+ link_to_unless(options[:suppress_link],
127
+ facet_display_value(facet_field, item),
128
+ path,
129
+ class: "facet-select")
125
130
  end + render_facet_count(item.hits)
126
131
  end
127
132
 
@@ -130,12 +135,12 @@ module Blacklight::FacetsHelperBehavior
130
135
  # @param [Blacklight::Solr::Response::Facets::FacetField] facet_field
131
136
  # @param [String] item
132
137
  # @return [String]
133
- def path_for_facet(facet_field, item)
138
+ def path_for_facet(facet_field, item, path_options = {})
134
139
  facet_config = facet_configuration_for_field(facet_field)
135
140
  if facet_config.url_method
136
141
  send(facet_config.url_method, facet_field, item)
137
142
  else
138
- search_action_path(search_state.add_facet_params_and_redirect(facet_field, item))
143
+ search_action_path(search_state.add_facet_params_and_redirect(facet_field, item).merge(path_options))
139
144
  end
140
145
  end
141
146
 
@@ -150,15 +155,15 @@ module Blacklight::FacetsHelperBehavior
150
155
  content_tag(:span, facet_display_value(facet_field, item), class: "selected") +
151
156
  # remove link
152
157
  link_to(remove_href, class: "remove") do
153
- content_tag(:span, '', class: "glyphicon glyphicon-remove") +
158
+ content_tag(:span, '', class: "remove-icon") +
154
159
  content_tag(:span, '[remove]', class: 'sr-only')
155
160
  end
156
- end + render_facet_count(item.hits, :classes => ["selected"])
161
+ end + render_facet_count(item.hits, classes: ["selected"])
157
162
  end
158
163
 
159
164
  ##
160
165
  # Renders a count value for facet limits. Can be over-ridden locally
161
- # to change style. And can be called by plugins to get consistent display.
166
+ # to change style. And can be called by plugins to get consistent display.
162
167
  #
163
168
  # @param [Integer] num number of facet results
164
169
  # @param [Hash] options
@@ -166,24 +171,24 @@ module Blacklight::FacetsHelperBehavior
166
171
  # @return [String]
167
172
  def render_facet_count(num, options = {})
168
173
  classes = (options[:classes] || []) << "facet-count"
169
- content_tag("span", t('blacklight.search.facets.count', :number => number_with_delimiter(num)), :class => classes)
174
+ content_tag("span", t('blacklight.search.facets.count', number: number_with_delimiter(num)), class: classes)
170
175
  end
171
-
176
+
172
177
  ##
173
178
  # Are any facet restrictions for a field in the query parameters?
174
- #
179
+ #
175
180
  # @param [String] field
176
181
  # @return [Boolean]
177
182
  def facet_field_in_params? field
178
183
  !facet_params(field).blank?
179
184
  end
180
-
185
+
181
186
  ##
182
- # Check if the query parameters have the given facet field with the
187
+ # Check if the query parameters have the given facet field with the
183
188
  # given value.
184
- #
185
- # @param [Object] field
186
- # @param [Object] item facet value
189
+ #
190
+ # @param [String] field
191
+ # @param [String] item facet value
187
192
  # @return [Boolean]
188
193
  def facet_in_params?(field, item)
189
194
  value = facet_value_for_facet_item(item)
@@ -201,18 +206,18 @@ module Blacklight::FacetsHelperBehavior
201
206
 
202
207
  ##
203
208
  # Get the displayable version of a facet's value
204
- #
209
+ #
205
210
  # @param [Object] field
206
211
  # @param [String] item value
207
- # @return [String]
212
+ # @return [String]
208
213
  def facet_display_value field, item
209
214
  facet_config = facet_configuration_for_field(field)
210
-
215
+
211
216
  value = if item.respond_to? :label
212
- item.label
213
- else
214
- facet_value_for_facet_item(item)
215
- end
217
+ item.label
218
+ else
219
+ facet_value_for_facet_item(item)
220
+ end
216
221
 
217
222
  if facet_config.helper_method
218
223
  send facet_config.helper_method, value
@@ -220,8 +225,7 @@ module Blacklight::FacetsHelperBehavior
220
225
  facet_config.query[value][:label]
221
226
  elsif facet_config.date
222
227
  localization_options = facet_config.date == true ? {} : facet_config.date
223
-
224
- l(value.to_datetime, localization_options)
228
+ l(Time.zone.parse(value), localization_options)
225
229
  else
226
230
  value
227
231
  end
@@ -3,7 +3,7 @@
3
3
  # fields, works with hash nested with other hashes and arrays, standard rails
4
4
  # serialization style. Oddly while Hash#to_query will do this for a URL
5
5
  # query parameters, there seems to be no built in way to do it to create
6
- # hidden form fields instead.
6
+ # hidden form fields instead.
7
7
  #
8
8
  # Code taken from http://marklunds.com/articles/one/314
9
9
  #
@@ -15,22 +15,21 @@ module Blacklight::HashAsHiddenFieldsHelperBehavior
15
15
  # representing a hash passed in using Rails-style request parameters
16
16
  # for hashes nested with arrays and other hashes.
17
17
  # @param [Hash] hash
18
- # @return [String]
18
+ # @return [String]
19
19
  def render_hash_as_hidden_fields(hash)
20
-
21
20
  hidden_fields = []
22
21
  flatten_hash(hash).each do |name, value|
23
22
  value = Array.wrap(value)
24
23
  value.each do |v|
25
- hidden_fields << hidden_field_tag(name, v.to_s, :id => nil)
24
+ hidden_fields << hidden_field_tag(name, v.to_s, id: nil)
26
25
  end
27
26
  end
28
-
27
+
29
28
  safe_join(hidden_fields, "\n")
30
29
  end
31
30
 
32
- protected
33
-
31
+ private
32
+
34
33
  def flatten_hash(hash = params, ancestor_names = [])
35
34
  flat_hash = {}
36
35
  hash.each do |k, v|
@@ -44,17 +43,16 @@ module Blacklight::HashAsHiddenFieldsHelperBehavior
44
43
  flat_hash[key] = v
45
44
  end
46
45
  end
47
-
46
+
48
47
  flat_hash
49
48
  end
50
-
49
+
51
50
  def flat_hash_key(names)
52
51
  names = Array.new(names)
53
- name = names.shift.to_s.dup
52
+ name = names.shift.to_s.dup
54
53
  names.each do |n|
55
54
  name << "[#{n}]"
56
55
  end
57
56
  name
58
57
  end
59
-
60
58
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # Module to help generate icon helpers for SVG images
5
+ module Blacklight::IconHelperBehavior
6
+ ##
7
+ # Returns the raw SVG (String) for a Blacklight Icon located in
8
+ # app/assets/images/blacklight/*.svg. Caches them so we don't have to look up
9
+ # the svg everytime.
10
+ # @param [String, Symbol] icon_name
11
+ # @return [String]
12
+ def blacklight_icon(icon_name, options = {})
13
+ Rails.cache.fetch([:blacklight_icons, icon_name, options]) do
14
+ icon = Blacklight::Icon.new(icon_name, options)
15
+ content_tag(:span, icon.svg.html_safe, icon.options)
16
+ end
17
+ end
18
+ end
@@ -22,20 +22,20 @@ module Blacklight
22
22
  # Classes used for sizing the main content of a Blacklight page
23
23
  # @return [String]
24
24
  def main_content_classes
25
- 'col-md-9 col-sm-8'
25
+ 'col-md-9'
26
26
  end
27
27
 
28
28
  ##
29
29
  # Classes used for sizing the sidebar content of a Blacklight page
30
30
  # @return [String]
31
31
  def sidebar_classes
32
- 'col-md-3 col-sm-4'
32
+ 'page-sidebar col-md-3'
33
33
  end
34
34
 
35
35
  ##
36
36
  # Class used for specifying main layout container classes. Can be
37
37
  # overwritten to return 'container-fluid' for Bootstrap full-width layout
38
- # @return [String]
38
+ # @return [String]
39
39
  def container_classes
40
40
  'container'
41
41
  end
@@ -12,7 +12,7 @@ module Blacklight::RenderConstraintsHelperBehavior
12
12
  # @param [Hash] localized_params query parameters
13
13
  # @return [Boolean]
14
14
  def query_has_constraints?(localized_params = params)
15
- !(localized_params[:q].blank? and localized_params[:f].blank?)
15
+ !(localized_params[:q].blank? && localized_params[:f].blank?)
16
16
  end
17
17
 
18
18
  ##
@@ -35,9 +35,9 @@ module Blacklight::RenderConstraintsHelperBehavior
35
35
  return "".html_safe if localized_params[:q].blank?
36
36
 
37
37
  render_constraint_element(constraint_query_label(localized_params),
38
- localized_params[:q],
39
- classes: ["query"],
40
- remove: remove_constraint_url(localized_params))
38
+ localized_params[:q],
39
+ classes: ["query"],
40
+ remove: remove_constraint_url(localized_params))
41
41
  end
42
42
 
43
43
  ##
@@ -65,9 +65,10 @@ module Blacklight::RenderConstraintsHelperBehavior
65
65
  # @return [String]
66
66
  def render_constraints_filters(localized_params = params)
67
67
  return "".html_safe unless localized_params[:f]
68
+
68
69
  path = controller.search_state_class.new(localized_params, blacklight_config, controller)
69
70
  content = []
70
- localized_params[:f].each_pair do |facet,values|
71
+ localized_params[:f].each_pair do |facet, values|
71
72
  content << render_filter_element(facet, values, path)
72
73
  end
73
74
 
@@ -85,6 +86,7 @@ module Blacklight::RenderConstraintsHelperBehavior
85
86
 
86
87
  safe_join(Array(values).map do |val|
87
88
  next if val.blank? # skip empty string
89
+
88
90
  render_constraint_element(facet_field_label(facet_config.key),
89
91
  facet_display_value(facet, val),
90
92
  remove: search_action_path(path.remove_facet_params(facet, val)),
@@ -107,6 +109,6 @@ module Blacklight::RenderConstraintsHelperBehavior
107
109
  # @option options [Array<String>] :classes an array of classes to add to container span for constraint.
108
110
  # @return [String]
109
111
  def render_constraint_element(label, value, options = {})
110
- render(:partial => "catalog/constraints_element", :locals => {:label => label, :value => value, :options => options})
112
+ render(partial: "catalog/constraints_element", locals: { label: label, value: value, options: options })
111
113
  end
112
114
  end