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
|
@@ -7,21 +7,23 @@ module Blacklight
|
|
|
7
7
|
|
|
8
8
|
def document_action_path action_opts, url_opts = nil
|
|
9
9
|
if action_opts.path
|
|
10
|
-
|
|
10
|
+
send(action_opts.path, url_opts)
|
|
11
11
|
elsif url_opts[:id].class.respond_to?(:model_name)
|
|
12
12
|
url_for([action_opts.key, url_opts[:id]])
|
|
13
13
|
else
|
|
14
|
-
|
|
14
|
+
send("#{action_opts.key}_#{controller_name}_path", url_opts)
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
##
|
|
19
19
|
# Render "document actions" area for navigation header
|
|
20
20
|
# (normally renders "Saved Searches", "History", "Bookmarks")
|
|
21
|
+
# These things are added by add_nav_action and the default config is
|
|
22
|
+
# provided by DefaultComponentConfiguration
|
|
21
23
|
#
|
|
22
24
|
# @param [Hash] options
|
|
23
25
|
# @return [String]
|
|
24
|
-
def render_nav_actions(options={}, &block)
|
|
26
|
+
def render_nav_actions(options = {}, &block)
|
|
25
27
|
render_filtered_partials(blacklight_config.navbar.partials, options, &block)
|
|
26
28
|
end
|
|
27
29
|
|
|
@@ -33,7 +35,7 @@ module Blacklight
|
|
|
33
35
|
# @param [Hash] options
|
|
34
36
|
# @option options [String] :wrapping_class
|
|
35
37
|
# @return [String]
|
|
36
|
-
def render_index_doc_actions(document, options={})
|
|
38
|
+
def render_index_doc_actions(document, options = {})
|
|
37
39
|
wrapping_class = options.delete(:wrapping_class) || "index-document-functions"
|
|
38
40
|
rendered = render_filtered_partials(blacklight_config.view_config(document_index_view_type).document_actions, { document: document }.merge(options))
|
|
39
41
|
content_tag("div", rendered, class: wrapping_class) unless rendered.blank?
|
|
@@ -52,20 +54,6 @@ module Blacklight
|
|
|
52
54
|
content_tag("div", rendered, class: wrapping_class) unless rendered.blank?
|
|
53
55
|
end
|
|
54
56
|
|
|
55
|
-
def render_filtered_partials(partials, options={}, &block)
|
|
56
|
-
content = []
|
|
57
|
-
filter_partials(partials, options).each do |key, config|
|
|
58
|
-
config.key ||= key
|
|
59
|
-
rendered = render(partial: config.partial || key.to_s, locals: { document_action_config: config }.merge(options))
|
|
60
|
-
if block_given?
|
|
61
|
-
yield config, rendered
|
|
62
|
-
else
|
|
63
|
-
content << rendered
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
safe_join(content, "\n") unless block_given?
|
|
67
|
-
end
|
|
68
|
-
|
|
69
57
|
##
|
|
70
58
|
# Render "document actions" for the item detail 'show' view.
|
|
71
59
|
# (this normally renders next to title)
|
|
@@ -75,7 +63,7 @@ module Blacklight
|
|
|
75
63
|
# @param [SolrDocument] document
|
|
76
64
|
# @param [Hash] options
|
|
77
65
|
# @return [String]
|
|
78
|
-
def render_show_doc_actions(document
|
|
66
|
+
def render_show_doc_actions(document = @document, options = {}, &block)
|
|
79
67
|
render_filtered_partials(blacklight_config.show.document_actions, { document: document }.merge(options), &block)
|
|
80
68
|
end
|
|
81
69
|
|
|
@@ -85,6 +73,20 @@ module Blacklight
|
|
|
85
73
|
|
|
86
74
|
private
|
|
87
75
|
|
|
76
|
+
def render_filtered_partials(partials, options = {})
|
|
77
|
+
content = []
|
|
78
|
+
filter_partials(partials, options).each do |key, config|
|
|
79
|
+
config.key ||= key
|
|
80
|
+
rendered = render(partial: config.partial || key.to_s, locals: { document_action_config: config }.merge(options))
|
|
81
|
+
if block_given?
|
|
82
|
+
yield config, rendered
|
|
83
|
+
else
|
|
84
|
+
content << rendered
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
safe_join(content, "\n") unless block_given?
|
|
88
|
+
end
|
|
89
|
+
|
|
88
90
|
def filter_partials(partials, options)
|
|
89
91
|
partials.select { |_, config| blacklight_configuration_context.evaluate_if_unless_configuration config, options }
|
|
90
92
|
end
|
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Blacklight::ConfigurationHelperBehavior
|
|
3
|
-
extend Deprecation
|
|
4
|
-
self.deprecation_horizon = 'blacklight 7.x'
|
|
5
|
-
|
|
6
3
|
##
|
|
7
4
|
# Index fields to display for a type of document
|
|
8
|
-
#
|
|
5
|
+
#
|
|
9
6
|
# @param [SolrDocument] document
|
|
10
|
-
# @return [Array<Blacklight::Configuration::Field>]
|
|
11
|
-
def index_fields
|
|
7
|
+
# @return [Array<Blacklight::Configuration::Field>]
|
|
8
|
+
def index_fields _document = nil
|
|
9
|
+
Deprecation.warn(self, "index_fields is deprecated and will be removed in Blacklight 8. Use IndexPresenter#fields instead")
|
|
12
10
|
blacklight_config.index_fields
|
|
13
11
|
end
|
|
14
12
|
|
|
15
|
-
# Used in the document_list partial (search view) for building a select element
|
|
16
|
-
def sort_fields
|
|
17
|
-
active_sort_fields.map { |_sort_key, field_config| [sort_field_label(field_config.key), field_config.key] }
|
|
18
|
-
end
|
|
19
|
-
deprecation_deprecate :sort_fields
|
|
20
|
-
|
|
21
13
|
def active_sort_fields
|
|
22
|
-
blacklight_config.sort_fields.select { |
|
|
14
|
+
blacklight_config.sort_fields.select { |_sort_key, field_config| should_render_field?(field_config) }
|
|
23
15
|
end
|
|
24
16
|
|
|
25
17
|
# Used in the search form partial for building a select tag
|
|
26
18
|
def search_fields
|
|
27
19
|
search_field_options_for_select
|
|
28
20
|
end
|
|
29
|
-
|
|
21
|
+
|
|
30
22
|
# Returns suitable argument to options_for_select method, to create
|
|
31
23
|
# an html select based on #search_field_list. Skips search_fields
|
|
32
24
|
# marked :include_in_simple_select => false
|
|
@@ -36,8 +28,9 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
36
28
|
end.compact
|
|
37
29
|
end
|
|
38
30
|
|
|
39
|
-
# used in the catalog/_show
|
|
40
|
-
def document_show_fields
|
|
31
|
+
# used in the catalog/_show partial
|
|
32
|
+
def document_show_fields _document = nil
|
|
33
|
+
Deprecation.warn(self, "document_show_fields is deprecated and will be removed in Blacklight 8. Use ShowPresenter#fields instead")
|
|
41
34
|
blacklight_config.show_fields
|
|
42
35
|
end
|
|
43
36
|
|
|
@@ -62,38 +55,28 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
62
55
|
##
|
|
63
56
|
# Look up the label for the index field
|
|
64
57
|
def index_field_label document, field
|
|
65
|
-
field_config =
|
|
58
|
+
field_config = blacklight_config.index_fields_for(document)[field]
|
|
59
|
+
field_config ||= Blacklight::Configuration::NullField.new(key: field)
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
:"blacklight.search.fields.index.#{field}",
|
|
69
|
-
:"blacklight.search.fields.#{field}",
|
|
70
|
-
(field_config.label if field_config),
|
|
71
|
-
field.to_s.humanize
|
|
72
|
-
)
|
|
61
|
+
field_config.display_label('index')
|
|
73
62
|
end
|
|
74
63
|
|
|
75
64
|
##
|
|
76
65
|
# Look up the label for the show field
|
|
77
66
|
def document_show_field_label document, field
|
|
78
|
-
field_config =
|
|
67
|
+
field_config = blacklight_config.show_fields_for(document)[field]
|
|
68
|
+
field_config ||= Blacklight::Configuration::NullField.new(key: field)
|
|
79
69
|
|
|
80
|
-
|
|
81
|
-
:"blacklight.search.fields.show.#{field}",
|
|
82
|
-
:"blacklight.search.fields.#{field}",
|
|
83
|
-
(field_config.label if field_config),
|
|
84
|
-
field.to_s.humanize
|
|
85
|
-
)
|
|
70
|
+
field_config.display_label('show')
|
|
86
71
|
end
|
|
87
72
|
|
|
88
73
|
##
|
|
89
74
|
# Look up the label for the facet field
|
|
90
75
|
def facet_field_label field
|
|
91
76
|
field_config = blacklight_config.facet_fields[field]
|
|
92
|
-
|
|
93
|
-
defaults << field_config.label if field_config
|
|
94
|
-
defaults << field.to_s.humanize
|
|
77
|
+
field_config ||= Blacklight::Configuration::NullField.new(key: field)
|
|
95
78
|
|
|
96
|
-
|
|
79
|
+
field_config.display_label('facet')
|
|
97
80
|
end
|
|
98
81
|
|
|
99
82
|
def view_label view
|
|
@@ -114,34 +97,25 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
114
97
|
field_config = blacklight_config.search_fields[key]
|
|
115
98
|
field_config ||= Blacklight::Configuration::NullField.new(key: key)
|
|
116
99
|
|
|
117
|
-
|
|
118
|
-
:"blacklight.search.fields.search.#{field_config.key}",
|
|
119
|
-
:"blacklight.search.fields.#{field_config.key}",
|
|
120
|
-
(field_config.label if field_config),
|
|
121
|
-
key.to_s.humanize
|
|
122
|
-
)
|
|
100
|
+
field_config.display_label('search')
|
|
123
101
|
end
|
|
124
102
|
|
|
125
103
|
def sort_field_label(key)
|
|
126
104
|
field_config = blacklight_config.sort_fields[key]
|
|
127
105
|
field_config ||= Blacklight::Configuration::NullField.new(key: key)
|
|
128
106
|
|
|
129
|
-
|
|
130
|
-
:"blacklight.search.fields.sort.#{key}",
|
|
131
|
-
(field_config.label if field_config),
|
|
132
|
-
key.to_s.humanize
|
|
133
|
-
)
|
|
107
|
+
field_config.display_label('sort')
|
|
134
108
|
end
|
|
135
109
|
|
|
136
110
|
##
|
|
137
111
|
# Look up the label for a solr field.
|
|
138
112
|
#
|
|
139
113
|
# @overload label
|
|
140
|
-
# @param [Symbol] an i18n key
|
|
114
|
+
# @param [Symbol] an i18n key
|
|
141
115
|
#
|
|
142
116
|
# @overload label, i18n_key, another_i18n_key, and_another_i18n_key
|
|
143
117
|
# @param [String] default label to display if the i18n look up fails
|
|
144
|
-
# @param [Symbol] i18n keys to attempt to look up
|
|
118
|
+
# @param [Symbol] i18n keys to attempt to look up
|
|
145
119
|
# before falling back to the label
|
|
146
120
|
# @param [Symbol] any number of additional keys
|
|
147
121
|
# @param [Symbol] ...
|
|
@@ -152,7 +126,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
152
126
|
end
|
|
153
127
|
|
|
154
128
|
def document_index_views
|
|
155
|
-
blacklight_config.view.select do |
|
|
129
|
+
blacklight_config.view.select do |_k, config|
|
|
156
130
|
should_render_field? config
|
|
157
131
|
end
|
|
158
132
|
end
|
|
@@ -167,7 +141,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
167
141
|
##
|
|
168
142
|
# Get the default index view type
|
|
169
143
|
def default_document_index_view_type
|
|
170
|
-
document_index_views.select { |
|
|
144
|
+
document_index_views.select { |_k, config| config.respond_to?(:default) && config.default }.keys.first || document_index_views.keys.first
|
|
171
145
|
end
|
|
172
146
|
|
|
173
147
|
##
|
|
@@ -183,7 +157,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
183
157
|
end
|
|
184
158
|
|
|
185
159
|
# Used in the document list partial (search view) for creating a link to the document show action
|
|
186
|
-
def document_show_link_field document=nil
|
|
160
|
+
def document_show_link_field document = nil
|
|
187
161
|
fields = Array(blacklight_config.view_config(document_index_view_type).title_field)
|
|
188
162
|
|
|
189
163
|
field = fields.first if document.nil?
|
|
@@ -197,23 +171,22 @@ module Blacklight::ConfigurationHelperBehavior
|
|
|
197
171
|
##
|
|
198
172
|
# Default sort field
|
|
199
173
|
def default_sort_field
|
|
200
|
-
(active_sort_fields.find { |
|
|
174
|
+
(active_sort_fields.find { |_k, config| config.respond_to?(:default) && config.default } || active_sort_fields.first).try(:last)
|
|
201
175
|
end
|
|
202
176
|
|
|
203
177
|
##
|
|
204
178
|
# The default value for search results per page
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
179
|
+
delegate :default_per_page, to: :blacklight_config
|
|
180
|
+
deprecation_deprecate default_per_page: "Use blacklight_config.default_per_page instead"
|
|
181
|
+
|
|
209
182
|
##
|
|
210
183
|
# The available options for results per page, in the style of #options_for_select
|
|
211
184
|
def per_page_options_for_select
|
|
212
185
|
blacklight_config.per_page.map do |count|
|
|
213
|
-
[t(:'blacklight.search.per_page.label', :
|
|
186
|
+
[t(:'blacklight.search.per_page.label', count: count).html_safe, count]
|
|
214
187
|
end
|
|
215
188
|
end
|
|
216
|
-
|
|
189
|
+
|
|
217
190
|
##
|
|
218
191
|
# Determine whether to render a field by evaluating :if and :unless conditions
|
|
219
192
|
#
|
|
@@ -6,16 +6,15 @@ module Blacklight::FacetsHelperBehavior
|
|
|
6
6
|
# Check if any of the given fields have values
|
|
7
7
|
#
|
|
8
8
|
# @param [Array<String>] fields
|
|
9
|
-
# @param [Hash] options
|
|
10
9
|
# @return [Boolean]
|
|
11
|
-
def has_facet_values? fields = facet_field_names
|
|
12
|
-
facets_from_request(fields).any? { |display_facet|
|
|
10
|
+
def has_facet_values? fields = facet_field_names
|
|
11
|
+
facets_from_request(fields).any? { |display_facet| should_render_facet?(display_facet) }
|
|
13
12
|
end
|
|
14
13
|
|
|
15
14
|
##
|
|
16
15
|
# Render a collection of facet fields.
|
|
17
|
-
# @see #render_facet_limit
|
|
18
|
-
#
|
|
16
|
+
# @see #render_facet_limit
|
|
17
|
+
#
|
|
19
18
|
# @param [Array<String>] fields
|
|
20
19
|
# @param [Hash] options
|
|
21
20
|
# @return String
|
|
@@ -28,41 +27,42 @@ module Blacklight::FacetsHelperBehavior
|
|
|
28
27
|
##
|
|
29
28
|
# Renders a single section for facet limit with a specified
|
|
30
29
|
# solr field used for faceting. Can be over-ridden for custom
|
|
31
|
-
# display on a per-facet basis.
|
|
30
|
+
# display on a per-facet basis.
|
|
32
31
|
#
|
|
33
|
-
# @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
|
|
32
|
+
# @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
|
|
34
33
|
# @param [Hash] options parameters to use for rendering the facet limit partial
|
|
35
34
|
# @option options [String] :partial partial to render
|
|
36
35
|
# @option options [String] :layout partial layout to render
|
|
37
36
|
# @option options [Hash] :locals locals to pass to the partial
|
|
38
|
-
# @return [String]
|
|
37
|
+
# @return [String]
|
|
39
38
|
def render_facet_limit(display_facet, options = {})
|
|
40
|
-
|
|
39
|
+
field_config = facet_configuration_for_field(display_facet.name)
|
|
40
|
+
return unless should_render_facet?(display_facet, field_config)
|
|
41
|
+
|
|
41
42
|
options = options.dup
|
|
42
43
|
options[:partial] ||= facet_partial_name(display_facet)
|
|
43
44
|
options[:layout] ||= "facet_layout" unless options.key?(:layout)
|
|
44
45
|
options[:locals] ||= {}
|
|
45
46
|
options[:locals][:field_name] ||= display_facet.name
|
|
46
|
-
options[:locals][:
|
|
47
|
-
options[:locals][:
|
|
48
|
-
options[:locals][:display_facet] ||= display_facet
|
|
47
|
+
options[:locals][:facet_field] ||= field_config
|
|
48
|
+
options[:locals][:display_facet] ||= display_facet
|
|
49
49
|
|
|
50
50
|
render(options)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
##
|
|
54
|
-
# Renders the list of values
|
|
54
|
+
# Renders the list of values
|
|
55
55
|
# removes any elements where render_facet_item returns a nil value. This enables an application
|
|
56
56
|
# to filter undesireable facet items so they don't appear in the UI
|
|
57
|
-
def render_facet_limit_list(paginator, facet_field, wrapping_element
|
|
58
|
-
safe_join(paginator.items.map { |item| render_facet_item(facet_field, item) }.compact.map { |item| content_tag(wrapping_element,item)})
|
|
57
|
+
def render_facet_limit_list(paginator, facet_field, wrapping_element = :li)
|
|
58
|
+
safe_join(paginator.items.map { |item| render_facet_item(facet_field, item) }.compact.map { |item| content_tag(wrapping_element, item) })
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
##
|
|
62
62
|
# Renders a single facet item
|
|
63
63
|
def render_facet_item(facet_field, item)
|
|
64
|
-
if facet_in_params?(facet_field, item.value
|
|
65
|
-
render_selected_facet_value(facet_field, item)
|
|
64
|
+
if facet_in_params?(facet_field, item.value)
|
|
65
|
+
render_selected_facet_value(facet_field, item)
|
|
66
66
|
else
|
|
67
67
|
render_facet_value(facet_field, item)
|
|
68
68
|
end
|
|
@@ -74,12 +74,14 @@ module Blacklight::FacetsHelperBehavior
|
|
|
74
74
|
# By default, only render facets with items.
|
|
75
75
|
#
|
|
76
76
|
# @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
|
|
77
|
-
# @
|
|
78
|
-
|
|
77
|
+
# @param [Blacklight::Configuration::FacetField] facet_config
|
|
78
|
+
# @return [Boolean]
|
|
79
|
+
def should_render_facet? display_facet, facet_config = nil
|
|
80
|
+
return false if display_facet.items.blank?
|
|
81
|
+
|
|
79
82
|
# display when show is nil or true
|
|
80
|
-
facet_config
|
|
81
|
-
|
|
82
|
-
display && display_facet.items.present?
|
|
83
|
+
facet_config ||= facet_configuration_for_field(display_facet.name)
|
|
84
|
+
should_render_field?(facet_config, display_facet)
|
|
83
85
|
end
|
|
84
86
|
|
|
85
87
|
##
|
|
@@ -87,7 +89,7 @@ module Blacklight::FacetsHelperBehavior
|
|
|
87
89
|
# - if the facet is 'active', don't collapse
|
|
88
90
|
# - if the facet is configured to collapse (the default), collapse
|
|
89
91
|
# - if the facet is configured not to collapse, don't collapse
|
|
90
|
-
#
|
|
92
|
+
#
|
|
91
93
|
# @param [Blacklight::Configuration::FacetField] facet_field
|
|
92
94
|
# @return [Boolean]
|
|
93
95
|
def should_collapse_facet? facet_field
|
|
@@ -97,7 +99,7 @@ module Blacklight::FacetsHelperBehavior
|
|
|
97
99
|
##
|
|
98
100
|
# The name of the partial to use to render a facet field.
|
|
99
101
|
# uses the value of the "partial" field if set in the facet configuration
|
|
100
|
-
# otherwise uses "facet_pivot" if this facet is a pivot facet
|
|
102
|
+
# otherwise uses "facet_pivot" if this facet is a pivot facet
|
|
101
103
|
# defaults to 'facet_limit'
|
|
102
104
|
#
|
|
103
105
|
# @return [String]
|
|
@@ -105,9 +107,9 @@ module Blacklight::FacetsHelperBehavior
|
|
|
105
107
|
config = facet_configuration_for_field(display_facet.name)
|
|
106
108
|
name = config.try(:partial)
|
|
107
109
|
name ||= "facet_pivot" if config.pivot
|
|
108
|
-
name
|
|
110
|
+
name || "facet_limit"
|
|
109
111
|
end
|
|
110
|
-
|
|
112
|
+
|
|
111
113
|
##
|
|
112
114
|
# Standard display of a facet value in a list. Used in both _facets sidebar
|
|
113
115
|
# partial and catalog/facet expanded list. Will output facet value name as
|
|
@@ -118,10 +120,13 @@ module Blacklight::FacetsHelperBehavior
|
|
|
118
120
|
# @param [Hash] options
|
|
119
121
|
# @option options [Boolean] :suppress_link display the facet, but don't link to it
|
|
120
122
|
# @return [String]
|
|
121
|
-
def render_facet_value(facet_field, item, options ={})
|
|
123
|
+
def render_facet_value(facet_field, item, options = {})
|
|
122
124
|
path = path_for_facet(facet_field, item)
|
|
123
|
-
content_tag(:span, :
|
|
124
|
-
link_to_unless(options[:suppress_link],
|
|
125
|
+
content_tag(:span, class: "facet-label") do
|
|
126
|
+
link_to_unless(options[:suppress_link],
|
|
127
|
+
facet_display_value(facet_field, item),
|
|
128
|
+
path,
|
|
129
|
+
class: "facet-select")
|
|
125
130
|
end + render_facet_count(item.hits)
|
|
126
131
|
end
|
|
127
132
|
|
|
@@ -130,12 +135,12 @@ module Blacklight::FacetsHelperBehavior
|
|
|
130
135
|
# @param [Blacklight::Solr::Response::Facets::FacetField] facet_field
|
|
131
136
|
# @param [String] item
|
|
132
137
|
# @return [String]
|
|
133
|
-
def path_for_facet(facet_field, item)
|
|
138
|
+
def path_for_facet(facet_field, item, path_options = {})
|
|
134
139
|
facet_config = facet_configuration_for_field(facet_field)
|
|
135
140
|
if facet_config.url_method
|
|
136
141
|
send(facet_config.url_method, facet_field, item)
|
|
137
142
|
else
|
|
138
|
-
search_action_path(search_state.add_facet_params_and_redirect(facet_field, item))
|
|
143
|
+
search_action_path(search_state.add_facet_params_and_redirect(facet_field, item).merge(path_options))
|
|
139
144
|
end
|
|
140
145
|
end
|
|
141
146
|
|
|
@@ -150,15 +155,15 @@ module Blacklight::FacetsHelperBehavior
|
|
|
150
155
|
content_tag(:span, facet_display_value(facet_field, item), class: "selected") +
|
|
151
156
|
# remove link
|
|
152
157
|
link_to(remove_href, class: "remove") do
|
|
153
|
-
content_tag(:span, '', class: "
|
|
158
|
+
content_tag(:span, '✖', class: "remove-icon") +
|
|
154
159
|
content_tag(:span, '[remove]', class: 'sr-only')
|
|
155
160
|
end
|
|
156
|
-
end + render_facet_count(item.hits, :
|
|
161
|
+
end + render_facet_count(item.hits, classes: ["selected"])
|
|
157
162
|
end
|
|
158
163
|
|
|
159
164
|
##
|
|
160
165
|
# Renders a count value for facet limits. Can be over-ridden locally
|
|
161
|
-
# to change style. And can be called by plugins to get consistent display.
|
|
166
|
+
# to change style. And can be called by plugins to get consistent display.
|
|
162
167
|
#
|
|
163
168
|
# @param [Integer] num number of facet results
|
|
164
169
|
# @param [Hash] options
|
|
@@ -166,24 +171,24 @@ module Blacklight::FacetsHelperBehavior
|
|
|
166
171
|
# @return [String]
|
|
167
172
|
def render_facet_count(num, options = {})
|
|
168
173
|
classes = (options[:classes] || []) << "facet-count"
|
|
169
|
-
content_tag("span", t('blacklight.search.facets.count', :
|
|
174
|
+
content_tag("span", t('blacklight.search.facets.count', number: number_with_delimiter(num)), class: classes)
|
|
170
175
|
end
|
|
171
|
-
|
|
176
|
+
|
|
172
177
|
##
|
|
173
178
|
# Are any facet restrictions for a field in the query parameters?
|
|
174
|
-
#
|
|
179
|
+
#
|
|
175
180
|
# @param [String] field
|
|
176
181
|
# @return [Boolean]
|
|
177
182
|
def facet_field_in_params? field
|
|
178
183
|
!facet_params(field).blank?
|
|
179
184
|
end
|
|
180
|
-
|
|
185
|
+
|
|
181
186
|
##
|
|
182
|
-
# Check if the query parameters have the given facet field with the
|
|
187
|
+
# Check if the query parameters have the given facet field with the
|
|
183
188
|
# given value.
|
|
184
|
-
#
|
|
185
|
-
# @param [
|
|
186
|
-
# @param [
|
|
189
|
+
#
|
|
190
|
+
# @param [String] field
|
|
191
|
+
# @param [String] item facet value
|
|
187
192
|
# @return [Boolean]
|
|
188
193
|
def facet_in_params?(field, item)
|
|
189
194
|
value = facet_value_for_facet_item(item)
|
|
@@ -201,18 +206,18 @@ module Blacklight::FacetsHelperBehavior
|
|
|
201
206
|
|
|
202
207
|
##
|
|
203
208
|
# Get the displayable version of a facet's value
|
|
204
|
-
#
|
|
209
|
+
#
|
|
205
210
|
# @param [Object] field
|
|
206
211
|
# @param [String] item value
|
|
207
|
-
# @return [String]
|
|
212
|
+
# @return [String]
|
|
208
213
|
def facet_display_value field, item
|
|
209
214
|
facet_config = facet_configuration_for_field(field)
|
|
210
|
-
|
|
215
|
+
|
|
211
216
|
value = if item.respond_to? :label
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
item.label
|
|
218
|
+
else
|
|
219
|
+
facet_value_for_facet_item(item)
|
|
220
|
+
end
|
|
216
221
|
|
|
217
222
|
if facet_config.helper_method
|
|
218
223
|
send facet_config.helper_method, value
|
|
@@ -220,8 +225,7 @@ module Blacklight::FacetsHelperBehavior
|
|
|
220
225
|
facet_config.query[value][:label]
|
|
221
226
|
elsif facet_config.date
|
|
222
227
|
localization_options = facet_config.date == true ? {} : facet_config.date
|
|
223
|
-
|
|
224
|
-
l(value.to_datetime, localization_options)
|
|
228
|
+
l(Time.zone.parse(value), localization_options)
|
|
225
229
|
else
|
|
226
230
|
value
|
|
227
231
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# fields, works with hash nested with other hashes and arrays, standard rails
|
|
4
4
|
# serialization style. Oddly while Hash#to_query will do this for a URL
|
|
5
5
|
# query parameters, there seems to be no built in way to do it to create
|
|
6
|
-
# hidden form fields instead.
|
|
6
|
+
# hidden form fields instead.
|
|
7
7
|
#
|
|
8
8
|
# Code taken from http://marklunds.com/articles/one/314
|
|
9
9
|
#
|
|
@@ -15,22 +15,21 @@ module Blacklight::HashAsHiddenFieldsHelperBehavior
|
|
|
15
15
|
# representing a hash passed in using Rails-style request parameters
|
|
16
16
|
# for hashes nested with arrays and other hashes.
|
|
17
17
|
# @param [Hash] hash
|
|
18
|
-
# @return [String]
|
|
18
|
+
# @return [String]
|
|
19
19
|
def render_hash_as_hidden_fields(hash)
|
|
20
|
-
|
|
21
20
|
hidden_fields = []
|
|
22
21
|
flatten_hash(hash).each do |name, value|
|
|
23
22
|
value = Array.wrap(value)
|
|
24
23
|
value.each do |v|
|
|
25
|
-
hidden_fields << hidden_field_tag(name, v.to_s, :
|
|
24
|
+
hidden_fields << hidden_field_tag(name, v.to_s, id: nil)
|
|
26
25
|
end
|
|
27
26
|
end
|
|
28
|
-
|
|
27
|
+
|
|
29
28
|
safe_join(hidden_fields, "\n")
|
|
30
29
|
end
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
private
|
|
32
|
+
|
|
34
33
|
def flatten_hash(hash = params, ancestor_names = [])
|
|
35
34
|
flat_hash = {}
|
|
36
35
|
hash.each do |k, v|
|
|
@@ -44,17 +43,16 @@ module Blacklight::HashAsHiddenFieldsHelperBehavior
|
|
|
44
43
|
flat_hash[key] = v
|
|
45
44
|
end
|
|
46
45
|
end
|
|
47
|
-
|
|
46
|
+
|
|
48
47
|
flat_hash
|
|
49
48
|
end
|
|
50
|
-
|
|
49
|
+
|
|
51
50
|
def flat_hash_key(names)
|
|
52
51
|
names = Array.new(names)
|
|
53
|
-
name = names.shift.to_s.dup
|
|
52
|
+
name = names.shift.to_s.dup
|
|
54
53
|
names.each do |n|
|
|
55
54
|
name << "[#{n}]"
|
|
56
55
|
end
|
|
57
56
|
name
|
|
58
57
|
end
|
|
59
|
-
|
|
60
58
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# Module to help generate icon helpers for SVG images
|
|
5
|
+
module Blacklight::IconHelperBehavior
|
|
6
|
+
##
|
|
7
|
+
# Returns the raw SVG (String) for a Blacklight Icon located in
|
|
8
|
+
# app/assets/images/blacklight/*.svg. Caches them so we don't have to look up
|
|
9
|
+
# the svg everytime.
|
|
10
|
+
# @param [String, Symbol] icon_name
|
|
11
|
+
# @return [String]
|
|
12
|
+
def blacklight_icon(icon_name, options = {})
|
|
13
|
+
Rails.cache.fetch([:blacklight_icons, icon_name, options]) do
|
|
14
|
+
icon = Blacklight::Icon.new(icon_name, options)
|
|
15
|
+
content_tag(:span, icon.svg.html_safe, icon.options)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -22,20 +22,20 @@ module Blacklight
|
|
|
22
22
|
# Classes used for sizing the main content of a Blacklight page
|
|
23
23
|
# @return [String]
|
|
24
24
|
def main_content_classes
|
|
25
|
-
'col-md-9
|
|
25
|
+
'col-md-9'
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
##
|
|
29
29
|
# Classes used for sizing the sidebar content of a Blacklight page
|
|
30
30
|
# @return [String]
|
|
31
31
|
def sidebar_classes
|
|
32
|
-
'col-md-3
|
|
32
|
+
'page-sidebar col-md-3'
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
##
|
|
36
36
|
# Class used for specifying main layout container classes. Can be
|
|
37
37
|
# overwritten to return 'container-fluid' for Bootstrap full-width layout
|
|
38
|
-
# @return [String]
|
|
38
|
+
# @return [String]
|
|
39
39
|
def container_classes
|
|
40
40
|
'container'
|
|
41
41
|
end
|
|
@@ -12,7 +12,7 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
|
12
12
|
# @param [Hash] localized_params query parameters
|
|
13
13
|
# @return [Boolean]
|
|
14
14
|
def query_has_constraints?(localized_params = params)
|
|
15
|
-
!(localized_params[:q].blank?
|
|
15
|
+
!(localized_params[:q].blank? && localized_params[:f].blank?)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
##
|
|
@@ -35,9 +35,9 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
|
35
35
|
return "".html_safe if localized_params[:q].blank?
|
|
36
36
|
|
|
37
37
|
render_constraint_element(constraint_query_label(localized_params),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
localized_params[:q],
|
|
39
|
+
classes: ["query"],
|
|
40
|
+
remove: remove_constraint_url(localized_params))
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
##
|
|
@@ -65,9 +65,10 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
|
65
65
|
# @return [String]
|
|
66
66
|
def render_constraints_filters(localized_params = params)
|
|
67
67
|
return "".html_safe unless localized_params[:f]
|
|
68
|
+
|
|
68
69
|
path = controller.search_state_class.new(localized_params, blacklight_config, controller)
|
|
69
70
|
content = []
|
|
70
|
-
localized_params[:f].each_pair do |facet,values|
|
|
71
|
+
localized_params[:f].each_pair do |facet, values|
|
|
71
72
|
content << render_filter_element(facet, values, path)
|
|
72
73
|
end
|
|
73
74
|
|
|
@@ -85,6 +86,7 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
|
85
86
|
|
|
86
87
|
safe_join(Array(values).map do |val|
|
|
87
88
|
next if val.blank? # skip empty string
|
|
89
|
+
|
|
88
90
|
render_constraint_element(facet_field_label(facet_config.key),
|
|
89
91
|
facet_display_value(facet, val),
|
|
90
92
|
remove: search_action_path(path.remove_facet_params(facet, val)),
|
|
@@ -107,6 +109,6 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
|
107
109
|
# @option options [Array<String>] :classes an array of classes to add to container span for constraint.
|
|
108
110
|
# @return [String]
|
|
109
111
|
def render_constraint_element(label, value, options = {})
|
|
110
|
-
render(:
|
|
112
|
+
render(partial: "catalog/constraints_element", locals: { label: label, value: value, options: options })
|
|
111
113
|
end
|
|
112
114
|
end
|