blacklight 6.14.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.npmignore +23 -0
- data/.rubocop.yml +40 -16
- data/.rubocop_todo.yml +479 -375
- data/.solr_wrapper.yml +9 -2
- data/.travis.yml +27 -20
- data/Gemfile +3 -1
- data/README.md +22 -5
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/Vagrantfile +2 -0
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/search.svg +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +497 -57
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
- data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
- data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
- data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
- data/app/assets/stylesheets/blacklight/_header.scss +35 -48
- data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
- data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
- data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
- data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
- data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
- data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
- data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
- data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
- data/app/builders/blacklight/action_builder.rb +57 -0
- data/app/controllers/bookmarks_controller.rb +2 -2
- data/app/controllers/catalog_controller.rb +2 -2
- data/app/controllers/concerns/blacklight/base.rb +0 -33
- data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
- data/app/controllers/concerns/blacklight/catalog.rb +266 -210
- data/app/controllers/concerns/blacklight/controller.rb +111 -126
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/facet.rb +3 -0
- data/app/controllers/concerns/blacklight/search_context.rb +16 -14
- data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
- data/app/controllers/concerns/blacklight/search_history.rb +1 -6
- data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
- data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
- data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
- data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
- data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
- data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
- data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/checkbox_submit.js +134 -0
- data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
- data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
- data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
- data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +56 -0
- data/app/models/blacklight/solr/facet_paginator.rb +3 -3
- data/app/models/blacklight/suggest_search.rb +4 -15
- data/app/models/bookmark.rb +5 -10
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
- data/app/models/concerns/blacklight/document/email.rb +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +5 -5
- data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
- data/app/models/concerns/blacklight/document/sms.rb +1 -1
- data/app/models/concerns/blacklight/document.rb +26 -40
- data/app/models/concerns/blacklight/solr/document.rb +8 -8
- data/app/models/concerns/blacklight/suggest/response.rb +5 -3
- data/app/models/concerns/blacklight/user.rb +7 -6
- data/app/models/record_mailer.rb +5 -6
- data/app/models/search.rb +5 -7
- data/app/presenters/blacklight/document_presenter.rb +25 -140
- data/app/presenters/blacklight/field_presenter.rb +7 -5
- data/app/presenters/blacklight/index_presenter.rb +41 -58
- data/app/presenters/blacklight/json_presenter.rb +10 -14
- data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
- data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
- data/app/presenters/blacklight/rendering/join.rb +5 -3
- data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
- data/app/presenters/blacklight/rendering/microdata.rb +6 -3
- data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
- data/app/presenters/blacklight/rendering/terminator.rb +2 -0
- data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
- data/app/presenters/blacklight/show_presenter.rb +26 -63
- data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
- data/app/services/blacklight/document_factory.rb +13 -0
- data/app/services/blacklight/field_retriever.rb +26 -24
- data/app/services/blacklight/search_service.rb +152 -0
- data/app/values/blacklight/types.rb +31 -0
- data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
- data/app/views/blacklight/nav/_search_history.html.erb +1 -1
- data/app/views/bookmarks/_tools.html.erb +2 -2
- data/app/views/bookmarks/index.html.erb +12 -13
- data/app/views/catalog/_bookmark_control.html.erb +26 -10
- data/app/views/catalog/_citation.html.erb +4 -4
- data/app/views/catalog/_constraints.html.erb +6 -7
- data/app/views/catalog/_constraints_element.html.erb +6 -6
- data/app/views/catalog/_did_you_mean.html.erb +1 -1
- data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
- data/app/views/catalog/_document_action.html.erb +2 -1
- data/app/views/catalog/_email_form.html.erb +8 -4
- data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
- data/app/views/catalog/_facet_layout.html.erb +6 -10
- data/app/views/catalog/_facet_limit.html.erb +3 -2
- data/app/views/catalog/_facet_pagination.html.erb +8 -8
- data/app/views/catalog/_facet_pivot.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +9 -12
- data/app/views/catalog/_field.json.jbuilder +10 -0
- data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
- data/app/views/catalog/_home_text.html.erb +32 -36
- data/app/views/catalog/_index.html.erb +10 -0
- data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
- data/app/views/catalog/_per_page_widget.html.erb +6 -7
- data/app/views/catalog/_previous_next_doc.html.erb +6 -14
- data/app/views/catalog/_results_pagination.html.erb +2 -2
- data/app/views/catalog/_search_form.html.erb +12 -8
- data/app/views/catalog/_search_header.html.erb +0 -3
- data/app/views/catalog/_search_results.html.erb +6 -2
- data/app/views/catalog/_show.html.erb +8 -0
- data/app/views/catalog/_show_main_content.html.erb +4 -4
- data/app/views/catalog/_show_more_like_this.html.erb +1 -1
- data/app/views/catalog/_show_sidebar.html.erb +3 -3
- data/app/views/catalog/_show_tools.html.erb +10 -12
- data/app/views/catalog/_sms_form.html.erb +8 -4
- data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
- data/app/views/catalog/_sort_widget.html.erb +7 -7
- data/app/views/catalog/_thumbnail.html.erb +5 -0
- data/app/views/catalog/_view_type_group.html.erb +2 -2
- data/app/views/catalog/_zero_results.html.erb +1 -1
- data/app/views/catalog/citation.js.erb +4 -2
- data/app/views/catalog/email.html.erb +5 -3
- data/app/views/catalog/email_success.html.erb +12 -8
- data/app/views/catalog/facet.html.erb +10 -8
- data/app/views/catalog/facet.json.jbuilder +2 -0
- data/app/views/catalog/index.atom.builder +13 -16
- data/app/views/catalog/index.html.erb +9 -11
- data/app/views/catalog/index.json.jbuilder +84 -3
- data/app/views/catalog/index.rss.builder +7 -5
- data/app/views/catalog/opensearch.xml.builder +12 -10
- data/app/views/catalog/show.html.erb +11 -6
- data/app/views/catalog/show.json.jbuilder +21 -0
- data/app/views/catalog/sms.html.erb +3 -1
- data/app/views/catalog/sms_success.html.erb +12 -8
- data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
- data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
- data/app/views/kaminari/blacklight/_page.html.erb +5 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
- data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
- data/app/views/layouts/blacklight/base.html.erb +35 -0
- data/app/views/layouts/blacklight.html.erb +14 -41
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/shared/_header_navbar.html.erb +8 -13
- data/app/views/shared/_modal.html.erb +6 -0
- data/app/views/shared/_user_util_links.html.erb +22 -0
- data/blacklight.gemspec +10 -11
- data/config/i18n-tasks.yml +17 -0
- data/config/locales/blacklight.de.yml +71 -82
- data/config/locales/blacklight.en.yml +15 -27
- data/config/locales/blacklight.es.yml +14 -26
- data/config/locales/blacklight.fr.yml +16 -33
- data/config/locales/blacklight.hu.yml +212 -0
- data/config/locales/blacklight.it.yml +15 -26
- data/config/locales/blacklight.nl.yml +212 -0
- data/config/locales/blacklight.pt-BR.yml +24 -29
- data/config/locales/blacklight.sq.yml +4 -28
- data/config/locales/blacklight.zh.yml +3 -25
- data/config/routes.rb +2 -10
- data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
- data/lib/blacklight/abstract_repository.rb +22 -10
- data/lib/blacklight/configuration/context.rb +12 -1
- data/lib/blacklight/configuration/facet_field.rb +16 -9
- data/lib/blacklight/configuration/field.rb +32 -3
- data/lib/blacklight/configuration/fields.rb +61 -58
- data/lib/blacklight/configuration/null_field.rb +2 -0
- data/lib/blacklight/configuration/search_field.rb +2 -2
- data/lib/blacklight/configuration/sort_field.rb +2 -2
- data/lib/blacklight/configuration/view_config.rb +4 -0
- data/lib/blacklight/configuration.rb +101 -88
- data/lib/blacklight/engine.rb +11 -7
- data/lib/blacklight/exceptions.rb +4 -7
- data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
- data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/routes/exportable.rb +1 -3
- data/lib/blacklight/routes/searchable.rb +3 -3
- data/lib/blacklight/runtime_registry.rb +2 -0
- data/lib/blacklight/search_builder.rb +28 -35
- data/lib/blacklight/search_state.rb +10 -8
- data/lib/blacklight/solr/repository.rb +40 -6
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response/facets.rb +29 -31
- data/lib/blacklight/solr/response/group.rb +3 -3
- data/lib/blacklight/solr/response/group_response.rb +1 -1
- data/lib/blacklight/solr/response/more_like_this.rb +2 -2
- data/lib/blacklight/solr/response/response.rb +2 -2
- data/lib/blacklight/solr/response/spelling.rb +4 -3
- data/lib/blacklight/solr/response.rb +29 -30
- data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
- data/lib/blacklight/version.rb +1 -1
- data/lib/blacklight.rb +10 -8
- data/lib/generators/blacklight/assets_generator.rb +18 -12
- data/lib/generators/blacklight/controller_generator.rb +4 -5
- data/lib/generators/blacklight/document_generator.rb +1 -1
- data/lib/generators/blacklight/install_generator.rb +18 -28
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
- data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
- data/lib/generators/blacklight/templates/blacklight.scss +0 -2
- data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
- data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
- data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +5 -6
- data/lib/railties/blacklight.rake +17 -21
- data/package-lock.json +2195 -0
- data/package.json +29 -0
- data/spec/controllers/alternate_controller_spec.rb +5 -4
- data/spec/controllers/application_controller_spec.rb +1 -5
- data/spec/controllers/blacklight/base_spec.rb +6 -3
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
- data/spec/controllers/blacklight/facet_spec.rb +1 -2
- data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
- data/spec/controllers/bookmarks_controller_spec.rb +46 -11
- data/spec/controllers/catalog_controller_spec.rb +334 -161
- data/spec/controllers/search_history_controller_spec.rb +6 -6
- data/spec/features/alternate_controller_spec.rb +4 -4
- data/spec/features/autocomplete_spec.rb +4 -2
- data/spec/features/bookmarks_spec.rb +10 -10
- data/spec/features/did_you_mean_spec.rb +7 -12
- data/spec/features/facets_spec.rb +29 -17
- data/spec/features/record_view_spec.rb +12 -18
- data/spec/features/search_context_spec.rb +6 -7
- data/spec/features/search_crawler_spec.rb +3 -5
- data/spec/features/search_filters_spec.rb +80 -80
- data/spec/features/search_formats_spec.rb +1 -1
- data/spec/features/search_history_spec.rb +6 -29
- data/spec/features/search_pagination_spec.rb +4 -2
- data/spec/features/search_results_spec.rb +14 -12
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +8 -9
- data/spec/features/sitelinks_search_box.rb +4 -4
- data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
- data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
- data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
- data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
- data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
- data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
- data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
- data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
- data/spec/helpers/blacklight_helper_spec.rb +65 -150
- data/spec/helpers/catalog_helper_spec.rb +80 -96
- data/spec/i18n_spec.rb +18 -0
- data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
- data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
- data/spec/lib/blacklight/parameters_spec.rb +4 -2
- data/spec/lib/blacklight/search_state_spec.rb +53 -36
- data/spec/lib/blacklight_spec.rb +14 -15
- data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
- data/spec/models/blacklight/configurable_spec.rb +24 -27
- data/spec/models/blacklight/configuration/context_spec.rb +9 -10
- data/spec/models/blacklight/configuration_spec.rb +248 -223
- data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
- data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
- data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
- data/spec/models/blacklight/document/email_spec.rb +10 -10
- data/spec/models/blacklight/document/sms_spec.rb +10 -10
- data/spec/models/blacklight/document_spec.rb +10 -22
- data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
- data/spec/models/blacklight/icon_spec.rb +44 -0
- data/spec/models/blacklight/search_builder_spec.rb +41 -26
- data/spec/models/blacklight/solr/document_spec.rb +224 -216
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
- data/spec/models/blacklight/solr/repository_spec.rb +61 -46
- data/spec/models/blacklight/solr/request_spec.rb +17 -18
- data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
- data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
- data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
- data/spec/models/blacklight/solr/response_spec.rb +56 -55
- data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
- data/spec/models/blacklight/suggest/response_spec.rb +6 -4
- data/spec/models/blacklight/suggest_search_spec.rb +9 -16
- data/spec/models/blacklight/user_spec.rb +9 -11
- data/spec/models/bookmark_spec.rb +7 -6
- data/spec/models/record_mailer_spec.rb +23 -21
- data/spec/models/search_spec.rb +19 -18
- data/spec/models/solr_document_spec.rb +33 -5
- data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
- data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
- data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
- data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
- data/spec/presenters/pipeline_spec.rb +18 -11
- data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
- data/spec/routing/catalog_routing_spec.rb +13 -15
- data/spec/services/blacklight/search_service_spec.rb +488 -0
- data/spec/spec_helper.rb +20 -19
- data/spec/support/features/session_helpers.rb +4 -4
- data/spec/support/features.rb +1 -1
- data/spec/test_app_templates/Gemfile.extra +2 -4
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
- data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
- data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
- data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
- data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
- data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
- data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
- data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
- data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
- data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
- data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
- data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
- data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
- data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
- data/spec/views/catalog/index.html.erb_spec.rb +6 -8
- data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +8 -8
- data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
- data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
- data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
- data/tasks/blacklight.rake +10 -8
- data/template.demo.rb +3 -11
- metadata +188 -189
- data/app/assets/javascripts/blacklight/autofocus.js +0 -16
- data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
- data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
- data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
- data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
- data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
- data/app/controllers/concerns/blacklight/suggest.rb +0 -25
- data/app/controllers/saved_searches_controller.rb +0 -4
- data/app/controllers/suggest_controller.rb +0 -4
- data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
- data/app/helpers/blacklight/render_partials_helper.rb +0 -205
- data/app/helpers/blacklight_configuration_helper.rb +0 -4
- data/app/helpers/blacklight_url_helper.rb +0 -4
- data/app/helpers/component_helper.rb +0 -4
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
- data/app/helpers/layout_helper.rb +0 -4
- data/app/helpers/render_constraints_helper.rb +0 -4
- data/app/helpers/search_history_constraints_helper.rb +0 -4
- data/app/helpers/suggest_helper.rb +0 -4
- data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
- data/app/views/_user_util_links.html.erb +0 -26
- data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
- data/app/views/catalog/_index_default.html.erb +0 -12
- data/app/views/catalog/_show_default.html.erb +0 -10
- data/app/views/catalog/_thumbnail_default.html.erb +0 -5
- data/app/views/saved_searches/index.html.erb +0 -32
- data/app/views/shared/_ajax_modal.html.erb +0 -6
- data/lib/generators/blacklight/solr4_generator.rb +0 -31
- data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
- data/solr/conf/schema.xml +0 -629
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
- data/spec/controllers/saved_searches_controller_spec.rb +0 -32
- data/spec/controllers/suggest_controller_spec.rb +0 -17
- data/spec/features/saved_searches_spec.rb +0 -47
- data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
- data/spec/lib/blacklight/utils_spec.rb +0 -167
- data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
- data/spec/presenters/document_presenter_spec.rb +0 -438
- data/spec/presenters/index_presenter_spec.rb +0 -173
- data/spec/presenters/show_presenter_spec.rb +0 -313
- data/spec/support/backport_test.rb +0 -14
- /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
- /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//= require blacklight/core
|
|
2
|
-
(function($) {
|
|
3
|
-
Blacklight.do_search_autofocus_fallback = function() {
|
|
4
|
-
if (typeof Modernizer != "undefined") {
|
|
5
|
-
if (Modernizr.autofocus) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
$('input[autofocus]').focus();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Blacklight.onLoad(function() {
|
|
14
|
-
Blacklight.do_search_autofocus_fallback();
|
|
15
|
-
});
|
|
16
|
-
})(jQuery);
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
//= require blacklight/core
|
|
2
|
-
//= require blacklight/checkbox_submit
|
|
3
|
-
(function($) {
|
|
4
|
-
//change form submit toggle to checkbox
|
|
5
|
-
Blacklight.do_bookmark_toggle_behavior = function() {
|
|
6
|
-
$(Blacklight.do_bookmark_toggle_behavior.selector).bl_checkbox_submit({
|
|
7
|
-
//css_class is added to elements added, plus used for id base
|
|
8
|
-
css_class: "toggle_bookmark",
|
|
9
|
-
success: function(checked, response) {
|
|
10
|
-
if (response.bookmarks) {
|
|
11
|
-
$('[data-role=bookmark-counter]').text(response.bookmarks.count);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
Blacklight.do_bookmark_toggle_behavior.selector = "form.bookmark_toggle";
|
|
17
|
-
|
|
18
|
-
Blacklight.onLoad(function() {
|
|
19
|
-
Blacklight.do_bookmark_toggle_behavior();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
})(jQuery);
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/* A JQuery plugin (should this be implemented as a widget instead? not sure)
|
|
2
|
-
that will convert a "toggle" form, with single submit button to add/remove
|
|
3
|
-
something, like used for Bookmarks, into an AJAXy checkbox instead.
|
|
4
|
-
|
|
5
|
-
Apply to a form. Does require certain assumption about the form:
|
|
6
|
-
1) The same form 'action' href must be used for both ADD and REMOVE
|
|
7
|
-
actions, with the different being the hidden input name="_method"
|
|
8
|
-
being set to "put" or "delete" -- that's the Rails method to pretend
|
|
9
|
-
to be doing a certain HTTP verb. So same URL, PUT to add, DELETE
|
|
10
|
-
to remove. This plugin assumes that.
|
|
11
|
-
|
|
12
|
-
Plus, the form this is applied to should provide a data-doc-id
|
|
13
|
-
attribute (HTML5-style doc-*) that contains the id/primary key
|
|
14
|
-
of the object in question -- used by plugin for a unique value for
|
|
15
|
-
DOM id's.
|
|
16
|
-
|
|
17
|
-
Uses HTML for a checkbox compatible with Bootstrap 3.
|
|
18
|
-
|
|
19
|
-
Pass in options for your class name and labels:
|
|
20
|
-
$("form.something").bl_checkbox_submit({
|
|
21
|
-
checked_label: "Selected",
|
|
22
|
-
unchecked_label: "Select",
|
|
23
|
-
progress_label: "Saving...",
|
|
24
|
-
//css_class is added to elements added, plus used for id base
|
|
25
|
-
css_class: "toggle_my_kinda_form",
|
|
26
|
-
success: function(after_success_check_state) {
|
|
27
|
-
#optional callback
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
*/
|
|
31
|
-
(function($) {
|
|
32
|
-
$.fn.bl_checkbox_submit = function(arg_opts) {
|
|
33
|
-
|
|
34
|
-
this.each(function() {
|
|
35
|
-
var options = $.extend({}, $.fn.bl_checkbox_submit.defaults, arg_opts);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
var form = $(this);
|
|
39
|
-
form.children().hide();
|
|
40
|
-
//We're going to use the existing form to actually send our add/removes
|
|
41
|
-
//This works conveneintly because the exact same action href is used
|
|
42
|
-
//for both bookmarks/$doc_id. But let's take out the irrelevant parts
|
|
43
|
-
//of the form to avoid any future confusion.
|
|
44
|
-
form.find("input[type=submit]").remove();
|
|
45
|
-
form.addClass('form-horizontal');
|
|
46
|
-
|
|
47
|
-
//View needs to set data-doc-id so we know a unique value
|
|
48
|
-
//for making DOM id
|
|
49
|
-
var unique_id = form.attr("data-doc-id") || Math.random();
|
|
50
|
-
// if form is currently using method delete to change state,
|
|
51
|
-
// then checkbox is currently checked
|
|
52
|
-
var checked = (form.find("input[name=_method][value=delete]").size() != 0);
|
|
53
|
-
|
|
54
|
-
var checkbox = $('<input type="checkbox">')
|
|
55
|
-
.addClass( options.css_class )
|
|
56
|
-
.attr("id", options.css_class + "_" + unique_id);
|
|
57
|
-
var label = $('<label>')
|
|
58
|
-
.addClass( options.css_class )
|
|
59
|
-
.attr("for", options.css_class + '_' + unique_id)
|
|
60
|
-
.attr("title", form.attr("title") || "");
|
|
61
|
-
var span = $('<span>');
|
|
62
|
-
|
|
63
|
-
label.append(checkbox);
|
|
64
|
-
label.append(" ");
|
|
65
|
-
label.append(span);
|
|
66
|
-
|
|
67
|
-
var checkbox_div = $("<div class='checkbox' />")
|
|
68
|
-
.addClass(options.css_class)
|
|
69
|
-
.append(label);
|
|
70
|
-
|
|
71
|
-
function update_state_for(state) {
|
|
72
|
-
checkbox.prop("checked", state);
|
|
73
|
-
label.toggleClass("checked", state);
|
|
74
|
-
if (state) {
|
|
75
|
-
//Set the Rails hidden field that fakes an HTTP verb
|
|
76
|
-
//properly for current state action.
|
|
77
|
-
form.find("input[name=_method]").val("delete");
|
|
78
|
-
span.text(form.attr('data-present'));
|
|
79
|
-
} else {
|
|
80
|
-
form.find("input[name=_method]").val("put");
|
|
81
|
-
span.text(form.attr('data-absent'));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
form.append(checkbox_div);
|
|
86
|
-
update_state_for(checked);
|
|
87
|
-
|
|
88
|
-
checkbox.click(function() {
|
|
89
|
-
span.text(form.attr('data-inprogress'));
|
|
90
|
-
label.attr("disabled", "disabled");
|
|
91
|
-
checkbox.attr("disabled", "disabled");
|
|
92
|
-
|
|
93
|
-
$.ajax({
|
|
94
|
-
url: form.attr("action"),
|
|
95
|
-
dataType: 'json',
|
|
96
|
-
type: form.attr("method").toUpperCase(),
|
|
97
|
-
data: form.serialize(),
|
|
98
|
-
error: function() {
|
|
99
|
-
alert("Error");
|
|
100
|
-
update_state_for(checked);
|
|
101
|
-
label.removeAttr("disabled");
|
|
102
|
-
checkbox.removeAttr("disabled");
|
|
103
|
-
},
|
|
104
|
-
success: function(data, status, xhr) {
|
|
105
|
-
//if app isn't running at all, xhr annoyingly
|
|
106
|
-
//reports success with status 0.
|
|
107
|
-
if (xhr.status != 0) {
|
|
108
|
-
checked = ! checked;
|
|
109
|
-
update_state_for(checked);
|
|
110
|
-
label.removeAttr("disabled");
|
|
111
|
-
checkbox.removeAttr("disabled");
|
|
112
|
-
options.success.call(form, checked, xhr.responseJSON);
|
|
113
|
-
} else {
|
|
114
|
-
alert("Error");
|
|
115
|
-
update_state_for(checked);
|
|
116
|
-
label.removeAttr("disabled");
|
|
117
|
-
checkbox.removeAttr("disabled");
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
return false;
|
|
123
|
-
}); //checkbox.click
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}); //this.each
|
|
127
|
-
return this;
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
$.fn.bl_checkbox_submit.defaults = {
|
|
131
|
-
//css_class is added to elements added, plus used for id base
|
|
132
|
-
css_class: "bl_checkbox_submit",
|
|
133
|
-
success: function() {} //callback
|
|
134
|
-
};
|
|
135
|
-
})(jQuery);
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module Blacklight
|
|
3
|
-
module RequestBuilders
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
|
|
6
|
-
included do
|
|
7
|
-
if self.respond_to?(:helper_method)
|
|
8
|
-
helper_method(:facet_limit_for)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Override this method to use a search builder other than the one in the config
|
|
13
|
-
delegate :search_builder_class, to: :blacklight_config
|
|
14
|
-
|
|
15
|
-
def search_builder
|
|
16
|
-
search_builder_class.new(self)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
# Opensearch autocomplete parameters for plucking a field's value from the results
|
|
21
|
-
def solr_opensearch_params(field)
|
|
22
|
-
solr_params = {}
|
|
23
|
-
solr_params[:rows] ||= 10
|
|
24
|
-
solr_params[:fl] = field || blacklight_config.view_config('opensearch').title_field
|
|
25
|
-
solr_params
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# Pagination parameters for selecting the previous and next documents
|
|
30
|
-
# out of a result set.
|
|
31
|
-
def previous_and_next_document_params(index, window = 1)
|
|
32
|
-
solr_params = blacklight_config.document_pagination_params.dup
|
|
33
|
-
|
|
34
|
-
if solr_params.empty?
|
|
35
|
-
solr_params[:fl] = '*'
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
if index > 0
|
|
39
|
-
solr_params[:start] = index - window # get one before
|
|
40
|
-
solr_params[:rows] = 2*window + 1 # and one after
|
|
41
|
-
else
|
|
42
|
-
solr_params[:start] = 0 # there is no previous doc
|
|
43
|
-
solr_params[:rows] = 2*window # but there should be one after
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
solr_params[:facet] = false
|
|
47
|
-
solr_params
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
DEFAULT_FACET_LIMIT = 10
|
|
51
|
-
|
|
52
|
-
# Look up facet limit for given facet_field. Will look at config, and
|
|
53
|
-
# if config is 'true' will look up from Solr @response if available. If
|
|
54
|
-
# no limit is avaialble, returns nil. Used from #add_facetting_to_solr
|
|
55
|
-
# to supply f.fieldname.facet.limit values in solr request (no @response
|
|
56
|
-
# available), and used in display (with @response available) to create
|
|
57
|
-
# a facet paginator with the right limit.
|
|
58
|
-
def facet_limit_for(facet_field)
|
|
59
|
-
facet = blacklight_config.facet_fields[facet_field]
|
|
60
|
-
return if facet.blank?
|
|
61
|
-
|
|
62
|
-
if facet.limit and @response and @response.aggregations[facet.field]
|
|
63
|
-
limit = @response.aggregations[facet.field].limit
|
|
64
|
-
|
|
65
|
-
if limit.nil? # we didn't get or a set a limit, so infer one.
|
|
66
|
-
facet.limit if facet.limit != true
|
|
67
|
-
elsif limit == -1 # limit -1 is solr-speak for unlimited
|
|
68
|
-
nil
|
|
69
|
-
else
|
|
70
|
-
limit.to_i - 1 # we added 1 to find out if we needed to paginate
|
|
71
|
-
end
|
|
72
|
-
elsif facet.limit
|
|
73
|
-
facet.limit == true ? DEFAULT_FACET_LIMIT : facet.limit
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module Blacklight
|
|
3
|
-
module SavedSearches
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
include Blacklight::Configurable
|
|
6
|
-
|
|
7
|
-
included do
|
|
8
|
-
copy_blacklight_config_from(CatalogController)
|
|
9
|
-
before_action :require_user_authentication_provider
|
|
10
|
-
before_action :verify_user
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def index
|
|
14
|
-
@searches = current_user.searches
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def save
|
|
18
|
-
current_user.searches << searches_from_history.find(params[:id])
|
|
19
|
-
if current_user.save
|
|
20
|
-
flash[:notice] = I18n.t('blacklight.saved_searches.add.success')
|
|
21
|
-
else
|
|
22
|
-
flash[:error] = I18n.t('blacklight.saved_searches.add.failure')
|
|
23
|
-
end
|
|
24
|
-
if respond_to? :redirect_back
|
|
25
|
-
redirect_back fallback_location: blacklight.saved_searches_path
|
|
26
|
-
else
|
|
27
|
-
# Deprecated in Rails 5.0
|
|
28
|
-
redirect_to :back
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Only dereferences the user rather than removing the item in case it
|
|
33
|
-
# is in the session[:history]
|
|
34
|
-
def forget
|
|
35
|
-
search = current_user.searches.find(params[:id])
|
|
36
|
-
|
|
37
|
-
if search.present?
|
|
38
|
-
search.user_id = nil
|
|
39
|
-
search.save
|
|
40
|
-
|
|
41
|
-
flash[:notice] = I18n.t('blacklight.saved_searches.remove.success')
|
|
42
|
-
else
|
|
43
|
-
flash[:error] = I18n.t('blacklight.saved_searches.remove.failure')
|
|
44
|
-
end
|
|
45
|
-
if respond_to? :redirect_back
|
|
46
|
-
redirect_back fallback_location: blacklight.saved_searches_path
|
|
47
|
-
else
|
|
48
|
-
# Deprecated in Rails 5.0
|
|
49
|
-
redirect_to :back
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Only dereferences the user rather than removing the items in case they
|
|
54
|
-
# are in the session[:history]
|
|
55
|
-
def clear
|
|
56
|
-
if current_user.searches.update_all("user_id = NULL")
|
|
57
|
-
flash[:notice] = I18n.t('blacklight.saved_searches.clear.success')
|
|
58
|
-
else
|
|
59
|
-
flash[:error] = I18n.t('blacklight.saved_searches.clear.failure')
|
|
60
|
-
end
|
|
61
|
-
redirect_to blacklight.saved_searches_url
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
protected
|
|
65
|
-
|
|
66
|
-
def verify_user
|
|
67
|
-
flash[:notice] = I18n.t('blacklight.saved_searches.need_login') and raise Blacklight::Exceptions::AccessDenied unless current_user
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# SearchHelper is a controller layer mixin. It is in the controller scope: request params, session etc.
|
|
3
|
-
#
|
|
4
|
-
# NOTE: Be careful when creating variables here as they may be overriding something that already exists.
|
|
5
|
-
# The ActionController docs: http://api.rubyonrails.org/classes/ActionController/Base.html
|
|
6
|
-
#
|
|
7
|
-
# Override these methods in your own controller for customizations:
|
|
8
|
-
#
|
|
9
|
-
# class CatalogController < ActionController::Base
|
|
10
|
-
# include Blacklight::Catalog
|
|
11
|
-
#
|
|
12
|
-
# def repository_class
|
|
13
|
-
# MyAlternativeRepo
|
|
14
|
-
# end
|
|
15
|
-
# end
|
|
16
|
-
#
|
|
17
|
-
# Or by including in local extensions:
|
|
18
|
-
# module LocalSearchHelperExtension
|
|
19
|
-
# [ local overrides ]
|
|
20
|
-
# end
|
|
21
|
-
#
|
|
22
|
-
# class CatalogController < ActionController::Base
|
|
23
|
-
# include Blacklight::Catalog
|
|
24
|
-
# include LocalSearchHelperExtension
|
|
25
|
-
#
|
|
26
|
-
# def repository_class
|
|
27
|
-
# MyAlternativeRepo
|
|
28
|
-
# end
|
|
29
|
-
# end
|
|
30
|
-
#
|
|
31
|
-
# Or by using ActiveSupport::Concern:
|
|
32
|
-
#
|
|
33
|
-
# module LocalSearchHelperExtension
|
|
34
|
-
# extend ActiveSupport::Concern
|
|
35
|
-
# include Blacklight::SearchHelper
|
|
36
|
-
#
|
|
37
|
-
# [ local overrides ]
|
|
38
|
-
# end
|
|
39
|
-
#
|
|
40
|
-
# class CatalogController < ApplicationController
|
|
41
|
-
# include LocalSearchHelperExtension
|
|
42
|
-
# include Blacklight::Catalog
|
|
43
|
-
# end
|
|
44
|
-
|
|
45
|
-
module Blacklight::SearchHelper
|
|
46
|
-
extend ActiveSupport::Concern
|
|
47
|
-
include Blacklight::RequestBuilders
|
|
48
|
-
|
|
49
|
-
# a solr query method
|
|
50
|
-
# @param [Hash] user_params ({}) the user provided parameters (e.g. query, facets, sort, etc)
|
|
51
|
-
# @yield [search_builder] optional block yields configured SearchBuilder, caller can modify or create new SearchBuilder to be used. Block should return SearchBuilder to be used.
|
|
52
|
-
# @return [Blacklight::Solr::Response] the solr response object
|
|
53
|
-
def search_results(user_params)
|
|
54
|
-
builder = search_builder.with(user_params)
|
|
55
|
-
builder.page = user_params[:page] if user_params[:page]
|
|
56
|
-
builder.rows = (user_params[:per_page] || user_params[:rows]) if user_params[:per_page] || user_params[:rows]
|
|
57
|
-
|
|
58
|
-
builder = yield(builder) if block_given?
|
|
59
|
-
response = repository.search(builder)
|
|
60
|
-
|
|
61
|
-
if response.grouped? && grouped_key_for_results
|
|
62
|
-
[response.group(grouped_key_for_results), []]
|
|
63
|
-
elsif response.grouped? && response.grouped.length == 1
|
|
64
|
-
[response.grouped.first, []]
|
|
65
|
-
else
|
|
66
|
-
[response, response.documents]
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# retrieve a document, given the doc id
|
|
71
|
-
# @param [Array{#to_s},#to_s] id
|
|
72
|
-
# @return [Blacklight::Solr::Response, Blacklight::SolrDocument] the solr response object and the first document
|
|
73
|
-
def fetch(id = nil, extra_controller_params = {})
|
|
74
|
-
if id.is_a? Array
|
|
75
|
-
fetch_many(id, search_state.to_h, extra_controller_params)
|
|
76
|
-
else
|
|
77
|
-
fetch_one(id, extra_controller_params)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
##
|
|
82
|
-
# Get the solr response when retrieving only a single facet field
|
|
83
|
-
# @return [Blacklight::Solr::Response] the solr response
|
|
84
|
-
def get_facet_field_response(facet_field, user_params = params || {}, extra_controller_params = {})
|
|
85
|
-
query = search_builder.with(user_params).facet(facet_field)
|
|
86
|
-
repository.search(query.merge(extra_controller_params))
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# Get the previous and next document from a search result
|
|
90
|
-
# @return [Blacklight::Solr::Response, Array<Blacklight::SolrDocument>] the solr response and a list of the first and last document
|
|
91
|
-
def get_previous_and_next_documents_for_search(index, request_params, extra_controller_params={})
|
|
92
|
-
p = previous_and_next_document_params(index)
|
|
93
|
-
query = search_builder.with(request_params).start(p.delete(:start)).rows(p.delete(:rows)).merge(extra_controller_params).merge(p)
|
|
94
|
-
response = repository.search(query)
|
|
95
|
-
document_list = response.documents
|
|
96
|
-
|
|
97
|
-
# only get the previous doc if there is one
|
|
98
|
-
prev_doc = document_list.first if index > 0
|
|
99
|
-
next_doc = document_list.last if (index + 1) < response.total
|
|
100
|
-
[response, [prev_doc, next_doc]]
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# a solr query method
|
|
104
|
-
# does a standard search but returns a simplified object.
|
|
105
|
-
# an array is returned, the first item is the query string,
|
|
106
|
-
# the second item is an other array. This second array contains
|
|
107
|
-
# all of the field values for each of the documents...
|
|
108
|
-
# where the field is the "field" argument passed in.
|
|
109
|
-
def get_opensearch_response(field = nil, request_params = params || {}, extra_controller_params = {})
|
|
110
|
-
field ||= blacklight_config.view_config('opensearch').title_field
|
|
111
|
-
|
|
112
|
-
query = search_builder.with(request_params).merge(solr_opensearch_params(field)).merge(extra_controller_params)
|
|
113
|
-
response = repository.search(query)
|
|
114
|
-
|
|
115
|
-
[response.params[:q], response.documents.flat_map {|doc| doc[field] }.uniq]
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
##
|
|
119
|
-
# The key to use to retrieve the grouped field to display
|
|
120
|
-
def grouped_key_for_results
|
|
121
|
-
blacklight_config.index.group
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
delegate :repository_class, to: :blacklight_config
|
|
125
|
-
|
|
126
|
-
def repository
|
|
127
|
-
repository_class.new(blacklight_config)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
private
|
|
131
|
-
|
|
132
|
-
##
|
|
133
|
-
# Retrieve a set of documents by id
|
|
134
|
-
# @param [Array] ids
|
|
135
|
-
# @param [HashWithIndifferentAccess] user_params
|
|
136
|
-
# @param [HashWithIndifferentAccess] extra_controller_params
|
|
137
|
-
def fetch_many(ids, user_params, extra_controller_params)
|
|
138
|
-
user_params ||= params
|
|
139
|
-
extra_controller_params ||= {}
|
|
140
|
-
|
|
141
|
-
query = search_builder.
|
|
142
|
-
with(user_params).
|
|
143
|
-
where(blacklight_config.document_model.unique_key => ids).
|
|
144
|
-
merge(extra_controller_params).
|
|
145
|
-
merge(fl: '*')
|
|
146
|
-
solr_response = repository.search(query)
|
|
147
|
-
|
|
148
|
-
[solr_response, solr_response.documents]
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def fetch_one(id, extra_controller_params)
|
|
152
|
-
solr_response = repository.find id, extra_controller_params
|
|
153
|
-
[solr_response, solr_response.documents.first]
|
|
154
|
-
end
|
|
155
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module Blacklight
|
|
3
|
-
module Suggest
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
|
|
6
|
-
included do
|
|
7
|
-
include Blacklight::Configurable
|
|
8
|
-
include Blacklight::SearchHelper
|
|
9
|
-
|
|
10
|
-
copy_blacklight_config_from(CatalogController)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def index
|
|
14
|
-
respond_to do |format|
|
|
15
|
-
format.json do
|
|
16
|
-
render json: suggestions_service.suggestions
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def suggestions_service
|
|
22
|
-
Blacklight::SuggestSearch.new(params, repository).suggestions
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module Blacklight
|
|
3
|
-
module DeprecatedUrlHelperBehavior
|
|
4
|
-
extend Deprecation
|
|
5
|
-
self.deprecation_horizon = 'blacklight 7.x'
|
|
6
|
-
|
|
7
|
-
def params_for_search(*args, &block)
|
|
8
|
-
source_params, params_to_merge = case args.length
|
|
9
|
-
when 0
|
|
10
|
-
search_state.params_for_search
|
|
11
|
-
when 1
|
|
12
|
-
search_state.params_for_search(args.first)
|
|
13
|
-
when 2
|
|
14
|
-
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use controller.search_state_class.new(source_params).params_for_search instead')
|
|
15
|
-
controller.search_state_class.new(args.first, blacklight_config).params_for_search(args.last)
|
|
16
|
-
else
|
|
17
|
-
raise ArgumentError, "wrong number of arguments (#{args.length} for 0..2)"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
deprecation_deprecate :params_for_search
|
|
21
|
-
|
|
22
|
-
def sanitize_search_params(source_params)
|
|
23
|
-
Blacklight::Parameters.sanitize(source_params)
|
|
24
|
-
end
|
|
25
|
-
deprecation_deprecate :sanitize_search_params
|
|
26
|
-
|
|
27
|
-
def reset_search_params(source_params)
|
|
28
|
-
controller.search_state_class.new(source_params, blacklight_config).send(:reset_search_params)
|
|
29
|
-
end
|
|
30
|
-
deprecation_deprecate :reset_search_params
|
|
31
|
-
|
|
32
|
-
def add_facet_params(field, item, source_params = nil)
|
|
33
|
-
if source_params
|
|
34
|
-
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use controller.search_state_class.new(source_params).add_facet_params instead')
|
|
35
|
-
|
|
36
|
-
controller.search_state_class.new(source_params, blacklight_config).add_facet_params(field, item)
|
|
37
|
-
else
|
|
38
|
-
search_state.add_facet_params(field, item)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
deprecation_deprecate :add_facet_params
|
|
42
|
-
|
|
43
|
-
def remove_facet_params(field, item, source_params = nil)
|
|
44
|
-
if source_params
|
|
45
|
-
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use controller.search_state_class.new(source_params).remove_facet_params instead')
|
|
46
|
-
|
|
47
|
-
controller.search_state_class.new(source_params, blacklight_config).remove_facet_params(field, item)
|
|
48
|
-
else
|
|
49
|
-
search_state.remove_facet_params(field, item)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
deprecation_deprecate :remove_facet_params
|
|
53
|
-
|
|
54
|
-
delegate :add_facet_params_and_redirect, to: :search_state
|
|
55
|
-
deprecation_deprecate :add_facet_params_and_redirect
|
|
56
|
-
end
|
|
57
|
-
end
|