blacklight 6.21.0 → 7.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.jshintrc +3 -1
- data/.npmignore +23 -0
- data/.rubocop.yml +40 -16
- data/.rubocop_todo.yml +478 -382
- data/.travis.yml +25 -28
- data/CONTRIBUTING.md +50 -0
- data/Gemfile +4 -3
- 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 +495 -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 +31 -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 +66 -92
- data/app/assets/stylesheets/blacklight/_header.scss +60 -47
- 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 +4 -13
- 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 +20 -30
- data/app/controllers/concerns/blacklight/catalog.rb +256 -210
- data/app/controllers/concerns/blacklight/controller.rb +102 -124
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/facet.rb +22 -8
- data/app/controllers/concerns/blacklight/search_context.rb +11 -11
- 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/searchable.rb +17 -0
- data/app/controllers/concerns/blacklight/token_based_user.rb +5 -7
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +37 -119
- data/app/helpers/blacklight/catalog_helper_behavior.rb +103 -93
- data/app/helpers/blacklight/component_helper_behavior.rb +21 -21
- data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -58
- data/app/helpers/blacklight/facets_helper_behavior.rb +79 -54
- 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 -10
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +207 -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 +51 -42
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/button_focus.js +9 -0
- data/app/javascript/blacklight/checkbox_submit.js +134 -0
- data/app/javascript/blacklight/core.js +41 -0
- data/app/javascript/blacklight/facet_load.js +22 -0
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
- data/app/javascript/blacklight/search_context.js +67 -0
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +79 -0
- data/app/models/blacklight/suggest_search.rb +1 -1
- data/app/models/bookmark.rb +5 -10
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document.rb +23 -39
- data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -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 +5 -5
- 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 +3 -3
- data/app/models/concerns/blacklight/user.rb +7 -6
- data/app/models/record_mailer.rb +8 -6
- data/app/models/search.rb +5 -7
- data/app/presenters/blacklight/document_presenter.rb +25 -140
- data/app/presenters/blacklight/field_presenter.rb +19 -14
- data/app/presenters/blacklight/index_presenter.rb +43 -71
- 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 +27 -10
- data/app/presenters/blacklight/rendering/terminator.rb +2 -0
- data/app/presenters/blacklight/search_bar_presenter.rb +41 -0
- data/app/presenters/blacklight/show_presenter.rb +26 -72
- 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 +153 -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 +27 -13
- 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} +20 -19
- 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_group.html.erb +19 -0
- data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
- data/app/views/catalog/_facet_layout.html.erb +13 -8
- 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 +3 -21
- 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 +7 -8
- 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 +10 -2
- data/app/views/catalog/_show.html.erb +8 -0
- data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -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 +10 -8
- data/app/views/catalog/_show_tools.html.erb +10 -21
- 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 +8 -8
- 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/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 +28 -30
- 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 +8 -6
- 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.html.erb +14 -41
- data/app/views/layouts/blacklight/base.html.erb +40 -0
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/record_mailer/email_record.text.erb +6 -5
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +5 -3
- 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 +7 -11
- data/config/i18n-tasks.yml +17 -0
- data/config/locales/blacklight.de.yml +87 -83
- data/config/locales/blacklight.en.yml +32 -29
- data/config/locales/blacklight.es.yml +31 -28
- data/config/locales/blacklight.fr.yml +33 -35
- data/config/locales/blacklight.hu.yml +226 -0
- data/config/locales/blacklight.it.yml +32 -28
- data/config/locales/blacklight.nl.yml +226 -0
- data/config/locales/blacklight.pt-BR.yml +41 -31
- data/config/locales/blacklight.sq.yml +21 -30
- data/config/locales/blacklight.zh.yml +20 -28
- 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.rb +6 -4
- data/lib/blacklight/abstract_repository.rb +9 -9
- data/lib/blacklight/configuration.rb +106 -88
- 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 +15 -17
- 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/engine.rb +10 -10
- 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.rb +2 -0
- data/{app/models/concerns → lib}/blacklight/solr/document.rb +8 -8
- data/{app/models → lib}/blacklight/solr/facet_paginator.rb +3 -3
- data/lib/blacklight/solr/repository.rb +4 -3
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response.rb +29 -30
- data/lib/blacklight/solr/response/facets.rb +38 -31
- data/lib/blacklight/solr/response/group.rb +3 -3
- data/lib/blacklight/solr/response/group_response.rb +11 -1
- data/lib/blacklight/solr/response/more_like_this.rb +2 -2
- data/lib/blacklight/solr/response/pagination_methods.rb +12 -0
- data/lib/blacklight/solr/response/response.rb +2 -2
- data/lib/blacklight/solr/response/spelling.rb +4 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +27 -31
- data/lib/blacklight/version.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +28 -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 +15 -34
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
- data/{.solr_wrapper.yml → lib/generators/blacklight/templates/.solr_wrapper.yml} +0 -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 +57 -50
- data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
- 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/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -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
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +5 -6
- data/lib/railties/blacklight.rake +7 -6
- data/package-lock.json +2793 -0
- data/package.json +30 -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 +17 -13
- data/spec/controllers/catalog_controller_spec.rb +329 -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 +38 -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 +100 -80
- data/spec/features/search_formats_spec.rb +4 -5
- 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 +7 -12
- 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 -98
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +82 -73
- 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 -15
- 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} +61 -54
- data/spec/helpers/blacklight_helper_spec.rb +104 -151
- data/spec/helpers/catalog_helper_spec.rb +89 -105
- 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 +188 -165
- data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
- data/spec/models/blacklight/document/cache_key_spec.rb +10 -3
- 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 +82 -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 +50 -42
- data/spec/models/blacklight/solr/request_spec.rb +17 -18
- data/spec/models/blacklight/solr/response/facets_spec.rb +97 -60
- data/spec/models/blacklight/solr/response/group_response_spec.rb +29 -22
- data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
- data/spec/models/blacklight/solr/response_spec.rb +72 -68
- data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
- data/spec/models/blacklight/suggest/response_spec.rb +2 -1
- data/spec/models/blacklight/suggest_search_spec.rb +4 -4
- 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/{index_presenter_spec.rb → blacklight/index_presenter_spec.rb} +25 -62
- 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 +94 -0
- data/spec/presenters/{show_presenter_spec.rb → blacklight/show_presenter_spec.rb} +47 -62
- data/spec/presenters/pipeline_spec.rb +43 -16
- data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
- data/spec/routing/catalog_routing_spec.rb +13 -31
- data/spec/services/blacklight/search_service_spec.rb +495 -0
- data/spec/spec_helper.rb +12 -14
- data/spec/support/features.rb +1 -1
- data/spec/support/features/session_helpers.rb +4 -4
- data/spec/test_app_templates/Gemfile.extra +2 -5
- 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_group.html.erb_spec.rb +82 -0
- 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 +6 -46
- 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 +7 -10
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +6 -6
- 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 +9 -12
- data/template.demo.rb +4 -12
- metadata +172 -211
- 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 -139
- data/app/assets/javascripts/blacklight/collapsable.js +0 -9
- data/app/assets/javascripts/blacklight/core.js +0 -30
- data/app/assets/javascripts/blacklight/facet_load.js +0 -23
- data/app/assets/javascripts/blacklight/search_context.js +0 -42
- 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 -161
- 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 -627
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
- 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/support/backport_test.rb +0 -14
data/.travis.yml
CHANGED
@@ -2,44 +2,33 @@ dist: bionic
|
|
2
2
|
addons:
|
3
3
|
chrome: stable
|
4
4
|
language: ruby
|
5
|
-
sudo: false
|
6
5
|
|
7
6
|
notifications:
|
8
7
|
email: false
|
9
8
|
|
10
|
-
rvm:
|
11
|
-
- 2.5.7
|
12
|
-
|
13
9
|
matrix:
|
14
10
|
include:
|
11
|
+
- rvm: 2.6.5
|
12
|
+
env: "RAILS_VERSION=6.0.0 ENGINE_CART_RAILS_OPTIONS=\"--skip-webpack-install\""
|
13
|
+
- rvm: 2.6.5
|
14
|
+
env: "RAILS_VERSION=5.2.3"
|
15
|
+
- rvm: 2.5.7
|
16
|
+
env: "RAILS_VERSION=5.1.7"
|
15
17
|
- rvm: 2.5.7
|
16
|
-
env: "RAILS_VERSION=5.2.
|
17
|
-
- rvm: 2.4.
|
18
|
-
env: "RAILS_VERSION=
|
19
|
-
- rvm:
|
20
|
-
env: "
|
21
|
-
- rvm: 2.3.7
|
22
|
-
env: "RAILS_VERSION=5.1.6"
|
23
|
-
- rvm: jruby-9.1.17.0
|
24
|
-
env: "RAILS_VERSION=5.2.0 JRUBY_OPTS=\"-J-Xms512m -J-Xmx1024m\""
|
18
|
+
env: "RAILS_VERSION=5.2.3 BLACKLIGHT_API_TEST=true ENGINE_CART_RAILS_OPTIONS=\"--api --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-test\""
|
19
|
+
- rvm: 2.4.9
|
20
|
+
env: "RAILS_VERSION=5.1.7"
|
21
|
+
- rvm: jruby-9.2.8.0
|
22
|
+
env: "RAILS_VERSION=5.1.7 JRUBY_OPTS=\"-J-Xms512m -J-Xmx1024m\""
|
25
23
|
allow_failures:
|
26
|
-
- rvm: jruby-9.
|
27
|
-
- rvm: 2.4.4
|
28
|
-
env: "RAILS_VERSION=4.2.10"
|
29
|
-
- rvm: 2.2.10
|
30
|
-
env: "RAILS_VESION=5.0.7"
|
24
|
+
- rvm: jruby-9.2.8.0
|
31
25
|
fast_finish: true
|
32
26
|
|
33
27
|
before_install:
|
34
|
-
-
|
35
|
-
-
|
36
|
-
-
|
37
|
-
|
38
|
-
before_script:
|
39
|
-
- if [[ "${RAILS_VERSION}" =~ ^4.2.* ]]; then perl -pi -e "s/ActiveRecord::Migration\[[\d\.]+\]/ActiveRecord::Migration/" db/migrate/*; fi
|
40
|
-
|
41
|
-
env:
|
42
|
-
- "RAILS_VERSION=5.1.1"
|
28
|
+
- docker pull solr:7
|
29
|
+
- docker run -d -p 8983:8983 -v $PWD/lib/generators/blacklight/templates/solr/conf:/myconfig solr:7 solr-create -c blacklight-core -d /myconfig
|
30
|
+
- docker ps -a
|
31
|
+
- google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-port=9222 http://localhost &
|
43
32
|
|
44
33
|
notifications:
|
45
34
|
irc: "irc.freenode.org#blacklight"
|
@@ -48,6 +37,14 @@ notifications:
|
|
48
37
|
|
49
38
|
global_env:
|
50
39
|
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
51
|
-
- ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-
|
40
|
+
- ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test'
|
41
|
+
- CC_TEST_REPORTER_ID=5042c7358c96b0b926088a4cda3e132fffe7a66ce8047cdb1dc6f0b4b6676b79
|
52
42
|
|
53
43
|
jdk: openjdk11
|
44
|
+
|
45
|
+
before_script:
|
46
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
47
|
+
- chmod +x ./cc-test-reporter
|
48
|
+
- ./cc-test-reporter before-build
|
49
|
+
after_script:
|
50
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Contributing to Blacklight
|
2
|
+
|
3
|
+
Blacklight is a collaborative, open source project produced by developers from many diverse organizations. The Blacklight developers want to create an out-of-the-box framework that is easy to install and get started with, both as a service to the community and in the interests of our own institutions in creating a sustainable project and product.
|
4
|
+
|
5
|
+
Development is largely motivated by the needs of each developer’s organization, and we work on the shared project together so we can benefit from the community’s development efforts, experiences building discovery systems, and shared problem solving.
|
6
|
+
|
7
|
+
We always welcome contributions from the community, especially to add new features, address bugs or defects, and clarify existing code for future developers.
|
8
|
+
|
9
|
+
## Adding a ticket
|
10
|
+
Let us know you're interested in working on a feature by filing a ticket in our [issue tracker](https://github.com/projectblacklight/blacklight/issues).
|
11
|
+
|
12
|
+
## Making Your Changes
|
13
|
+
|
14
|
+
* Fork the project
|
15
|
+
* Start a feature/bugfix branch
|
16
|
+
* Commit and push until you are happy with your contribution
|
17
|
+
* Make sure to add tests for it. This is important so we don't break it in a future version unintentionally.
|
18
|
+
* After making your changes, be sure to run the [Blacklight tests](https://github.com/projectblacklight/blacklight/wiki/testing) to make sure everything works.
|
19
|
+
* Submit your change as a [Pull Request](https://help.github.com/en/articles/about-pull-requests).
|
20
|
+
|
21
|
+
## Pull Requests and Code Review
|
22
|
+
- Pull requests must be reviewed and approved by one non-author with write-permissions
|
23
|
+
- If additional code changes are made after approval, another approval (from the same or another qualified person) is required.
|
24
|
+
- A reviewer who has approved a PR but has not merged it should provide a comment (e.g. "This looks good, I'm just waiting for Travis to build", "This is a breaking change. I would like at least one more reviewer.")
|
25
|
+
- An approved PR may be merged by the reviewer, the author, or another committer
|
26
|
+
- Additional discussion and feedback by non-maintainers is heartily encouraged.
|
27
|
+
|
28
|
+
## Support
|
29
|
+
If you are interested in working on the Blacklight plugin, but want guidance or support, please send an email to our [Blacklight-development mailing list](http://groups.google.com/group/blacklight-development) and we'll be glad to help. The #blacklight channel on [code4lib Slack](https://code4lib.org/irc/) is another active forum for informal discussion and troubleshooting.
|
30
|
+
|
31
|
+
## Becoming a Committer
|
32
|
+
|
33
|
+
Anyone can contribute to Blacklight using pull requests, the issue tracker, and being active on the mailing list and IRC channels. Being a contributor means that you take an active interest in the project and contribute regularly in some way, ranging from asking sensible questions (which documents the project and provides feedback to developers) to providing new features as patches.
|
34
|
+
|
35
|
+
If you become a valuable contributor to the project you may be invited to become a committer. Blacklight code contributors become committers after being sponsored by one of the current active committers. The committers will take an Apache-style (+1/0/-1) vote to elevate them, and then a formal invitation will be extended to the contributor.
|
36
|
+
|
37
|
+
Committers should be:
|
38
|
+
|
39
|
+
- technically adept
|
40
|
+
- constructive, positive members of the Blacklight software community
|
41
|
+
- committed to producing useful, practical code for the community
|
42
|
+
|
43
|
+
You're expected to:
|
44
|
+
|
45
|
+
- contribute patches and new functionality to Blacklight and other shared development efforts (RSolr, Blacklight plugins, etc)
|
46
|
+
- actively participate in technical discussions on the email list, IRC, and github
|
47
|
+
- answer user support questions via the various channels
|
48
|
+
- review pull requests from fellow committers and the community
|
49
|
+
- test-drive new release candidates against your own institution's Blacklight applications
|
50
|
+
- participate in regular committer meetings, usually in the form of conference calls, to coordinate development & direction
|
data/Gemfile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Please see blacklight.gemspec for dependency information.
|
4
6
|
gemspec path: File.expand_path('..', __FILE__)
|
5
7
|
|
6
8
|
group :test do
|
7
|
-
gem 'activerecord-jdbcsqlite3-adapter', :
|
9
|
+
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
8
10
|
end
|
9
11
|
|
10
12
|
# BEGIN ENGINE_CART BLOCK
|
@@ -32,14 +34,13 @@ else
|
|
32
34
|
end
|
33
35
|
|
34
36
|
case ENV['RAILS_VERSION']
|
35
|
-
when /^5.[12]/
|
37
|
+
when /^5.[12]/, /^6.0/
|
36
38
|
gem 'sass-rails', '~> 5.0'
|
37
39
|
when /^4.2/
|
38
40
|
gem 'responders', '~> 2.0'
|
39
41
|
gem 'sass-rails', '>= 5.0'
|
40
42
|
gem 'coffee-rails', '~> 4.1.0'
|
41
43
|
gem 'json', '~> 1.8'
|
42
|
-
gem 'capybara', '~> 2.0'
|
43
44
|
when /^4.[01]/
|
44
45
|
gem 'sass-rails', '< 5.0'
|
45
46
|
end
|
data/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# Blacklight
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/projectblacklight/blacklight.png?branch=master)](https://travis-ci.org/projectblacklight/blacklight) [![Gem Version](https://badge.fury.io/rb/blacklight.png)](http://badge.fury.io/rb/blacklight) [![Coverage
|
3
|
+
[![Build Status](https://travis-ci.org/projectblacklight/blacklight.png?branch=master)](https://travis-ci.org/projectblacklight/blacklight) [![Gem Version](https://badge.fury.io/rb/blacklight.png)](http://badge.fury.io/rb/blacklight) [![Test Coverage](https://api.codeclimate.com/v1/badges/83fd270492c136594e59/test_coverage)](https://codeclimate.com/github/projectblacklight/blacklight/test_coverage)
|
4
4
|
|
5
5
|
Blacklight is an open source Solr user interface discovery platform.
|
6
6
|
You can use Blacklight to enable searching and browsing of your collections.
|
7
7
|
Blacklight uses the [Apache Solr](http://lucene.apache.org/solr) search engine
|
8
8
|
to search full text and/or metadata. Blacklight has a highly
|
9
9
|
configurable Ruby on Rails front-end. Blacklight was originally developed at
|
10
|
-
the University of Virginia Library and is made public under an Apache 2.0 license.
|
10
|
+
the University of Virginia Library and is made public under an Apache 2.0 license.
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -34,9 +34,26 @@ rails generate blacklight:install
|
|
34
34
|
|
35
35
|
## Dependencies
|
36
36
|
|
37
|
-
* Ruby 2.
|
37
|
+
* Ruby 2.2+
|
38
38
|
* Bundler
|
39
|
-
* Rails
|
39
|
+
* Rails 5.1+
|
40
40
|
|
41
|
-
## Configuring Apache Solr
|
41
|
+
## Configuring Apache Solr
|
42
42
|
You'll also want some information about how Blacklight expects [Apache Solr](http://lucene.apache.org/solr ) to run, which you can find in [README_SOLR](https://github.com/projectblacklight/blacklight/wiki/README_SOLR)
|
43
|
+
|
44
|
+
## Building the javascript
|
45
|
+
The javascript is built by npm from sources in `app/javascript` into a bundle
|
46
|
+
in `app/assets/javascripts/blacklight/blacklight.js`. This file should not be edited
|
47
|
+
by hand as any changes would be overwritten. When any of the javascript
|
48
|
+
components in the gem are changed, this bundle should be rebuild with the
|
49
|
+
following steps:
|
50
|
+
1. [Install npm](https://www.npmjs.com/get-npm)
|
51
|
+
1. run `npm install` to download dependencies
|
52
|
+
1. run `npm run js-compile-bundle` to build the bundle
|
53
|
+
1. run `npm publish` to push the javascript package to https://npmjs.org/package/blacklight-frontend
|
54
|
+
|
55
|
+
## Using the javascript
|
56
|
+
Blacklight ships with Javascript that can be compiled either by Webpacker or by
|
57
|
+
Sprockets. To use Webpacker see the directions at https://github.com/projectblacklight/blacklight/wiki/Using-Webpacker-to-compile-javascript-assets
|
58
|
+
|
59
|
+
If you prefer to use Sprockets, simply run the install generator, which will run the assets generator. For details see https://github.com/projectblacklight/blacklight/wiki/Using-Sprockets-to-compile-javascript-assets
|
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rubygems'
|
3
4
|
require 'rails'
|
4
5
|
begin
|
@@ -12,4 +13,4 @@ Bundler::GemHelper.install_tasks
|
|
12
13
|
load "tasks/blacklight.rake"
|
13
14
|
load "lib/railties/blacklight.rake"
|
14
15
|
|
15
|
-
task :
|
16
|
+
task default: [:rubocop, :ci]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
7.3.0
|
data/Vagrantfile
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<svg width="14" height="14" xmlns="http://www.w3.org/2000/svg"><circle cx="1" cy="1" r="1"/><circle cx="1" cy="5" r="1"/><circle cx="1" cy="9" r="1"/><circle cx="1" cy="13" r="1"/><path d="M4 8.5h9v1H4zM4 4.5h9v1H4zM4 .5h9v1H4zM4 12.5h9v1H4z"/></svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 20 20"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>
|
@@ -1,59 +1,497 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
//
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
The actual behaviors themselves are implemented as JQuery plugins,
|
35
|
-
JQuery-UI widgets (a special kind of JQuery plugin), or in some cases
|
36
|
-
just as logic in the Blacklight global object.
|
37
|
-
|
38
|
-
All of these things can be modified by your local JS code -- these functions
|
39
|
-
are all set up on js load, and only called on document ready, so do your
|
40
|
-
modifications just on js load, and they'll be made by the time document ready
|
41
|
-
comes along.
|
42
|
-
|
43
|
-
Examples, in your application's own JS:
|
44
|
-
|
45
|
-
Turn off adding of behavior to facet 'more' links, using a no-op function:
|
46
|
-
|
47
|
-
Blacklight.do_more_facets_behavior = function() {};
|
48
|
-
|
49
|
-
Change the implementation of facet 'more' link behavior to use entirely
|
50
|
-
different JS.
|
51
|
-
|
52
|
-
Blacklight.do_more_facets_behavior = function() {
|
53
|
-
$(Blacklight.do_more_facets_behavior.selector).each(function() {
|
54
|
-
//my own thing!
|
55
|
-
});
|
56
|
-
};
|
57
|
-
*/
|
1
|
+
Blacklight = function () {
|
2
|
+
var buffer = new Array();
|
3
|
+
return {
|
4
|
+
onLoad: function (func) {
|
5
|
+
buffer.push(func);
|
6
|
+
},
|
7
|
+
activate: function () {
|
8
|
+
for (var i = 0; i < buffer.length; i++) {
|
9
|
+
buffer[i].call();
|
10
|
+
}
|
11
|
+
},
|
12
|
+
listeners: function () {
|
13
|
+
var listeners = [];
|
14
|
+
|
15
|
+
if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
|
16
|
+
// Turbolinks 5
|
17
|
+
if (Turbolinks.BrowserAdapter) {
|
18
|
+
listeners.push('turbolinks:load');
|
19
|
+
} else {
|
20
|
+
// Turbolinks < 5
|
21
|
+
listeners.push('page:load', 'DOMContentLoaded');
|
22
|
+
}
|
23
|
+
} else {
|
24
|
+
listeners.push('DOMContentLoaded');
|
25
|
+
}
|
26
|
+
|
27
|
+
return listeners;
|
28
|
+
}
|
29
|
+
};
|
30
|
+
}(); // turbolinks triggers page:load events on page transition
|
31
|
+
// If app isn't using turbolinks, this event will never be triggered, no prob.
|
32
|
+
|
58
33
|
|
34
|
+
Blacklight.listeners().forEach(function (listener) {
|
35
|
+
document.addEventListener(listener, function () {
|
36
|
+
Blacklight.activate();
|
37
|
+
});
|
38
|
+
});
|
59
39
|
$('.no-js').removeClass('no-js').addClass('js');
|
40
|
+
/*global Bloodhound */
|
41
|
+
|
42
|
+
Blacklight.onLoad(function () {
|
43
|
+
'use strict';
|
44
|
+
|
45
|
+
$('[data-autocomplete-enabled="true"]').each(function () {
|
46
|
+
var $el = $(this);
|
47
|
+
|
48
|
+
if ($el.hasClass('tt-hint')) {
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
|
52
|
+
var suggestUrl = $el.data().autocompletePath;
|
53
|
+
var terms = new Bloodhound({
|
54
|
+
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
|
55
|
+
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
56
|
+
remote: {
|
57
|
+
url: suggestUrl + '?q=%QUERY',
|
58
|
+
wildcard: '%QUERY'
|
59
|
+
}
|
60
|
+
});
|
61
|
+
terms.initialize();
|
62
|
+
$el.typeahead({
|
63
|
+
hint: true,
|
64
|
+
highlight: true,
|
65
|
+
minLength: 2
|
66
|
+
}, {
|
67
|
+
name: 'terms',
|
68
|
+
displayKey: 'term',
|
69
|
+
source: terms.ttAdapter()
|
70
|
+
});
|
71
|
+
});
|
72
|
+
});
|
73
|
+
|
74
|
+
(function ($) {
|
75
|
+
//change form submit toggle to checkbox
|
76
|
+
Blacklight.doBookmarkToggleBehavior = function () {
|
77
|
+
if (typeof Blacklight.do_bookmark_toggle_behavior == 'function') {
|
78
|
+
console.warn("do_bookmark_toggle_behavior is deprecated. Use doBookmarkToggleBehavior instead.");
|
79
|
+
return Blacklight.do_bookmark_toggle_behavior();
|
80
|
+
}
|
81
|
+
|
82
|
+
$(Blacklight.doBookmarkToggleBehavior.selector).blCheckboxSubmit({
|
83
|
+
// cssClass is added to elements added, plus used for id base
|
84
|
+
cssClass: 'toggle-bookmark',
|
85
|
+
success: function (checked, response) {
|
86
|
+
if (response.bookmarks) {
|
87
|
+
$('[data-role=bookmark-counter]').text(response.bookmarks.count);
|
88
|
+
}
|
89
|
+
}
|
90
|
+
});
|
91
|
+
};
|
92
|
+
|
93
|
+
Blacklight.doBookmarkToggleBehavior.selector = 'form.bookmark-toggle';
|
94
|
+
Blacklight.onLoad(function () {
|
95
|
+
Blacklight.doBookmarkToggleBehavior();
|
96
|
+
});
|
97
|
+
})(jQuery);
|
98
|
+
|
99
|
+
Blacklight.onLoad(function () {
|
100
|
+
// Button clicks should change focus. As of 10/3/19, Firefox for Mac and
|
101
|
+
// Safari both do not set focus to a button on button click.
|
102
|
+
document.querySelectorAll('button.collapse-toggle').forEach(button => {
|
103
|
+
button.addEventListener('click', () => {
|
104
|
+
event.target.focus();
|
105
|
+
});
|
106
|
+
});
|
107
|
+
});
|
108
|
+
/* A JQuery plugin (should this be implemented as a widget instead? not sure)
|
109
|
+
that will convert a "toggle" form, with single submit button to add/remove
|
110
|
+
something, like used for Bookmarks, into an AJAXy checkbox instead.
|
111
|
+
|
112
|
+
Apply to a form. Does require certain assumption about the form:
|
113
|
+
1) The same form 'action' href must be used for both ADD and REMOVE
|
114
|
+
actions, with the different being the hidden input name="_method"
|
115
|
+
being set to "put" or "delete" -- that's the Rails method to pretend
|
116
|
+
to be doing a certain HTTP verb. So same URL, PUT to add, DELETE
|
117
|
+
to remove. This plugin assumes that.
|
118
|
+
|
119
|
+
Plus, the form this is applied to should provide a data-doc-id
|
120
|
+
attribute (HTML5-style doc-*) that contains the id/primary key
|
121
|
+
of the object in question -- used by plugin for a unique value for
|
122
|
+
DOM id's.
|
123
|
+
|
124
|
+
Uses HTML for a checkbox compatible with Bootstrap 3.
|
125
|
+
|
126
|
+
Pass in options for your class name and labels:
|
127
|
+
$("form.something").blCheckboxSubmit({
|
128
|
+
//cssClass is added to elements added, plus used for id base
|
129
|
+
cssClass: "toggle_my_kinda_form",
|
130
|
+
error: function() {
|
131
|
+
#optional callback
|
132
|
+
},
|
133
|
+
success: function(after_success_check_state) {
|
134
|
+
#optional callback
|
135
|
+
}
|
136
|
+
});
|
137
|
+
*/
|
138
|
+
|
139
|
+
(function ($) {
|
140
|
+
$.fn.blCheckboxSubmit = function (argOpts) {
|
141
|
+
this.each(function () {
|
142
|
+
var options = $.extend({}, $.fn.blCheckboxSubmit.defaults, argOpts);
|
143
|
+
var form = $(this);
|
144
|
+
form.children().hide(); //We're going to use the existing form to actually send our add/removes
|
145
|
+
//This works conveneintly because the exact same action href is used
|
146
|
+
//for both bookmarks/$doc_id. But let's take out the irrelevant parts
|
147
|
+
//of the form to avoid any future confusion.
|
148
|
+
|
149
|
+
form.find('input[type=submit]').remove(); //View needs to set data-doc-id so we know a unique value
|
150
|
+
//for making DOM id
|
151
|
+
|
152
|
+
var uniqueId = form.attr('data-doc-id') || Math.random(); // if form is currently using method delete to change state,
|
153
|
+
// then checkbox is currently checked
|
154
|
+
|
155
|
+
var checked = form.find('input[name=_method][value=delete]').length != 0;
|
156
|
+
var checkbox = $('<input type="checkbox">').addClass(options.cssClass).attr('id', options.cssClass + '_' + uniqueId);
|
157
|
+
var label = $('<label>').addClass(options.cssClass).attr('for', options.cssClass + '_' + uniqueId).attr('title', form.attr('title') || '');
|
158
|
+
var span = $('<span>');
|
159
|
+
label.append(checkbox);
|
160
|
+
label.append(' ');
|
161
|
+
label.append(span);
|
162
|
+
var checkboxDiv = $('<div class="checkbox" />').addClass(options.cssClass).append(label);
|
163
|
+
|
164
|
+
function updateStateFor(state) {
|
165
|
+
checkbox.prop('checked', state);
|
166
|
+
label.toggleClass('checked', state);
|
167
|
+
|
168
|
+
if (state) {
|
169
|
+
//Set the Rails hidden field that fakes an HTTP verb
|
170
|
+
//properly for current state action.
|
171
|
+
form.find('input[name=_method]').val('delete');
|
172
|
+
span.html(form.attr('data-present'));
|
173
|
+
} else {
|
174
|
+
form.find('input[name=_method]').val('put');
|
175
|
+
span.html(form.attr('data-absent'));
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
179
|
+
form.append(checkboxDiv);
|
180
|
+
updateStateFor(checked);
|
181
|
+
checkbox.click(function () {
|
182
|
+
span.html(form.attr('data-inprogress'));
|
183
|
+
label.attr('disabled', 'disabled');
|
184
|
+
checkbox.attr('disabled', 'disabled');
|
185
|
+
$.ajax({
|
186
|
+
url: form.attr('action'),
|
187
|
+
dataType: 'json',
|
188
|
+
type: form.attr('method').toUpperCase(),
|
189
|
+
data: form.serialize(),
|
190
|
+
error: function () {
|
191
|
+
label.removeAttr('disabled');
|
192
|
+
checkbox.removeAttr('disabled');
|
193
|
+
options.error.call();
|
194
|
+
},
|
195
|
+
success: function (data, status, xhr) {
|
196
|
+
//if app isn't running at all, xhr annoyingly
|
197
|
+
//reports success with status 0.
|
198
|
+
if (xhr.status != 0) {
|
199
|
+
checked = !checked;
|
200
|
+
updateStateFor(checked);
|
201
|
+
label.removeAttr('disabled');
|
202
|
+
checkbox.removeAttr('disabled');
|
203
|
+
options.success.call(form, checked, xhr.responseJSON);
|
204
|
+
} else {
|
205
|
+
label.removeAttr('disabled');
|
206
|
+
checkbox.removeAttr('disabled');
|
207
|
+
options.error.call();
|
208
|
+
}
|
209
|
+
}
|
210
|
+
});
|
211
|
+
return false;
|
212
|
+
}); //checkbox.click
|
213
|
+
}); //this.each
|
214
|
+
|
215
|
+
return this;
|
216
|
+
};
|
217
|
+
|
218
|
+
$.fn.blCheckboxSubmit.defaults = {
|
219
|
+
//cssClass is added to elements added, plus used for id base
|
220
|
+
cssClass: 'blCheckboxSubmit',
|
221
|
+
error: function () {
|
222
|
+
alert("Error");
|
223
|
+
},
|
224
|
+
success: function () {} //callback
|
225
|
+
|
226
|
+
};
|
227
|
+
})(jQuery);
|
228
|
+
/*global Blacklight */
|
229
|
+
|
230
|
+
|
231
|
+
'use strict';
|
232
|
+
|
233
|
+
Blacklight.doResizeFacetLabelsAndCounts = function () {
|
234
|
+
// adjust width of facet columns to fit their contents
|
235
|
+
function longer(a, b) {
|
236
|
+
return b.textContent.length - a.textContent.length;
|
237
|
+
}
|
238
|
+
|
239
|
+
document.querySelectorAll('.facet-values, .pivot-facet').forEach(function (elem) {
|
240
|
+
const nodes = elem.querySelectorAll('.facet-count'); // TODO: when we drop ie11 support, this can become the spread operator:
|
241
|
+
|
242
|
+
const longest = Array.from(nodes).sort(longer)[0];
|
243
|
+
|
244
|
+
if (longest && longest.textContent) {
|
245
|
+
const width = longest.textContent.length + 1 + 'ch';
|
246
|
+
elem.querySelector('.facet-count').style.width = width;
|
247
|
+
}
|
248
|
+
});
|
249
|
+
};
|
250
|
+
|
251
|
+
Blacklight.onLoad(function () {
|
252
|
+
Blacklight.doResizeFacetLabelsAndCounts();
|
253
|
+
});
|
254
|
+
/*
|
255
|
+
The blacklight modal plugin can display some interactions inside a Bootstrap
|
256
|
+
modal window, including some multi-page interactions.
|
257
|
+
|
258
|
+
It supports unobtrusive Javascript, where a link or form that would have caused
|
259
|
+
a new page load is changed to display it's results inside a modal dialog,
|
260
|
+
by this plugin. The plugin assumes there is a Bootstrap modal div
|
261
|
+
on the page with id #blacklight-modal to use as the modal -- the standard Blacklight
|
262
|
+
layout provides this.
|
263
|
+
|
264
|
+
To make a link or form have their results display inside a modal, add
|
265
|
+
`data-blacklight-modal="trigger"` to the link or form. (Note, form itself not submit input)
|
266
|
+
With Rails link_to helper, you'd do that like:
|
267
|
+
|
268
|
+
link_to something, link, data: { blacklight_modal: "trigger" }
|
269
|
+
|
270
|
+
The results of the link href or form submit will be displayed inside
|
271
|
+
a modal -- they should include the proper HTML markup for a bootstrap modal's
|
272
|
+
contents. Also, you ordinarily won't want the Rails template with wrapping
|
273
|
+
navigational elements to be used. The Rails controller could suppress
|
274
|
+
the layout when a JS AJAX request is detected, OR the response
|
275
|
+
can include a `<div data-blacklight-modal="container">` -- only the contents
|
276
|
+
of the container will be placed inside the modal, the rest of the
|
277
|
+
page will be ignored.
|
278
|
+
|
279
|
+
If you'd like to have a link or button that closes the modal,
|
280
|
+
you can just add a `data-dismiss="modal"` to the link,
|
281
|
+
standard Bootstrap convention. But you can also have
|
282
|
+
an href on this link for non-JS contexts, we'll make sure
|
283
|
+
inside the modal it closes the modal and the link is NOT followed.
|
284
|
+
|
285
|
+
Link or forms inside the modal will ordinarily cause page loads
|
286
|
+
when they are triggered. However, if you'd like their results
|
287
|
+
to stay within the modal, just add `data-blacklight-modal="preserve"`
|
288
|
+
to the link or form.
|
289
|
+
|
290
|
+
Here's an example of what might be returned, demonstrating most of the devices available:
|
291
|
+
|
292
|
+
<div data-blacklight-modal="container">
|
293
|
+
<div class="modal-header">
|
294
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
295
|
+
<h3 class="modal-title">Request Placed</h3>
|
296
|
+
</div>
|
297
|
+
|
298
|
+
<div class="modal-body">
|
299
|
+
<p>Some message</p>
|
300
|
+
<%= link_to "This result will still be within modal", some_link, data: { blacklight: "preserve" } %>
|
301
|
+
</div>
|
302
|
+
|
303
|
+
|
304
|
+
<div class="modal-footer">
|
305
|
+
<%= link_to "Close the modal", request_done_path, class: "submit button dialog-close", data: { dismiss: "modal" } %>
|
306
|
+
</div>
|
307
|
+
</div>
|
308
|
+
|
309
|
+
|
310
|
+
One additional feature. If the content returned from the AJAX modal load
|
311
|
+
has an element with `data-blacklight-modal=close`, that will trigger the modal
|
312
|
+
to be closed. And if this element includes a node with class "flash_messages",
|
313
|
+
the flash-messages node will be added to the main page inside #main-flahses.
|
314
|
+
|
315
|
+
== Events
|
316
|
+
|
317
|
+
We'll send out an event 'loaded.blacklight.blacklight-modal' with the #blacklight-modal
|
318
|
+
dialog as the target, right after content is loaded into the modal but before
|
319
|
+
it is shown (if not already a shown modal). In an event handler, you can
|
320
|
+
inspect loaded content by looking inside $(this). If you call event.preventDefault(),
|
321
|
+
we won't 'show' the dialog (although it may already have been shown, you may want to
|
322
|
+
$(this).modal("hide") if you want to ensure hidden/closed.
|
323
|
+
|
324
|
+
The data-blacklight-modal=close behavior is implemented with this event, see for example.
|
325
|
+
*/
|
326
|
+
// We keep all our data in Blacklight.modal object.
|
327
|
+
// Create lazily if someone else created first.
|
328
|
+
|
329
|
+
if (Blacklight.modal === undefined) {
|
330
|
+
Blacklight.modal = {};
|
331
|
+
} // a Bootstrap modal div that should be already on the page hidden
|
332
|
+
|
333
|
+
|
334
|
+
Blacklight.modal.modalSelector = '#blacklight-modal'; // Trigger selectors identify forms or hyperlinks that should open
|
335
|
+
// inside a modal dialog.
|
336
|
+
|
337
|
+
Blacklight.modal.triggerLinkSelector = 'a[data-blacklight-modal~=trigger]';
|
338
|
+
Blacklight.modal.triggerFormSelector = 'form[data-blacklight-modal~=trigger]'; // preserve selectors identify forms or hyperlinks that, if activated already
|
339
|
+
// inside a modal dialog, should have destinations remain inside the modal -- but
|
340
|
+
// won't trigger a modal if not already in one.
|
341
|
+
//
|
342
|
+
// No need to repeat selectors from trigger selectors, those will already
|
343
|
+
// be preserved. MUST be manually prefixed with the modal selector,
|
344
|
+
// so they only apply to things inside a modal.
|
345
|
+
|
346
|
+
Blacklight.modal.preserveLinkSelector = Blacklight.modal.modalSelector + ' a[data-blacklight-modal~=preserve]';
|
347
|
+
Blacklight.modal.containerSelector = '[data-blacklight-modal~=container]';
|
348
|
+
Blacklight.modal.modalCloseSelector = '[data-blacklight-modal~=close]'; // Called on fatal failure of ajax load, function returns content
|
349
|
+
// to show to user in modal. Right now called only for extreme
|
350
|
+
// network errors.
|
351
|
+
|
352
|
+
Blacklight.modal.onFailure = function (data) {
|
353
|
+
var contents = '<div class="modal-header">' + '<div class="modal-title">Network Error</div>' + '<button type="button" class="blacklight-modal-close close" data-dismiss="modal" aria-label="Close">' + ' <span aria-hidden="true">×</span>' + '</button>';
|
354
|
+
$(Blacklight.modal.modalSelector).find('.modal-content').html(contents);
|
355
|
+
$(Blacklight.modal.modalSelector).modal('show');
|
356
|
+
};
|
357
|
+
|
358
|
+
Blacklight.modal.receiveAjax = function (contents) {
|
359
|
+
// does it have a data- selector for container?
|
360
|
+
// important we don't execute script tags, we shouldn't.
|
361
|
+
// code modelled off of JQuery ajax.load. https://github.com/jquery/jquery/blob/master/src/ajax/load.js?source=c#L62
|
362
|
+
var container = $('<div>').append(jQuery.parseHTML(contents)).find(Blacklight.modal.containerSelector).first();
|
363
|
+
|
364
|
+
if (container.length !== 0) {
|
365
|
+
contents = container.html();
|
366
|
+
}
|
367
|
+
|
368
|
+
$(Blacklight.modal.modalSelector).find('.modal-content').html(contents); // send custom event with the modal dialog div as the target
|
369
|
+
|
370
|
+
var e = $.Event('loaded.blacklight.blacklight-modal');
|
371
|
+
$(Blacklight.modal.modalSelector).trigger(e); // if they did preventDefault, don't show the dialog
|
372
|
+
|
373
|
+
if (e.isDefaultPrevented()) return;
|
374
|
+
$(Blacklight.modal.modalSelector).modal('show');
|
375
|
+
};
|
376
|
+
|
377
|
+
Blacklight.modal.modalAjaxLinkClick = function (e) {
|
378
|
+
e.preventDefault();
|
379
|
+
$.ajax({
|
380
|
+
url: $(this).attr('href')
|
381
|
+
}).fail(Blacklight.modal.onFailure).done(Blacklight.modal.receiveAjax);
|
382
|
+
};
|
383
|
+
|
384
|
+
Blacklight.modal.modalAjaxFormSubmit = function (e) {
|
385
|
+
e.preventDefault();
|
386
|
+
$.ajax({
|
387
|
+
url: $(this).attr('action'),
|
388
|
+
data: $(this).serialize(),
|
389
|
+
type: $(this).attr('method') // POST
|
390
|
+
|
391
|
+
}).fail(Blacklight.modal.onFailure).done(Blacklight.modal.receiveAjax);
|
392
|
+
};
|
393
|
+
|
394
|
+
Blacklight.modal.setupModal = function () {
|
395
|
+
// Event indicating blacklight is setting up a modal link,
|
396
|
+
// you can catch it and call e.preventDefault() to abort
|
397
|
+
// setup.
|
398
|
+
var e = $.Event('setup.blacklight.blacklight-modal');
|
399
|
+
$('body').trigger(e);
|
400
|
+
if (e.isDefaultPrevented()) return; // Register both trigger and preserve selectors in ONE event handler, combining
|
401
|
+
// into one selector with a comma, so if something matches BOTH selectors, it
|
402
|
+
// still only gets the event handler called once.
|
403
|
+
|
404
|
+
$('body').on('click', Blacklight.modal.triggerLinkSelector + ', ' + Blacklight.modal.preserveLinkSelector, Blacklight.modal.modalAjaxLinkClick);
|
405
|
+
$('body').on('submit', Blacklight.modal.triggerFormSelector + ', ' + Blacklight.modal.preserveFormSelector, Blacklight.modal.modalAjaxFormSubmit); // Catch our own custom loaded event to implement data-blacklight-modal=closed
|
406
|
+
|
407
|
+
$('body').on('loaded.blacklight.blacklight-modal', Blacklight.modal.checkCloseModal); // we support doing data-dismiss=modal on a <a> with a href for non-ajax
|
408
|
+
// use, we need to suppress following the a's href that's there for
|
409
|
+
// non-JS contexts.
|
410
|
+
|
411
|
+
$('body').on('click', Blacklight.modal.modalSelector + ' a[data-dismiss~=modal]', function (e) {
|
412
|
+
e.preventDefault();
|
413
|
+
});
|
414
|
+
}; // A function used as an event handler on loaded.blacklight.blacklight-modal
|
415
|
+
// to catch contained data-blacklight-modal=closed directions
|
416
|
+
|
417
|
+
|
418
|
+
Blacklight.modal.checkCloseModal = function (event) {
|
419
|
+
if ($(event.target).find(Blacklight.modal.modalCloseSelector).length) {
|
420
|
+
var modalFlashes = $(this).find('.flash_messages');
|
421
|
+
$(event.target).modal('hide');
|
422
|
+
event.preventDefault();
|
423
|
+
var mainFlashes = $('#main-flashes');
|
424
|
+
mainFlashes.append(modalFlashes);
|
425
|
+
modalFlashes.fadeIn(500);
|
426
|
+
}
|
427
|
+
};
|
428
|
+
|
429
|
+
Blacklight.onLoad(function () {
|
430
|
+
Blacklight.modal.setupModal();
|
431
|
+
});
|
432
|
+
|
433
|
+
Blacklight.doSearchContextBehavior = function () {
|
434
|
+
if (typeof Blacklight.do_search_context_behavior == 'function') {
|
435
|
+
console.warn("do_search_context_behavior is deprecated. Use doSearchContextBehavior instead.");
|
436
|
+
return Blacklight.do_search_context_behavior();
|
437
|
+
}
|
438
|
+
|
439
|
+
const elements = document.querySelectorAll('a[data-context-href]'); // Equivalent to Array.from(), but supports ie11
|
440
|
+
|
441
|
+
const nodes = Array.prototype.slice.call(elements);
|
442
|
+
nodes.forEach(function (element) {
|
443
|
+
element.addEventListener('click', function (e) {
|
444
|
+
Blacklight.handleSearchContextMethod.call(e.target, e);
|
445
|
+
});
|
446
|
+
});
|
447
|
+
}; // this is the Rails.handleMethod with a couple adjustments, described inline:
|
448
|
+
// first, we're attaching this directly to the event handler, so we can check for meta-keys
|
449
|
+
|
450
|
+
|
451
|
+
Blacklight.handleSearchContextMethod = function (event) {
|
452
|
+
if (typeof Blacklight.handle_search_context_method == 'function') {
|
453
|
+
console.warn("handle_search_context_method is deprecated. Use handleSearchContextMethod instead.");
|
454
|
+
return Blacklight.handle_search_context_method(event);
|
455
|
+
}
|
456
|
+
|
457
|
+
var link = this; // instead of using the normal href, we need to use the context href instead
|
458
|
+
|
459
|
+
let href = link.getAttribute('data-context-href');
|
460
|
+
let target = link.getAttribute('target');
|
461
|
+
let csrfToken = Rails.csrfToken();
|
462
|
+
let csrfParam = Rails.csrfParam();
|
463
|
+
let form = document.createElement('form');
|
464
|
+
form.method = 'post';
|
465
|
+
form.action = href;
|
466
|
+
let formContent = `<input name="_method" value="post" type="hidden" />
|
467
|
+
<input name="redirect" value="${link.getAttribute('href')}" type="hidden" />`; // check for meta keys.. if set, we should open in a new tab
|
468
|
+
|
469
|
+
if (event.metaKey || event.ctrlKey) {
|
470
|
+
target = '_blank';
|
471
|
+
}
|
472
|
+
|
473
|
+
if (csrfParam !== undefined && csrfToken !== undefined) {
|
474
|
+
formContent += `<input name="${csrfParam}" value="${csrfToken}" type="hidden" />`;
|
475
|
+
} // Must trigger submit by click on a button, else "submit" event handler won't work!
|
476
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit
|
477
|
+
|
478
|
+
|
479
|
+
formContent += '<input type="submit" />';
|
480
|
+
|
481
|
+
if (target) {
|
482
|
+
form.setAttribute('target', target);
|
483
|
+
}
|
484
|
+
|
485
|
+
form.style.display = 'none';
|
486
|
+
form.innerHTML = formContent;
|
487
|
+
document.body.appendChild(form);
|
488
|
+
form.querySelector('[type="submit"]').click();
|
489
|
+
event.preventDefault();
|
490
|
+
event.stopPropagation();
|
491
|
+
event.stopImmediatePropagation();
|
492
|
+
};
|
493
|
+
|
494
|
+
Blacklight.onLoad(function () {
|
495
|
+
Blacklight.doSearchContextBehavior();
|
496
|
+
});
|
497
|
+
|