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
|
@@ -24,8 +24,8 @@ module Blacklight::Document::Extensions
|
|
|
24
24
|
# Needs to be called in initializer of class including this module, to
|
|
25
25
|
# apply all registered extensions on a per-document basis
|
|
26
26
|
def apply_extensions
|
|
27
|
-
self.class.registered_extensions.each do |
|
|
28
|
-
|
|
27
|
+
self.class.registered_extensions.each do |registration|
|
|
28
|
+
extend(registration[:module_obj]) if registration[:condition_proc].nil? || registration[:condition_proc].call(self)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -43,15 +43,15 @@ module Blacklight::Document::Extensions
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
# Register an extension module with the class. A block taking one
|
|
46
|
-
# parameter can be supplied; the block will be passed an instance of
|
|
46
|
+
# parameter can be supplied; the block will be passed an instance of
|
|
47
47
|
# a Document, and the extension will be applied only if the block
|
|
48
48
|
# evaluates as true. If no condition is given, the extension will
|
|
49
49
|
# be applied to every instance of the class.
|
|
50
50
|
#
|
|
51
51
|
# SolrDocument.use_extension( SomeExtensionModule ) { | document | should_apply_some_extension?(document) }
|
|
52
52
|
# SolrDocument.use_extension( SomeExtensionModule) # will be applied to all docs
|
|
53
|
-
def use_extension(
|
|
54
|
-
registered_extensions << {module_obj: module_obj, condition_proc: condition}
|
|
53
|
+
def use_extension(module_obj, &condition)
|
|
54
|
+
registered_extensions << { module_obj: module_obj, condition_proc: condition }
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -7,7 +7,7 @@ module Blacklight::Document
|
|
|
7
7
|
# Returns array of hashes of registered extensions. Each hash
|
|
8
8
|
# has a :module_obj key and a :condition_proc key. Usually this
|
|
9
9
|
# method is only used internally in #apply_extensions, but if you
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
# Class-level method for accessing/setting semantic mappings
|
|
12
12
|
# for solr stored fields. Can be set by local app, key is
|
|
13
13
|
# a symbol for a semantic, value is a solr _stored_ field.
|
|
@@ -17,22 +17,22 @@ module Blacklight::Document
|
|
|
17
17
|
#
|
|
18
18
|
# Currently documented semantic tokens, not all may be
|
|
19
19
|
# used by core BL, but some may be used by plugins present
|
|
20
|
-
# or future.
|
|
21
|
-
# :title, :author, :year, :language => User-presentable strings.
|
|
20
|
+
# or future.
|
|
21
|
+
# :title, :author, :year, :language => User-presentable strings.
|
|
22
22
|
def field_semantics
|
|
23
23
|
@field_semantics ||= {}
|
|
24
|
-
end
|
|
24
|
+
end
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
# Returns a hash keyed by semantic tokens, value is an array of
|
|
28
28
|
# strings. (Array to handle multi-value fields). If no value(s)
|
|
29
|
-
# available, empty array is returned.
|
|
29
|
+
# available, empty array is returned.
|
|
30
30
|
#
|
|
31
31
|
# Default implementation here uses field_semantics
|
|
32
|
-
# to just take values from Solr stored fields.
|
|
32
|
+
# to just take values from Solr stored fields.
|
|
33
33
|
# Extensions can over-ride this method to provide better/different lookup,
|
|
34
34
|
# but extensions should call super and modify hash returned, to avoid
|
|
35
|
-
# unintentionally erasing values provided by other extensions.
|
|
35
|
+
# unintentionally erasing values provided by other extensions.
|
|
36
36
|
def to_semantic_values
|
|
37
37
|
@semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new([])) do |(key, field_names), hash|
|
|
38
38
|
##
|
|
@@ -45,6 +45,6 @@ module Blacklight::Document
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
@semantic_value_hash ||= {}
|
|
48
|
-
end
|
|
48
|
+
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Blacklight::Document::Sms
|
|
4
4
|
# Return a text string that will be the body of the email
|
|
5
5
|
def to_sms_text
|
|
6
|
-
semantics =
|
|
6
|
+
semantics = to_semantic_values
|
|
7
7
|
body = []
|
|
8
8
|
body << I18n.t('blacklight.sms.text.title', value: semantics[:title].first) unless semantics[:title].blank?
|
|
9
9
|
body << I18n.t('blacklight.sms.text.author', value: semantics[:author].first) unless semantics[:author].blank?
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
require 'globalid'
|
|
4
|
+
|
|
3
5
|
##
|
|
4
6
|
# = Introduction
|
|
5
7
|
# Blacklight::Document is the module with logic for a class representing
|
|
@@ -14,9 +16,6 @@
|
|
|
14
16
|
# transformation formats.
|
|
15
17
|
#
|
|
16
18
|
module Blacklight::Document
|
|
17
|
-
extend Deprecation
|
|
18
|
-
self.deprecation_horizon = 'blacklight 7.0'
|
|
19
|
-
|
|
20
19
|
autoload :ActiveModelShim, 'blacklight/document/active_model_shim'
|
|
21
20
|
autoload :SchemaOrg, 'blacklight/document/schema_org'
|
|
22
21
|
autoload :CacheKey, 'blacklight/document/cache_key'
|
|
@@ -41,36 +40,13 @@ module Blacklight::Document
|
|
|
41
40
|
|
|
42
41
|
attr_reader :response, :_source
|
|
43
42
|
alias_method :solr_response, :response
|
|
44
|
-
delegate :[], :key?, :keys, :to_h, to: :_source
|
|
45
|
-
|
|
46
|
-
def initialize(source_doc={}, response=nil)
|
|
47
|
-
@_source = if source_doc.respond_to?(:to_hash)
|
|
48
|
-
ActiveSupport::HashWithIndifferentAccess.new(source_doc)
|
|
49
|
-
else
|
|
50
|
-
Deprecation.warn(Blacklight::Document, "Blacklight::Document#initialize expects a hash-like object, received #{source_doc.class}.")
|
|
51
|
-
ActiveSupport::HashWithIndifferentAccess.new(source_doc.to_h)
|
|
52
|
-
end
|
|
53
|
-
@response = response
|
|
54
|
-
apply_extensions
|
|
55
|
-
end
|
|
56
43
|
|
|
57
|
-
|
|
58
|
-
# If a method is missing, it gets sent to @_source
|
|
59
|
-
# with all of the original params and block
|
|
60
|
-
def method_missing(m, *args, &b)
|
|
61
|
-
return super if m == :to_hash
|
|
44
|
+
delegate :[], :key?, :keys, :to_h, :as_json, to: :_source
|
|
62
45
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
super
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def respond_to_missing? m, *args
|
|
72
|
-
return super if %i(empty? to_hash).include?(m)
|
|
73
|
-
_source_responds_to?(m, *args) || super
|
|
46
|
+
def initialize(source_doc = {}, response = nil)
|
|
47
|
+
@_source = ActiveSupport::HashWithIndifferentAccess.new(source_doc).freeze
|
|
48
|
+
@response = response
|
|
49
|
+
apply_extensions
|
|
74
50
|
end
|
|
75
51
|
|
|
76
52
|
# Helper method to check if value/multi-values exist for a given key.
|
|
@@ -105,7 +81,7 @@ module Blacklight::Document
|
|
|
105
81
|
def fetch key, *default
|
|
106
82
|
if key? key
|
|
107
83
|
self[key]
|
|
108
|
-
elsif default.empty?
|
|
84
|
+
elsif default.empty? && !block_given?
|
|
109
85
|
raise KeyError, "key not found \"#{key}\""
|
|
110
86
|
else
|
|
111
87
|
(yield(self) if block_given?) || default.first
|
|
@@ -120,11 +96,11 @@ module Blacklight::Document
|
|
|
120
96
|
'catalog/document'
|
|
121
97
|
end
|
|
122
98
|
|
|
123
|
-
def has_highlight_field?
|
|
99
|
+
def has_highlight_field? _k
|
|
124
100
|
false
|
|
125
101
|
end
|
|
126
102
|
|
|
127
|
-
def highlight_field
|
|
103
|
+
def highlight_field _k
|
|
128
104
|
nil
|
|
129
105
|
end
|
|
130
106
|
|
|
@@ -142,11 +118,21 @@ module Blacklight::Document
|
|
|
142
118
|
def unique_key
|
|
143
119
|
@unique_key ||= 'id'
|
|
144
120
|
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
private
|
|
148
121
|
|
|
149
|
-
|
|
150
|
-
|
|
122
|
+
# Define an attribute reader on a document model
|
|
123
|
+
# @Example
|
|
124
|
+
# class SolrDocument
|
|
125
|
+
# include Blacklight::Solr::Document
|
|
126
|
+
# attribute :title, Blacklight::Types::String, 'title_tesim'
|
|
127
|
+
# end
|
|
128
|
+
#
|
|
129
|
+
# doc = SolrDocument.new(title_tesim: ["One flew over the cuckoo's nest"])
|
|
130
|
+
# doc.title
|
|
131
|
+
# #=> "One flew over the cuckoo's nest"
|
|
132
|
+
def attribute(name, type, field)
|
|
133
|
+
define_method name do
|
|
134
|
+
type.coerce(self[field])
|
|
135
|
+
end
|
|
136
|
+
end
|
|
151
137
|
end
|
|
152
138
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require 'rsolr'
|
|
3
2
|
##
|
|
4
3
|
##
|
|
5
4
|
# = Introduction
|
|
@@ -16,20 +15,21 @@ require 'rsolr'
|
|
|
16
15
|
#
|
|
17
16
|
|
|
18
17
|
module Blacklight::Solr::Document
|
|
19
|
-
autoload :MoreLikeThis, 'blacklight/solr/document/more_like_this'
|
|
20
|
-
|
|
21
18
|
extend ActiveSupport::Concern
|
|
22
19
|
include Blacklight::Document
|
|
23
20
|
include Blacklight::Document::ActiveModelShim
|
|
24
|
-
|
|
21
|
+
|
|
22
|
+
def more_like_this
|
|
23
|
+
response.more_like(self).map { |doc| self.class.new(doc, response) }
|
|
24
|
+
end
|
|
25
25
|
|
|
26
26
|
def has_highlight_field? k
|
|
27
|
-
return false if response['highlighting'].blank?
|
|
28
|
-
|
|
29
|
-
response['highlighting'][
|
|
27
|
+
return false if response['highlighting'].blank? || response['highlighting'][id].blank?
|
|
28
|
+
|
|
29
|
+
response['highlighting'][id].key? k.to_s
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def highlight_field k
|
|
33
|
-
response['highlighting'][
|
|
33
|
+
response['highlighting'][id][k.to_s].map(&:html_safe) if has_highlight_field? k
|
|
34
34
|
end
|
|
35
35
|
end
|
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
module Blacklight
|
|
3
3
|
module Suggest
|
|
4
4
|
class Response
|
|
5
|
-
attr_reader :response, :request_params, :suggest_path
|
|
5
|
+
attr_reader :response, :request_params, :suggest_path, :suggester_name
|
|
6
6
|
|
|
7
7
|
##
|
|
8
8
|
# Creates a suggest response
|
|
9
9
|
# @param [RSolr::HashWithResponse] response
|
|
10
10
|
# @param [Hash] request_params
|
|
11
11
|
# @param [String] suggest_path
|
|
12
|
-
|
|
12
|
+
# @param [String] suggester_name
|
|
13
|
+
def initialize(response, request_params, suggest_path, suggester_name)
|
|
13
14
|
@response = response
|
|
14
15
|
@request_params = request_params
|
|
15
16
|
@suggest_path = suggest_path
|
|
17
|
+
@suggester_name = suggester_name
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
##
|
|
@@ -20,7 +22,7 @@ module Blacklight
|
|
|
20
22
|
# present
|
|
21
23
|
# @return [Array]
|
|
22
24
|
def suggestions
|
|
23
|
-
response.try(:[], suggest_path).try(:[],
|
|
25
|
+
(response.try(:[], suggest_path).try(:[], suggester_name).try(:[], request_params[:q]).try(:[], 'suggestions') || []).uniq
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
end
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight::User
|
|
3
3
|
# This gives us an is_blacklight_user method that can be included in
|
|
4
|
-
# the containing applications models.
|
|
5
|
-
# SEE ALSO: The /lib/blacklight/engine.rb class for how when this
|
|
4
|
+
# the containing applications models.
|
|
5
|
+
# SEE ALSO: The /lib/blacklight/engine.rb class for how when this
|
|
6
6
|
# is injected into the hosting application through ActiveRecord::Base extend
|
|
7
7
|
def self.included(base)
|
|
8
8
|
return unless base.respond_to? :has_many
|
|
9
|
-
|
|
10
|
-
base.send :has_many, :
|
|
9
|
+
|
|
10
|
+
base.send :has_many, :bookmarks, dependent: :destroy, as: :user
|
|
11
|
+
base.send :has_many, :searches, dependent: :destroy, as: :user
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
def bookmarks_for_documents documents = []
|
|
@@ -21,9 +22,9 @@ module Blacklight::User
|
|
|
21
22
|
def document_is_bookmarked?(document)
|
|
22
23
|
bookmarks_for_documents([document]).any?
|
|
23
24
|
end
|
|
24
|
-
|
|
25
|
+
|
|
25
26
|
# returns a Bookmark object if there is one for document_id, else
|
|
26
|
-
# nil.
|
|
27
|
+
# nil.
|
|
27
28
|
def existing_bookmark_for(document)
|
|
28
29
|
bookmarks_for_documents([document]).first
|
|
29
30
|
end
|
data/app/models/record_mailer.rb
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# Only works for documents with a #to_marc right now.
|
|
2
|
+
# Only works for documents with a #to_marc right now.
|
|
3
3
|
class RecordMailer < ActionMailer::Base
|
|
4
4
|
def email_record(documents, details, url_gen_params)
|
|
5
|
-
|
|
6
5
|
title = begin
|
|
7
6
|
documents.first.to_semantic_values[:title]
|
|
8
7
|
rescue
|
|
9
8
|
I18n.t('blacklight.email.text.default_title')
|
|
10
9
|
end
|
|
11
|
-
subject = I18n.t('blacklight.email.text.subject', :
|
|
10
|
+
subject = I18n.t('blacklight.email.text.subject', count: documents.length, title: title)
|
|
12
11
|
|
|
13
12
|
@documents = documents
|
|
14
13
|
@message = details[:message]
|
|
15
14
|
@url_gen_params = url_gen_params
|
|
16
15
|
|
|
17
|
-
mail(:
|
|
16
|
+
mail(to: details[:to], subject: subject)
|
|
18
17
|
end
|
|
19
|
-
|
|
18
|
+
|
|
20
19
|
def sms_record(documents, details, url_gen_params)
|
|
21
20
|
@documents = documents
|
|
22
21
|
@url_gen_params = url_gen_params
|
|
23
|
-
mail(:
|
|
22
|
+
mail(to: details[:to], subject: "")
|
|
24
23
|
end
|
|
25
24
|
end
|
data/app/models/search.rb
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
class Search < ActiveRecord::Base
|
|
3
|
-
belongs_to_arguments = { optional: true } if Rails.version >= '5.0.0'
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
class Search < ApplicationRecord
|
|
4
|
+
belongs_to :user, optional: true
|
|
6
5
|
|
|
7
6
|
serialize :query_params
|
|
8
7
|
|
|
9
|
-
attr_accessible :query_params if Blacklight::Utils.needs_attr_accessible?
|
|
10
|
-
|
|
11
8
|
# A Search instance is considered a saved search if it has a user_id.
|
|
12
9
|
def saved?
|
|
13
|
-
|
|
10
|
+
user_id?
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
# delete old, unsaved searches
|
|
17
14
|
def self.delete_old_searches(days_old)
|
|
18
15
|
raise ArgumentError, 'days_old is expected to be a number' unless days_old.is_a?(Numeric)
|
|
19
16
|
raise ArgumentError, 'days_old is expected to be greater than 0' if days_old <= 0
|
|
20
|
-
|
|
17
|
+
|
|
18
|
+
where(['created_at < ? AND user_id IS NULL', Time.zone.today - days_old]).destroy_all
|
|
21
19
|
end
|
|
22
20
|
end
|
|
@@ -1,153 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
module Blacklight
|
|
3
|
-
#
|
|
4
|
+
# An abstract class that the view presenters for SolrDocuments descend from
|
|
4
5
|
class DocumentPresenter
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@controller = controller
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Get the value of the document's "title" field, or a placeholder
|
|
19
|
-
# value (if empty)
|
|
20
|
-
#
|
|
21
|
-
# @return [String]
|
|
22
|
-
# @deprecated use ShowPresenter#heading instead
|
|
23
|
-
def document_heading
|
|
24
|
-
show_presenter.heading
|
|
25
|
-
end
|
|
26
|
-
deprecation_deprecate document_heading: "use ShowPresenter#heading instead"
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# Create <link rel="alternate"> links from a documents dynamically
|
|
30
|
-
# provided export formats. Returns empty string if no links available.
|
|
31
|
-
#
|
|
32
|
-
# @param [Hash] options
|
|
33
|
-
# @option options [Boolean] :unique ensures only one link is output for every
|
|
34
|
-
# content type, e.g. as required by atom
|
|
35
|
-
# @option options [Array<String>] :exclude array of format shortnames to not include in the output
|
|
36
|
-
# @deprecated moved to ShowPresenter#link_rel_alternates
|
|
37
|
-
def link_rel_alternates(options = {})
|
|
38
|
-
show_presenter.link_rel_alternates(options)
|
|
39
|
-
end
|
|
40
|
-
deprecation_deprecate link_rel_alternates: "use ShowPresenter#link_rel_alternates instead"
|
|
41
|
-
|
|
42
|
-
##
|
|
43
|
-
# Get the document's "title" to display in the <title> element.
|
|
44
|
-
# (by default, use the #document_heading)
|
|
45
|
-
#
|
|
46
|
-
# @see #document_heading
|
|
47
|
-
# @return [String]
|
|
48
|
-
# @deprecated use ShowPresenter#html_title instead
|
|
49
|
-
def document_show_html_title
|
|
50
|
-
show_presenter.html_title
|
|
51
|
-
end
|
|
52
|
-
deprecation_deprecate document_show_html_title: "use ShowPresenter#html_title instead"
|
|
53
|
-
|
|
54
|
-
##
|
|
55
|
-
# Render the document index heading
|
|
56
|
-
#
|
|
57
|
-
# @overload render_document_index_label(field, opts)
|
|
58
|
-
# @param [Symbol, Proc, String] field Render the given field or evaluate the proc or render the given string
|
|
59
|
-
# @param [Hash] opts
|
|
60
|
-
# @deprecated use IndexPresenter#label instead
|
|
61
|
-
def render_document_index_label(*args)
|
|
62
|
-
index_presenter.label(*args)
|
|
63
|
-
end
|
|
64
|
-
deprecation_deprecate render_document_index_label: "use IndexPresenter#label instead"
|
|
65
|
-
|
|
66
|
-
##
|
|
67
|
-
# Render the index field label for a document
|
|
68
|
-
#
|
|
69
|
-
# Allow an extention point where information in the document
|
|
70
|
-
# may drive the value of the field
|
|
71
|
-
# @overload render_index_field_value(field, opts)
|
|
72
|
-
# @param [String] field
|
|
73
|
-
# @param [Hash] opts
|
|
74
|
-
# @option opts [String] :value
|
|
75
|
-
# @deprecated use IndexPresenter#field_value instead
|
|
76
|
-
def render_index_field_value *args
|
|
77
|
-
index_presenter.field_value(*args)
|
|
6
|
+
attr_reader :document, :configuration, :view_context
|
|
7
|
+
|
|
8
|
+
# @return [Hash<String,Configuration::Field>] all the fields for this index view that should be rendered
|
|
9
|
+
def fields_to_render
|
|
10
|
+
fields.select do |_name, field_config|
|
|
11
|
+
# rubocop:disable Style/PreferredHashMethods
|
|
12
|
+
render_field?(field_config) && has_value?(field_config)
|
|
13
|
+
# rubocop:enable Style/PreferredHashMethods
|
|
14
|
+
end
|
|
78
15
|
end
|
|
79
|
-
deprecation_deprecate render_index_field_value: "use IndexPresenter#field_value instead"
|
|
80
16
|
|
|
81
|
-
|
|
82
|
-
# Render the show field value for a document
|
|
83
|
-
#
|
|
84
|
-
# Allow an extention point where information in the document
|
|
85
|
-
# may drive the value of the field
|
|
86
|
-
#
|
|
87
|
-
# @overload render_index_field_value(field, options)
|
|
88
|
-
# @param [String] field
|
|
89
|
-
# @param [Hash] options
|
|
90
|
-
# @option options [String] :value
|
|
91
|
-
# @deprecated use ShowPresenter#field_value
|
|
92
|
-
def render_document_show_field_value *args
|
|
93
|
-
show_presenter.field_value(*args)
|
|
94
|
-
end
|
|
95
|
-
deprecation_deprecate render_document_show_field_value: "use ShowPresenter#field_value instead"
|
|
17
|
+
private
|
|
96
18
|
|
|
97
19
|
##
|
|
98
|
-
#
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
# Rendering:
|
|
104
|
-
# - helper_method
|
|
105
|
-
# - link_to_search
|
|
106
|
-
# @param [String] _field name
|
|
107
|
-
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
108
|
-
# @param [Hash] options additional options to pass to the rendering helpers
|
|
109
|
-
# @deprecated
|
|
110
|
-
def get_field_values _field, field_config, options = {}
|
|
111
|
-
field_values(field_config, options)
|
|
20
|
+
# Check to see if the given field should be rendered in this context
|
|
21
|
+
# @param [Blacklight::Configuration::Field] field_config
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def render_field?(field_config)
|
|
24
|
+
view_context.should_render_field?(field_config, document)
|
|
112
25
|
end
|
|
113
|
-
deprecation_deprecate get_field_values: 'Use field_values instead'
|
|
114
26
|
|
|
115
27
|
##
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# @param [Blacklight::Configuration::Field] field_config solr field configuration
|
|
125
|
-
# @param [Hash] options additional options to pass to the rendering helpers
|
|
126
|
-
def field_values(field_config, options={})
|
|
127
|
-
FieldPresenter.new(@controller, @document, field_config, options).render
|
|
128
|
-
end
|
|
129
|
-
deprecation_deprecate field_values: 'Use ShowPresenter or IndexPresenter field_values instead'
|
|
130
|
-
|
|
131
|
-
# @deprecated
|
|
132
|
-
def render_field_value(values, field_config = Configuration::NullField.new)
|
|
133
|
-
field_values(field_config, value: Array(values))
|
|
28
|
+
# Check if a document has (or, might have, in the case of accessor methods) a value for
|
|
29
|
+
# the given solr field
|
|
30
|
+
# @param [Blacklight::Configuration::Field] field_config
|
|
31
|
+
# @return [Boolean]
|
|
32
|
+
def has_value? field_config
|
|
33
|
+
document.has?(field_config.field) ||
|
|
34
|
+
(document.has_highlight_field? field_config.field if field_config.highlight) ||
|
|
35
|
+
field_config.accessor
|
|
134
36
|
end
|
|
135
|
-
deprecation_deprecate render_field_value: 'Use FieldPresenter instead'
|
|
136
|
-
|
|
137
|
-
# @deprecated
|
|
138
|
-
def render_values(values, field_config = Configuration::NullField.new)
|
|
139
|
-
field_values(field_config, value: Array(values))
|
|
140
|
-
end
|
|
141
|
-
deprecation_deprecate render_values: 'Use FieldPresenter instead'
|
|
142
|
-
|
|
143
|
-
private
|
|
144
|
-
|
|
145
|
-
def index_presenter
|
|
146
|
-
@controller.index_presenter(@document)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def show_presenter
|
|
150
|
-
@controller.show_presenter(@document)
|
|
151
|
-
end
|
|
152
37
|
end
|
|
153
38
|
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Blacklight
|
|
2
|
-
# Renders a field and handles
|
|
4
|
+
# Renders a field and handles link_to_facet or helper_method if supplied
|
|
3
5
|
class FieldPresenter
|
|
4
6
|
def initialize(controller, document, field_config, options)
|
|
5
7
|
@controller = controller
|
|
@@ -9,7 +11,7 @@ module Blacklight
|
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
attr_reader :controller, :document, :field_config, :options
|
|
12
|
-
|
|
14
|
+
|
|
13
15
|
def render
|
|
14
16
|
if options[:value]
|
|
15
17
|
# This prevents helper methods from drawing.
|
|
@@ -24,8 +26,8 @@ module Blacklight
|
|
|
24
26
|
|
|
25
27
|
private
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
def retrieve_values
|
|
30
|
+
FieldRetriever.new(document, field_config).fetch
|
|
31
|
+
end
|
|
30
32
|
end
|
|
31
33
|
end
|