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
|
@@ -3,267 +3,323 @@ module Blacklight::Catalog
|
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
5
|
include Blacklight::Base
|
|
6
|
-
include Blacklight::DefaultComponentConfiguration
|
|
7
6
|
include Blacklight::Facet
|
|
8
7
|
|
|
9
8
|
# The following code is executed when someone includes blacklight::catalog in their
|
|
10
9
|
# own controller.
|
|
11
10
|
included do
|
|
12
|
-
|
|
11
|
+
if respond_to? :helper_method
|
|
12
|
+
helper_method :sms_mappings, :has_search_parameters?, :facet_limit_for
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
helper Blacklight::Facet
|
|
15
|
+
helper Blacklight::Facet if respond_to? :helper
|
|
15
16
|
|
|
16
|
-
#
|
|
17
|
-
# the
|
|
18
|
-
rescue_from Blacklight::Exceptions::
|
|
17
|
+
# The index action will more than likely throw this one.
|
|
18
|
+
# Example: when the standard query parser is used, and a user submits a "bad" query.
|
|
19
|
+
rescue_from Blacklight::Exceptions::InvalidRequest, with: :handle_request_error
|
|
19
20
|
|
|
20
21
|
record_search_parameters
|
|
21
22
|
end
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
format.html { store_preferred_view }
|
|
29
|
-
format.rss { render :layout => false }
|
|
30
|
-
format.atom { render :layout => false }
|
|
31
|
-
format.json do
|
|
32
|
-
@presenter = Blacklight::JsonPresenter.new(@response,
|
|
33
|
-
@document_list,
|
|
34
|
-
facets_from_request,
|
|
35
|
-
blacklight_config)
|
|
36
|
-
end
|
|
37
|
-
additional_response_formats(format)
|
|
38
|
-
document_export_formats(format)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
24
|
+
# get search results from the solr index
|
|
25
|
+
def index
|
|
26
|
+
(@response, deprecated_document_list) = search_service.search_results
|
|
27
|
+
|
|
28
|
+
@document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_document_list, 'The @document_list instance variable is deprecated; use @response.documents instead.')
|
|
41
29
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
additional_export_formats(@document, format)
|
|
30
|
+
respond_to do |format|
|
|
31
|
+
format.html { store_preferred_view }
|
|
32
|
+
format.rss { render layout: false }
|
|
33
|
+
format.atom { render layout: false }
|
|
34
|
+
format.json do
|
|
35
|
+
@presenter = Blacklight::JsonPresenter.new(@response,
|
|
36
|
+
blacklight_config)
|
|
50
37
|
end
|
|
38
|
+
additional_response_formats(format)
|
|
39
|
+
document_export_formats(format)
|
|
51
40
|
end
|
|
41
|
+
end
|
|
52
42
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
# get a single document from the index
|
|
44
|
+
# to add responses for formats other than html or json see _Blacklight::Document::Export_
|
|
45
|
+
def show
|
|
46
|
+
deprecated_response, @document = search_service.fetch(params[:id])
|
|
47
|
+
@response = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_response, 'The @response instance variable is deprecated; use @document.response instead.')
|
|
58
48
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
redirect_to blacklight_config.document_model.new(id: params[:id]), status: 303
|
|
64
|
-
end
|
|
49
|
+
respond_to do |format|
|
|
50
|
+
format.html { @search_context = setup_next_and_previous_documents }
|
|
51
|
+
format.json
|
|
52
|
+
additional_export_formats(@document, format)
|
|
65
53
|
end
|
|
54
|
+
end
|
|
66
55
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
raise ActionController::RoutingError, 'Not Found' unless @facet
|
|
71
|
-
@response = get_facet_field_response(@facet.key, params)
|
|
72
|
-
@display_facet = @response.aggregations[@facet.field]
|
|
73
|
-
@pagination = facet_paginator(@facet, @display_facet)
|
|
74
|
-
respond_to do |format|
|
|
75
|
-
format.html do
|
|
76
|
-
# Draw the partial for the "more" facet modal window:
|
|
77
|
-
return render layout: false if request.xhr?
|
|
78
|
-
# Otherwise draw the facet selector for users who have javascript disabled.
|
|
79
|
-
end
|
|
80
|
-
format.json
|
|
81
|
-
end
|
|
82
|
-
end
|
|
56
|
+
# get a single document from the index
|
|
57
|
+
def raw
|
|
58
|
+
raise(ActionController::RoutingError, 'Not Found') unless blacklight_config.raw_endpoint.enabled
|
|
83
59
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
60
|
+
_, @document = search_service.fetch(params[:id])
|
|
61
|
+
render json: @document
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# updates the search counter (allows the show view to paginate)
|
|
65
|
+
def track
|
|
66
|
+
search_session['counter'] = params[:counter]
|
|
67
|
+
search_session['id'] = params[:search_id]
|
|
68
|
+
search_session['per_page'] = params[:per_page]
|
|
69
|
+
|
|
70
|
+
if params[:redirect] && (params[:redirect].starts_with?('/') || params[:redirect] =~ URI::DEFAULT_PARSER.make_regexp)
|
|
71
|
+
uri = URI.parse(params[:redirect])
|
|
72
|
+
path = uri.query ? "#{uri.path}?#{uri.query}" : uri.path
|
|
73
|
+
redirect_to path, status: 303
|
|
74
|
+
else
|
|
75
|
+
redirect_to({ action: :show, id: params[:id] }, status: 303)
|
|
90
76
|
end
|
|
77
|
+
end
|
|
91
78
|
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
# displays values and pagination links for a single facet field
|
|
80
|
+
def facet
|
|
81
|
+
@facet = blacklight_config.facet_fields[params[:id]]
|
|
82
|
+
raise ActionController::RoutingError, 'Not Found' unless @facet
|
|
83
|
+
|
|
84
|
+
@response = search_service.facet_field_response(@facet.key)
|
|
85
|
+
@display_facet = @response.aggregations[@facet.field]
|
|
86
|
+
@pagination = facet_paginator(@facet, @display_facet)
|
|
87
|
+
respond_to do |format|
|
|
88
|
+
format.html do
|
|
89
|
+
# Draw the partial for the "more" facet modal window:
|
|
90
|
+
return render layout: false if request.xhr?
|
|
91
|
+
# Otherwise draw the facet selector for users who have javascript disabled.
|
|
92
|
+
end
|
|
93
|
+
format.json
|
|
94
94
|
end
|
|
95
|
+
end
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
# method to serve up XML OpenSearch description and JSON autocomplete response
|
|
98
|
+
def opensearch
|
|
99
|
+
respond_to do |format|
|
|
100
|
+
format.xml { render layout: false }
|
|
101
|
+
format.json { render json: search_service.opensearch_response }
|
|
98
102
|
end
|
|
103
|
+
end
|
|
99
104
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
def suggest
|
|
106
|
+
respond_to do |format|
|
|
107
|
+
format.json do
|
|
108
|
+
render json: suggestions_service.suggestions
|
|
109
|
+
end
|
|
105
110
|
end
|
|
111
|
+
end
|
|
106
112
|
|
|
107
|
-
|
|
113
|
+
# @return [Array] first value is a Blacklight::Solr::Response and the second
|
|
114
|
+
# is a list of documents
|
|
115
|
+
def action_documents
|
|
116
|
+
search_service.fetch(Array(params[:id]))
|
|
117
|
+
end
|
|
108
118
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
def action_success_redirect_path
|
|
120
|
+
search_state.url_for_document(blacklight_config.document_model.new(id: params[:id]))
|
|
121
|
+
end
|
|
112
122
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
session[:preferred_view] = params[:view] if params[:view]
|
|
120
|
-
end
|
|
123
|
+
##
|
|
124
|
+
# Check if any search parameters have been set
|
|
125
|
+
# @return [Boolean]
|
|
126
|
+
def has_search_parameters?
|
|
127
|
+
!params[:q].blank? || !params[:f].blank? || !params[:search_field].blank?
|
|
128
|
+
end
|
|
121
129
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
end
|
|
144
|
-
end
|
|
130
|
+
DEFAULT_FACET_LIMIT = 10
|
|
131
|
+
|
|
132
|
+
# Look up facet limit for given facet_field. Will look at config, and
|
|
133
|
+
# if config is 'true' will look up from Solr @response if available. If
|
|
134
|
+
# no limit is available, returns nil. Used from #add_facetting_to_solr
|
|
135
|
+
# to supply f.fieldname.facet.limit values in solr request (no @response
|
|
136
|
+
# available), and used in display (with @response available) to create
|
|
137
|
+
# a facet paginator with the right limit.
|
|
138
|
+
def facet_limit_for(facet_field)
|
|
139
|
+
facet = blacklight_config.facet_fields[facet_field]
|
|
140
|
+
return if facet.blank?
|
|
141
|
+
|
|
142
|
+
if facet.limit && @response && @response.aggregations[facet.field]
|
|
143
|
+
limit = @response.aggregations[facet.field].limit
|
|
144
|
+
|
|
145
|
+
if limit.nil? # we didn't get or a set a limit, so infer one.
|
|
146
|
+
facet.limit if facet.limit != true
|
|
147
|
+
elsif limit == -1 # limit -1 is solr-speak for unlimited
|
|
148
|
+
nil
|
|
149
|
+
else
|
|
150
|
+
limit.to_i - 1 # we added 1 to find out if we needed to paginate
|
|
145
151
|
end
|
|
152
|
+
elsif facet.limit
|
|
153
|
+
facet.limit == true ? DEFAULT_FACET_LIMIT : facet.limit
|
|
146
154
|
end
|
|
155
|
+
end
|
|
147
156
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
157
|
+
private
|
|
158
|
+
|
|
159
|
+
#
|
|
160
|
+
# non-routable methods ->
|
|
161
|
+
#
|
|
162
|
+
|
|
163
|
+
def render_sms_action?(_config, _options)
|
|
164
|
+
sms_mappings.present?
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def search_service
|
|
168
|
+
search_service_class.new(config: blacklight_config, user_params: search_state.to_h)
|
|
169
|
+
end
|
|
156
170
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
171
|
+
##
|
|
172
|
+
# If the params specify a view, then store it in the session. If the params
|
|
173
|
+
# do not specifiy the view, set the view parameter to the value stored in the
|
|
174
|
+
# session. This enables a user with a session to do subsequent searches and have
|
|
175
|
+
# them default to the last used view.
|
|
176
|
+
def store_preferred_view
|
|
177
|
+
session[:preferred_view] = params[:view] if params[:view]
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
##
|
|
181
|
+
# Render additional response formats for the index action, as provided by the
|
|
182
|
+
# blacklight configuration
|
|
183
|
+
# @param [Hash] format
|
|
184
|
+
# @note Make sure your format has a well known mime-type or is registered in config/initializers/mime_types.rb
|
|
185
|
+
# @example
|
|
186
|
+
# config.index.respond_to.txt = Proc.new { render plain: "A list of docs." }
|
|
187
|
+
def additional_response_formats format
|
|
188
|
+
blacklight_config.index.respond_to.each do |key, config|
|
|
189
|
+
format.send key do
|
|
190
|
+
case config
|
|
191
|
+
when false
|
|
192
|
+
raise ActionController::RoutingError, 'Not Found'
|
|
193
|
+
when Hash
|
|
194
|
+
render config
|
|
195
|
+
when Proc
|
|
196
|
+
instance_exec(&config)
|
|
197
|
+
when Symbol, String
|
|
198
|
+
send config
|
|
164
199
|
else
|
|
165
|
-
|
|
200
|
+
render({})
|
|
166
201
|
end
|
|
167
202
|
end
|
|
168
203
|
end
|
|
204
|
+
end
|
|
169
205
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
render
|
|
176
|
-
rescue ActionView::MissingTemplate
|
|
177
|
-
render plain: @response.documents.map { |x| x.export_as(format_name) if x.exports_as? format_name }.compact.join("\n"), layout: false
|
|
206
|
+
##
|
|
207
|
+
# Render additional export formats for the show action, as provided by
|
|
208
|
+
# the document extension framework. See _Blacklight::Document::Export_
|
|
209
|
+
def additional_export_formats(document, format)
|
|
210
|
+
document.export_formats.each_key do |format_name|
|
|
211
|
+
format.send(format_name.to_sym) { render body: document.export_as(format_name), layout: false }
|
|
178
212
|
end
|
|
213
|
+
end
|
|
179
214
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
215
|
+
##
|
|
216
|
+
# Try to render a response from the document export formats available
|
|
217
|
+
def document_export_formats format
|
|
218
|
+
format.any do
|
|
219
|
+
format_name = params.fetch(:format, '').to_sym
|
|
220
|
+
if @response.export_formats.include? format_name
|
|
221
|
+
render_document_export_format format_name
|
|
222
|
+
else
|
|
223
|
+
raise ActionController::UnknownFormat
|
|
224
|
+
end
|
|
185
225
|
end
|
|
226
|
+
end
|
|
186
227
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
# SMS action (this will render the appropriate view on GET requests and process the form and send the email on POST requests)
|
|
198
|
-
def sms_action documents
|
|
199
|
-
to = "#{params[:to].gsub(/[^\d]/, '')}@#{params[:carrier]}"
|
|
200
|
-
mail = RecordMailer.sms_record(documents, { :to => to }, url_options)
|
|
201
|
-
if mail.respond_to? :deliver_now
|
|
202
|
-
mail.deliver_now
|
|
203
|
-
else
|
|
204
|
-
mail.deliver
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
def validate_sms_params
|
|
209
|
-
if params[:to].blank?
|
|
210
|
-
flash[:error] = I18n.t('blacklight.sms.errors.to.blank')
|
|
211
|
-
elsif params[:carrier].blank?
|
|
212
|
-
flash[:error] = I18n.t('blacklight.sms.errors.carrier.blank')
|
|
213
|
-
elsif params[:to].gsub(/[^\d]/, '').length != 10
|
|
214
|
-
flash[:error] = I18n.t('blacklight.sms.errors.to.invalid', :to => params[:to])
|
|
215
|
-
elsif !sms_mappings.values.include?(params[:carrier])
|
|
216
|
-
flash[:error] = I18n.t('blacklight.sms.errors.carrier.invalid')
|
|
217
|
-
end
|
|
228
|
+
##
|
|
229
|
+
# Render the document export formats for a response
|
|
230
|
+
# First, try to render an appropriate template (e.g. index.endnote.erb)
|
|
231
|
+
# If that fails, just concatenate the document export responses with a newline.
|
|
232
|
+
def render_document_export_format format_name
|
|
233
|
+
render
|
|
234
|
+
rescue ActionView::MissingTemplate
|
|
235
|
+
render plain: @response.documents.map { |x| x.export_as(format_name) if x.exports_as? format_name }.compact.join("\n"), layout: false
|
|
236
|
+
end
|
|
218
237
|
|
|
219
|
-
|
|
220
|
-
|
|
238
|
+
# Overrides the Blacklight::Controller provided #search_action_url.
|
|
239
|
+
# By default, any search action from a Blacklight::Catalog controller
|
|
240
|
+
# should use the current controller when constructing the route.
|
|
241
|
+
def search_action_url options = {}
|
|
242
|
+
url_for(options.reverse_merge(action: 'index'))
|
|
243
|
+
end
|
|
221
244
|
|
|
222
|
-
|
|
223
|
-
|
|
245
|
+
# Email Action (this will render the appropriate view on GET requests and process the form and send the email on POST requests)
|
|
246
|
+
def email_action documents
|
|
247
|
+
mail = RecordMailer.email_record(documents, { to: params[:to], message: params[:message] }, url_options)
|
|
248
|
+
if mail.respond_to? :deliver_now
|
|
249
|
+
mail.deliver_now
|
|
250
|
+
else
|
|
251
|
+
mail.deliver
|
|
224
252
|
end
|
|
253
|
+
end
|
|
225
254
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
255
|
+
# SMS action (this will render the appropriate view on GET requests and process the form and send the email on POST requests)
|
|
256
|
+
def sms_action documents
|
|
257
|
+
to = "#{params[:to].gsub(/[^\d]/, '')}@#{params[:carrier]}"
|
|
258
|
+
mail = RecordMailer.sms_record(documents, { to: to }, url_options)
|
|
259
|
+
if mail.respond_to? :deliver_now
|
|
260
|
+
mail.deliver_now
|
|
261
|
+
else
|
|
262
|
+
mail.deliver
|
|
263
|
+
end
|
|
264
|
+
end
|
|
232
265
|
|
|
233
|
-
|
|
266
|
+
def validate_sms_params
|
|
267
|
+
if params[:to].blank?
|
|
268
|
+
flash[:error] = I18n.t('blacklight.sms.errors.to.blank')
|
|
269
|
+
elsif params[:carrier].blank?
|
|
270
|
+
flash[:error] = I18n.t('blacklight.sms.errors.carrier.blank')
|
|
271
|
+
elsif params[:to].gsub(/[^\d]/, '').length != 10
|
|
272
|
+
flash[:error] = I18n.t('blacklight.sms.errors.to.invalid', to: params[:to])
|
|
273
|
+
elsif !sms_mappings.value?(params[:carrier])
|
|
274
|
+
flash[:error] = I18n.t('blacklight.sms.errors.carrier.invalid')
|
|
234
275
|
end
|
|
235
276
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
respond_to do |format|
|
|
250
|
-
format.xml { render :xml => error_info, :status => 404 }
|
|
251
|
-
format.json { render :json => error_info, :status => 404 }
|
|
252
|
-
|
|
253
|
-
# default to HTML response, even for other non-HTML formats we don't
|
|
254
|
-
# neccesarily know about, seems to be consistent with what Rails4 does
|
|
255
|
-
# by default with uncaught ActiveRecord::RecordNotFound in production
|
|
256
|
-
format.any do
|
|
257
|
-
# use standard, possibly locally overridden, 404.html file. Even for
|
|
258
|
-
# possibly non-html formats, this is consistent with what Rails does
|
|
259
|
-
# on raising an ActiveRecord::RecordNotFound. Rails.root IS needed
|
|
260
|
-
# for it to work under testing, without worrying about CWD.
|
|
261
|
-
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false, :content_type => 'text/html'
|
|
262
|
-
end
|
|
263
|
-
end
|
|
277
|
+
flash[:error].blank?
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def sms_mappings
|
|
281
|
+
Blacklight::Engine.config.sms_mappings
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def validate_email_params
|
|
285
|
+
if params[:to].blank?
|
|
286
|
+
flash[:error] = I18n.t('blacklight.email.errors.to.blank')
|
|
287
|
+
elsif !params[:to].match(Blacklight::Engine.config.email_regexp)
|
|
288
|
+
flash[:error] = I18n.t('blacklight.email.errors.to.invalid', to: params[:to])
|
|
264
289
|
end
|
|
265
290
|
|
|
266
|
-
|
|
267
|
-
|
|
291
|
+
flash[:error].blank?
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
def start_new_search_session?
|
|
295
|
+
action_name == "index"
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def suggestions_service
|
|
299
|
+
Blacklight::SuggestSearch.new(params, search_service.repository).suggestions
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def determine_layout
|
|
303
|
+
action_name == 'show' ? 'catalog_result' : super
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
# when a method throws a Blacklight::Exceptions::InvalidRequest, this method is executed.
|
|
307
|
+
def handle_request_error(exception)
|
|
308
|
+
# Rails own code will catch and give usual Rails error page with stack trace
|
|
309
|
+
raise exception if Rails.env.development? || Rails.env.test?
|
|
310
|
+
|
|
311
|
+
flash_notice = I18n.t('blacklight.search.errors.request_error')
|
|
312
|
+
|
|
313
|
+
# If there are errors coming from the index page, we want to trap those sensibly
|
|
314
|
+
|
|
315
|
+
if flash[:notice] == flash_notice
|
|
316
|
+
logger.error "Cowardly aborting rsolr_request_error exception handling, because we redirected to a page that raises another exception"
|
|
317
|
+
raise exception
|
|
268
318
|
end
|
|
319
|
+
|
|
320
|
+
logger.error exception
|
|
321
|
+
|
|
322
|
+
flash[:notice] = flash_notice
|
|
323
|
+
redirect_to search_action_url
|
|
324
|
+
end
|
|
269
325
|
end
|