blacklight 7.33.0 → 8.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.
- checksums.yaml +4 -4
- data/.env +3 -2
- data/.github/workflows/ruby.yml +38 -107
- data/.gitignore +1 -0
- data/.rubocop.yml +243 -2
- data/.rubocop_todo.yml +216 -270
- data/Gemfile +7 -6
- data/README.md +12 -4
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/app/assets/config/blacklight/manifest.js +3 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +332 -485
- 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/_facets.scss +104 -49
- 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 +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +7 -9
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.html.erb +2 -9
- data/app/components/blacklight/document/action_component.rb +26 -8
- 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/show_tools_component.html.erb +12 -0
- data/app/components/blacklight/document/show_tools_component.rb +23 -0
- 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 +4 -0
- data/app/components/blacklight/document_component.rb +54 -42
- data/app/components/blacklight/document_metadata_component.html.erb +4 -2
- data/app/components/blacklight/document_metadata_component.rb +11 -6
- data/app/components/blacklight/document_title_component.rb +4 -1
- data/app/components/blacklight/facet_component.rb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +5 -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.html.erb +2 -0
- data/app/components/blacklight/header_component.rb +26 -0
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- 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 +7 -22
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
- data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/sort_component.rb +2 -2
- 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/server_applied_params_component.html.erb +4 -0
- data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
- 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/search_navbar_component.html.erb +5 -0
- data/app/components/blacklight/search_navbar_component.rb +34 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +3 -3
- data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
- 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 +12 -0
- data/app/components/blacklight/top_navbar_component.rb +17 -0
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
- data/app/controllers/concerns/blacklight/catalog.rb +21 -72
- data/app/controllers/concerns/blacklight/controller.rb +6 -43
- data/app/controllers/concerns/blacklight/search_context.rb +71 -13
- 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 +1 -0
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
- data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
- data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
- data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
- data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +9 -22
- data/app/javascript/blacklight/button_focus.js +9 -7
- data/app/javascript/blacklight/checkbox_submit.js +68 -122
- data/app/javascript/blacklight/core.js +6 -5
- data/app/javascript/blacklight/index.js +14 -0
- data/app/javascript/blacklight/modal.js +100 -165
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +13 -29
- 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 -0
- data/app/models/concerns/blacklight/document/attributes.rb +50 -0
- 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/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 +1 -0
- data/app/models/concerns/blacklight/document.rb +23 -20
- 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 +23 -18
- data/app/models/search.rb +0 -1
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +24 -30
- 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 +7 -5
- data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
- data/app/presenters/blacklight/rendering/join.rb +7 -1
- data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
- data/app/presenters/blacklight/rendering/microdata.rb +1 -1
- 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 +1 -8
- data/app/services/blacklight/search_service.rb +9 -7
- data/app/values/blacklight/types.rb +95 -11
- 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/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +3 -6
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_document_list.html.erb +2 -1
- 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/_search_form.html.erb +3 -3
- 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 +8 -19
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +1 -19
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- 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 +7 -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/show.html.erb +1 -6
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/layouts/blacklight/base.html.erb +19 -9
- data/app/views/record_mailer/email_record.text.erb +4 -3
- data/app/views/record_mailer/sms_record.text.erb +4 -4
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_header_navbar.html.erb +1 -22
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +8 -10
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +209 -233
- data/config/locales/blacklight.ca.yml +0 -7
- data/config/locales/blacklight.de.yml +197 -216
- data/config/locales/blacklight.en.yml +2 -7
- data/config/locales/blacklight.es.yml +196 -216
- data/config/locales/blacklight.fr.yml +196 -220
- data/config/locales/blacklight.hu.yml +193 -213
- data/config/locales/blacklight.it.yml +197 -216
- data/config/locales/blacklight.nl.yml +193 -213
- data/config/locales/blacklight.pt-BR.yml +195 -216
- data/config/locales/blacklight.sq.yml +193 -213
- data/config/locales/blacklight.zh.yml +194 -214
- 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 +1 -0
- data/lib/blacklight/abstract_repository.rb +1 -0
- 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/session_tracking_config.rb +45 -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 +16 -10
- data/lib/blacklight/configuration.rb +322 -341
- data/lib/blacklight/engine.rb +13 -15
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
- data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +3 -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 +1 -0
- data/lib/blacklight/solr/request.rb +3 -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 +4 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +8 -11
- data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
- data/lib/generators/blacklight/assets_generator.rb +14 -88
- data/lib/generators/blacklight/controller_generator.rb +3 -2
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +7 -4
- 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 +37 -7
- data/lib/generators/blacklight/templates/solr_document.rb +1 -7
- data/lib/generators/blacklight/test_support_generator.rb +4 -2
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +2 -3
- data/package.json +10 -10
- data/rollup.config.js +37 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document_component_spec.rb +74 -33
- data/spec/components/blacklight/facet_component_spec.rb +2 -7
- 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 +9 -7
- data/spec/components/blacklight/header_component_spec.rb +20 -0
- data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
- 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 +24 -126
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -1
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/component_template_override_spec.rb +8 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/features/modal_spec.rb +12 -0
- data/spec/features/search_context_spec.rb +4 -10
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box_spec.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/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
- data/spec/helpers/blacklight_helper_spec.rb +3 -298
- data/spec/helpers/catalog_helper_spec.rb +60 -115
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- 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/session_tracking_config_spec.rb +38 -0
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
- 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 +41 -53
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +29 -15
- data/spec/models/blacklight/search_builder_spec.rb +12 -12
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/request_spec.rb +2 -2
- 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 +32 -23
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/record_mailer_spec.rb +36 -23
- data/spec/models/solr_document_spec.rb +21 -3
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
- 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 +2 -16
- data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
- 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 +11 -25
- data/spec/presenters/pipeline_spec.rb +13 -2
- 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 +6 -1
- data/spec/services/blacklight/search_service_spec.rb +31 -68
- data/spec/spec_helper.rb +4 -3
- 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_test_helpers.rb +21 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
- data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- 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 +7 -54
- 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 +18 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
- 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 +7 -5
- metadata +95 -123
- data/.babelrc +0 -11
- 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_context_component.rb +0 -34
- data/app/controllers/concerns/blacklight/base.rb +0 -7
- 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/models/concerns/blacklight/document/email.rb +0 -26
- data/app/models/concerns/blacklight/document/sms.rb +0 -24
- 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/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/sitelinks_search_box.rb +0 -13
- 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 -108
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/models/blacklight/document/email_spec.rb +0 -57
- data/spec/models/blacklight/document/sms_spec.rb +0 -58
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- 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
- /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
|
@@ -1,37 +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
|
-
include Blacklight::
|
|
9
|
-
include Blacklight::
|
|
9
|
+
include Blacklight::Configurable
|
|
10
|
+
include Blacklight::SearchContext
|
|
10
11
|
include Blacklight::Searchable
|
|
11
12
|
|
|
12
|
-
extend Deprecation
|
|
13
|
-
|
|
14
13
|
# The following code is executed when someone includes blacklight::catalog in their
|
|
15
14
|
# own controller.
|
|
16
15
|
included do
|
|
17
16
|
if respond_to? :helper_method
|
|
18
|
-
helper_method :sms_mappings, :has_search_parameters
|
|
17
|
+
helper_method :sms_mappings, :has_search_parameters?
|
|
18
|
+
helper_method :search_facet_path
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
helper Blacklight::Facet if respond_to? :helper
|
|
22
|
-
|
|
23
|
-
# The index action will more than likely throw this one.
|
|
24
|
-
# Example: when the standard query parser is used, and a user submits a "bad" query.
|
|
25
|
-
rescue_from Blacklight::Exceptions::InvalidRequest, with: :handle_request_error
|
|
26
|
-
|
|
27
21
|
record_search_parameters
|
|
28
22
|
end
|
|
29
23
|
|
|
30
24
|
# get search results from the solr index
|
|
31
25
|
def index
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_document_list, 'The @document_list instance variable is deprecated; use @response.documents instead.')
|
|
26
|
+
@response = search_service.search_results
|
|
35
27
|
|
|
36
28
|
respond_to do |format|
|
|
37
29
|
format.html { store_preferred_view }
|
|
@@ -49,8 +41,7 @@ module Blacklight::Catalog
|
|
|
49
41
|
# get a single document from the index
|
|
50
42
|
# to add responses for formats other than html or json see _Blacklight::Document::Export_
|
|
51
43
|
def show
|
|
52
|
-
|
|
53
|
-
@response = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_response, 'The @response instance variable is deprecated; use @document.response instead.')
|
|
44
|
+
@document = search_service.fetch(params[:id])
|
|
54
45
|
|
|
55
46
|
respond_to do |format|
|
|
56
47
|
format.html { @search_context = setup_next_and_previous_documents }
|
|
@@ -67,7 +58,7 @@ module Blacklight::Catalog
|
|
|
67
58
|
def raw
|
|
68
59
|
raise(ActionController::RoutingError, 'Not Found') unless blacklight_config.raw_endpoint.enabled
|
|
69
60
|
|
|
70
|
-
|
|
61
|
+
@document = search_service.fetch(params[:id])
|
|
71
62
|
render json: @document
|
|
72
63
|
end
|
|
73
64
|
|
|
@@ -95,7 +86,7 @@ module Blacklight::Catalog
|
|
|
95
86
|
@response = search_service.facet_field_response(@facet.key)
|
|
96
87
|
@display_facet = @response.aggregations[@facet.field]
|
|
97
88
|
|
|
98
|
-
@presenter =
|
|
89
|
+
@presenter = @facet.presenter.new(@facet, @display_facet, view_context)
|
|
99
90
|
@pagination = @presenter.paginator
|
|
100
91
|
respond_to do |format|
|
|
101
92
|
format.html do
|
|
@@ -115,21 +106,19 @@ module Blacklight::Catalog
|
|
|
115
106
|
end
|
|
116
107
|
end
|
|
117
108
|
|
|
109
|
+
# Returns the dropdown list for autocomplete
|
|
118
110
|
def suggest
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
render json: suggestions_service.suggestions
|
|
122
|
-
end
|
|
123
|
-
end
|
|
111
|
+
@suggestions = suggestions_service.suggestions
|
|
112
|
+
render 'suggest', layout: false
|
|
124
113
|
end
|
|
125
114
|
|
|
126
115
|
# @return [Array] first value is a Blacklight::Solr::Response and the second
|
|
127
116
|
# is a list of documents
|
|
128
117
|
def action_documents
|
|
129
|
-
|
|
118
|
+
@documents = search_service.fetch(Array(params[:id]))
|
|
130
119
|
raise Blacklight::Exceptions::RecordNotFound if @documents.blank?
|
|
131
120
|
|
|
132
|
-
|
|
121
|
+
@documents
|
|
133
122
|
end
|
|
134
123
|
|
|
135
124
|
def action_success_redirect_path
|
|
@@ -143,34 +132,14 @@ module Blacklight::Catalog
|
|
|
143
132
|
params[:search_field].present? || search_state.has_constraints?
|
|
144
133
|
end
|
|
145
134
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
# available), and used in display (with @response available) to create
|
|
154
|
-
# a facet paginator with the right limit.
|
|
155
|
-
def facet_limit_for(facet_field)
|
|
156
|
-
facet = blacklight_config.facet_fields[facet_field]
|
|
157
|
-
return if facet.blank?
|
|
158
|
-
|
|
159
|
-
if facet.limit && @response && @response.aggregations[facet.field]
|
|
160
|
-
limit = @response.aggregations[facet.field].limit
|
|
161
|
-
|
|
162
|
-
if limit.nil? # we didn't get or a set a limit, so infer one.
|
|
163
|
-
facet.limit if facet.limit != true
|
|
164
|
-
elsif limit == -1 # limit -1 is solr-speak for unlimited
|
|
165
|
-
nil
|
|
166
|
-
else
|
|
167
|
-
limit.to_i - 1 # we added 1 to find out if we needed to paginate
|
|
168
|
-
end
|
|
169
|
-
elsif facet.limit
|
|
170
|
-
facet.limit == true ? DEFAULT_FACET_LIMIT : facet.limit
|
|
171
|
-
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
|
|
172
142
|
end
|
|
173
|
-
deprecation_deprecate facet_limit_for: 'moving to private logic in Blacklight::FacetFieldPresenter'
|
|
174
143
|
|
|
175
144
|
private
|
|
176
145
|
|
|
@@ -314,26 +283,6 @@ module Blacklight::Catalog
|
|
|
314
283
|
action_name == 'show' ? 'catalog_result' : super
|
|
315
284
|
end
|
|
316
285
|
|
|
317
|
-
# when a method throws a Blacklight::Exceptions::InvalidRequest, this method is executed.
|
|
318
|
-
def handle_request_error(exception)
|
|
319
|
-
# Rails own code will catch and give usual Rails error page with stack trace
|
|
320
|
-
raise exception if Rails.env.development? || Rails.env.test?
|
|
321
|
-
|
|
322
|
-
flash_notice = I18n.t('blacklight.search.errors.request_error')
|
|
323
|
-
|
|
324
|
-
# If there are errors coming from the index page, we want to trap those sensibly
|
|
325
|
-
|
|
326
|
-
if flash[:notice] == flash_notice
|
|
327
|
-
logger&.error "Cowardly aborting rsolr_request_error exception handling, because we redirected to a page that raises another exception"
|
|
328
|
-
raise exception
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
logger&.error exception
|
|
332
|
-
|
|
333
|
-
flash[:notice] = flash_notice
|
|
334
|
-
redirect_to search_action_url
|
|
335
|
-
end
|
|
336
|
-
|
|
337
286
|
def blacklight_advanced_search_form_search_service
|
|
338
287
|
form_search_state = search_state_class.new(blacklight_advanced_search_form_params, blacklight_config, self)
|
|
339
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,8 +22,7 @@ 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 :
|
|
28
|
-
helper_method :search_state # move to catalog?
|
|
25
|
+
helper_method :search_state
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
# Which class to use for the search state. You can subclass SearchState if you
|
|
@@ -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
|
|
@@ -64,8 +55,9 @@ module Blacklight::Controller
|
|
|
64
55
|
has_user_authentication_provider? && current_or_guest_user.present?
|
|
65
56
|
end
|
|
66
57
|
|
|
58
|
+
# This must be on every controller that uses the layout, because it is used in
|
|
59
|
+
# the header to draw Blacklight::SearchNavbarComponent (via the shared/header_navbar template)
|
|
67
60
|
# @return [Blacklight::SearchState] a memoized instance of the parameter state.
|
|
68
|
-
# TODO: move to catalog?
|
|
69
61
|
def search_state
|
|
70
62
|
@search_state ||= search_state_class.new(params, blacklight_config, self)
|
|
71
63
|
end
|
|
@@ -75,7 +67,7 @@ module Blacklight::Controller
|
|
|
75
67
|
# which action the search form should use
|
|
76
68
|
def search_action_url options = {}
|
|
77
69
|
# Rails 4.2 deprecated url helpers accepting string keys for 'controller' or 'action'
|
|
78
|
-
search_catalog_url(options.except(:controller, :action))
|
|
70
|
+
search_catalog_url(options.to_h.except(:controller, :action))
|
|
79
71
|
end
|
|
80
72
|
|
|
81
73
|
def search_action_path *args
|
|
@@ -86,22 +78,6 @@ module Blacklight::Controller
|
|
|
86
78
|
search_action_url(*args)
|
|
87
79
|
end
|
|
88
80
|
|
|
89
|
-
# TODO: move to catalog? deprecate?
|
|
90
|
-
def search_facet_path(options = {})
|
|
91
|
-
opts = search_state
|
|
92
|
-
.to_h
|
|
93
|
-
.merge(action: "facet", only_path: true)
|
|
94
|
-
.merge(options)
|
|
95
|
-
.except(:page)
|
|
96
|
-
url_for opts
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Returns a list of Searches from the ids in the user's history.
|
|
100
|
-
# TODO: move to catalog? SearchHistory?
|
|
101
|
-
def searches_from_history
|
|
102
|
-
session[:history].blank? ? ::Search.none : ::Search.where(id: session[:history]).order("updated_at desc")
|
|
103
|
-
end
|
|
104
|
-
|
|
105
81
|
# Should be provided by authentication provider
|
|
106
82
|
# def current_user
|
|
107
83
|
# end
|
|
@@ -125,21 +101,9 @@ module Blacklight::Controller
|
|
|
125
101
|
respond_to? :current_user
|
|
126
102
|
end
|
|
127
103
|
|
|
128
|
-
def require_user_authentication_provider
|
|
129
|
-
raise ActionController::RoutingError, 'Not Found' unless has_user_authentication_provider?
|
|
130
|
-
end
|
|
131
|
-
deprecation_deprecate require_user_authentication_provider: 'removed without replacement'
|
|
132
|
-
|
|
133
104
|
##
|
|
134
105
|
# When a user logs in, transfer any saved searches or bookmarks to the current_user
|
|
135
106
|
def transfer_guest_to_user
|
|
136
|
-
Deprecation.silence(Blacklight::Controller) do
|
|
137
|
-
transfer_guest_user_actions_to_current_user
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# @deprecated use canonical `transfer_guest_to_user` method instead
|
|
142
|
-
def transfer_guest_user_actions_to_current_user
|
|
143
107
|
return unless respond_to?(:current_user) && respond_to?(:guest_user) && current_user && guest_user
|
|
144
108
|
|
|
145
109
|
current_user_searches = current_user.searches.pluck(:query_params)
|
|
@@ -158,7 +122,6 @@ module Blacklight::Controller
|
|
|
158
122
|
# let guest_user know we've moved some bookmarks from under it
|
|
159
123
|
guest_user.reload if guest_user.persisted?
|
|
160
124
|
end
|
|
161
|
-
deprecation_deprecate :transfer_guest_user_actions_to_current_user
|
|
162
125
|
|
|
163
126
|
##
|
|
164
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,38 @@ 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
|
+
|
|
31
|
+
# GET previous and next document json for the document specified by
|
|
32
|
+
# the counter param in current search
|
|
33
|
+
def page_links
|
|
34
|
+
counter_param = params.delete(:counter)
|
|
35
|
+
@page_link_data = {}
|
|
36
|
+
if counter_param
|
|
37
|
+
index = counter_param.to_i - 1
|
|
38
|
+
response, documents = search_service.previous_and_next_documents_for_search index, search_state.reset_search
|
|
39
|
+
if documents.detect(&:present?)
|
|
40
|
+
@page_link_data[:prev] = page_links_document_path(documents.first, index)
|
|
41
|
+
@page_link_data[:next] = page_links_document_path(documents.last, index + 2)
|
|
42
|
+
end
|
|
43
|
+
if response&.total && response.total.positive?
|
|
44
|
+
@page_link_data[:counterRaw] = counter_param
|
|
45
|
+
@page_link_data[:counterDelimited] = helpers.number_with_delimiter(counter_param.to_i)
|
|
46
|
+
@page_link_data[:totalRaw] = response.total
|
|
47
|
+
@page_link_data[:totalDelimited] = helpers.number_with_delimiter(response.total)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
render json: @page_link_data
|
|
51
|
+
end
|
|
52
|
+
|
|
20
53
|
private
|
|
21
54
|
|
|
22
55
|
# sets up the session[:search] hash if it doesn't already exist
|
|
@@ -27,11 +60,6 @@ module Blacklight::SearchContext
|
|
|
27
60
|
session[:search]
|
|
28
61
|
end
|
|
29
62
|
|
|
30
|
-
# The current search session
|
|
31
|
-
def current_search_session
|
|
32
|
-
@current_search_session ||= find_search_session
|
|
33
|
-
end
|
|
34
|
-
|
|
35
63
|
# Persist the current search session id to the user's session
|
|
36
64
|
def set_current_search_session
|
|
37
65
|
search_session['id'] = current_search_session.id if current_search_session
|
|
@@ -79,7 +107,9 @@ module Blacklight::SearchContext
|
|
|
79
107
|
end
|
|
80
108
|
|
|
81
109
|
def find_or_initialize_search_session_from_params params
|
|
82
|
-
|
|
110
|
+
return unless blacklight_config.track_search_session.storage == 'server'
|
|
111
|
+
|
|
112
|
+
params_copy = params.reject { |k, v| nonpersisted_search_session_params.include?(k.to_sym) || v.blank? }
|
|
83
113
|
|
|
84
114
|
return if params_copy.reject { |k, _v| [:action, :controller].include? k.to_sym }.blank?
|
|
85
115
|
|
|
@@ -102,22 +132,50 @@ module Blacklight::SearchContext
|
|
|
102
132
|
end
|
|
103
133
|
|
|
104
134
|
# A list of query parameters that should not be persisted for a search
|
|
105
|
-
def
|
|
135
|
+
def nonpersisted_search_session_params
|
|
136
|
+
unless method(:blacklisted_search_session_params).source_location.first.end_with?('deprecation/method_wrappers.rb')
|
|
137
|
+
# The blacklisted_search_session_params was overridden, so call it.
|
|
138
|
+
Blacklight.deprecation.warn(self, "blacklisted_search_session_params was overriden in your app, " \
|
|
139
|
+
"but that method should be renamed to `nonpersisted_search_session_params'. " \
|
|
140
|
+
"The original behavior will be removed in the next major release.")
|
|
141
|
+
return blacklisted_search_session_params
|
|
142
|
+
end
|
|
106
143
|
[:commit, :counter, :total, :search_id, :page, :per_page]
|
|
107
144
|
end
|
|
108
145
|
|
|
146
|
+
def blacklisted_search_session_params
|
|
147
|
+
nonpersisted_search_session_params
|
|
148
|
+
end
|
|
149
|
+
Blacklight.deprecation.deprecate_methods(self, blacklisted_search_session_params: 'use nonpersisted_search_session_params instead')
|
|
150
|
+
|
|
109
151
|
# calls setup_previous_document then setup_next_document.
|
|
110
152
|
# used in the show action for single view pagination.
|
|
111
153
|
def setup_next_and_previous_documents
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
response, documents = search_service.previous_and_next_documents_for_search index, search_state.reset(current_search_session.query_params)
|
|
154
|
+
return { counter: params[:counter] } if setup_next_and_previous_on_client?
|
|
155
|
+
return nil unless setup_next_and_previous_on_server?
|
|
115
156
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
157
|
+
index = search_session['counter'].to_i - 1
|
|
158
|
+
response, documents = search_service.previous_and_next_documents_for_search index, search_state.reset(current_search_session.query_params)
|
|
159
|
+
|
|
160
|
+
search_session['total'] = response.total
|
|
161
|
+
{ prev: documents.first, next: documents.last }
|
|
119
162
|
rescue Blacklight::Exceptions::InvalidRequest => e
|
|
120
163
|
logger&.warn "Unable to setup next and previous documents: #{e}"
|
|
121
164
|
nil
|
|
122
165
|
end
|
|
166
|
+
|
|
167
|
+
def setup_next_and_previous_on_server?
|
|
168
|
+
search_session['counter'] && current_search_session && blacklight_config.track_search_session.storage == 'server'
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def setup_next_and_previous_on_client?
|
|
172
|
+
params[:counter] && blacklight_config.track_search_session.storage == 'client'
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def page_links_document_path(document, counter)
|
|
176
|
+
return nil unless document
|
|
177
|
+
return search_state.url_for_document(document, counter: counter) if blacklight_config.view_config(:show).route
|
|
178
|
+
|
|
179
|
+
solr_document_path(document, counter: counter)
|
|
180
|
+
end
|
|
123
181
|
end
|
|
@@ -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
|
{}
|