blacklight 7.41.0 → 8.0.0.beta1
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.
- checksums.yaml +4 -4
- data/.env +2 -3
- data/.github/workflows/ruby.yml +81 -0
- data/.rubocop.yml +243 -14
- data/.rubocop_todo.yml +137 -429
- data/Gemfile +11 -6
- data/README.md +11 -3
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/blacklight.esm.js +384 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +374 -493
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +4 -4
- data/app/assets/stylesheets/blacklight/_facets.scss +72 -44
- data/app/assets/stylesheets/blacklight/_header.scss +0 -15
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
- data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
- data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
- data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
- data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
- data/app/builders/blacklight/action_builder.rb +18 -9
- data/app/components/blacklight/advanced_search_form_component.html.erb +3 -3
- data/app/components/blacklight/advanced_search_form_component.rb +8 -10
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.rb +12 -10
- data/app/components/blacklight/document/actions_component.rb +2 -2
- data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
- data/app/components/blacklight/document/bookmark_component.rb +4 -2
- data/app/components/blacklight/document/citation_component.rb +5 -3
- data/app/components/blacklight/document/group_component.rb +7 -3
- data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
- data/app/components/blacklight/document/sidebar_component.rb +16 -0
- data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
- data/app/components/blacklight/document/thumbnail_component.rb +1 -9
- data/app/components/blacklight/document_component.html.erb +1 -1
- data/app/components/blacklight/document_component.rb +16 -78
- data/app/components/blacklight/document_metadata_component.html.erb +2 -4
- data/app/components/blacklight/document_metadata_component.rb +5 -10
- data/app/components/blacklight/facet_component.rb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +4 -4
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +4 -5
- data/app/components/blacklight/facet_field_component.rb +9 -2
- data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_list_component.rb +37 -5
- data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
- data/app/components/blacklight/facet_item_component.rb +1 -43
- data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
- data/app/components/blacklight/header_component.rb +1 -1
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- data/app/components/blacklight/icons/icon_component.rb +4 -9
- data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
- data/app/components/blacklight/icons/list_component.rb +16 -0
- data/app/components/blacklight/icons/search_component.rb +16 -0
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.rb +24 -8
- data/app/components/blacklight/metadata_field_layout_component.rb +4 -25
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -5
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/pagination_component.rb +2 -11
- data/app/components/blacklight/response/sort_component.html.erb +6 -1
- data/app/components/blacklight/response/sort_component.rb +1 -16
- data/app/components/blacklight/response/spellcheck_component.rb +18 -7
- data/app/components/blacklight/response/view_type_button_component.rb +3 -7
- data/app/components/blacklight/response/view_type_component.rb +4 -6
- data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
- data/app/components/blacklight/search/sidebar_component.rb +17 -0
- data/app/components/blacklight/search_bar_component.html.erb +20 -15
- data/app/components/blacklight/search_bar_component.rb +2 -16
- data/app/components/blacklight/search_button_component.rb +3 -3
- data/app/components/blacklight/search_context_component.rb +43 -10
- data/app/components/blacklight/search_header_component.html.erb +2 -0
- data/app/components/blacklight/search_header_component.rb +6 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +8 -5
- data/app/components/blacklight/system/flash_message_component.html.erb +4 -2
- data/app/components/blacklight/system/flash_message_component.rb +12 -3
- data/app/components/blacklight/system/modal_component.html.erb +1 -1
- data/app/components/blacklight/system/modal_component.rb +1 -3
- data/app/components/blacklight/top_navbar_component.html.erb +1 -1
- data/app/components/blacklight/top_navbar_component.rb +0 -4
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +10 -9
- data/app/controllers/concerns/blacklight/catalog.rb +21 -83
- data/app/controllers/concerns/blacklight/controller.rb +3 -41
- data/app/controllers/concerns/blacklight/search_context.rb +25 -7
- data/app/controllers/concerns/blacklight/search_history.rb +2 -0
- data/app/controllers/concerns/blacklight/searchable.rb +12 -1
- data/app/controllers/concerns/blacklight/token_based_user.rb +13 -1
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -310
- data/app/helpers/blacklight/catalog_helper_behavior.rb +22 -139
- data/app/helpers/blacklight/component_helper_behavior.rb +2 -53
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -119
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -7
- data/app/helpers/blacklight/layout_helper_behavior.rb +4 -3
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +11 -31
- data/app/helpers/blacklight/url_helper_behavior.rb +12 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +13 -19
- data/app/javascript/blacklight/button_focus.js +12 -10
- data/app/javascript/blacklight/checkbox_submit.js +68 -123
- data/app/javascript/blacklight/core.js +5 -7
- data/app/javascript/blacklight/index.js +13 -0
- data/app/javascript/blacklight/modal.js +99 -164
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +46 -54
- data/app/models/blacklight/facet_paginator.rb +3 -2
- data/app/models/blacklight/icon.rb +4 -2
- data/app/models/bookmark.rb +0 -2
- data/app/models/concerns/blacklight/configurable.rb +5 -4
- data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -10
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
- data/app/models/concerns/blacklight/document/email.rb +1 -0
- data/app/models/concerns/blacklight/document/export.rb +2 -1
- data/app/models/concerns/blacklight/document/extensions.rb +1 -0
- data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +2 -1
- data/app/models/concerns/blacklight/document/sms.rb +1 -0
- data/app/models/concerns/blacklight/suggest/response.rb +1 -0
- data/app/models/concerns/blacklight/user.rb +17 -8
- data/app/models/record_mailer.rb +13 -12
- data/app/models/search.rb +1 -7
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +23 -50
- data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
- data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
- data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
- data/app/presenters/blacklight/field_presenter.rb +1 -0
- data/app/presenters/blacklight/index_presenter.rb +2 -40
- data/app/presenters/blacklight/json_presenter.rb +10 -6
- data/app/presenters/blacklight/rendering/link_to_facet.rb +2 -5
- data/app/presenters/blacklight/show_presenter.rb +1 -9
- data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
- data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
- data/app/services/blacklight/field_retriever.rb +12 -21
- data/app/services/blacklight/search_service.rb +10 -17
- data/app/values/blacklight/types.rb +0 -18
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
- data/app/views/bookmarks/_tools.html.erb +7 -12
- data/app/views/catalog/_advanced_search_form.html.erb +0 -1
- data/app/views/catalog/_bookmark_control.html.erb +1 -1
- data/app/views/catalog/_citation.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +5 -4
- data/app/views/catalog/_home_text.html.erb +2 -14
- data/app/views/catalog/_per_page_widget.html.erb +10 -1
- data/app/views/catalog/_search_form.html.erb +2 -2
- data/app/views/catalog/_search_header.html.erb +1 -2
- data/app/views/catalog/_search_results.html.erb +2 -2
- data/app/views/catalog/_search_sidebar.html.erb +5 -1
- data/app/views/catalog/_show_main_content.html.erb +11 -16
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +8 -14
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- data/app/views/catalog/email.html.erb +2 -2
- data/app/views/catalog/email_success.html.erb +5 -6
- data/app/views/catalog/facet.html.erb +7 -5
- data/app/views/catalog/index.atom.builder +12 -14
- data/app/views/catalog/index.html.erb +4 -1
- data/app/views/catalog/index.json.jbuilder +19 -19
- data/app/views/catalog/index.rss.builder +1 -1
- data/app/views/catalog/opensearch.xml.builder +1 -1
- data/app/views/catalog/sms.html.erb +2 -2
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/kaminari/blacklight/_page.html.erb +2 -1
- data/app/views/layouts/blacklight/base.html.erb +13 -2
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_flash_messages.html.erb +1 -1
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +7 -11
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +0 -1
- data/config/locales/blacklight.ca.yml +0 -1
- data/config/locales/blacklight.de.yml +0 -1
- data/config/locales/blacklight.en.yml +0 -2
- data/config/locales/blacklight.es.yml +0 -1
- data/config/locales/blacklight.fr.yml +0 -1
- data/config/locales/blacklight.hu.yml +0 -1
- data/config/locales/blacklight.it.yml +0 -1
- data/config/locales/blacklight.nl.yml +0 -1
- data/config/locales/blacklight.pt-BR.yml +0 -1
- data/config/locales/blacklight.sq.yml +0 -1
- data/config/locales/blacklight.zh.yml +0 -1
- data/config/routes.rb +3 -2
- data/db/migrate/20140202020201_create_searches.rb +1 -0
- data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
- data/docker-compose.yml +3 -3
- data/lib/blacklight/abstract_repository.rb +1 -6
- data/lib/blacklight/component.rb +47 -10
- data/lib/blacklight/configuration/context.rb +4 -4
- data/lib/blacklight/configuration/display_field.rb +7 -9
- data/lib/blacklight/configuration/facet_field.rb +17 -11
- data/lib/blacklight/configuration/field.rb +1 -0
- data/lib/blacklight/configuration/fields.rb +12 -15
- data/lib/blacklight/configuration/index_field.rb +1 -0
- data/lib/blacklight/configuration/null_display_field.rb +17 -0
- data/lib/blacklight/configuration/search_field.rb +1 -0
- data/lib/blacklight/configuration/show_field.rb +1 -0
- data/lib/blacklight/configuration/sort_field.rb +1 -0
- data/lib/blacklight/configuration/tool_config.rb +1 -0
- data/lib/blacklight/configuration/view_config.rb +14 -10
- data/lib/blacklight/configuration.rb +310 -365
- data/lib/blacklight/engine.rb +8 -24
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +7 -13
- data/lib/blacklight/open_struct_with_hash_access.rb +23 -6
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +2 -1
- data/lib/blacklight/routes.rb +1 -0
- data/lib/blacklight/search_builder.rb +10 -10
- data/lib/blacklight/search_state/filter_field.rb +8 -25
- data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
- data/lib/blacklight/search_state.rb +23 -79
- data/lib/blacklight/solr/document.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +1 -0
- data/lib/blacklight/solr/repository.rb +4 -24
- data/lib/blacklight/solr/request.rb +1 -0
- data/lib/blacklight/solr/response/facets.rb +21 -5
- data/lib/blacklight/solr/response/group.rb +1 -0
- data/lib/blacklight/solr/response/group_response.rb +1 -0
- data/lib/blacklight/solr/response/more_like_this.rb +1 -0
- data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
- data/lib/blacklight/solr/response/params.rb +5 -4
- data/lib/blacklight/solr/response/response.rb +1 -0
- data/lib/blacklight/solr/response/spelling.rb +1 -0
- data/lib/blacklight/solr/response.rb +16 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -35
- data/lib/blacklight/solr.rb +7 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +26 -14
- data/lib/generators/blacklight/assets/importmap_generator.rb +55 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +25 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +66 -0
- data/lib/generators/blacklight/assets_generator.rb +13 -86
- data/lib/generators/blacklight/controller_generator.rb +4 -3
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +4 -3
- data/lib/generators/blacklight/models_generator.rb +1 -0
- data/lib/generators/blacklight/search_builder_generator.rb +1 -0
- data/lib/generators/blacklight/solr_generator.rb +1 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -70
- data/lib/generators/blacklight/test_support_generator.rb +5 -3
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +6 -7
- data/package.json +10 -13
- data/rollup.config.js +27 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document/action_component_spec.rb +6 -1
- data/spec/components/blacklight/document_component_spec.rb +22 -131
- data/spec/components/blacklight/facet_component_spec.rb +3 -18
- data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
- data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +10 -9
- data/spec/components/blacklight/response/view_type_component_spec.rb +66 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context_component_spec.rb +17 -8
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
- data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
- data/spec/controllers/bookmarks_controller_spec.rb +2 -3
- data/spec/controllers/catalog_controller_spec.rb +13 -135
- data/spec/features/advanced_search_spec.rb +0 -56
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -6
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/facets_spec.rb +6 -4
- data/spec/features/search_context_spec.rb +5 -11
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box.rb +13 -0
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/blacklight/layout_helper_behavior_spec.rb +3 -20
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +9 -131
- data/spec/helpers/blacklight_helper_spec.rb +8 -252
- data/spec/helpers/catalog_helper_spec.rb +7 -118
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- data/spec/lib/blacklight/component_spec.rb +27 -32
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
- data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
- data/spec/lib/blacklight/parameters_spec.rb +1 -4
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
- data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
- data/spec/lib/blacklight/search_state_spec.rb +80 -198
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
- data/spec/models/blacklight/configuration_spec.rb +17 -51
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +31 -15
- data/spec/models/blacklight/search_builder_spec.rb +9 -9
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/repository_spec.rb +0 -45
- data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
- data/spec/models/blacklight/solr/response_spec.rb +9 -2
- data/spec/models/blacklight/solr/search_builder_spec.rb +24 -44
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/solr_document_spec.rb +3 -9
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +2 -3
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
- data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
- data/spec/presenters/blacklight/field_presenter_spec.rb +0 -14
- data/spec/presenters/blacklight/index_presenter_spec.rb +2 -5
- data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/show_presenter_spec.rb +20 -30
- data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
- data/spec/requests/load_suggestions_spec.rb +16 -0
- data/spec/routing/catalog_routing_spec.rb +2 -1
- data/spec/services/blacklight/search_service_spec.rb +39 -76
- data/spec/spec_helper.rb +8 -9
- data/spec/support/controller_level_helpers.rb +1 -2
- data/spec/support/features/search_helpers.rb +39 -0
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/features.rb +3 -0
- data/spec/support/view_component_capybara_test_helpers.rb +8 -0
- data/spec/test_app_templates/Gemfile.extra +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +9 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +3 -34
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +0 -2
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -66
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
- data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
- data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +17 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
- data/spec/views/catalog/show.html.erb_spec.rb +3 -25
- data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
- data/tasks/blacklight.rake +11 -9
- data/template.demo.rb +7 -7
- metadata +77 -189
- data/.babelrc +0 -11
- data/.github/matrix.json +0 -62
- data/.github/workflows/build.yml +0 -16
- data/.github/workflows/lint.yml +0 -23
- data/.github/workflows/main.yml +0 -23
- data/.github/workflows/test.yml +0 -53
- data/app/assets/images/blacklight/list.svg +0 -1
- data/app/assets/images/blacklight/search.svg +0 -1
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
- data/app/components/blacklight/content_areas_shim.rb +0 -13
- data/app/components/blacklight/search/per_page_component.html.erb +0 -2
- data/app/components/blacklight/search/per_page_component.rb +0 -50
- data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +0 -10
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +0 -15
- data/app/components/blacklight/system/dropdown_button_component.rb +0 -18
- data/app/controllers/concerns/blacklight/base.rb +0 -12
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
- data/app/controllers/concerns/blacklight/facet.rb +0 -69
- data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
- data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
- data/app/javascript/blacklight/autocomplete.js +0 -36
- data/app/javascript/blacklight/facet_load.js +0 -22
- data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
- data/app/views/catalog/_constraints_element.html.erb +0 -14
- data/app/views/catalog/_document_action.html.erb +0 -5
- data/app/views/catalog/_facet_group.html.erb +0 -5
- data/app/views/catalog/_facet_limit.html.erb +0 -3
- data/app/views/catalog/_index.html.erb +0 -1
- data/app/views/catalog/_index_header.html.erb +0 -22
- data/app/views/catalog/_previous_next_doc.html.erb +0 -2
- data/app/views/catalog/_show.html.erb +0 -6
- data/app/views/catalog/_show_header.html.erb +0 -2
- data/app/views/catalog/_thumbnail.html.erb +0 -1
- data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
- data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
- data/spec/components/blacklight/header_component_spec.rb +0 -20
- data/spec/components/blacklight/icons/icon_component_spec.rb +0 -42
- data/spec/components/blacklight/response/pagination_component_spec.rb +0 -53
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +0 -35
- data/spec/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/citation_spec.rb +0 -10
- data/spec/features/sitelinks_search_box_spec.rb +0 -13
- data/spec/features/sms_spec.rb +0 -12
- data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
- data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -101
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/services/blacklight/field_retriever_spec.rb +0 -17
- data/spec/support/view_component_test_helpers.rb +0 -35
- data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
- data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
- data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
- data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
- data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
@@ -1,44 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight::Catalog
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
|
5
6
|
# MimeResponds is part of ActionController::Base, but not ActionController::API
|
6
7
|
include ActionController::MimeResponds
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
include Blacklight::Facet
|
9
|
+
include Blacklight::Configurable
|
10
|
+
include Blacklight::SearchContext
|
13
11
|
include Blacklight::Searchable
|
14
12
|
|
15
|
-
extend Deprecation
|
16
|
-
|
17
13
|
# The following code is executed when someone includes blacklight::catalog in their
|
18
14
|
# own controller.
|
19
15
|
included do
|
20
16
|
if respond_to? :helper_method
|
21
|
-
helper_method :sms_mappings, :has_search_parameters
|
17
|
+
helper_method :sms_mappings, :has_search_parameters?
|
18
|
+
helper_method :search_facet_path
|
22
19
|
end
|
23
20
|
|
24
|
-
helper Blacklight::Facet if respond_to? :helper
|
25
|
-
|
26
|
-
# The index action will more than likely throw this one.
|
27
|
-
# Example: when the standard query parser is used, and a user submits a "bad" query.
|
28
|
-
rescue_from Blacklight::Exceptions::InvalidRequest, with: :handle_request_error
|
29
|
-
|
30
21
|
record_search_parameters
|
31
22
|
end
|
32
23
|
|
33
24
|
# get search results from the solr index
|
34
25
|
def index
|
35
|
-
|
36
|
-
|
37
|
-
@document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(
|
38
|
-
deprecated_document_list,
|
39
|
-
'The @document_list instance variable is deprecated; use @response.documents instead.',
|
40
|
-
ActiveSupport::Deprecation.new("8.0", "blacklight")
|
41
|
-
)
|
26
|
+
@response = search_service.search_results
|
42
27
|
|
43
28
|
respond_to do |format|
|
44
29
|
format.html { store_preferred_view }
|
@@ -56,12 +41,7 @@ module Blacklight::Catalog
|
|
56
41
|
# get a single document from the index
|
57
42
|
# to add responses for formats other than html or json see _Blacklight::Document::Export_
|
58
43
|
def show
|
59
|
-
|
60
|
-
@response = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(
|
61
|
-
deprecated_response,
|
62
|
-
'The @response instance variable is deprecated; use @document.response instead.',
|
63
|
-
ActiveSupport::Deprecation.new("8.0", "blacklight")
|
64
|
-
)
|
44
|
+
@document = search_service.fetch(params[:id])
|
65
45
|
|
66
46
|
respond_to do |format|
|
67
47
|
format.html { @search_context = setup_next_and_previous_documents }
|
@@ -78,7 +58,7 @@ module Blacklight::Catalog
|
|
78
58
|
def raw
|
79
59
|
raise(ActionController::RoutingError, 'Not Found') unless blacklight_config.raw_endpoint.enabled
|
80
60
|
|
81
|
-
|
61
|
+
@document = search_service.fetch(params[:id])
|
82
62
|
render json: @document
|
83
63
|
end
|
84
64
|
|
@@ -106,7 +86,7 @@ module Blacklight::Catalog
|
|
106
86
|
@response = search_service.facet_field_response(@facet.key)
|
107
87
|
@display_facet = @response.aggregations[@facet.field]
|
108
88
|
|
109
|
-
@presenter =
|
89
|
+
@presenter = @facet.presenter.new(@facet, @display_facet, view_context)
|
110
90
|
@pagination = @presenter.paginator
|
111
91
|
respond_to do |format|
|
112
92
|
format.html do
|
@@ -126,21 +106,19 @@ module Blacklight::Catalog
|
|
126
106
|
end
|
127
107
|
end
|
128
108
|
|
109
|
+
# Returns the dropdown list for autocomplete
|
129
110
|
def suggest
|
130
|
-
|
131
|
-
|
132
|
-
render json: suggestions_service.suggestions
|
133
|
-
end
|
134
|
-
end
|
111
|
+
@suggestions = suggestions_service.suggestions
|
112
|
+
render 'suggest', layout: false
|
135
113
|
end
|
136
114
|
|
137
115
|
# @return [Array] first value is a Blacklight::Solr::Response and the second
|
138
116
|
# is a list of documents
|
139
117
|
def action_documents
|
140
|
-
|
118
|
+
@documents = search_service.fetch(Array(params[:id]))
|
141
119
|
raise Blacklight::Exceptions::RecordNotFound if @documents.blank?
|
142
120
|
|
143
|
-
|
121
|
+
@documents
|
144
122
|
end
|
145
123
|
|
146
124
|
def action_success_redirect_path
|
@@ -154,34 +132,14 @@ module Blacklight::Catalog
|
|
154
132
|
params[:search_field].present? || search_state.has_constraints?
|
155
133
|
end
|
156
134
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
# available), and used in display (with @response available) to create
|
165
|
-
# a facet paginator with the right limit.
|
166
|
-
def facet_limit_for(facet_field)
|
167
|
-
facet = blacklight_config.facet_fields[facet_field]
|
168
|
-
return if facet.blank?
|
169
|
-
|
170
|
-
if facet.limit && @response && @response.aggregations[facet.field]
|
171
|
-
limit = @response.aggregations[facet.field].limit
|
172
|
-
|
173
|
-
if limit.nil? # we didn't get or a set a limit, so infer one.
|
174
|
-
facet.limit if facet.limit != true
|
175
|
-
elsif limit == -1 # limit -1 is solr-speak for unlimited
|
176
|
-
nil
|
177
|
-
else
|
178
|
-
limit.to_i - 1 # we added 1 to find out if we needed to paginate
|
179
|
-
end
|
180
|
-
elsif facet.limit
|
181
|
-
facet.limit == true ? DEFAULT_FACET_LIMIT : facet.limit
|
182
|
-
end
|
135
|
+
def search_facet_path(options = {})
|
136
|
+
opts = search_state
|
137
|
+
.to_h
|
138
|
+
.merge(action: "facet", only_path: true)
|
139
|
+
.merge(options)
|
140
|
+
.except(:page)
|
141
|
+
url_for opts
|
183
142
|
end
|
184
|
-
deprecation_deprecate facet_limit_for: 'moving to private logic in Blacklight::FacetFieldPresenter'
|
185
143
|
|
186
144
|
private
|
187
145
|
|
@@ -325,26 +283,6 @@ module Blacklight::Catalog
|
|
325
283
|
action_name == 'show' ? 'catalog_result' : super
|
326
284
|
end
|
327
285
|
|
328
|
-
# when a method throws a Blacklight::Exceptions::InvalidRequest, this method is executed.
|
329
|
-
def handle_request_error(exception)
|
330
|
-
# Rails own code will catch and give usual Rails error page with stack trace
|
331
|
-
raise exception if Rails.env.development? || Rails.env.test?
|
332
|
-
|
333
|
-
flash_notice = I18n.t('blacklight.search.errors.request_error')
|
334
|
-
|
335
|
-
# If there are errors coming from the index page, we want to trap those sensibly
|
336
|
-
|
337
|
-
if flash[:notice] == flash_notice
|
338
|
-
logger&.error "Cowardly aborting rsolr_request_error exception handling, because we redirected to a page that raises another exception"
|
339
|
-
raise exception
|
340
|
-
end
|
341
|
-
|
342
|
-
logger&.error exception
|
343
|
-
|
344
|
-
flash[:notice] = flash_notice
|
345
|
-
redirect_to search_action_url
|
346
|
-
end
|
347
|
-
|
348
286
|
def blacklight_advanced_search_form_search_service
|
349
287
|
form_search_state = search_state_class.new(blacklight_advanced_search_form_params, blacklight_config, self)
|
350
288
|
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# Filters added to this controller apply to all controllers in the hosting application
|
3
4
|
# as this module is mixed-in to the application controller in the hosting app on installation.
|
4
5
|
module Blacklight::Controller
|
5
6
|
extend ActiveSupport::Concern
|
6
|
-
extend Deprecation
|
7
7
|
|
8
8
|
included do
|
9
|
-
include Blacklight::SearchFields
|
10
|
-
helper Blacklight::SearchFields if respond_to? :helper
|
11
|
-
|
12
9
|
include ActiveSupport::Callbacks
|
13
10
|
|
14
11
|
# now in application.rb file under config.filter_parameters
|
@@ -16,6 +13,7 @@ module Blacklight::Controller
|
|
16
13
|
|
17
14
|
# handle basic authorization exception with #access_denied
|
18
15
|
rescue_from Blacklight::Exceptions::AccessDenied, with: :access_denied
|
16
|
+
helper BlacklightHelper
|
19
17
|
|
20
18
|
if respond_to? :helper_method
|
21
19
|
helper_method :current_user_session, :current_user, :current_or_guest_user
|
@@ -24,7 +22,6 @@ module Blacklight::Controller
|
|
24
22
|
helper_method :has_user_authentication_provider?
|
25
23
|
helper_method :blacklight_config, :blacklight_configuration_context # move to Catalog
|
26
24
|
helper_method :search_action_url, :search_action_path
|
27
|
-
helper_method :search_facet_path # move to catalog? deprecate?
|
28
25
|
helper_method :search_state
|
29
26
|
end
|
30
27
|
|
@@ -33,12 +30,6 @@ module Blacklight::Controller
|
|
33
30
|
# TODO: move to Searchable
|
34
31
|
class_attribute :search_state_class
|
35
32
|
self.search_state_class = Blacklight::SearchState
|
36
|
-
|
37
|
-
# Which class to use for the search service. You can subclass SearchService if you
|
38
|
-
# want to override any of the methods (e.g. SearchService#fetch)
|
39
|
-
# TODO: move to Searchable
|
40
|
-
class_attribute :search_service_class
|
41
|
-
self.search_service_class = Blacklight::SearchService
|
42
33
|
end
|
43
34
|
|
44
35
|
# @private
|
@@ -76,7 +67,7 @@ module Blacklight::Controller
|
|
76
67
|
# which action the search form should use
|
77
68
|
def search_action_url options = {}
|
78
69
|
# Rails 4.2 deprecated url helpers accepting string keys for 'controller' or 'action'
|
79
|
-
search_catalog_url(options.except(:controller, :action))
|
70
|
+
search_catalog_url(options.to_h.except(:controller, :action))
|
80
71
|
end
|
81
72
|
|
82
73
|
def search_action_path *args
|
@@ -87,22 +78,6 @@ module Blacklight::Controller
|
|
87
78
|
search_action_url(*args)
|
88
79
|
end
|
89
80
|
|
90
|
-
# TODO: move to catalog? deprecate?
|
91
|
-
def search_facet_path(options = {})
|
92
|
-
opts = search_state
|
93
|
-
.to_h
|
94
|
-
.merge(action: "facet", only_path: true)
|
95
|
-
.merge(options)
|
96
|
-
.except(:page)
|
97
|
-
url_for opts
|
98
|
-
end
|
99
|
-
|
100
|
-
# Returns a list of Searches from the ids in the user's history.
|
101
|
-
# TODO: move to catalog? SearchHistory?
|
102
|
-
def searches_from_history
|
103
|
-
session[:history].blank? ? ::Search.none : ::Search.where(id: session[:history]).order("updated_at desc")
|
104
|
-
end
|
105
|
-
|
106
81
|
# Should be provided by authentication provider
|
107
82
|
# def current_user
|
108
83
|
# end
|
@@ -126,21 +101,9 @@ module Blacklight::Controller
|
|
126
101
|
respond_to? :current_user
|
127
102
|
end
|
128
103
|
|
129
|
-
def require_user_authentication_provider
|
130
|
-
raise ActionController::RoutingError, 'Not Found' unless has_user_authentication_provider?
|
131
|
-
end
|
132
|
-
deprecation_deprecate require_user_authentication_provider: 'removed without replacement'
|
133
|
-
|
134
104
|
##
|
135
105
|
# When a user logs in, transfer any saved searches or bookmarks to the current_user
|
136
106
|
def transfer_guest_to_user
|
137
|
-
Deprecation.silence(Blacklight::Controller) do
|
138
|
-
transfer_guest_user_actions_to_current_user
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# @deprecated use canonical `transfer_guest_to_user` method instead
|
143
|
-
def transfer_guest_user_actions_to_current_user
|
144
107
|
return unless respond_to?(:current_user) && respond_to?(:guest_user) && current_user && guest_user
|
145
108
|
|
146
109
|
current_user_searches = current_user.searches.pluck(:query_params)
|
@@ -159,7 +122,6 @@ module Blacklight::Controller
|
|
159
122
|
# let guest_user know we've moved some bookmarks from under it
|
160
123
|
guest_user.reload if guest_user.persisted?
|
161
124
|
end
|
162
|
-
deprecation_deprecate :transfer_guest_user_actions_to_current_user
|
163
125
|
|
164
126
|
##
|
165
127
|
# To handle failed authorization attempts, redirect the user to the
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight::SearchContext
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
|
@@ -17,6 +18,16 @@ module Blacklight::SearchContext
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
# The current search session
|
22
|
+
def current_search_session
|
23
|
+
@current_search_session ||= find_search_session
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a list of Searches from the ids in the user's history.
|
27
|
+
def searches_from_history
|
28
|
+
session[:history].blank? ? ::Search.none : ::Search.where(id: session[:history]).order("updated_at desc")
|
29
|
+
end
|
30
|
+
|
20
31
|
private
|
21
32
|
|
22
33
|
# sets up the session[:search] hash if it doesn't already exist
|
@@ -27,11 +38,6 @@ module Blacklight::SearchContext
|
|
27
38
|
session[:search]
|
28
39
|
end
|
29
40
|
|
30
|
-
# The current search session
|
31
|
-
def current_search_session
|
32
|
-
@current_search_session ||= find_search_session
|
33
|
-
end
|
34
|
-
|
35
41
|
# Persist the current search session id to the user's session
|
36
42
|
def set_current_search_session
|
37
43
|
search_session['id'] = current_search_session.id if current_search_session
|
@@ -79,7 +85,7 @@ module Blacklight::SearchContext
|
|
79
85
|
end
|
80
86
|
|
81
87
|
def find_or_initialize_search_session_from_params params
|
82
|
-
params_copy = params.reject { |k, v|
|
88
|
+
params_copy = params.reject { |k, v| nonpersisted_search_session_params.include?(k.to_sym) || v.blank? }
|
83
89
|
|
84
90
|
return if params_copy.reject { |k, _v| [:action, :controller].include? k.to_sym }.blank?
|
85
91
|
|
@@ -102,10 +108,22 @@ module Blacklight::SearchContext
|
|
102
108
|
end
|
103
109
|
|
104
110
|
# A list of query parameters that should not be persisted for a search
|
105
|
-
def
|
111
|
+
def nonpersisted_search_session_params
|
112
|
+
unless method(:blacklisted_search_session_params).source_location.first.end_with?('deprecation/method_wrappers.rb')
|
113
|
+
# The blacklisted_search_session_params was overridden, so call it.
|
114
|
+
Blacklight.deprecation.warn(self, "blacklisted_search_session_params was overriden in your app, " \
|
115
|
+
"but that method should be renamed to `nonpersisted_search_session_params'. " \
|
116
|
+
"The original behavior will be removed in the next major release.")
|
117
|
+
return blacklisted_search_session_params
|
118
|
+
end
|
106
119
|
[:commit, :counter, :total, :search_id, :page, :per_page]
|
107
120
|
end
|
108
121
|
|
122
|
+
def blacklisted_search_session_params
|
123
|
+
nonpersisted_search_session_params
|
124
|
+
end
|
125
|
+
Blacklight.deprecation.deprecate_methods(self, blacklisted_search_session_params: 'use nonpersisted_search_session_params instead')
|
126
|
+
|
109
127
|
# calls setup_previous_document then setup_next_document.
|
110
128
|
# used in the show action for single view pagination.
|
111
129
|
def setup_next_and_previous_documents
|
@@ -5,17 +5,28 @@
|
|
5
5
|
# would be provided by Blacklight::Controller
|
6
6
|
# 1. search_state
|
7
7
|
# 2. blacklight_config
|
8
|
-
# 3. search_service_class
|
9
8
|
#
|
10
9
|
# Additionally, the including class may override the search_service_context method to provide
|
11
10
|
# further context to the SearchService. For example you could override this to provide the
|
12
11
|
# currently signed in user.
|
13
12
|
module Blacklight::Searchable
|
13
|
+
extend ActiveSupport::Concern
|
14
|
+
|
15
|
+
included do
|
16
|
+
# Which class to use for the search service. You can subclass SearchService if you
|
17
|
+
# want to override any of the methods (e.g. SearchService#fetch)
|
18
|
+
class_attribute :search_service_class
|
19
|
+
self.search_service_class = Blacklight::SearchService
|
20
|
+
end
|
21
|
+
|
14
22
|
# @return [Blacklight::SearchService]
|
15
23
|
def search_service
|
16
24
|
search_service_class.new(config: blacklight_config, search_state: search_state, user_params: search_state.to_h, **search_service_context)
|
17
25
|
end
|
18
26
|
|
27
|
+
# Override this method on the class that includes Blacklight::Searchable to provide more context to the search service if necessary.
|
28
|
+
# For example, if your search builder needs to be aware of the current user, override this method to return a hash including the current user.
|
29
|
+
# Then the search builder could use some property about the current user to construct a constraint on the search.
|
19
30
|
# @return [Hash] a hash of context information to pass through to the search service
|
20
31
|
def search_service_context
|
21
32
|
{}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight::TokenBasedUser
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
|
@@ -48,7 +49,18 @@ module Blacklight::TokenBasedUser
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def secret_key_generator
|
51
|
-
@secret_key_generator ||=
|
52
|
+
@secret_key_generator ||= begin
|
53
|
+
app = Rails.application
|
54
|
+
|
55
|
+
secret_key_base = if app.respond_to?(:credentials)
|
56
|
+
# Rails 5.2+
|
57
|
+
app.credentials.secret_key_base
|
58
|
+
else
|
59
|
+
# Rails <= 5.1
|
60
|
+
app.secrets.secret_key_base
|
61
|
+
end
|
62
|
+
ActiveSupport::KeyGenerator.new(secret_key_base)
|
63
|
+
end
|
52
64
|
end
|
53
65
|
|
54
66
|
def message_encryptor
|