blacklight 6.24.0 → 7.0.0.rc1

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 (393) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +15 -3
  5. data/.rubocop_todo.yml +242 -379
  6. data/.solr_wrapper.yml +1 -1
  7. data/.travis.yml +20 -24
  8. data/Gemfile +1 -4
  9. data/README.md +21 -4
  10. data/Rakefile +1 -2
  11. data/VERSION +1 -1
  12. data/app/assets/images/blacklight/list.svg +1 -0
  13. data/app/assets/images/blacklight/search.svg +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +496 -56
  15. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  16. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
  17. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  18. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  19. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  20. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  21. data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
  22. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  23. data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
  24. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  25. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  26. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  27. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  28. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  29. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  30. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  31. data/app/builders/blacklight/action_builder.rb +56 -0
  32. data/app/controllers/bookmarks_controller.rb +2 -2
  33. data/app/controllers/catalog_controller.rb +2 -2
  34. data/app/controllers/concerns/blacklight/base.rb +0 -33
  35. data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
  36. data/app/controllers/concerns/blacklight/catalog.rb +254 -213
  37. data/app/controllers/concerns/blacklight/controller.rb +117 -133
  38. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  39. data/app/controllers/concerns/blacklight/search_context.rb +10 -14
  40. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  41. data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
  42. data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
  43. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  44. data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
  45. data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
  46. data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
  47. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  48. data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
  49. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
  50. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
  51. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  52. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
  53. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  54. data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
  55. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  56. data/app/javascript/blacklight/autofocus.js +20 -0
  57. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  58. data/app/javascript/blacklight/checkbox_submit.js +133 -0
  59. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  60. data/app/javascript/blacklight/core.js +39 -0
  61. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  62. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
  63. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
  64. data/app/models/blacklight/facet_paginator.rb +3 -3
  65. data/app/models/blacklight/icon.rb +53 -0
  66. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  67. data/app/models/blacklight/suggest_search.rb +15 -4
  68. data/app/models/bookmark.rb +4 -9
  69. data/app/models/concerns/blacklight/configurable.rb +13 -13
  70. data/app/models/concerns/blacklight/document.rb +8 -42
  71. data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
  72. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  73. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  74. data/app/models/concerns/blacklight/document/email.rb +1 -1
  75. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  76. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  77. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  78. data/app/models/concerns/blacklight/solr/document.rb +7 -8
  79. data/app/models/concerns/blacklight/suggest/response.rb +3 -5
  80. data/app/models/concerns/blacklight/user.rb +6 -6
  81. data/app/models/record_mailer.rb +5 -6
  82. data/app/models/search.rb +4 -7
  83. data/app/presenters/blacklight/field_presenter.rb +5 -5
  84. data/app/presenters/blacklight/index_presenter.rb +34 -71
  85. data/app/presenters/blacklight/json_presenter.rb +7 -4
  86. data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
  87. data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
  88. data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
  89. data/app/presenters/blacklight/rendering/join.rb +3 -3
  90. data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
  91. data/app/presenters/blacklight/rendering/microdata.rb +3 -3
  92. data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
  93. data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
  94. data/app/presenters/blacklight/show_presenter.rb +20 -69
  95. data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
  96. data/app/services/blacklight/document_factory.rb +11 -0
  97. data/app/services/blacklight/field_retriever.rb +24 -24
  98. data/app/services/blacklight/search_service.rb +154 -0
  99. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  100. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  101. data/app/views/bookmarks/_tools.html.erb +2 -2
  102. data/app/views/bookmarks/index.html.erb +2 -2
  103. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  104. data/app/views/catalog/_citation.html.erb +18 -23
  105. data/app/views/catalog/_constraints.html.erb +5 -8
  106. data/app/views/catalog/_constraints_element.html.erb +6 -6
  107. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
  108. data/app/views/catalog/_document.html.erb +5 -3
  109. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
  110. data/app/views/catalog/_document_action.html.erb +2 -1
  111. data/app/views/catalog/_email_form.html.erb +8 -4
  112. data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
  113. data/app/views/catalog/_facet_layout.html.erb +5 -7
  114. data/app/views/catalog/_facet_limit.html.erb +3 -2
  115. data/app/views/catalog/_facet_pagination.html.erb +10 -10
  116. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  117. data/app/views/catalog/_facets.html.erb +8 -12
  118. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
  119. data/app/views/catalog/_home_text.html.erb +32 -36
  120. data/app/views/catalog/_index.html.erb +12 -0
  121. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
  122. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  123. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  124. data/app/views/catalog/_search_form.html.erb +12 -8
  125. data/app/views/catalog/_search_header.html.erb +0 -3
  126. data/app/views/catalog/_search_results.html.erb +4 -0
  127. data/app/views/catalog/_show.html.erb +10 -0
  128. data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  129. data/app/views/catalog/_show_main_content.html.erb +4 -4
  130. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  131. data/app/views/catalog/_show_tools.html.erb +9 -11
  132. data/app/views/catalog/_sms_form.html.erb +8 -4
  133. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  134. data/app/views/catalog/_sort_widget.html.erb +7 -7
  135. data/app/views/catalog/_thumbnail.html.erb +5 -0
  136. data/app/views/catalog/_view_type_group.html.erb +2 -2
  137. data/app/views/catalog/citation.html.erb +1 -1
  138. data/app/views/catalog/citation.js.erb +9 -1
  139. data/app/views/catalog/email.html.erb +5 -5
  140. data/app/views/catalog/email_success.html.erb +11 -9
  141. data/app/views/catalog/facet.html.erb +5 -6
  142. data/app/views/catalog/index.atom.builder +10 -15
  143. data/app/views/catalog/index.html.erb +9 -11
  144. data/app/views/catalog/index.json.jbuilder +65 -3
  145. data/app/views/catalog/index.rss.builder +5 -5
  146. data/app/views/catalog/opensearch.xml.builder +10 -10
  147. data/app/views/catalog/show.html.erb +11 -6
  148. data/app/views/catalog/sms.html.erb +2 -3
  149. data/app/views/catalog/sms_success.html.erb +11 -10
  150. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  151. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  152. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  153. data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
  154. data/app/views/kaminari/blacklight/_page.html.erb +3 -3
  155. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  156. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  157. data/app/views/layouts/blacklight.html.erb +14 -41
  158. data/app/views/layouts/blacklight/base.html.erb +43 -0
  159. data/app/views/layouts/catalog_result.html.erb +11 -0
  160. data/app/views/search_history/index.html.erb +16 -21
  161. data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  162. data/app/views/shared/_header_navbar.html.erb +8 -13
  163. data/app/views/shared/_modal.html.erb +6 -0
  164. data/app/views/shared/_user_util_links.html.erb +22 -0
  165. data/blacklight.gemspec +10 -11
  166. data/config/locales/blacklight.de.yml +0 -30
  167. data/config/locales/blacklight.en.yml +1 -27
  168. data/config/locales/blacklight.es.yml +0 -30
  169. data/config/locales/blacklight.fr.yml +0 -30
  170. data/config/locales/blacklight.hu.yml +210 -0
  171. data/config/locales/blacklight.it.yml +0 -30
  172. data/config/locales/blacklight.nl.yml +210 -0
  173. data/config/locales/blacklight.pt-BR.yml +6 -32
  174. data/config/locales/blacklight.sq.yml +1 -28
  175. data/config/locales/blacklight.zh.yml +0 -25
  176. data/config/routes.rb +3 -10
  177. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  178. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  179. data/lib/blacklight.rb +4 -5
  180. data/lib/blacklight/abstract_repository.rb +9 -21
  181. data/lib/blacklight/configuration.rb +82 -89
  182. data/lib/blacklight/configuration/context.rb +1 -1
  183. data/lib/blacklight/configuration/facet_field.rb +16 -9
  184. data/lib/blacklight/configuration/field.rb +32 -3
  185. data/lib/blacklight/configuration/fields.rb +41 -48
  186. data/lib/blacklight/configuration/search_field.rb +2 -2
  187. data/lib/blacklight/configuration/sort_field.rb +2 -2
  188. data/lib/blacklight/configuration/view_config.rb +4 -0
  189. data/lib/blacklight/engine.rb +6 -10
  190. data/lib/blacklight/exceptions.rb +4 -7
  191. data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
  192. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  193. data/lib/blacklight/parameters.rb +1 -1
  194. data/lib/blacklight/routes/searchable.rb +1 -0
  195. data/lib/blacklight/search_builder.rb +26 -35
  196. data/lib/blacklight/search_state.rb +8 -8
  197. data/lib/blacklight/solr/repository.rb +3 -36
  198. data/lib/blacklight/solr/request.rb +1 -1
  199. data/lib/blacklight/solr/response.rb +29 -30
  200. data/lib/blacklight/solr/response/facets.rb +29 -31
  201. data/lib/blacklight/solr/response/group.rb +3 -3
  202. data/lib/blacklight/solr/response/group_response.rb +1 -1
  203. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  204. data/lib/blacklight/solr/response/response.rb +2 -2
  205. data/lib/blacklight/solr/response/spelling.rb +3 -3
  206. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  207. data/lib/blacklight/version.rb +1 -1
  208. data/lib/generators/blacklight/assets_generator.rb +8 -8
  209. data/lib/generators/blacklight/controller_generator.rb +4 -5
  210. data/lib/generators/blacklight/document_generator.rb +1 -1
  211. data/lib/generators/blacklight/install_generator.rb +18 -21
  212. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  213. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
  214. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  215. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  216. data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
  217. data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  218. data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  219. data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  220. data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  221. data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  222. data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
  223. data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  224. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  225. data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  226. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  227. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  228. data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  229. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  230. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  231. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  232. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
  233. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  234. data/lib/generators/blacklight/user_generator.rb +3 -6
  235. data/lib/railties/blacklight.rake +19 -14
  236. data/package-lock.json +2057 -0
  237. data/package.json +28 -0
  238. data/spec/controllers/alternate_controller_spec.rb +1 -1
  239. data/spec/controllers/application_controller_spec.rb +1 -1
  240. data/spec/controllers/blacklight/base_spec.rb +1 -1
  241. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  242. data/spec/controllers/blacklight/facet_spec.rb +1 -1
  243. data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
  244. data/spec/controllers/bookmarks_controller_spec.rb +1 -36
  245. data/spec/controllers/catalog_controller_spec.rb +153 -53
  246. data/spec/controllers/search_history_controller_spec.rb +2 -2
  247. data/spec/features/alternate_controller_spec.rb +1 -1
  248. data/spec/features/autocomplete_spec.rb +2 -2
  249. data/spec/features/bookmarks_spec.rb +10 -10
  250. data/spec/features/did_you_mean_spec.rb +3 -9
  251. data/spec/features/facets_spec.rb +11 -11
  252. data/spec/features/record_view_spec.rb +1 -6
  253. data/spec/features/search_context_spec.rb +2 -2
  254. data/spec/features/search_filters_spec.rb +41 -41
  255. data/spec/features/search_formats_spec.rb +1 -1
  256. data/spec/features/search_history_spec.rb +1 -26
  257. data/spec/features/search_pagination_spec.rb +1 -1
  258. data/spec/features/search_results_spec.rb +3 -4
  259. data/spec/features/search_sort_spec.rb +2 -2
  260. data/spec/features/search_spec.rb +5 -10
  261. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  262. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
  263. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
  264. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
  265. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  266. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
  267. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
  268. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
  269. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
  270. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
  271. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
  272. data/spec/helpers/blacklight_helper_spec.rb +36 -141
  273. data/spec/helpers/catalog_helper_spec.rb +37 -56
  274. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
  275. data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
  276. data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
  277. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  278. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
  279. data/spec/lib/blacklight/parameters_spec.rb +1 -1
  280. data/spec/lib/blacklight/search_state_spec.rb +2 -2
  281. data/spec/lib/blacklight_spec.rb +1 -1
  282. data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
  283. data/spec/models/blacklight/configurable_spec.rb +15 -16
  284. data/spec/models/blacklight/configuration/context_spec.rb +1 -1
  285. data/spec/models/blacklight/configuration_spec.rb +146 -135
  286. data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
  287. data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
  288. data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
  289. data/spec/models/blacklight/document/email_spec.rb +3 -3
  290. data/spec/models/blacklight/document/sms_spec.rb +3 -3
  291. data/spec/models/blacklight/document_spec.rb +3 -16
  292. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  293. data/spec/models/blacklight/icon_spec.rb +34 -0
  294. data/spec/models/blacklight/search_builder_spec.rb +33 -27
  295. data/spec/models/blacklight/solr/document_spec.rb +18 -7
  296. data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
  297. data/spec/models/blacklight/solr/repository_spec.rb +32 -27
  298. data/spec/models/blacklight/solr/request_spec.rb +1 -1
  299. data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
  300. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
  301. data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
  302. data/spec/models/blacklight/solr/response_spec.rb +9 -6
  303. data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
  304. data/spec/models/blacklight/suggest/response_spec.rb +4 -5
  305. data/spec/models/blacklight/suggest_search_spec.rb +14 -7
  306. data/spec/models/blacklight/user_spec.rb +1 -1
  307. data/spec/models/bookmark_spec.rb +1 -1
  308. data/spec/models/record_mailer_spec.rb +2 -2
  309. data/spec/models/search_spec.rb +1 -1
  310. data/spec/models/solr_document_spec.rb +3 -3
  311. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
  312. data/spec/presenters/index_presenter_spec.rb +70 -143
  313. data/spec/presenters/pipeline_spec.rb +4 -4
  314. data/spec/presenters/show_presenter_spec.rb +83 -145
  315. data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
  316. data/spec/routing/catalog_routing_spec.rb +1 -17
  317. data/spec/services/blacklight/search_service_spec.rb +446 -0
  318. data/spec/spec_helper.rb +22 -9
  319. data/spec/test_app_templates/Gemfile.extra +2 -5
  320. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  321. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
  322. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
  323. data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
  324. data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
  325. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  326. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  327. data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
  328. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
  329. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
  330. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
  331. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  332. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
  333. data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
  334. data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
  335. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
  336. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
  337. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
  338. data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
  339. data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
  340. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  341. data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
  342. data/spec/views/catalog/index.html.erb_spec.rb +4 -7
  343. data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
  344. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  345. data/spec/views/catalog/show.html.erb_spec.rb +2 -2
  346. data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
  347. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
  348. data/tasks/blacklight.rake +10 -8
  349. data/template.demo.rb +1 -11
  350. metadata +171 -189
  351. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  352. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  353. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
  354. data/app/assets/javascripts/blacklight/core.js +0 -30
  355. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  356. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  357. data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
  358. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  359. data/app/controllers/saved_searches_controller.rb +0 -4
  360. data/app/controllers/suggest_controller.rb +0 -4
  361. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  362. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  363. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  364. data/app/helpers/blacklight_url_helper.rb +0 -4
  365. data/app/helpers/component_helper.rb +0 -4
  366. data/app/helpers/facets_helper.rb +0 -4
  367. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  368. data/app/helpers/layout_helper.rb +0 -4
  369. data/app/helpers/render_constraints_helper.rb +0 -4
  370. data/app/helpers/search_history_constraints_helper.rb +0 -4
  371. data/app/helpers/suggest_helper.rb +0 -4
  372. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  373. data/app/presenters/blacklight/document_presenter.rb +0 -153
  374. data/app/views/_user_util_links.html.erb +0 -26
  375. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  376. data/app/views/catalog/_index_default.html.erb +0 -12
  377. data/app/views/catalog/_show_default.html.erb +0 -10
  378. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  379. data/app/views/saved_searches/index.html.erb +0 -32
  380. data/app/views/shared/_ajax_modal.html.erb +0 -6
  381. data/lib/blacklight/utils.rb +0 -183
  382. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  383. data/solr/conf/schema.xml +0 -627
  384. data/solr/conf/solrconfig.xml +0 -411
  385. data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
  386. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  387. data/spec/controllers/suggest_controller_spec.rb +0 -17
  388. data/spec/features/saved_searches_spec.rb +0 -47
  389. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  390. data/spec/lib/blacklight/utils_spec.rb +0 -167
  391. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  392. data/spec/presenters/document_presenter_spec.rb +0 -438
  393. data/spec/support/backport_test.rb +0 -14
@@ -1,4 +1,5 @@
1
1
  /*global Bloodhound */
2
+ import Bloodhound from 'typeahead.js/dist/bloodhound.js'
2
3
 
3
4
  Blacklight.onLoad(function() {
4
5
  'use strict';
@@ -9,7 +10,7 @@ Blacklight.onLoad(function() {
9
10
  return;
10
11
  }
11
12
  var suggestUrl = $el.data().autocompletePath;
12
-
13
+
13
14
  var terms = new Bloodhound({
14
15
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
15
16
  queryTokenizer: Bloodhound.tokenizers.whitespace,
@@ -18,7 +19,7 @@ Blacklight.onLoad(function() {
18
19
  wildcard: '%QUERY'
19
20
  }
20
21
  });
21
-
22
+
22
23
  terms.initialize();
23
24
 
24
25
  $el.typeahead({
@@ -0,0 +1,20 @@
1
+ //= require blacklight/core
2
+ (function($) {
3
+ Blacklight.doSearchAutofocusFallback = function() {
4
+ if (typeof Blacklight.do_search_autofocus_fallback == 'function') {
5
+ console.warn("do_search_autofocus_fallback is deprecated. Use doSearchAutofocusFallback instead.");
6
+ return Blacklight.do_search_autofocus_fallback();
7
+ }
8
+ if (typeof Modernizer != 'undefined') {
9
+ if (Modernizr.autofocus) {
10
+ return;
11
+ }
12
+ }
13
+
14
+ $('input[autofocus]').focus();
15
+ }
16
+
17
+ Blacklight.onLoad(function() {
18
+ Blacklight.doSearchAutofocusFallback();
19
+ });
20
+ })(jQuery);
@@ -0,0 +1,25 @@
1
+ (function($) {
2
+ //change form submit toggle to checkbox
3
+ Blacklight.doBookmarkToggleBehavior = function() {
4
+ if (typeof Blacklight.do_bookmark_toggle_behavior == 'function') {
5
+ console.warn("do_bookmark_toggle_behavior is deprecated. Use doBookmarkToggleBehavior instead.");
6
+ return Blacklight.do_bookmark_toggle_behavior();
7
+ }
8
+ $(Blacklight.doBookmarkToggleBehavior.selector).blCheckboxSubmit({
9
+ // cssClass is added to elements added, plus used for id base
10
+ cssClass: 'toggle-bookmark',
11
+ success: function(checked, response) {
12
+ if (response.bookmarks) {
13
+ $('[data-role=bookmark-counter]').text(response.bookmarks.count);
14
+ }
15
+ }
16
+ });
17
+ };
18
+ Blacklight.doBookmarkToggleBehavior.selector = 'form.bookmark-toggle';
19
+
20
+ Blacklight.onLoad(function() {
21
+ Blacklight.doBookmarkToggleBehavior();
22
+ });
23
+
24
+
25
+ })(jQuery);
@@ -0,0 +1,133 @@
1
+ /* A JQuery plugin (should this be implemented as a widget instead? not sure)
2
+ that will convert a "toggle" form, with single submit button to add/remove
3
+ something, like used for Bookmarks, into an AJAXy checkbox instead.
4
+
5
+ Apply to a form. Does require certain assumption about the form:
6
+ 1) The same form 'action' href must be used for both ADD and REMOVE
7
+ actions, with the different being the hidden input name="_method"
8
+ being set to "put" or "delete" -- that's the Rails method to pretend
9
+ to be doing a certain HTTP verb. So same URL, PUT to add, DELETE
10
+ to remove. This plugin assumes that.
11
+
12
+ Plus, the form this is applied to should provide a data-doc-id
13
+ attribute (HTML5-style doc-*) that contains the id/primary key
14
+ of the object in question -- used by plugin for a unique value for
15
+ DOM id's.
16
+
17
+ Uses HTML for a checkbox compatible with Bootstrap 3.
18
+
19
+ Pass in options for your class name and labels:
20
+ $("form.something").blCheckboxSubmit({
21
+ checked_label: "Selected",
22
+ unchecked_label: "Select",
23
+ progress_label: "Saving...",
24
+ //cssClass is added to elements added, plus used for id base
25
+ cssClass: "toggle_my_kinda_form",
26
+ success: function(after_success_check_state) {
27
+ #optional callback
28
+ }
29
+ });
30
+ */
31
+ (function($) {
32
+ $.fn.blCheckboxSubmit = function(argOpts) {
33
+ this.each(function() {
34
+ var options = $.extend({}, $.fn.blCheckboxSubmit.defaults, argOpts);
35
+
36
+
37
+ var form = $(this);
38
+ form.children().hide();
39
+ //We're going to use the existing form to actually send our add/removes
40
+ //This works conveneintly because the exact same action href is used
41
+ //for both bookmarks/$doc_id. But let's take out the irrelevant parts
42
+ //of the form to avoid any future confusion.
43
+ form.find('input[type=submit]').remove();
44
+
45
+ //View needs to set data-doc-id so we know a unique value
46
+ //for making DOM id
47
+ var uniqueId = form.attr('data-doc-id') || Math.random();
48
+ // if form is currently using method delete to change state,
49
+ // then checkbox is currently checked
50
+ var checked = (form.find('input[name=_method][value=delete]').size() != 0);
51
+
52
+ var checkbox = $('<input type="checkbox">')
53
+ .addClass( options.cssClass )
54
+ .attr('id', options.cssClass + '_' + uniqueId);
55
+ var label = $('<label>')
56
+ .addClass( options.cssClass )
57
+ .attr('for', options.cssClass + '_' + uniqueId)
58
+ .attr('title', form.attr('title') || '');
59
+ var span = $('<span>');
60
+
61
+ label.append(checkbox);
62
+ label.append(' ');
63
+ label.append(span);
64
+
65
+ var checkboxDiv = $('<div class="checkbox" />')
66
+ .addClass(options.cssClass)
67
+ .append(label);
68
+
69
+ function updateStateFor(state) {
70
+ checkbox.prop('checked', state);
71
+ label.toggleClass('checked', state);
72
+ if (state) {
73
+ //Set the Rails hidden field that fakes an HTTP verb
74
+ //properly for current state action.
75
+ form.find('input[name=_method]').val('delete');
76
+ span.text(form.attr('data-present'));
77
+ } else {
78
+ form.find('input[name=_method]').val('put');
79
+ span.text(form.attr('data-absent'));
80
+ }
81
+ }
82
+
83
+ form.append(checkboxDiv);
84
+ updateStateFor(checked);
85
+
86
+ checkbox.click(function() {
87
+ span.text(form.attr('data-inprogress'));
88
+ label.attr('disabled', 'disabled');
89
+ checkbox.attr('disabled', 'disabled');
90
+
91
+ $.ajax({
92
+ url: form.attr('action'),
93
+ dataType: 'json',
94
+ type: form.attr('method').toUpperCase(),
95
+ data: form.serialize(),
96
+ error: function() {
97
+ alert('Error');
98
+ updateStateFor(checked);
99
+ label.removeAttr('disabled');
100
+ checkbox.removeAttr('disabled');
101
+ },
102
+ success: function(data, status, xhr) {
103
+ //if app isn't running at all, xhr annoyingly
104
+ //reports success with status 0.
105
+ if (xhr.status != 0) {
106
+ checked = ! checked;
107
+ updateStateFor(checked);
108
+ label.removeAttr('disabled');
109
+ checkbox.removeAttr('disabled');
110
+ options.success.call(form, checked, xhr.responseJSON);
111
+ } else {
112
+ alert('Error');
113
+ updateStateFor(checked);
114
+ label.removeAttr('disabled');
115
+ checkbox.removeAttr('disabled');
116
+ }
117
+ }
118
+ });
119
+
120
+ return false;
121
+ }); //checkbox.click
122
+
123
+
124
+ }); //this.each
125
+ return this;
126
+ };
127
+
128
+ $.fn.blCheckboxSubmit.defaults = {
129
+ //cssClass is added to elements added, plus used for id base
130
+ cssClass: 'blCheckboxSubmit',
131
+ success: function() {} //callback
132
+ };
133
+ })(jQuery);
@@ -2,7 +2,7 @@
2
2
  Blacklight.onLoad(function() {
3
3
  // when clicking on a link that toggles the collapsing behavior, don't do anything
4
4
  // with the hash or the page could jump around.
5
- $(document).on("click", "a[data-toggle=collapse][href='#'], [data-toggle=collapse] a[href='#']", function(event) {
5
+ $(document).on('click', 'a[data-toggle=collapse][href="#"], [data-toggle=collapse] a[href="#"]', function(event) {
6
6
  event.preventDefault();
7
7
  });
8
8
  });
@@ -0,0 +1,39 @@
1
+ Blacklight = function() {
2
+ var buffer = new Array;
3
+ return {
4
+ onLoad: function(func) {
5
+ buffer.push(func);
6
+ },
7
+
8
+ activate: function() {
9
+ for(var i = 0; i < buffer.length; i++) {
10
+ buffer[i].call();
11
+ }
12
+ },
13
+
14
+ listeners: function () {
15
+ var listeners = [];
16
+ if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
17
+ // Turbolinks 5
18
+ if (Turbolinks.BrowserAdapter) {
19
+ listeners.push('turbolinks:load');
20
+ } else {
21
+ // Turbolinks < 5
22
+ listeners.push('page:load', 'ready');
23
+ }
24
+ } else {
25
+ listeners.push('ready');
26
+ }
27
+
28
+ return listeners.join(' ');
29
+ }
30
+ };
31
+ }();
32
+
33
+ // turbolinks triggers page:load events on page transition
34
+ // If app isn't using turbolinks, this event will never be triggered, no prob.
35
+ $(document).on(Blacklight.listeners(), function() {
36
+ Blacklight.activate();
37
+ });
38
+
39
+ $('.no-js').removeClass('no-js').addClass('js');
@@ -8,12 +8,12 @@
8
8
  function longer (a,b){ return b.textContent.length - a.textContent.length; }
9
9
 
10
10
  $('ul.facet-values, ul.pivot-facet').each(function(){
11
- var longest = $(this).find('span.facet-count').sort(longer).first();
12
- var clone = longest.clone()
13
- .css('visibility','hidden').css('width', 'auto');
14
- $('body').append(clone);
15
- $(this).find('.facet-count').first().width(clone.width());
16
- clone.remove();
11
+ var longest = $(this).find('span.facet-count').sort(longer)[0];
12
+
13
+ if (longest && longest.textContent) {
14
+ var width = longest.textContent.length + 1 + 'ch';
15
+ $(this).find('.facet-count').first().width(width);
16
+ }
17
17
  });
18
18
  };
19
19
 
@@ -1,27 +1,27 @@
1
1
  //= require blacklight/core
2
2
 
3
3
  /*
4
- The ajax_modal plugin can display some interactions inside a Bootstrap
4
+ The blacklight modal plugin can display some interactions inside a Bootstrap
5
5
  modal window, including some multi-page interactions.
6
6
 
7
7
  It supports unobtrusive Javascript, where a link or form that would have caused
8
8
  a new page load is changed to display it's results inside a modal dialog,
9
9
  by this plugin. The plugin assumes there is a Bootstrap modal div
10
- on the page with id #ajax-modal to use as the modal -- the standard Blacklight
10
+ on the page with id #blacklight-modal to use as the modal -- the standard Blacklight
11
11
  layout provides this.
12
12
 
13
13
  To make a link or form have their results display inside a modal, add
14
- `data-ajax-modal="trigger"` to the link or form. (Note, form itself not submit input)
14
+ `data-blacklight-modal="trigger"` to the link or form. (Note, form itself not submit input)
15
15
  With Rails link_to helper, you'd do that like:
16
16
 
17
- link_to something, link, :data => {:ajax_modal => "trigger"}
17
+ link_to something, link, data: { blacklight_modal: "trigger" }
18
18
 
19
19
  The results of the link href or form submit will be displayed inside
20
20
  a modal -- they should include the proper HTML markup for a bootstrap modal's
21
21
  contents. Also, you ordinarily won't want the Rails template with wrapping
22
22
  navigational elements to be used. The Rails controller could suppress
23
23
  the layout when a JS AJAX request is detected, OR the response
24
- can include a `<div data-ajax-modal="container">` -- only the contents
24
+ can include a `<div data-blacklight-modal="container">` -- only the contents
25
25
  of the container will be placed inside the modal, the rest of the
26
26
  page will be ignored.
27
27
 
@@ -33,12 +33,12 @@
33
33
 
34
34
  Link or forms inside the modal will ordinarily cause page loads
35
35
  when they are triggered. However, if you'd like their results
36
- to stay within the modal, just add `data-ajax-modal="preserve"`
36
+ to stay within the modal, just add `data-blacklight-modal="preserve"`
37
37
  to the link or form.
38
38
 
39
39
  Here's an example of what might be returned, demonstrating most of the devices available:
40
40
 
41
- <div data-ajax-modal="container">
41
+ <div data-blacklight-modal="container">
42
42
  <div class="modal-header">
43
43
  <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
44
44
  <h3 class="modal-title">Request Placed</h3>
@@ -46,47 +46,46 @@
46
46
 
47
47
  <div class="modal-body">
48
48
  <p>Some message</p>
49
- <%= link_to "This result will still be within modal", some_link, :data => {:ajax_modal => "preserve"} %>
49
+ <%= link_to "This result will still be within modal", some_link, data: { blacklight: "preserve" } %>
50
50
  </div>
51
51
 
52
52
 
53
53
  <div class="modal-footer">
54
- <%= link_to "Close the modal", request_done_path, :class => "submit button dialog-close", :data => {:dismiss => "modal"} %>
54
+ <%= link_to "Close the modal", request_done_path, class: "submit button dialog-close", data: { dismiss: "modal" } %>
55
55
  </div>
56
56
  </div>
57
57
 
58
58
 
59
59
  One additional feature. If the content returned from the AJAX modal load
60
- has an element with `data-ajax-modal=close`, that will trigger the modal
60
+ has an element with `data-blacklight-modal=close`, that will trigger the modal
61
61
  to be closed. And if this element includes a node with class "flash_messages",
62
62
  the flash-messages node will be added to the main page inside #main-flahses.
63
63
 
64
64
  == Events
65
65
 
66
- We'll send out an event 'loaded.blacklight.ajax-modal' with the #ajax-modal
66
+ We'll send out an event 'loaded.blacklight.blacklight-modal' with the #blacklight-modal
67
67
  dialog as the target, right after content is loaded into the modal but before
68
68
  it is shown (if not already a shown modal). In an event handler, you can
69
69
  inspect loaded content by looking inside $(this). If you call event.preventDefault(),
70
70
  we won't 'show' the dialog (although it may already have been shown, you may want to
71
71
  $(this).modal("hide") if you want to ensure hidden/closed.
72
72
 
73
- The data-ajax-modal=close behavior is implemented with this event, see for example.
73
+ The data-blacklight-modal=close behavior is implemented with this event, see for example.
74
74
  */
75
75
 
76
- // We keep all our data in Blacklight.ajaxModal object.
76
+ // We keep all our data in Blacklight.modal object.
77
77
  // Create lazily if someone else created first.
78
- if (Blacklight.ajaxModal === undefined) {
79
- Blacklight.ajaxModal = {};
78
+ if (Blacklight.modal === undefined) {
79
+ Blacklight.modal = {};
80
80
  }
81
81
 
82
-
83
82
  // a Bootstrap modal div that should be already on the page hidden
84
- Blacklight.ajaxModal.modalSelector = "#ajax-modal";
83
+ Blacklight.modal.modalSelector = '#blacklight-modal';
85
84
 
86
85
  // Trigger selectors identify forms or hyperlinks that should open
87
86
  // inside a modal dialog.
88
- Blacklight.ajaxModal.triggerLinkSelector = "a[data-ajax-modal~=trigger], a.lightboxLink,a.more_facets_link,.ajax_modal_launch";
89
- Blacklight.ajaxModal.triggerFormSelector = "form[data-ajax-modal~=trigger], form.ajax_form";
87
+ Blacklight.modal.triggerLinkSelector = 'a[data-blacklight-modal~=trigger]';
88
+ Blacklight.modal.triggerFormSelector = 'form[data-blacklight-modal~=trigger]';
90
89
 
91
90
  // preserve selectors identify forms or hyperlinks that, if activated already
92
91
  // inside a modal dialog, should have destinations remain inside the modal -- but
@@ -95,57 +94,58 @@ Blacklight.ajaxModal.triggerFormSelector = "form[data-ajax-modal~=trigger], for
95
94
  // No need to repeat selectors from trigger selectors, those will already
96
95
  // be preserved. MUST be manually prefixed with the modal selector,
97
96
  // so they only apply to things inside a modal.
98
- Blacklight.ajaxModal.preserveLinkSelector = Blacklight.ajaxModal.modalSelector + ' a[data-ajax-modal~=preserve]';
99
- Blacklight.ajaxModal.preserveFormSelector = Blacklight.ajaxModal.modalSelector + ' form[data-ajax-modal~=preserve]'
97
+ Blacklight.modal.preserveLinkSelector = Blacklight.modal.modalSelector + ' a[data-blacklight-modal~=preserve]';
100
98
 
101
- Blacklight.ajaxModal.containerSelector = "[data-ajax-modal~=container]";
99
+ Blacklight.modal.containerSelector = '[data-blacklight-modal~=container]';
102
100
 
103
- Blacklight.ajaxModal.modalCloseSelector = "[data-ajax-modal~=close], span.ajax-close-modal";
101
+ Blacklight.modal.modalCloseSelector = '[data-blacklight-modal~=close]';
104
102
 
105
103
  // Called on fatal failure of ajax load, function returns content
106
104
  // to show to user in modal. Right now called only for extreme
107
105
  // network errors.
108
- Blacklight.ajaxModal.onFailure = function(data) {
109
- var contents = "<div class='modal-header'>" +
110
- "<button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>" +
111
- "Network Error</div>";
112
- $(Blacklight.ajaxModal.modalSelector).find('.modal-content').html(contents);
113
- $(Blacklight.ajaxModal.modalSelector).modal('show');
106
+ Blacklight.modal.onFailure = function(data) {
107
+ var contents = '<div class="modal-header">' +
108
+ '<div class="modal-title">Network Error</div>' +
109
+ '<button type="button" class="blacklight-modal-close close" data-dismiss="modal" aria-label="Close">' +
110
+ ' <span aria-hidden="true">&times;</span>' +
111
+ '</button>';
112
+ $(Blacklight.modal.modalSelector).find('.modal-content').html(contents);
113
+ $(Blacklight.modal.modalSelector).modal('show');
114
114
  }
115
115
 
116
- Blacklight.ajaxModal.receiveAjax = function (contents) {
116
+ Blacklight.modal.receiveAjax = function (contents) {
117
117
  // does it have a data- selector for container?
118
118
  // important we don't execute script tags, we shouldn't.
119
119
  // code modelled off of JQuery ajax.load. https://github.com/jquery/jquery/blob/master/src/ajax/load.js?source=c#L62
120
- var container = $("<div>").
121
- append( jQuery.parseHTML(contents) ).find( Blacklight.ajaxModal.containerSelector ).first();
122
- if (container.length !== 0) {
120
+ var container = $('<div>').
121
+ append( jQuery.parseHTML(contents) ).find( Blacklight.modal.containerSelector ).first();
122
+ if (container.size() !== 0) {
123
123
  contents = container.html();
124
124
  }
125
125
 
126
- $(Blacklight.ajaxModal.modalSelector).find('.modal-content').html(contents);
126
+ $(Blacklight.modal.modalSelector).find('.modal-content').html(contents);
127
127
 
128
128
  // send custom event with the modal dialog div as the target
129
- var e = $.Event('loaded.blacklight.ajax-modal');
130
- $(Blacklight.ajaxModal.modalSelector).trigger(e);
129
+ var e = $.Event('loaded.blacklight.blacklight-modal')
130
+ $(Blacklight.modal.modalSelector).trigger(e);
131
131
  // if they did preventDefault, don't show the dialog
132
132
  if (e.isDefaultPrevented()) return;
133
133
 
134
- $(Blacklight.ajaxModal.modalSelector).modal('show');
134
+ $(Blacklight.modal.modalSelector).modal('show');
135
135
  };
136
136
 
137
137
 
138
- Blacklight.ajaxModal.modalAjaxLinkClick = function(e) {
138
+ Blacklight.modal.modalAjaxLinkClick = function(e) {
139
139
  e.preventDefault();
140
140
 
141
141
  $.ajax({
142
142
  url: $(this).attr('href')
143
143
  })
144
- .fail(Blacklight.ajaxModal.onFailure)
145
- .done(Blacklight.ajaxModal.receiveAjax)
144
+ .fail(Blacklight.modal.onFailure)
145
+ .done(Blacklight.modal.receiveAjax)
146
146
  };
147
147
 
148
- Blacklight.ajaxModal.modalAjaxFormSubmit = function(e) {
148
+ Blacklight.modal.modalAjaxFormSubmit = function(e) {
149
149
  e.preventDefault();
150
150
 
151
151
  $.ajax({
@@ -153,54 +153,54 @@ Blacklight.ajaxModal.modalAjaxFormSubmit = function(e) {
153
153
  data: $(this).serialize(),
154
154
  type: $(this).attr('method') // POST
155
155
  })
156
- .fail(Blacklight.ajaxModal.onFailure)
157
- .done(Blacklight.ajaxModal.receiveAjax)
156
+ .fail(Blacklight.modal.onFailure)
157
+ .done(Blacklight.modal.receiveAjax)
158
158
  }
159
159
 
160
160
 
161
161
 
162
- Blacklight.ajaxModal.setup_modal = function() {
162
+ Blacklight.modal.setupModal = function() {
163
163
  // Event indicating blacklight is setting up a modal link,
164
164
  // you can catch it and call e.preventDefault() to abort
165
165
  // setup.
166
- var e = $.Event('setup.blacklight.ajax-modal');
167
- $("body").trigger(e);
166
+ var e = $.Event('setup.blacklight.blacklight-modal');
167
+ $('body').trigger(e);
168
168
  if (e.isDefaultPrevented()) return;
169
169
 
170
170
  // Register both trigger and preserve selectors in ONE event handler, combining
171
171
  // into one selector with a comma, so if something matches BOTH selectors, it
172
172
  // still only gets the event handler called once.
173
- $("body").on("click", Blacklight.ajaxModal.triggerLinkSelector + ", " + Blacklight.ajaxModal.preserveLinkSelector,
174
- Blacklight.ajaxModal.modalAjaxLinkClick);
175
- $("body").on("submit", Blacklight.ajaxModal.triggerFormSelector + ", " + Blacklight.ajaxModal.preserveFormSelector,
176
- Blacklight.ajaxModal.modalAjaxFormSubmit);
173
+ $('body').on('click', Blacklight.modal.triggerLinkSelector + ', ' + Blacklight.modal.preserveLinkSelector,
174
+ Blacklight.modal.modalAjaxLinkClick);
175
+ $('body').on('submit', Blacklight.modal.triggerFormSelector + ', ' + Blacklight.modal.preserveFormSelector,
176
+ Blacklight.modal.modalAjaxFormSubmit);
177
177
 
178
- // Catch our own custom loaded event to implement data-ajax-modal=closed
179
- $("body").on("loaded.blacklight.ajax-modal", Blacklight.ajaxModal.check_close_ajax_modal);
178
+ // Catch our own custom loaded event to implement data-blacklight-modal=closed
179
+ $('body').on('loaded.blacklight.blacklight-modal', Blacklight.modal.checkCloseModal);
180
180
 
181
181
  // we support doing data-dismiss=modal on a <a> with a href for non-ajax
182
182
  // use, we need to suppress following the a's href that's there for
183
183
  // non-JS contexts.
184
- $("body ").on("click", Blacklight.ajaxModal.modalSelector + " a[data-dismiss~=modal]", function (e) {
184
+ $('body').on('click', Blacklight.modal.modalSelector + ' a[data-dismiss~=modal]', function (e) {
185
185
  e.preventDefault();
186
186
  });
187
187
  };
188
188
 
189
- // A function used as an event handler on loaded.blacklight.ajax-modal
190
- // to catch contained data-ajax-modal=closed directions
191
- Blacklight.ajaxModal.check_close_ajax_modal = function(event) {
192
- if ($(event.target).find(Blacklight.ajaxModal.modalCloseSelector).length) {
193
- modal_flashes = $(this).find('.flash_messages');
189
+ // A function used as an event handler on loaded.blacklight.blacklight-modal
190
+ // to catch contained data-blacklight-modal=closed directions
191
+ Blacklight.modal.checkCloseModal = function(event) {
192
+ if ($(event.target).find(Blacklight.modal.modalCloseSelector).length) {
193
+ var modalFlashes = $(this).find('.flash_messages');
194
194
 
195
- $(event.target).modal("hide");
195
+ $(event.target).modal('hide');
196
196
  event.preventDefault();
197
197
 
198
- main_flashes = $('#main-flashes');
199
- main_flashes.append(modal_flashes);
200
- modal_flashes.fadeIn(500);
198
+ var mainFlashes = $('#main-flashes');
199
+ mainFlashes.append(modalFlashes);
200
+ modalFlashes.fadeIn(500);
201
201
  }
202
202
  }
203
203
 
204
204
  Blacklight.onLoad(function() {
205
- Blacklight.ajaxModal.setup_modal();
205
+ Blacklight.modal.setupModal();
206
206
  });