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,10 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight
|
|
3
|
-
class IndexPresenter
|
|
4
|
-
|
|
5
|
-
self.
|
|
3
|
+
class IndexPresenter < DocumentPresenter
|
|
4
|
+
class_attribute :thumbnail_presenter
|
|
5
|
+
self.thumbnail_presenter = ThumbnailPresenter
|
|
6
6
|
|
|
7
|
-
attr_reader :
|
|
7
|
+
attr_reader :view_config
|
|
8
8
|
|
|
9
9
|
# @param [SolrDocument] document
|
|
10
10
|
# @param [ActionView::Base] view_context scope for linking and generating urls
|
|
@@ -13,6 +13,7 @@ module Blacklight
|
|
|
13
13
|
@document = document
|
|
14
14
|
@view_context = view_context
|
|
15
15
|
@configuration = configuration
|
|
16
|
+
@view_config = configuration.view_config(view_context.document_index_view_type)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
##
|
|
@@ -24,81 +25,63 @@ module Blacklight
|
|
|
24
25
|
def label(field_or_string_or_proc, opts = {})
|
|
25
26
|
config = Configuration::NullField.new
|
|
26
27
|
value = case field_or_string_or_proc
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
when Symbol
|
|
29
|
+
config = field_config(field_or_string_or_proc)
|
|
30
|
+
document[field_or_string_or_proc]
|
|
31
|
+
when Proc
|
|
32
|
+
Deprecation.warn(self, "calling IndexPresenter.label with a Proc is deprecated. " \
|
|
33
|
+
"First argument must be a symbol. This will be removed in Blacklight 8")
|
|
34
|
+
field_or_string_or_proc.call(document, opts)
|
|
35
|
+
when String
|
|
36
|
+
Deprecation.warn(self, "calling IndexPresenter.label with a String is deprecated. " \
|
|
37
|
+
"First argument must be a symbol. This will be removed in Blacklight 8")
|
|
38
|
+
field_or_string_or_proc
|
|
39
|
+
end
|
|
35
40
|
|
|
36
41
|
value ||= document.id
|
|
37
42
|
field_values(config, value: value)
|
|
38
43
|
end
|
|
39
44
|
|
|
40
|
-
# @deprecated
|
|
41
|
-
def render_document_index_label(*args)
|
|
42
|
-
label(*args)
|
|
43
|
-
end
|
|
44
|
-
deprecation_deprecate render_document_index_label: 'Use #label instead'
|
|
45
|
-
|
|
46
45
|
##
|
|
47
46
|
# Render the index field label for a document
|
|
48
47
|
#
|
|
49
48
|
# Allow an extention point where information in the document
|
|
50
49
|
# may drive the value of the field
|
|
51
|
-
# @param [
|
|
50
|
+
# @param [Configuration::Field] field
|
|
52
51
|
# @param [Hash] options
|
|
53
52
|
# @option options [String] :value
|
|
54
53
|
def field_value field, options = {}
|
|
55
|
-
|
|
56
|
-
field_values(field_config, options)
|
|
54
|
+
field_values(field, options)
|
|
57
55
|
end
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
field_value(*args)
|
|
57
|
+
def thumbnail
|
|
58
|
+
@thumbnail ||= thumbnail_presenter.new(document, view_context, view_config)
|
|
62
59
|
end
|
|
63
|
-
deprecation_deprecate render_index_field_value: 'replaced by #field_value'
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
def get_field_values(field_config, options={})
|
|
67
|
-
field_values(field_config, options)
|
|
68
|
-
end
|
|
69
|
-
deprecation_deprecate get_field_values: "replaced by #field_value"
|
|
61
|
+
private
|
|
70
62
|
|
|
71
|
-
# @
|
|
72
|
-
def
|
|
73
|
-
|
|
63
|
+
# @return [Hash<String,Configuration::Field>] all the fields for this index view
|
|
64
|
+
def fields
|
|
65
|
+
configuration.index_fields_for(document)
|
|
74
66
|
end
|
|
75
|
-
deprecation_deprecate render_field_values: "replaced by #field_value"
|
|
76
67
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
68
|
+
##
|
|
69
|
+
# Get the value for a document's field, and prepare to render it.
|
|
70
|
+
# - highlight_field
|
|
71
|
+
# - accessor
|
|
72
|
+
# - solr field
|
|
73
|
+
#
|
|
74
|
+
# Rendering:
|
|
75
|
+
# - helper_method
|
|
76
|
+
# - link_to_facet
|
|
77
|
+
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
78
|
+
# @param [Hash] options additional options to pass to the rendering helpers
|
|
79
|
+
def field_values(field_config, options = {})
|
|
80
|
+
FieldPresenter.new(view_context, document, field_config, options).render
|
|
80
81
|
end
|
|
81
|
-
deprecation_deprecate render_values: "replaced by #field_value"
|
|
82
|
-
|
|
83
|
-
private
|
|
84
82
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
# - accessor
|
|
89
|
-
# - solr field
|
|
90
|
-
#
|
|
91
|
-
# Rendering:
|
|
92
|
-
# - helper_method
|
|
93
|
-
# - link_to_search
|
|
94
|
-
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
95
|
-
# @param [Hash] options additional options to pass to the rendering helpers
|
|
96
|
-
def field_values(field_config, options={})
|
|
97
|
-
FieldPresenter.new(view_context, document, field_config, options).render
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def field_config(field)
|
|
101
|
-
configuration.index_fields.fetch(field) { Configuration::NullField.new(field) }
|
|
102
|
-
end
|
|
83
|
+
def field_config(field)
|
|
84
|
+
configuration.index_fields.fetch(field) { Configuration::NullField.new(field) }
|
|
85
|
+
end
|
|
103
86
|
end
|
|
104
87
|
end
|
|
@@ -4,25 +4,21 @@ module Blacklight
|
|
|
4
4
|
include Blacklight::Facet
|
|
5
5
|
|
|
6
6
|
# @param [Solr::Response] response raw solr response.
|
|
7
|
-
# @param [
|
|
8
|
-
|
|
9
|
-
def initialize(response, documents, facets, blacklight_config)
|
|
7
|
+
# @param [Configuration] blacklight_config the configuration
|
|
8
|
+
def initialize(response, blacklight_config)
|
|
10
9
|
@response = response
|
|
11
|
-
@documents = documents
|
|
12
|
-
@facets = facets
|
|
13
10
|
@blacklight_config = blacklight_config
|
|
14
11
|
end
|
|
15
12
|
|
|
16
|
-
attr_reader :
|
|
13
|
+
attr_reader :blacklight_config
|
|
17
14
|
|
|
18
|
-
def
|
|
19
|
-
@
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
end
|
|
15
|
+
def documents
|
|
16
|
+
@response.documents
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [Array<Blacklight::Solr::Response::Facets::FacetField>]
|
|
20
|
+
def search_facets
|
|
21
|
+
facets_from_request.select { |display_facet| display_facet.items.present? }
|
|
26
22
|
end
|
|
27
23
|
|
|
28
24
|
# extract the pagination info from the response object
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
# Create <link rel="alternate"> links from a documents dynamically
|
|
3
5
|
class LinkAlternatePresenter
|
|
@@ -12,7 +14,7 @@ module Blacklight
|
|
|
12
14
|
|
|
13
15
|
attr_reader :view_context, :document, :options
|
|
14
16
|
|
|
15
|
-
# Renders links to alternate representations
|
|
17
|
+
# Renders links to alternate representations
|
|
16
18
|
# provided by export formats. Returns empty string if no links available.
|
|
17
19
|
def render
|
|
18
20
|
seen = Set.new
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
class AbstractStep
|
|
@@ -12,12 +14,12 @@ module Blacklight
|
|
|
12
14
|
|
|
13
15
|
attr_reader :values, :config, :document, :context, :options, :stack
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
private
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
def next_step(output_values)
|
|
20
|
+
first, *rest = *stack
|
|
21
|
+
first.new(output_values, config, document, context, options, rest).render
|
|
22
|
+
end
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
class HelperMethod < AbstractStep
|
|
4
6
|
def render
|
|
5
7
|
if config.helper_method
|
|
6
8
|
render_helper # short circut the rest of the steps
|
|
7
|
-
else
|
|
9
|
+
else
|
|
8
10
|
next_step(values)
|
|
9
11
|
end
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
private
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
def render_helper
|
|
17
|
+
context.send(config.helper_method,
|
|
18
|
+
options.merge(document: document,
|
|
19
|
+
field: config.field,
|
|
20
|
+
config: config,
|
|
21
|
+
value: values))
|
|
22
|
+
end
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
class Join < AbstractStep
|
|
@@ -8,9 +10,9 @@ module Blacklight
|
|
|
8
10
|
|
|
9
11
|
private
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
def html_escape(*args)
|
|
14
|
+
ERB::Util.html_escape(*args)
|
|
15
|
+
end
|
|
14
16
|
end
|
|
15
17
|
end
|
|
16
18
|
end
|
|
@@ -1,35 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
class LinkToFacet < AbstractStep
|
|
6
|
+
extend Deprecation
|
|
4
7
|
def render
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
return next_step(values) unless config.link_to_facet
|
|
9
|
+
|
|
7
10
|
next_step(render_link)
|
|
8
11
|
end
|
|
9
12
|
|
|
10
13
|
private
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
# This allows the link to wrap an itemprop
|
|
16
|
+
def render_link
|
|
17
|
+
values.map { |v| link(link_field, v) }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def link_field
|
|
21
|
+
return config.key if config.link_to_facet == true
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
config.link_to_search
|
|
20
|
-
end
|
|
23
|
+
config.link_to_facet
|
|
24
|
+
end
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
def link(field, v)
|
|
27
|
+
context.link_to v, search_path(field, v)
|
|
28
|
+
end
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
def search_path(field, v)
|
|
31
|
+
context.search_action_path(facet_params(field, v))
|
|
32
|
+
end
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
def facet_params(field, v)
|
|
35
|
+
context.search_state.reset.add_facet_params(field, v)
|
|
36
|
+
end
|
|
33
37
|
end
|
|
34
38
|
end
|
|
35
39
|
end
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
class Microdata < AbstractStep
|
|
4
6
|
include ActionView::Helpers::TagHelper
|
|
5
7
|
def render
|
|
6
8
|
return next_step(values) unless config.itemprop
|
|
9
|
+
|
|
7
10
|
next_step(values.map { |x| itemprop(x, config.itemprop) })
|
|
8
11
|
end
|
|
9
12
|
|
|
10
13
|
private
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
def itemprop(val, itemprop)
|
|
16
|
+
content_tag :span, val, itemprop: itemprop
|
|
17
|
+
end
|
|
15
18
|
end
|
|
16
19
|
end
|
|
17
20
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
4
|
module Rendering
|
|
3
5
|
# The field rendering pipeline
|
|
@@ -26,12 +28,12 @@ module Blacklight
|
|
|
26
28
|
first.new(values, config, document, context, options, rest).render
|
|
27
29
|
end
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
private
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
# Ordered list of operations, Terminator must be at the end.
|
|
34
|
+
def stack
|
|
35
|
+
operations + [Terminator]
|
|
36
|
+
end
|
|
35
37
|
end
|
|
36
38
|
end
|
|
37
39
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
class SearchBarPresenter
|
|
5
|
+
attr_reader :configuration, :view_context, :controller
|
|
6
|
+
|
|
7
|
+
# Set the partial this presenter draws
|
|
8
|
+
class_attribute :partial
|
|
9
|
+
self.partial = 'catalog/search_form'
|
|
10
|
+
|
|
11
|
+
def initialize(controller, configuration = view_context.blacklight_config)
|
|
12
|
+
@controller = controller
|
|
13
|
+
@view_context = controller.view_context
|
|
14
|
+
@configuration = configuration
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def render
|
|
18
|
+
view_context.render partial, presenter: self
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
##
|
|
22
|
+
# @return [Boolean] should autocomplete be enabled in the UI
|
|
23
|
+
def autocomplete_enabled?
|
|
24
|
+
configuration.autocomplete_enabled.present? &&
|
|
25
|
+
configuration.autocomplete_path.present?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
##
|
|
29
|
+
# If no search parameters have been given, we should
|
|
30
|
+
# auto-focus the user's cursor into the searchbox
|
|
31
|
+
#
|
|
32
|
+
# @return [Boolean]
|
|
33
|
+
def autofocus?
|
|
34
|
+
controller.is_a?(Blacklight::Catalog) &&
|
|
35
|
+
controller.action_name == "index" &&
|
|
36
|
+
!controller.has_search_parameters?
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight
|
|
3
|
-
class ShowPresenter
|
|
4
|
-
extend Deprecation
|
|
5
|
-
self.deprecation_horizon = 'Blacklight version 7.0.0'
|
|
6
|
-
|
|
7
|
-
attr_reader :document, :configuration, :view_context
|
|
8
|
-
|
|
3
|
+
class ShowPresenter < DocumentPresenter
|
|
9
4
|
# @param [SolrDocument] document
|
|
10
5
|
# @param [ActionView::Base] view_context scope for linking and generating urls
|
|
11
6
|
# @param [Blacklight::Configuration] configuration
|
|
@@ -23,7 +18,6 @@ module Blacklight
|
|
|
23
18
|
# @option options [Boolean] :unique ensures only one link is output for every
|
|
24
19
|
# content type, e.g. as required by atom
|
|
25
20
|
# @option options [Array<String>] :exclude array of format shortnames to not include in the output
|
|
26
|
-
# @deprecated moved to ShowPresenter#link_rel_alternates
|
|
27
21
|
def link_rel_alternates(options = {})
|
|
28
22
|
LinkAlternatePresenter.new(view_context, document, options).render
|
|
29
23
|
end
|
|
@@ -45,12 +39,6 @@ module Blacklight
|
|
|
45
39
|
end
|
|
46
40
|
end
|
|
47
41
|
|
|
48
|
-
# @deprecated
|
|
49
|
-
def document_show_html_title
|
|
50
|
-
html_title
|
|
51
|
-
end
|
|
52
|
-
deprecation_deprecate document_show_html_title: "use #html_title"
|
|
53
|
-
|
|
54
42
|
##
|
|
55
43
|
# Get the value of the document's "title" field, or a placeholder
|
|
56
44
|
# value (if empty)
|
|
@@ -63,71 +51,46 @@ module Blacklight
|
|
|
63
51
|
field_values(field_config(f), value: document[f])
|
|
64
52
|
end
|
|
65
53
|
|
|
66
|
-
# @deprecated
|
|
67
|
-
def document_heading
|
|
68
|
-
heading
|
|
69
|
-
end
|
|
70
|
-
deprecation_deprecate document_heading: "replaced by #heading"
|
|
71
|
-
|
|
72
54
|
##
|
|
73
55
|
# Render the show field value for a document
|
|
74
56
|
#
|
|
75
57
|
# Allow an extention point where information in the document
|
|
76
58
|
# may drive the value of the field
|
|
77
|
-
# @param [
|
|
59
|
+
# @param [Configuration::Field] field
|
|
78
60
|
# @param [Hash] options
|
|
79
61
|
# @option options [String] :value
|
|
80
|
-
def field_value field, options={}
|
|
81
|
-
field_values(
|
|
62
|
+
def field_value field, options = {}
|
|
63
|
+
field_values(field, options)
|
|
82
64
|
end
|
|
83
65
|
|
|
84
|
-
|
|
85
|
-
def render_document_show_field_value(*args)
|
|
86
|
-
field_value(*args)
|
|
87
|
-
end
|
|
88
|
-
deprecation_deprecate render_document_show_field_value: 'replaced by #field_value'
|
|
66
|
+
private
|
|
89
67
|
|
|
90
|
-
# @
|
|
91
|
-
def
|
|
92
|
-
|
|
68
|
+
# @return [Hash<String,Configuration::Field>]
|
|
69
|
+
def fields
|
|
70
|
+
configuration.show_fields_for(document)
|
|
93
71
|
end
|
|
94
|
-
deprecation_deprecate get_field_values: "replaced by #field_value"
|
|
95
72
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
73
|
+
##
|
|
74
|
+
# Get the value for a document's field, and prepare to render it.
|
|
75
|
+
# - highlight_field
|
|
76
|
+
# - accessor
|
|
77
|
+
# - solr field
|
|
78
|
+
#
|
|
79
|
+
# Rendering:
|
|
80
|
+
# - helper_method
|
|
81
|
+
# - link_to_facet
|
|
82
|
+
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
83
|
+
# @param [Hash] options additional options to pass to the rendering helpers
|
|
84
|
+
def field_values(field_config, options = {})
|
|
85
|
+
FieldPresenter.new(view_context, document, field_config, options).render
|
|
99
86
|
end
|
|
100
|
-
deprecation_deprecate render_field_values: "replaced by #field_value"
|
|
101
87
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
field_values(field_config, value: Array(values))
|
|
88
|
+
def view_config
|
|
89
|
+
configuration.view_config(:show)
|
|
105
90
|
end
|
|
106
|
-
deprecation_deprecate render_values: "replaced by #field_value"
|
|
107
|
-
|
|
108
|
-
private
|
|
109
|
-
|
|
110
|
-
##
|
|
111
|
-
# Get the value for a document's field, and prepare to render it.
|
|
112
|
-
# - highlight_field
|
|
113
|
-
# - accessor
|
|
114
|
-
# - solr field
|
|
115
|
-
#
|
|
116
|
-
# Rendering:
|
|
117
|
-
# - helper_method
|
|
118
|
-
# - link_to_search
|
|
119
|
-
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
120
|
-
# @param [Hash] options additional options to pass to the rendering helpers
|
|
121
|
-
def field_values(field_config, options={})
|
|
122
|
-
FieldPresenter.new(view_context, document, field_config, options).render
|
|
123
|
-
end
|
|
124
91
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
def field_config(field)
|
|
130
|
-
configuration.show_fields.fetch(field) { Configuration::NullField.new(field) }
|
|
131
|
-
end
|
|
92
|
+
def field_config(field)
|
|
93
|
+
configuration.show_fields.fetch(field) { Configuration::NullField.new(field) }
|
|
94
|
+
end
|
|
132
95
|
end
|
|
133
96
|
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
class ThumbnailPresenter
|
|
5
|
+
attr_reader :document, :view_context, :view_config
|
|
6
|
+
|
|
7
|
+
# @param [SolrDocument] document
|
|
8
|
+
# @param [ActionView::Base] view_context scope for linking and generating urls
|
|
9
|
+
# as well as for invoking "thumbnail_method"
|
|
10
|
+
# @param [Blacklight::Configuration::ViewConfig] view_config
|
|
11
|
+
def initialize(document, view_context, view_config)
|
|
12
|
+
@document = document
|
|
13
|
+
@view_context = view_context
|
|
14
|
+
@view_config = view_config
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# Does the document have a thumbnail to render?
|
|
19
|
+
#
|
|
20
|
+
# @return [Boolean]
|
|
21
|
+
def exists?
|
|
22
|
+
thumbnail_method.present? ||
|
|
23
|
+
(thumbnail_field && thumbnail_value_from_document(document).present?) ||
|
|
24
|
+
default_thumbnail.present?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# Render the thumbnail, if available, for a document and
|
|
29
|
+
# link it to the document record.
|
|
30
|
+
#
|
|
31
|
+
# @param [Hash] image_options to pass to the image tag
|
|
32
|
+
# @param [Hash] url_options to pass to #link_to_document
|
|
33
|
+
# @return [String]
|
|
34
|
+
def thumbnail_tag image_options = {}, url_options = {}
|
|
35
|
+
value = thumbnail_value(image_options)
|
|
36
|
+
return value if value.nil? || url_options[:suppress_link]
|
|
37
|
+
|
|
38
|
+
view_context.link_to_document document, value, url_options
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
delegate :thumbnail_field, :thumbnail_method, :default_thumbnail, to: :view_config
|
|
44
|
+
|
|
45
|
+
# @param [Hash] image_options to pass to the image tag
|
|
46
|
+
def thumbnail_value(image_options)
|
|
47
|
+
value = if thumbnail_method
|
|
48
|
+
view_context.send(thumbnail_method, document, image_options)
|
|
49
|
+
elsif thumbnail_field
|
|
50
|
+
image_url = thumbnail_value_from_document(document)
|
|
51
|
+
view_context.image_tag image_url, image_options if image_url.present?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
value || default_thumbnail_value(image_options)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def default_thumbnail_value(image_options)
|
|
58
|
+
return unless default_thumbnail
|
|
59
|
+
|
|
60
|
+
case default_thumbnail
|
|
61
|
+
when Symbol
|
|
62
|
+
view_context.send(default_thumbnail, document, image_options)
|
|
63
|
+
when Proc
|
|
64
|
+
default_thumbnail.call(document, image_options)
|
|
65
|
+
else
|
|
66
|
+
view_context.image_tag default_thumbnail, image_options
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def thumbnail_value_from_document(document)
|
|
71
|
+
Array(thumbnail_field).lazy.map { |field| document.first(field) }.reject(&:blank?).first
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
class DocumentFactory
|
|
5
|
+
def self.build(data, response, options)
|
|
6
|
+
document_model(data, options).new(data, response)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.document_model(_data, options)
|
|
10
|
+
options[:solr_document_model] || options[:document_model] || SolrDocument
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|