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
|
@@ -12,13 +12,10 @@ sq:
|
|
|
12
12
|
next: 'Tjetra »'
|
|
13
13
|
|
|
14
14
|
blacklight:
|
|
15
|
-
application_name: 'Blacklight'
|
|
16
|
-
|
|
17
15
|
header_links:
|
|
18
16
|
login: 'Hyr'
|
|
19
17
|
logout: 'Dil'
|
|
20
18
|
bookmarks: 'Memorizimet'
|
|
21
|
-
saved_searches: 'Kërkimet e ruajtura'
|
|
22
19
|
search_history: 'Historia'
|
|
23
20
|
|
|
24
21
|
welcome: 'Mirësevini!'
|
|
@@ -52,25 +49,6 @@ sq:
|
|
|
52
49
|
list_title: 'Memorizimet e juaja'
|
|
53
50
|
delete: 'Fshije'
|
|
54
51
|
|
|
55
|
-
saved_searches:
|
|
56
|
-
add:
|
|
57
|
-
success: 'Kërkimi u ruajt me sukses.'
|
|
58
|
-
failure: 'Ka pasur një problem gjatë ruajt së kërkimit.'
|
|
59
|
-
remove:
|
|
60
|
-
success: 'Kërkimi i ruajtur u fshi me sukses.'
|
|
61
|
-
failure: 'Ka pasur një problem gjatë fshirjes së kërkimit.'
|
|
62
|
-
clear:
|
|
63
|
-
action_title: 'Fshij Kërkimet E Ruajtura'
|
|
64
|
-
action_confirm: "Dëshiron t'i fshishë kërkimet e ruajtua?"
|
|
65
|
-
success: 'Kërkimet e ruajtua u fshinë'
|
|
66
|
-
failure: 'Ka pasur një problem gjatë fshirjes së kërkimeve.'
|
|
67
|
-
title: 'Kërkimet e ruajtura'
|
|
68
|
-
page_title: 'Kërkimet E Ruajtura - %{application_name}'
|
|
69
|
-
need_login: 'Ju lutemi kyçuni për të menaxhuar dhe për të parë kërkimet e ruajtura.'
|
|
70
|
-
no_searches: 'Nuk keni kerkime të ruajtura'
|
|
71
|
-
list_title: 'Kërkimet e ruajtura'
|
|
72
|
-
delete: 'fshije'
|
|
73
|
-
|
|
74
52
|
search_history:
|
|
75
53
|
clear:
|
|
76
54
|
action_title: 'Fshij Historinë E Kërkimit'
|
|
@@ -144,13 +122,12 @@ sq:
|
|
|
144
122
|
back_to_bookmarks: 'Kthehu te memorizimet'
|
|
145
123
|
|
|
146
124
|
search:
|
|
147
|
-
# i18n key 'title' is deprecated and will be removed in Blacklight 6.0
|
|
148
|
-
title: '%{application_name} Rezultatet e kërkimit'
|
|
149
125
|
page_title:
|
|
150
126
|
title: '%{constraints} - %{application_name} Rezultatet e kërkimit'
|
|
151
127
|
constraint: '%{label}: %{value}'
|
|
152
128
|
many_constraint_values: '%{values} zgjedhura'
|
|
153
|
-
|
|
129
|
+
header: 'Kërkimit'
|
|
130
|
+
search_constraints_header: 'Kufizimet e kërkimit'
|
|
154
131
|
search_results: 'Rezultatet e kërkimit'
|
|
155
132
|
errors:
|
|
156
133
|
request_error: "Na vjen keq, unë nuk e kuptoj kërkimin tuaj."
|
|
@@ -188,6 +165,7 @@ sq:
|
|
|
188
165
|
facets:
|
|
189
166
|
title: 'Kufizo këkimin'
|
|
190
167
|
clear: 'Fshij filterin'
|
|
168
|
+
all: 'Gjithë'
|
|
191
169
|
sort:
|
|
192
170
|
count: 'Renditja numerike'
|
|
193
171
|
index: 'A-Z Renditja'
|
|
@@ -212,8 +190,6 @@ sq:
|
|
|
212
190
|
label: '%{label}:'
|
|
213
191
|
rss_feed: 'RSS për rezultatet'
|
|
214
192
|
atom_feed: 'Atom për rezultatet'
|
|
215
|
-
fields:
|
|
216
|
-
default: 'Fjala'
|
|
217
193
|
bookmarks:
|
|
218
194
|
present: "Në memorizime"
|
|
219
195
|
absent: "Memorizo"
|
|
@@ -231,4 +207,4 @@ sq:
|
|
|
231
207
|
entry_name:
|
|
232
208
|
default: 'entry'
|
|
233
209
|
|
|
234
|
-
did_you_mean: 'A keni menduar: %{options}?'
|
|
210
|
+
did_you_mean: 'A keni menduar: %{options}?'
|
|
@@ -18,7 +18,6 @@ zh:
|
|
|
18
18
|
login: '登陆'
|
|
19
19
|
logout: '注销'
|
|
20
20
|
bookmarks: '书签'
|
|
21
|
-
saved_searches: '保存的搜索'
|
|
22
21
|
search_history: '搜索历史'
|
|
23
22
|
|
|
24
23
|
welcome: '欢迎!'
|
|
@@ -52,25 +51,6 @@ zh:
|
|
|
52
51
|
list_title: '你的书签'
|
|
53
52
|
delete: '删除'
|
|
54
53
|
|
|
55
|
-
saved_searches:
|
|
56
|
-
add:
|
|
57
|
-
success: '成功保存了您的搜索。'
|
|
58
|
-
failure: '保存搜索时出现问题。'
|
|
59
|
-
remove:
|
|
60
|
-
success: '成功删除保存的搜索。'
|
|
61
|
-
failure: '删除您的搜索时出现问题。'
|
|
62
|
-
clear:
|
|
63
|
-
action_title: '清除保存的搜索'
|
|
64
|
-
action_confirm: '清除您保存的搜索?'
|
|
65
|
-
success: '清除您保存的搜索。'
|
|
66
|
-
failure: '清除搜索时出现问题。'
|
|
67
|
-
title: '保存的搜索'
|
|
68
|
-
page_title: '保存的搜索 - %{application_name}'
|
|
69
|
-
need_login: '请登录来管理和查看您保存的搜索。'
|
|
70
|
-
no_searches: '您没有保存的搜索'
|
|
71
|
-
list_title: '您保存的搜索'
|
|
72
|
-
delete: '删除'
|
|
73
|
-
|
|
74
54
|
search_history:
|
|
75
55
|
clear:
|
|
76
56
|
action_title: '清除搜索历史'
|
|
@@ -144,13 +124,12 @@ zh:
|
|
|
144
124
|
back_to_bookmarks: '返回书签页面'
|
|
145
125
|
|
|
146
126
|
search:
|
|
147
|
-
# i18n key 'title' is deprecated and will be removed in Blacklight 6.0
|
|
148
|
-
title: '%{application_name} 搜索结果'
|
|
149
127
|
page_title:
|
|
150
128
|
title: '%{constraints} - %{application_name} 搜索结果'
|
|
151
129
|
constraint: '%{label}: %{value}'
|
|
152
130
|
many_constraint_values: '%{values} 已选'
|
|
153
|
-
|
|
131
|
+
header: '搜'
|
|
132
|
+
search_constraints_header: '搜索条件'
|
|
154
133
|
search_results: '搜索结果'
|
|
155
134
|
errors:
|
|
156
135
|
request_error: "抱歉,我不明白你要找什么。"
|
|
@@ -188,6 +167,7 @@ zh:
|
|
|
188
167
|
facets:
|
|
189
168
|
title: '限定搜索'
|
|
190
169
|
clear: '清除搜索条件'
|
|
170
|
+
all: '皆'
|
|
191
171
|
sort:
|
|
192
172
|
count: '按数量排序'
|
|
193
173
|
index: '按字母排序'
|
|
@@ -212,8 +192,6 @@ zh:
|
|
|
212
192
|
label: '%{label}:'
|
|
213
193
|
rss_feed: '搜索结果RSS'
|
|
214
194
|
atom_feed: '搜索结果Atom'
|
|
215
|
-
fields:
|
|
216
|
-
default: '关键词'
|
|
217
195
|
bookmarks:
|
|
218
196
|
present: "在书签中"
|
|
219
197
|
absent: "加入书签"
|
data/config/routes.rb
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
Blacklight::Engine.routes.draw do
|
|
3
|
-
get "search_history", :
|
|
4
|
-
delete "search_history/clear", :
|
|
5
|
-
delete "saved_searches/clear", :to => "saved_searches#clear", :as => "clear_saved_searches"
|
|
6
|
-
get "saved_searches", :to => "saved_searches#index", :as => "saved_searches"
|
|
7
|
-
put "saved_searches/save/:id", :to => "saved_searches#save", :as => "save_search"
|
|
8
|
-
delete "saved_searches/forget/:id", :to => "saved_searches#forget", :as => "forget_search"
|
|
9
|
-
post "saved_searches/forget/:id", :to => "saved_searches#forget"
|
|
10
|
-
post "/catalog/:id/track", to: 'catalog#track', as: 'track_search_context'
|
|
11
|
-
|
|
12
|
-
resources :suggest, only: :index, defaults: { format: 'json' }
|
|
3
|
+
get "search_history", to: "search_history#index", as: "search_history"
|
|
4
|
+
delete "search_history/clear", to: "search_history#clear", as: "clear_search_history"
|
|
13
5
|
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
class AddPolymorphicTypeToBookmarks < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column(:bookmarks, :document_type, :string) unless Bookmark.connection.column_exists? :bookmarks, :document_type
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
add_index :bookmarks, :user_id unless Bookmark.connection.index_exists? :bookmarks, :user_id
|
|
7
7
|
end
|
|
8
8
|
end
|
|
@@ -5,7 +5,7 @@ module Blacklight
|
|
|
5
5
|
attr_writer :connection
|
|
6
6
|
|
|
7
7
|
# ActiveSupport::Benchmarkable requires a logger method
|
|
8
|
-
|
|
8
|
+
attr_writer :logger
|
|
9
9
|
|
|
10
10
|
include ActiveSupport::Benchmarkable
|
|
11
11
|
|
|
@@ -21,25 +21,37 @@ module Blacklight
|
|
|
21
21
|
# Find a single document result by a known id
|
|
22
22
|
# @param [String] id document's unique key value
|
|
23
23
|
# @param [Hash] params additional query parameters
|
|
24
|
-
def find(
|
|
24
|
+
def find(_id, _params = {})
|
|
25
25
|
raise NotImplementedError
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
##
|
|
29
29
|
# Execute a search query against a search index
|
|
30
30
|
# @param [Hash] params query parameters
|
|
31
|
-
def search(
|
|
31
|
+
def search(_params = {})
|
|
32
32
|
raise NotImplementedError
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
# Query the fields that exist from the index
|
|
36
|
+
# @return [Hash]
|
|
37
|
+
def reflect_fields
|
|
38
|
+
raise NotImplementedError
|
|
39
|
+
end
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
##
|
|
42
|
+
# Is the repository in a working state?
|
|
43
|
+
def ping
|
|
44
|
+
raise NotImplementedError
|
|
45
|
+
end
|
|
40
46
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def connection_config
|
|
50
|
+
blacklight_config.connection_config
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def logger
|
|
54
|
+
@logger ||= Blacklight.logger
|
|
55
|
+
end
|
|
44
56
|
end
|
|
45
57
|
end
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
module Blacklight
|
|
3
4
|
class Configuration
|
|
5
|
+
# This class helps determine whether a specific field/tool should display for a
|
|
6
|
+
# particular controller. This is used when the field/tool is configured with an
|
|
7
|
+
# _if_ or _unless_ argument.
|
|
8
|
+
#
|
|
9
|
+
# e.g.
|
|
10
|
+
# config.add_results_document_tool(:bookmark,
|
|
11
|
+
# partial: 'bookmark_control',
|
|
12
|
+
# if: :render_bookmarks_control?)
|
|
13
|
+
#
|
|
14
|
+
# The context points at the scope for where to evaluate the method _render_bookmarks_control?_
|
|
4
15
|
class Context
|
|
5
16
|
attr_reader :context
|
|
6
17
|
|
|
@@ -14,7 +25,7 @@ module Blacklight
|
|
|
14
25
|
# @param [#if,#unless] config an object that responds to if/unless
|
|
15
26
|
# @return [Boolean]
|
|
16
27
|
def evaluate_if_unless_configuration(config, *args)
|
|
17
|
-
return config if config == true
|
|
28
|
+
return config if config == true || config == false
|
|
18
29
|
|
|
19
30
|
if_value = !config.respond_to?(:if) ||
|
|
20
31
|
config.if.nil? ||
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight
|
|
3
3
|
class Configuration::FacetField < Blacklight::Configuration::Field
|
|
4
|
+
extend Deprecation
|
|
5
|
+
|
|
4
6
|
def normalize! blacklight_config = nil
|
|
5
|
-
|
|
7
|
+
query.stringify_keys! if query
|
|
8
|
+
|
|
9
|
+
self.collapse = true if collapse.nil?
|
|
10
|
+
self.show = true if show.nil?
|
|
11
|
+
self.if = show if self.if.nil?
|
|
12
|
+
self.index_range = 'A'..'Z' if index_range == true
|
|
6
13
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
if link_to_search
|
|
15
|
+
Deprecation.warn(Blacklight::Configuration::FacetField, '`link_to_search:` is deprecated, use `link_to_facet:` instead')
|
|
16
|
+
self.link_to_facet = link_to_search if link_to_facet.nil?
|
|
17
|
+
end
|
|
11
18
|
|
|
12
19
|
super
|
|
13
|
-
|
|
14
|
-
if
|
|
15
|
-
self.tag = "#{
|
|
16
|
-
self.ex = "#{
|
|
20
|
+
|
|
21
|
+
if single && tag.blank? && ex.blank?
|
|
22
|
+
self.tag = "#{key}_single"
|
|
23
|
+
self.ex = "#{key}_single"
|
|
17
24
|
end
|
|
18
25
|
|
|
19
26
|
self
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight
|
|
3
3
|
class Configuration::Field < OpenStructWithHashAccess
|
|
4
|
-
def normalize!
|
|
5
|
-
self.field ||=
|
|
4
|
+
def normalize! _blacklight_config = nil
|
|
5
|
+
self.field ||= key
|
|
6
6
|
self.key ||= self.field
|
|
7
7
|
|
|
8
8
|
self.label ||= default_label
|
|
@@ -14,11 +14,20 @@ module Blacklight
|
|
|
14
14
|
|
|
15
15
|
self
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
def validate!
|
|
19
19
|
raise ArgumentError, "Must supply a field name" if self.field.nil?
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def display_label(context = nil)
|
|
23
|
+
field_label(
|
|
24
|
+
(:"blacklight.search.fields.#{context}.#{key}" if context),
|
|
25
|
+
:"blacklight.search.fields.#{key}",
|
|
26
|
+
label,
|
|
27
|
+
default_label
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
22
31
|
def default_label
|
|
23
32
|
if self.key.respond_to?(:titleize)
|
|
24
33
|
self.key.try(:titleize)
|
|
@@ -26,5 +35,25 @@ module Blacklight
|
|
|
26
35
|
self.key.to_s.titleize
|
|
27
36
|
end
|
|
28
37
|
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Look up the label for a solr field.
|
|
43
|
+
#
|
|
44
|
+
# @overload label
|
|
45
|
+
# @param [Symbol] an i18n key
|
|
46
|
+
#
|
|
47
|
+
# @overload label, i18n_key, another_i18n_key, and_another_i18n_key
|
|
48
|
+
# @param [String] default label to display if the i18n look up fails
|
|
49
|
+
# @param [Symbol] i18n keys to attempt to look up
|
|
50
|
+
# before falling back to the label
|
|
51
|
+
# @param [Symbol] any number of additional keys
|
|
52
|
+
# @param [Symbol] ...
|
|
53
|
+
def field_label *i18n_keys
|
|
54
|
+
first, *rest = i18n_keys.compact
|
|
55
|
+
|
|
56
|
+
I18n.t(first, default: rest)
|
|
57
|
+
end
|
|
29
58
|
end
|
|
30
59
|
end
|
|
@@ -5,22 +5,24 @@ module Blacklight
|
|
|
5
5
|
# solr fields configuration
|
|
6
6
|
module Fields
|
|
7
7
|
extend ActiveSupport::Concern
|
|
8
|
+
extend Deprecation
|
|
9
|
+
self.deprecation_horizon = 'blacklight version 8.0.0'
|
|
8
10
|
|
|
9
11
|
module ClassMethods
|
|
10
12
|
# Add a configuration block for a collection of solr fields
|
|
11
13
|
def define_field_access(key, options = {})
|
|
12
14
|
key = key.to_s if respond_to? :to_s
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
default_values[key.pluralize.to_sym] = ActiveSupport::OrderedHash.new
|
|
15
17
|
|
|
16
18
|
base_class_name = options.fetch(:class, Field)
|
|
17
19
|
|
|
18
|
-
unless
|
|
20
|
+
unless const_defined? key.camelcase
|
|
19
21
|
class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
|
|
20
22
|
class #{key.camelcase} < #{base_class_name}; end
|
|
21
23
|
END_EVAL
|
|
22
24
|
end
|
|
23
|
-
|
|
25
|
+
|
|
24
26
|
class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
|
|
25
27
|
def add_#{key}(*args, &block)
|
|
26
28
|
add_blacklight_field("#{key}", *args, &block)
|
|
@@ -32,7 +34,7 @@ module Blacklight
|
|
|
32
34
|
# Add a solr field configuration to the given configuration key
|
|
33
35
|
#
|
|
34
36
|
# The recommended and strongly encouraged format is a field name, configuration pair, e.g.:
|
|
35
|
-
# add_blacklight_field :index_field, 'format', :label => 'Format'
|
|
37
|
+
# add_blacklight_field :index_field, 'format', :label => 'Format'
|
|
36
38
|
#
|
|
37
39
|
# Alternative formats include:
|
|
38
40
|
#
|
|
@@ -56,7 +58,7 @@ module Blacklight
|
|
|
56
58
|
# field.field = 'format'
|
|
57
59
|
# field.label = 'Format'
|
|
58
60
|
# end
|
|
59
|
-
#
|
|
61
|
+
#
|
|
60
62
|
# * a configuration hash:
|
|
61
63
|
#
|
|
62
64
|
# @overload add_blacklight_field(config_key, options)
|
|
@@ -64,8 +66,8 @@ module Blacklight
|
|
|
64
66
|
# @param [Hash] options
|
|
65
67
|
#
|
|
66
68
|
# add_blacklight_field :index_field, :field => 'format', :label => 'Format'
|
|
67
|
-
#
|
|
68
|
-
# * a Field instance:
|
|
69
|
+
#
|
|
70
|
+
# * a Field instance:
|
|
69
71
|
#
|
|
70
72
|
# @overload add_blacklight_field(config_key, field)
|
|
71
73
|
# @param [Symbol] config_key
|
|
@@ -74,7 +76,7 @@ module Blacklight
|
|
|
74
76
|
#
|
|
75
77
|
# add_blacklight_field :index_field, IndexField.new(:field => 'format', :label => 'Format')
|
|
76
78
|
#
|
|
77
|
-
# * an array of hashes:
|
|
79
|
+
# * an array of hashes:
|
|
78
80
|
#
|
|
79
81
|
# @overload add_blacklight_field(config_key, fields)
|
|
80
82
|
# @param [Symbol] config_key
|
|
@@ -84,17 +86,17 @@ module Blacklight
|
|
|
84
86
|
#
|
|
85
87
|
def add_blacklight_field config_key, *args, &block
|
|
86
88
|
field_config = case args.first
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
89
|
+
when String
|
|
90
|
+
field_config_from_key_and_hash(config_key, *args)
|
|
91
|
+
when Symbol
|
|
92
|
+
args[0] = args[0].to_s
|
|
93
|
+
field_config_from_key_and_hash(config_key, *args)
|
|
94
|
+
when Array
|
|
95
|
+
field_config_from_array(config_key, *args, &block)
|
|
96
|
+
return # we've iterated over the array above.
|
|
97
|
+
else
|
|
98
|
+
field_config_from_field_or_hash(config_key, *args)
|
|
99
|
+
end
|
|
98
100
|
|
|
99
101
|
if (field_config.field || field_config.key).to_s =~ /\*/
|
|
100
102
|
field_config.match = Regexp.new("^" + (field_config.field || field_config.key).to_s.gsub('*', '.+') + "$")
|
|
@@ -102,62 +104,65 @@ module Blacklight
|
|
|
102
104
|
|
|
103
105
|
# look up any dynamic fields
|
|
104
106
|
if field_config.match
|
|
105
|
-
|
|
106
|
-
salient_fields = luke_fields.select do |k,v|
|
|
107
|
-
k =~ field_config.match
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
salient_fields.each do |field, luke_config|
|
|
111
|
-
config = field_config.dup
|
|
112
|
-
config.match = nil
|
|
113
|
-
config.field = field
|
|
114
|
-
config.key = field
|
|
115
|
-
|
|
116
|
-
if self[config_key.pluralize][ config.key ]
|
|
117
|
-
self[config_key.pluralize][ config.key ] = config.merge(self[config_key.pluralize][ config.key ])
|
|
118
|
-
else
|
|
119
|
-
add_blacklight_field(config_key, config, &block)
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
107
|
+
handle_matching_fields(config_key, field_config, &block)
|
|
123
108
|
return
|
|
124
109
|
end
|
|
125
|
-
|
|
110
|
+
|
|
126
111
|
if block_given?
|
|
127
112
|
yield field_config
|
|
128
113
|
end
|
|
129
|
-
|
|
114
|
+
|
|
130
115
|
field_config.normalize!(self)
|
|
131
116
|
field_config.validate!
|
|
132
117
|
|
|
133
118
|
raise "A #{config_key} with the key #{field_config.key} already exists." if self[config_key.pluralize][field_config.key].present?
|
|
134
119
|
|
|
135
|
-
self[config_key.pluralize][
|
|
120
|
+
self[config_key.pluralize][field_config.key] = field_config
|
|
136
121
|
end
|
|
137
122
|
|
|
138
|
-
|
|
123
|
+
private
|
|
124
|
+
|
|
125
|
+
##
|
|
126
|
+
# Using reflection into the index, add any fields in the index that match the field_config
|
|
127
|
+
def handle_matching_fields(config_key, field_config, &block)
|
|
128
|
+
salient_fields = reflected_fields.select do |k, _v|
|
|
129
|
+
k =~ field_config.match
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
salient_fields.each_key do |field|
|
|
133
|
+
config = field_config.dup
|
|
134
|
+
config.match = nil
|
|
135
|
+
config.field = field
|
|
136
|
+
config.key = field
|
|
137
|
+
if self[config_key.pluralize][config.key]
|
|
138
|
+
self[config_key.pluralize][config.key] = config.merge(self[config_key.pluralize][config.key])
|
|
139
|
+
else
|
|
140
|
+
add_blacklight_field(config_key, config, &block)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
139
144
|
|
|
140
|
-
def
|
|
141
|
-
if @table[:
|
|
145
|
+
def reflected_fields
|
|
146
|
+
if @table[:reflected_fields] == false
|
|
142
147
|
return nil
|
|
143
148
|
end
|
|
144
149
|
|
|
145
|
-
@table[:
|
|
150
|
+
@table[:reflected_fields] ||= Rails.cache.fetch("blacklight_configuration/admin/reflected_fields", expires_in: 1.hour) do
|
|
146
151
|
begin
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
repository.send_and_receive('admin/luke', params: { fl: '*', 'json.nl' => 'map' })['fields']
|
|
150
|
-
end
|
|
152
|
+
repository = repository_class.new(self)
|
|
153
|
+
repository.reflect_fields
|
|
151
154
|
rescue => e
|
|
152
155
|
Blacklight.logger.warn "Error retrieving field metadata: #{e}"
|
|
153
156
|
false
|
|
154
157
|
end
|
|
155
158
|
end
|
|
156
159
|
|
|
157
|
-
@table[:
|
|
160
|
+
@table[:reflected_fields] || {}
|
|
158
161
|
end
|
|
162
|
+
alias luke_fields reflected_fields
|
|
163
|
+
deprecation_deprecate luke_fields: 'use reflected_fields instead'
|
|
159
164
|
|
|
160
|
-
# Add a solr field by a solr field name and hash
|
|
165
|
+
# Add a solr field by a solr field name and hash
|
|
161
166
|
def field_config_from_key_and_hash config_key, field_name, field_or_hash = {}
|
|
162
167
|
field_config = field_config_from_field_or_hash(config_key, field_or_hash)
|
|
163
168
|
field_config.key = field_name
|
|
@@ -166,7 +171,7 @@ module Blacklight
|
|
|
166
171
|
|
|
167
172
|
# Add multiple solr fields using a hash or Field instance
|
|
168
173
|
def field_config_from_array config_key, array_of_fields_or_hashes, &block
|
|
169
|
-
array_of_fields_or_hashes.map do |field_or_hash|
|
|
174
|
+
array_of_fields_or_hashes.map do |field_or_hash|
|
|
170
175
|
add_blacklight_field(config_key, field_or_hash, &block)
|
|
171
176
|
end
|
|
172
177
|
end
|
|
@@ -180,22 +185,20 @@ module Blacklight
|
|
|
180
185
|
# and makes it into a specific config OpenStruct, like
|
|
181
186
|
# FacetField or SearchField. Or if the param already was
|
|
182
187
|
# one, that's cool. Or if the param is nil, make
|
|
183
|
-
# an empty one. Second argument is an actual class object.
|
|
188
|
+
# an empty one. Second argument is an actual class object.
|
|
184
189
|
def hash_arg_to_config(hash_arg, klass)
|
|
185
190
|
case hash_arg
|
|
186
|
-
when Hash
|
|
191
|
+
when Hash
|
|
187
192
|
klass.new(hash_arg)
|
|
188
|
-
when NilClass
|
|
193
|
+
when NilClass
|
|
189
194
|
klass.new
|
|
190
|
-
else
|
|
195
|
+
else
|
|
191
196
|
# this assumes it already is an element of klass, or acts like one,
|
|
192
|
-
# if not something bad will happen later, that's your problem.
|
|
197
|
+
# if not something bad will happen later, that's your problem.
|
|
193
198
|
hash_arg
|
|
194
199
|
end
|
|
195
200
|
end
|
|
196
201
|
|
|
197
|
-
private
|
|
198
|
-
|
|
199
202
|
# convert a config key to the appropriate Field class
|
|
200
203
|
def field_class_from_key key
|
|
201
204
|
"Blacklight::Configuration::#{key.camelcase}".constantize
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
module Blacklight
|
|
3
3
|
class Configuration::SearchField < Blacklight::Configuration::Field
|
|
4
4
|
def normalize! blacklight_config = nil
|
|
5
|
-
self.if =
|
|
5
|
+
self.if = include_in_simple_select if self.if.nil?
|
|
6
6
|
|
|
7
7
|
super
|
|
8
8
|
self.qt ||= blacklight_config.default_solr_params[:qt] if blacklight_config && blacklight_config.default_solr_params
|
|
@@ -11,7 +11,7 @@ module Blacklight
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def validate!
|
|
14
|
-
raise ArgumentError, "Must supply a search field key" if
|
|
14
|
+
raise ArgumentError, "Must supply a search field key" if key.nil?
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -3,8 +3,8 @@ module Blacklight
|
|
|
3
3
|
class Configuration::SortField < Blacklight::Configuration::Field
|
|
4
4
|
def normalize! blacklight_config = nil
|
|
5
5
|
super
|
|
6
|
-
self.field ||=
|
|
7
|
-
self.field ||=
|
|
6
|
+
self.field ||= label.try(:parameterize)
|
|
7
|
+
self.field ||= sort
|
|
8
8
|
|
|
9
9
|
self.sort ||= self.field
|
|
10
10
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
class Blacklight::Configuration
|
|
3
3
|
class ViewConfig < Blacklight::OpenStructWithHashAccess
|
|
4
|
+
def search_bar_presenter_class
|
|
5
|
+
super || Blacklight::SearchBarPresenter
|
|
6
|
+
end
|
|
7
|
+
|
|
4
8
|
class Show < ViewConfig
|
|
5
9
|
def document_presenter_class
|
|
6
10
|
super || Blacklight::ShowPresenter
|