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,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight::User
|
3
|
-
|
4
|
-
#
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
return unless base.respond_to? :has_many
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
# SEE ALSO: The lib/blacklight/generator/user_generator.rb class for where this
|
6
|
+
# is generated into the hosting application.
|
7
|
+
included do
|
8
|
+
class_attribute :string_display_key
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
has_many :bookmarks, dependent: :destroy, as: :user
|
11
|
+
has_many :searches, dependent: :destroy, as: :user
|
12
12
|
end
|
13
13
|
|
14
14
|
def bookmarks_for_documents documents = []
|
@@ -28,4 +28,13 @@ module Blacklight::User
|
|
28
28
|
def existing_bookmark_for(document)
|
29
29
|
bookmarks_for_documents([document]).first
|
30
30
|
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# @return [String] a user-displayable login/identifier for the user account
|
34
|
+
def to_s
|
35
|
+
string_display_key = self.class.string_display_key
|
36
|
+
return send(string_display_key) if respond_to?(string_display_key)
|
37
|
+
|
38
|
+
super
|
39
|
+
end
|
31
40
|
end
|
data/app/models/record_mailer.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# Only works for documents with a #to_marc right now.
|
3
|
-
class RecordMailer <
|
4
|
+
class RecordMailer < ApplicationMailer
|
4
5
|
def email_record(documents, details, url_gen_params)
|
5
6
|
title = begin
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
title_field = details[:config].email.title_field
|
8
|
+
if title_field
|
9
|
+
[documents.first[title_field]].flatten.first
|
10
|
+
else
|
11
|
+
documents.first.to_semantic_values[:title]
|
12
|
+
end
|
13
|
+
rescue
|
14
|
+
I18n.t('blacklight.email.text.default_title')
|
15
|
+
end
|
15
16
|
|
16
17
|
subject = I18n.t('blacklight.email.text.subject',
|
17
18
|
count: documents.length,
|
@@ -22,7 +23,7 @@ class RecordMailer < ActionMailer::Base
|
|
22
23
|
@config = details[:config]
|
23
24
|
@url_gen_params = url_gen_params
|
24
25
|
|
25
|
-
mail(to: details[:to],
|
26
|
+
mail(to: details[:to], subject: subject)
|
26
27
|
end
|
27
28
|
|
28
29
|
def sms_record(documents, details, url_gen_params)
|
@@ -30,6 +31,6 @@ class RecordMailer < ActionMailer::Base
|
|
30
31
|
@config = details[:config]
|
31
32
|
@url_gen_params = url_gen_params
|
32
33
|
|
33
|
-
mail(to: details[:to], subject: "")
|
34
|
+
mail(to: details[:to], subject: "") # rubocop:disable Rails/I18nLocaleTexts
|
34
35
|
end
|
35
36
|
end
|
data/app/models/search.rb
CHANGED
@@ -3,13 +3,7 @@
|
|
3
3
|
class Search < ApplicationRecord
|
4
4
|
belongs_to :user, optional: true
|
5
5
|
|
6
|
-
|
7
|
-
if ::Rails.version.to_f >= 7.1
|
8
|
-
# non-deprecated coder: keyword arg for Rails 7.1+
|
9
|
-
serialize :query_params, coder: Blacklight::SearchParamsYamlCoder
|
10
|
-
else
|
11
|
-
serialize :query_params, Blacklight::SearchParamsYamlCoder
|
12
|
-
end
|
6
|
+
serialize :query_params, Blacklight::SearchParamsYamlCoder
|
13
7
|
|
14
8
|
# A Search instance is considered a saved search if it has a user_id.
|
15
9
|
def saved?
|
data/app/models/solr_document.rb
CHANGED
@@ -29,7 +29,7 @@ module Blacklight
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def remove_href(path = search_state)
|
32
|
-
view_context.search_action_path(path.reset_search(clause: path.clause_params.except(key))
|
32
|
+
view_context.search_action_path(path.reset_search(clause: path.clause_params.except(key)))
|
33
33
|
end
|
34
34
|
|
35
35
|
private
|
@@ -11,26 +11,18 @@ module Blacklight
|
|
11
11
|
# @param [SolrDocument] document
|
12
12
|
# @param [ActionView::Base] view_context scope for linking and generating urls
|
13
13
|
# @param [Blacklight::Configuration] configuration
|
14
|
-
def initialize(document, view_context, configuration = view_context.blacklight_config
|
14
|
+
def initialize(document, view_context, configuration = view_context.blacklight_config)
|
15
15
|
@document = document
|
16
16
|
@view_context = view_context
|
17
17
|
@configuration = configuration
|
18
|
-
@view_config = view_config
|
19
|
-
@field_presenter_options = field_presenter_options
|
20
18
|
end
|
21
19
|
|
22
20
|
# @return [Hash<String,Configuration::Field>] all the fields for this index view that should be rendered
|
23
|
-
def fields_to_render
|
24
|
-
unless block_given?
|
25
|
-
return to_enum(:fields_to_render, document_fields, **kwargs) unless method(:fields_to_render).arity.zero?
|
21
|
+
def fields_to_render
|
22
|
+
return to_enum(:fields_to_render) unless block_given?
|
26
23
|
|
27
|
-
|
28
|
-
|
29
|
-
return to_enum(:fields_to_render)
|
30
|
-
end
|
31
|
-
|
32
|
-
document_fields.each do |name, field_config|
|
33
|
-
field_presenter = field_presenter(field_config, kwargs)
|
24
|
+
fields.each do |name, field_config|
|
25
|
+
field_presenter = field_presenter(field_config)
|
34
26
|
|
35
27
|
next unless field_presenter.render_field? && field_presenter.any?
|
36
28
|
|
@@ -38,21 +30,10 @@ module Blacklight
|
|
38
30
|
end
|
39
31
|
end
|
40
32
|
|
41
|
-
def field_presenters
|
42
|
-
unless block_given?
|
43
|
-
return to_enum(:field_presenters, document_fields, **kwargs) unless method(:field_presenters).arity.zero?
|
44
|
-
|
45
|
-
Deprecation.warn(self.class, 'In Blacklight 8, Blacklight::DocumentPresenter#field_presenters accepts additional arguments')
|
46
|
-
|
47
|
-
return to_enum(:field_presenters)
|
48
|
-
end
|
33
|
+
def field_presenters
|
34
|
+
return to_enum(:field_presenters) unless block_given?
|
49
35
|
|
50
|
-
|
51
|
-
Deprecation.warn(self.class, 'In Blacklight 8, Blacklight::DocumentPresenter#fields_to_render accept additional arguments')
|
52
|
-
fields_to_render.each { |_, _, config| yield config }
|
53
|
-
else
|
54
|
-
fields_to_render(document_fields, **kwargs).each { |_, _, config| yield config }
|
55
|
-
end
|
36
|
+
fields_to_render.each { |_, _, config| yield config }
|
56
37
|
end
|
57
38
|
|
58
39
|
##
|
@@ -98,10 +79,8 @@ module Blacklight
|
|
98
79
|
|
99
80
|
fields += ['format'] if fields.empty? # backwards compatibility with the old default value for display_type_field
|
100
81
|
|
101
|
-
display_type = fields.lazy.map { |field| field_presenter(
|
102
|
-
display_type
|
103
|
-
|
104
|
-
display_type || []
|
82
|
+
display_type = fields.lazy.map { |field| field_presenter(display_fields[field] || Configuration::NullDisplayField.new(field)) }.detect(&:any?)&.values
|
83
|
+
display_type || Array(default)
|
105
84
|
end
|
106
85
|
|
107
86
|
##
|
@@ -137,11 +116,11 @@ module Blacklight
|
|
137
116
|
end
|
138
117
|
|
139
118
|
def view_config
|
140
|
-
|
119
|
+
show_view_config
|
141
120
|
end
|
142
121
|
|
143
122
|
def show_view_config
|
144
|
-
configuration.view_config(:show
|
123
|
+
configuration.view_config(:show)
|
145
124
|
end
|
146
125
|
|
147
126
|
def inspect
|
@@ -151,33 +130,27 @@ module Blacklight
|
|
151
130
|
|
152
131
|
private
|
153
132
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
def has_value?(field_config)
|
160
|
-
field_presenter(field_config).any?
|
133
|
+
# @return [Hash<String,Configuration::Field>]
|
134
|
+
def fields
|
135
|
+
@fields ||= Array(display_type).inject(display_fields) do |fields, display_type|
|
136
|
+
fields.merge(display_fields(configuration.for_display_type(display_type)))
|
137
|
+
end
|
161
138
|
end
|
162
|
-
deprecation_deprecate has_value?: 'Use FieldPresenter#any?'
|
163
139
|
|
164
|
-
def
|
165
|
-
|
140
|
+
def display_fields(config = configuration)
|
141
|
+
config[view_config.document_fields_key || :index_fields]
|
166
142
|
end
|
167
|
-
deprecation_deprecate field_values: 'Use #field_value'
|
168
143
|
|
169
|
-
def
|
170
|
-
|
144
|
+
def field_config(field)
|
145
|
+
fields.fetch(field) { Configuration::NullDisplayField.new(field) }
|
171
146
|
end
|
172
|
-
deprecation_deprecate retrieve_values: 'Use FieldPresenter#values'
|
173
147
|
|
174
148
|
def field_presenter(field_config, options = {})
|
175
|
-
|
176
|
-
presenter_class.new(view_context, document, field_config, options.merge(field_presenter_options))
|
149
|
+
field_config.presenter.new(view_context, document, field_config, field_presenter_options.merge(options))
|
177
150
|
end
|
178
151
|
|
179
152
|
def field_presenter_options
|
180
|
-
|
153
|
+
{}
|
181
154
|
end
|
182
155
|
end
|
183
156
|
end
|
@@ -15,15 +15,11 @@ module Blacklight
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def collapsed?
|
18
|
-
|
19
|
-
view_context.should_collapse_facet?(facet_field)
|
20
|
-
end
|
18
|
+
!active? && facet_field.collapse
|
21
19
|
end
|
22
20
|
|
23
21
|
def active?
|
24
|
-
|
25
|
-
view_context.facet_field_in_params?(key)
|
26
|
-
end
|
22
|
+
search_state.filter(facet_field).any?
|
27
23
|
end
|
28
24
|
|
29
25
|
def in_modal?
|
@@ -44,20 +40,49 @@ module Blacklight
|
|
44
40
|
search_state&.filter(facet_field)&.values || []
|
45
41
|
end
|
46
42
|
|
47
|
-
#
|
48
|
-
|
49
|
-
|
50
|
-
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
51
|
-
view_context.facet_field_id(facet_field)
|
52
|
-
end
|
43
|
+
# Appease rubocop rules by implementing #each_value
|
44
|
+
def each_value(&block)
|
45
|
+
values.each(&block)
|
53
46
|
end
|
54
47
|
|
55
48
|
def paginator
|
56
49
|
return unless display_facet
|
57
50
|
|
58
|
-
|
59
|
-
|
51
|
+
@paginator ||= blacklight_config.facet_paginator_class.new(
|
52
|
+
display_facet.items,
|
53
|
+
sort: display_facet.sort,
|
54
|
+
offset: display_facet.offset,
|
55
|
+
prefix: display_facet.prefix,
|
56
|
+
limit: facet_limit
|
57
|
+
)
|
58
|
+
end
|
59
|
+
|
60
|
+
DEFAULT_FACET_LIMIT = 10
|
61
|
+
|
62
|
+
# Look up facet limit for given facet_field. Will look at config, and
|
63
|
+
# if config is 'true' will look up from Solr @response if available. If
|
64
|
+
# no limit is available, returns nil. Used from #add_facetting_to_solr
|
65
|
+
# to supply f.fieldname.facet.limit values in solr request (no @response
|
66
|
+
# available), and used in display (with @response available) to create
|
67
|
+
# a facet paginator with the right limit.
|
68
|
+
def facet_limit
|
69
|
+
return unless facet_field.limit
|
70
|
+
|
71
|
+
if @display_facet
|
72
|
+
limit = @display_facet.limit
|
73
|
+
|
74
|
+
if limit.nil? # we didn't get or a set a limit, so infer one.
|
75
|
+
facet_field.limit if facet_field.limit != true
|
76
|
+
elsif limit == -1 # limit -1 is solr-speak for unlimited
|
77
|
+
nil
|
78
|
+
else
|
79
|
+
limit.to_i - 1 # we added 1 to find out if we needed to paginate
|
80
|
+
end
|
81
|
+
else
|
82
|
+
facet_field.limit == true ? DEFAULT_FACET_LIMIT : facet.limit
|
60
83
|
end
|
61
84
|
end
|
85
|
+
|
86
|
+
delegate :blacklight_config, to: :search_state
|
62
87
|
end
|
63
88
|
end
|
@@ -7,12 +7,8 @@ module Blacklight
|
|
7
7
|
delegate :key, to: :facet_config
|
8
8
|
|
9
9
|
def initialize(group, facet_item, facet_config, view_context, facet_field, search_state = view_context.search_state)
|
10
|
+
super(facet_item, facet_config, view_context, facet_field, search_state)
|
10
11
|
@group = group
|
11
|
-
@facet_item = facet_item
|
12
|
-
@facet_config = facet_config
|
13
|
-
@view_context = view_context
|
14
|
-
@facet_field = facet_field
|
15
|
-
@search_state = search_state
|
16
12
|
end
|
17
13
|
|
18
14
|
##
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
class FacetItemPivotPresenter < FacetItemPresenter
|
5
|
+
##
|
6
|
+
# Check if the query parameters have the given facet field with the
|
7
|
+
# given value.
|
8
|
+
def selected?
|
9
|
+
search_state.filter(facet_config).include?(facet_item)
|
10
|
+
end
|
11
|
+
|
12
|
+
def shown?
|
13
|
+
selected? || facet_item_presenters.any? { |x| x.try(:shown?) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def field_label
|
17
|
+
facet_field_presenter.label
|
18
|
+
end
|
19
|
+
|
20
|
+
def facet_item_presenters
|
21
|
+
return to_enum(:facet_item_presenters) unless block_given?
|
22
|
+
return [] unless items
|
23
|
+
|
24
|
+
items.each { |i| yield facet_item_presenter(i) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def facet_item_presenter(facet_item)
|
28
|
+
facet_config.item_presenter.new(facet_item, facet_config, view_context, facet_field, search_state)
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Get the displayable version of a facet's value
|
33
|
+
#
|
34
|
+
# @return [String]
|
35
|
+
def label
|
36
|
+
label_source = facet_item.respond_to?(:label) ? facet_item.label : facet_item
|
37
|
+
if facet_config.helper_method
|
38
|
+
view_context.public_send(facet_config.helper_method, label_source)
|
39
|
+
else
|
40
|
+
item_fq = label_source.respond_to?(:fq) ? label_source.fq : {}
|
41
|
+
item_fq = item_fq.symbolize_keys
|
42
|
+
label_value = facet_config.pivot.map(&:to_sym).map { |k| item_fq[k] }
|
43
|
+
if label_source.respond_to?(:field)
|
44
|
+
label_value << value
|
45
|
+
else
|
46
|
+
label_value.unshift value
|
47
|
+
end
|
48
|
+
label_value.compact.join(" » ")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def value
|
53
|
+
if facet_item.respond_to? :value
|
54
|
+
facet_item.value
|
55
|
+
else
|
56
|
+
facet_item
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -30,9 +30,7 @@ module Blacklight
|
|
30
30
|
# Check if the query parameters have the given facet field with the
|
31
31
|
# given value.
|
32
32
|
def selected?
|
33
|
-
|
34
|
-
search_state.has_facet? facet_config, value: value
|
35
|
-
end
|
33
|
+
search_state.filter(facet_config).include?(value)
|
36
34
|
end
|
37
35
|
|
38
36
|
def field_label
|
@@ -44,8 +42,6 @@ module Blacklight
|
|
44
42
|
#
|
45
43
|
# @return [String]
|
46
44
|
def label
|
47
|
-
return @view_context.facet_display_value(@facet_field, @facet_item) unless @view_context.method(:facet_display_value).owner == Blacklight::FacetsHelperBehavior
|
48
|
-
|
49
45
|
label_value = if facet_item.respond_to? :label
|
50
46
|
facet_item.label
|
51
47
|
else
|
@@ -62,7 +58,7 @@ module Blacklight
|
|
62
58
|
localization_options = facet_config.date == true ? {} : facet_config.date
|
63
59
|
I18n.l(Time.zone.parse(label_value), **localization_options)
|
64
60
|
else
|
65
|
-
label_value
|
61
|
+
label_value.to_s
|
66
62
|
end
|
67
63
|
end
|
68
64
|
|
@@ -92,9 +88,7 @@ module Blacklight
|
|
92
88
|
|
93
89
|
# @private
|
94
90
|
def remove_href(path = search_state)
|
95
|
-
|
96
|
-
view_context.search_action_path(path.remove_facet_params(facet_config.key, facet_item))
|
97
|
-
end
|
91
|
+
view_context.search_action_path(path.filter(facet_config.key).remove(facet_item))
|
98
92
|
end
|
99
93
|
|
100
94
|
# @private
|
@@ -1,47 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class IndexPresenter < DocumentPresenter
|
4
|
-
##
|
5
|
-
# Render the document index heading. This is used when making a link to a
|
6
|
-
# document, where we don't want any HTML markup added from the pipeline.
|
7
|
-
#
|
8
|
-
# @param [Symbol, Proc, String] field_or_string_or_proc Render the given field or evaluate the proc or render the given string
|
9
|
-
# @param [Hash] opts
|
10
|
-
def label(field_or_string_or_proc, opts = {})
|
11
|
-
config = Configuration::NullField.new
|
12
|
-
value = case field_or_string_or_proc
|
13
|
-
when Symbol
|
14
|
-
config = field_config(field_or_string_or_proc)
|
15
|
-
field_presenter(config).values
|
16
|
-
when Proc
|
17
|
-
Deprecation.warn(self, "calling IndexPresenter.label with a Proc is deprecated. " \
|
18
|
-
"First argument must be a symbol. This will be removed in Blacklight 8")
|
19
|
-
field_or_string_or_proc.call(document, opts)
|
20
|
-
when String
|
21
|
-
Deprecation.warn(self, "calling IndexPresenter.label with a String is deprecated. " \
|
22
|
-
"First argument must be a symbol. This will be removed in Blacklight 8")
|
23
|
-
field_or_string_or_proc
|
24
|
-
end
|
25
|
-
|
26
|
-
value = document.id if value.blank?
|
27
|
-
field_value(config, values: Array.wrap(value), except_operations: [Rendering::HelperMethod])
|
28
|
-
end
|
29
|
-
|
30
|
-
deprecation_deprecate label: 'Use #heading'
|
31
|
-
|
32
5
|
def view_config
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
# @return [Hash<String,Configuration::Field>] all the fields for this index view
|
39
|
-
def fields
|
40
|
-
configuration.index_fields_for(display_type)
|
41
|
-
end
|
42
|
-
|
43
|
-
def field_config(field)
|
44
|
-
configuration.index_fields.fetch(field) { Configuration::NullField.new(field) }
|
6
|
+
configuration.view_config(view_context.document_index_view_type)
|
45
7
|
end
|
46
8
|
end
|
47
9
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class JsonPresenter
|
4
|
-
include Blacklight::Facet
|
5
|
-
|
6
5
|
# @param [Solr::Response] response raw solr response.
|
7
6
|
# @param [Configuration] blacklight_config the configuration
|
8
7
|
def initialize(response, blacklight_config)
|
@@ -12,13 +11,18 @@ module Blacklight
|
|
12
11
|
|
13
12
|
attr_reader :blacklight_config
|
14
13
|
|
15
|
-
delegate :
|
14
|
+
delegate :facet_field_names, :facet_configuration_for_field, to: :blacklight_config
|
15
|
+
|
16
|
+
def documents
|
17
|
+
@response.documents
|
18
|
+
end
|
16
19
|
|
17
20
|
# @return [Array<Blacklight::Solr::Response::Facets::FacetField>]
|
18
21
|
def search_facets
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
+
facet_field_names
|
23
|
+
.map { |field| @response.aggregations[facet_configuration_for_field(field).field] }
|
24
|
+
.compact
|
25
|
+
.select { |display_facet| display_facet.items.present? }
|
22
26
|
end
|
23
27
|
|
24
28
|
# extract the pagination info from the response object
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module Blacklight
|
4
4
|
module Rendering
|
5
5
|
class LinkToFacet < AbstractStep
|
6
|
-
extend Deprecation
|
7
6
|
def render
|
8
7
|
return next_step(values) unless config.link_to_facet
|
9
8
|
|
@@ -31,10 +30,8 @@ module Blacklight
|
|
31
30
|
context.search_action_path(facet_params(field, v))
|
32
31
|
end
|
33
32
|
|
34
|
-
def facet_params(field,
|
35
|
-
|
36
|
-
context.search_state.reset.add_facet_params(field, v)
|
37
|
-
end
|
33
|
+
def facet_params(field, item)
|
34
|
+
context.search_state.reset.filter(field).add(item).params
|
38
35
|
end
|
39
36
|
end
|
40
37
|
end
|
@@ -1,17 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class ShowPresenter < DocumentPresenter
|
4
5
|
private
|
5
6
|
|
6
|
-
# @return [Hash<String,Configuration::Field>]
|
7
|
-
def fields
|
8
|
-
configuration.show_fields_for(display_type)
|
9
|
-
end
|
10
|
-
|
11
|
-
def field_config(field)
|
12
|
-
configuration.show_fields.fetch(field) { Configuration::NullField.new(field) }
|
13
|
-
end
|
14
|
-
|
15
7
|
def field_presenter_options
|
16
8
|
{ context: 'show' }
|
17
9
|
end
|
@@ -72,7 +72,7 @@ module Blacklight
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def thumbnail_value_from_document
|
75
|
-
Array(thumbnail_field).lazy.map { |field| retrieve_values(field_config(field)).first }.
|
75
|
+
Array(thumbnail_field).lazy.map { |field| retrieve_values(field_config(field)).first }.compact_blank.first
|
76
76
|
end
|
77
77
|
|
78
78
|
def retrieve_values(field_config)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
# Extends the search Builders to add bookmarks
|
5
|
+
class BookmarksSearchBuilder < ::SearchBuilder
|
6
|
+
##
|
7
|
+
# Filters the query to only include the bookmarked items
|
8
|
+
#
|
9
|
+
# @param [Hash] solr_parameters
|
10
|
+
#
|
11
|
+
# @return [void]
|
12
|
+
def bookmarked(solr_parameters)
|
13
|
+
solr_parameters[:fq] ||= []
|
14
|
+
bookmarks = @scope.context.fetch(:bookmarks)
|
15
|
+
return unless bookmarks
|
16
|
+
|
17
|
+
document_ids = bookmarks.collect { |b| b.document_id.to_s }
|
18
|
+
solr_parameters[:fq] += ["{!terms f=id}#{document_ids.join(',')}"]
|
19
|
+
end
|
20
|
+
self.default_processor_chain += [:bookmarked]
|
21
|
+
end
|
22
|
+
end
|
@@ -22,19 +22,17 @@ module Blacklight
|
|
22
22
|
|
23
23
|
# @return [Array]
|
24
24
|
def fetch
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
Array.wrap(value)
|
25
|
+
Array.wrap(
|
26
|
+
if field_config.highlight
|
27
|
+
retrieve_highlight
|
28
|
+
elsif field_config.accessor
|
29
|
+
retieve_using_accessor
|
30
|
+
elsif field_config.values
|
31
|
+
retrieve_values
|
32
|
+
else
|
33
|
+
retrieve_simple
|
34
|
+
end
|
35
|
+
)
|
38
36
|
end
|
39
37
|
|
40
38
|
private
|
@@ -69,14 +67,7 @@ module Blacklight
|
|
69
67
|
end
|
70
68
|
|
71
69
|
def retrieve_values
|
72
|
-
|
73
|
-
|
74
|
-
if values_method.respond_to?(:arity) && values_method.arity.abs == 2
|
75
|
-
Deprecation.warn(self, ":values parameter for field #{field_config.key} only accepts 2 arguments; should accept 3")
|
76
|
-
values_method.call(field_config, document)
|
77
|
-
else
|
78
|
-
values_method.call(field_config, document, view_context)
|
79
|
-
end
|
70
|
+
field_config.values.call(field_config, document, view_context)
|
80
71
|
end
|
81
72
|
end
|
82
73
|
end
|