blacklight 6.22.0 → 6.25.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.docker/app/Dockerfile +28 -0
  3. data/.docker/app/entrypoint.sh +6 -0
  4. data/.dockerignore +3 -0
  5. data/.env +5 -0
  6. data/.github/workflows/ruby.yml +61 -0
  7. data/README.md +1 -1
  8. data/VERSION +1 -1
  9. data/app/models/search.rb +2 -1
  10. data/app/services/blacklight/search_params_yaml_coder.rb +48 -0
  11. data/app/views/catalog/_facet_pagination.html.erb +2 -2
  12. data/app/views/catalog/_search_form.html.erb +1 -1
  13. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  14. data/app/views/catalog/_thumbnail_default.html.erb +3 -3
  15. data/app/views/catalog/email.html.erb +3 -1
  16. data/app/views/catalog/email_success.html.erb +4 -2
  17. data/app/views/catalog/facet.html.erb +3 -1
  18. data/app/views/catalog/sms.html.erb +4 -1
  19. data/app/views/catalog/sms_success.html.erb +5 -2
  20. data/app/views/shared/_ajax_modal.html.erb +2 -2
  21. data/blacklight.gemspec +0 -1
  22. data/config/locales/blacklight.de.yml +60 -56
  23. data/config/locales/blacklight.en.yml +4 -0
  24. data/config/locales/blacklight.es.yml +4 -0
  25. data/config/locales/blacklight.fr.yml +4 -0
  26. data/config/locales/blacklight.it.yml +4 -0
  27. data/config/locales/blacklight.pt-BR.yml +4 -0
  28. data/config/locales/blacklight.sq.yml +1 -0
  29. data/config/locales/blacklight.zh.yml +1 -0
  30. data/docker-compose.yml +38 -0
  31. data/lib/blacklight/engine.rb +3 -1
  32. data/lib/blacklight/utils.rb +7 -3
  33. data/spec/models/search_spec.rb +35 -14
  34. data/spec/routing/catalog_routing_spec.rb +15 -0
  35. data/spec/spec_helper.rb +3 -8
  36. data/tasks/blacklight.rake +50 -29
  37. metadata +10 -18
  38. data/.travis.yml +0 -53
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd14b6772e7c5627ce2b623fba876af4d008965be530552de9d3b879edada1f9
4
- data.tar.gz: dbc0fe7d619a9259adabe10a8a92655ec56b2c4b7f00474d89914b86e10740f5
3
+ metadata.gz: 7b214e0d7059ddd49b5406ed8e21d4c6b84cee26f4d0c84d626269690eff080d
4
+ data.tar.gz: 71a8fe0e8de23865a39746fb4fe21ac0f9bc9fa4e38b96ca216f1a846e838fc7
5
5
  SHA512:
6
- metadata.gz: c4bd4e37af22eb9055ce3a6fb596f607aed1bedea8a215bebfbaf7863f16f8dac2d852528520116c1518daa0277168d92ab2599d5d8c274a2b8afe19f3d95a84
7
- data.tar.gz: 7670f38bf4afe72c7697f4dbcd095aadf9cdb858659419c9f1979cf19fb25c83e0fc0736a0a55cba86a5b6fd4abec420c886f0a1f454c5db37e8a395d66a840b
6
+ metadata.gz: 689f552efd8be76a0c787b11028edd52552661e7da183ac3bc054275783c1ace2d2d338db88750875acf947d16576e051489e0aa3dd52827b707088b50b0705a
7
+ data.tar.gz: 423c4fb4cbdae0d3df70098f7e10827d9ba4ec84e8ff4faaa180e4f390f4932c3943b1ec9695a831d38f184621d6c3df201515a989655a504963f5d4ae8787a3
@@ -0,0 +1,28 @@
1
+ ARG ALPINE_RUBY_VERSION
2
+
3
+ FROM ruby:${ALPINE_RUBY_VERSION}-alpine
4
+
5
+ RUN apk add --update --no-cache \
6
+ bash \
7
+ build-base \
8
+ git \
9
+ libxml2-dev \
10
+ libxslt-dev \
11
+ nodejs \
12
+ shared-mime-info \
13
+ sqlite-dev \
14
+ tzdata \
15
+ yarn
16
+
17
+ RUN mkdir /app
18
+ WORKDIR /app
19
+
20
+ RUN gem update --system && \
21
+ gem install bundler && \
22
+ bundle config build.nokogiri --use-system-libraries
23
+
24
+ COPY . .
25
+
26
+ EXPOSE 3000
27
+
28
+ CMD [".docker/app/entrypoint.sh"]
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ rm -f /app/.internal_test_app/tmp/pids/server.pid
5
+ bundle install
6
+ exec bundle exec rake blacklight:server["-p 3000 -b 0.0.0.0"]
data/.dockerignore ADDED
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ .internal_test_app
3
+ .solr_wrapper.yml
data/.env ADDED
@@ -0,0 +1,5 @@
1
+ ALPINE_RUBY_VERSION=2.7.6
2
+ RAILS_VERSION=5.2.8.1
3
+ SOLR_PORT=8983
4
+ SOLR_URL=http://solr:8983/solr/blacklight-core
5
+ SOLR_VERSION=8
@@ -0,0 +1,61 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: CI
9
+
10
+ on:
11
+ push:
12
+ branches:
13
+ - main
14
+ - 'release-*'
15
+ pull_request:
16
+
17
+ jobs:
18
+ lint:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: 2.7
26
+ - name: Install dependencies
27
+ run: bundle install
28
+ - name: Run linter
29
+ run: bundle exec rake rubocop
30
+ test:
31
+ runs-on: ubuntu-latest
32
+ name: test (ruby ${{ matrix.ruby }} / rails ${{ matrix.rails_version }} ${{ matrix.additional_name }})
33
+ strategy:
34
+ matrix:
35
+ ruby: [2.5, 2.6, 2.7]
36
+ rails_version: ['5.1.7', '5.2.8.1']
37
+ bootstrap_version: [null]
38
+ api: [null]
39
+ additional_engine_cart_rails_options: ['']
40
+ additional_name: ['']
41
+ env:
42
+ RAILS_VERSION: ${{ matrix.rails_version }}
43
+ BOOTSTRAP_VERSION: ${{ matrix.bootstrap_version }}
44
+ BLACKLIGHT_API_TEST: ${{ matrix.api }}
45
+ ENGINE_CART_RAILS_OPTIONS: "--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test ${{ matrix.engine_cart_rails_options }}"
46
+ steps:
47
+ - uses: actions/checkout@v3
48
+ - name: Set up Ruby
49
+ uses: ruby/setup-ruby@v1
50
+ with:
51
+ ruby-version: ${{ matrix.ruby }}
52
+ - name: Install dependencies
53
+ run: bundle install
54
+ - name: Run tests
55
+ run: bundle exec rake ci
56
+ docker_build:
57
+ runs-on: ubuntu-latest
58
+ steps:
59
+ - uses: actions/checkout@v3
60
+ - name: Build docker image
61
+ run: docker-compose build app
data/README.md CHANGED
@@ -1,6 +1,6 @@
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 Status](https://coveralls.io/repos/github/projectblacklight/blacklight/badge.svg?branch=master)](https://coveralls.io/github/projectblacklight/blacklight?branch=master)
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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.22.0
1
+ 6.25.0
data/app/models/search.rb CHANGED
@@ -4,7 +4,8 @@ class Search < ActiveRecord::Base
4
4
 
5
5
  belongs_to :user, belongs_to_arguments
6
6
 
7
- serialize :query_params
7
+ # use a backwards-compatible serializer until the Rails API stabilizes and we can evaluate for major-revision compatibility
8
+ serialize :query_params, Blacklight::SearchParamsYamlCoder
8
9
 
9
10
  attr_accessible :query_params if Blacklight::Utils.needs_attr_accessible?
10
11
 
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blacklight
4
+ # This is a custom YAML coder for (de)serializing blacklight search parameters that
5
+ # supports deserializing HashWithIndifferentAccess parameters (as was historically done by Blacklight).
6
+ class SearchParamsYamlCoder
7
+ # Serializes an attribute value to a string that will be stored in the database.
8
+ def self.dump(obj)
9
+ # Convert HWIA to an ordinary hash so we have some hope of using the regular YAML encoder in the future
10
+ obj = obj.to_hash if obj.is_a?(ActiveSupport::HashWithIndifferentAccess)
11
+
12
+ YAML.dump(obj)
13
+ end
14
+
15
+ # Deserializes a string from the database to an attribute value.
16
+ def self.load(yaml)
17
+ return yaml unless yaml.is_a?(String) && yaml.start_with?("---")
18
+
19
+ params = yaml_load(yaml)
20
+
21
+ params.with_indifferent_access
22
+ end
23
+
24
+ # rubocop:disable Security/YAMLLoad
25
+ if YAML.respond_to?(:unsafe_load)
26
+ def self.yaml_load(payload)
27
+ if ActiveRecord.try(:use_yaml_unsafe_load) || ActiveRecord::Base.try(:use_yaml_unsafe_load)
28
+ YAML.unsafe_load(payload)
29
+ else
30
+ permitted_classes = (ActiveRecord.try(:yaml_column_permitted_classes) || ActiveRecord::Base.try(:yaml_column_permitted_classes) || []) +
31
+ Blacklight::Engine.config.search_params_permitted_classes
32
+ YAML.safe_load(payload, permitted_classes, [], true)
33
+ end
34
+ end
35
+ else
36
+ def self.yaml_load(payload)
37
+ if ActiveRecord.try(:use_yaml_unsafe_load) || ActiveRecord::Base.try(:use_yaml_unsafe_load)
38
+ YAML.load(payload)
39
+ else
40
+ permitted_classes = (ActiveRecord.try(:yaml_column_permitted_classes) || ActiveRecord::Base.try(:yaml_column_permitted_classes) || []) +
41
+ Blacklight::Engine.config.search_params_permitted_classes
42
+ YAML.safe_load(payload, permitted_classes, [], true)
43
+ end
44
+ end
45
+ end
46
+ # rubocop:enable Security/YAMLLoad
47
+ end
48
+ end
@@ -1,10 +1,10 @@
1
1
  <div class="prev_next_links btn-group pull-left">
2
2
  <%= link_to_previous_page @pagination, raw(t('views.pagination.previous')), params: search_state.to_h, param_name: blacklight_config.facet_paginator_class.request_keys[:page], class: 'btn btn-link', data: { ajax_modal: "preserve" } do %>
3
- <span class="disabled btn btn-disabled"><%= raw(t('views.pagination.previous')) %></span>
3
+ <%= content_tag :span, raw(t('views.pagination.previous')), class: 'disabled btn btn-disabled' %>
4
4
  <% end %>
5
5
 
6
6
  <%= link_to_next_page @pagination, raw(t('views.pagination.next')), params: search_state.to_h, param_name: blacklight_config.facet_paginator_class.request_keys[:page], class: 'btn btn-link', data: { ajax_modal: "preserve" } do %>
7
- <span class="disabled btn btn-disabled"><%= raw(t('views.pagination.next')) %></span>
7
+ <%= content_tag :span, raw(t('views.pagination.next')), class: 'disabled btn btn-disabled' %>
8
8
  <% end %>
9
9
  </div>
10
10
 
@@ -1,4 +1,4 @@
1
- <%= form_tag search_action_url, method: :get, class: 'search-query-form clearfix navbar-form', role: 'search' do %>
1
+ <%= form_tag search_action_url, method: :get, class: 'search-query-form clearfix navbar-form', role: 'search', 'aria-label' => t('blacklight.search.form.submit') do %>
2
2
  <%= render_hash_as_hidden_fields(search_state.params_for_search.except(:q, :search_field, :qt, :page, :utf8)) %>
3
3
  <div class="input-group">
4
4
  <% if search_fields.length > 1 %>
@@ -1,4 +1,4 @@
1
- <div id="sortAndPerPage" class="clearfix">
1
+ <div id="sortAndPerPage" class="clearfix" role="navigation" aria-label="<%= t('blacklight.search.per_page.aria_label')%>">
2
2
  <%= render :partial => "paginate_compact", :object => @response if show_pagination? %>
3
3
  <%= render_results_collection_tools wrapping_class: "search-widgets pull-right" %>
4
4
  </div>
@@ -1,5 +1,5 @@
1
- <%- if has_thumbnail?(document) && tn = render_thumbnail_tag(document, {}, :counter => document_counter_with_offset(document_counter)) %>
1
+ <%- if has_thumbnail?(document) && tn = render_thumbnail_tag(document, { alt: '' }, 'aria-hidden': true, tabindex: -1, counter: document_counter_with_offset(document_counter)) %>
2
2
  <div class="document-thumbnail">
3
3
  <%= tn %>
4
- </div>
5
- <%- end %>
4
+ </div>
5
+ <%- end %>
@@ -1,5 +1,7 @@
1
1
  <div class="modal-header">
2
- <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-hidden="true">×</button>
2
+ <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
3
+ <span aria-hidden="true">&times;</span>
4
+ </button>
3
5
  <h1 class="modal-title"><%= t('blacklight.email.form.title') %></h1>
4
6
  </div>
5
7
  <%= render :partial => 'email_form' %>
@@ -1,9 +1,11 @@
1
1
  <div class="modal-header">
2
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
2
+ <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
3
+ <span aria-hidden="true">&times;</span>
4
+ </button>
3
5
  <h1><%= t('blacklight.email.form.title') %></h1>
4
6
  </div>
5
7
 
6
8
  <div class="modal-body">
7
9
  <%= render :partial=>'/flash_msg' %>
8
10
  <span class="ajax-close-modal"></span>
9
- </div>
11
+ </div>
@@ -3,7 +3,9 @@
3
3
  </div>
4
4
 
5
5
  <div class="modal-header">
6
- <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-hidden="true">×</button>
6
+ <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
7
+ <span aria-hidden="true">&times;</span>
8
+ </button>
7
9
 
8
10
  <h3 class="modal-title"><%= facet_field_label(@facet.key) %></h3>
9
11
  <%= render partial: 'facet_index_navigation' if @facet.index_range && @display_facet.index? %>
@@ -1,5 +1,8 @@
1
1
  <div class="modal-header">
2
- <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-hidden="true">×</button>
2
+ <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
3
+ <span aria-hidden="true">&times;</span>
4
+ </button>
5
+
3
6
  <h1 class="modal-title"><%= t('blacklight.sms.form.title') %></h1>
4
7
  </div>
5
8
  <%= render :partial => 'sms_form' %>
@@ -1,9 +1,12 @@
1
1
  <div class="modal-header">
2
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
2
+ <button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
3
+ <span aria-hidden="true">&times;</span>
4
+ </button>
5
+
3
6
  <h1 class="modal-title"><%= t('blacklight.sms.form.title') %></h1>
4
7
  </div>
5
8
 
6
9
  <div class="modal-body">
7
10
  <%= render :partial=>'/flash_msg' %>
8
11
  <span class="ajax-close-modal"></span>
9
- </div>
12
+ </div>
@@ -1,5 +1,5 @@
1
- <div id="ajax-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal menu" aria-hidden="true">
2
- <div class="modal-dialog">
1
+ <div id="ajax-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
2
+ <div class="modal-dialog" role="document">
3
3
  <div class="modal-content">
4
4
  </div>
5
5
  </div>
data/blacklight.gemspec CHANGED
@@ -44,7 +44,6 @@ Gem::Specification.new do |s|
44
44
  s.add_development_dependency "selenium-webdriver", '>= 3.13.1'
45
45
  s.add_development_dependency 'engine_cart', '~> 2.1'
46
46
  s.add_development_dependency "equivalent-xml"
47
- s.add_development_dependency "coveralls"
48
47
  s.add_development_dependency "simplecov"
49
48
  s.add_development_dependency "rubocop", '~> 0.47.0' # pending release of 0.48.1
50
49
  s.add_development_dependency "rubocop-rspec", '~> 1.8.0'
@@ -3,12 +3,12 @@ de:
3
3
  pagination:
4
4
  first: '&laquo; Erste'
5
5
  last: 'Letzte &raquo;'
6
- previous: '&laquo; Vorig'
6
+ previous: '&laquo; Voherige'
7
7
  next: 'Nächste &raquo;'
8
8
  truncate: '…'
9
9
 
10
10
  pagination_compact:
11
- previous: '&laquo; Vorig'
11
+ previous: '&laquo; Voherige'
12
12
  next: 'Nächste &raquo;'
13
13
 
14
14
  blacklight:
@@ -19,12 +19,15 @@ de:
19
19
  logout: 'Ausloggen'
20
20
  bookmarks: 'Lesezeichen'
21
21
  saved_searches: 'Gespeicherte Suchen'
22
- search_history: 'Geschichte'
22
+ search_history: 'Suchverlauf'
23
23
 
24
- welcome: 'Wilkommen!'
24
+ welcome: 'Willkommen!'
25
25
  and: 'und'
26
26
  or: 'oder'
27
27
 
28
+ modal:
29
+ close: Schließen
30
+
28
31
  bookmarks:
29
32
  title: 'Lesezeichen'
30
33
  page_title: 'Lesezeichen - %{application_name}'
@@ -34,19 +37,19 @@ de:
34
37
  success:
35
38
  one: 'Lesezeichen erfolgreich hinzugefügt.'
36
39
  other: 'Lesezeichen erfolgreich hinzugefügt.'
37
- failure: 'Entschuldigung, es gab ein Problem beim speichern von Lesezeichen.'
40
+ failure: 'Entschuldigung, es gab ein Problem beim Speichern der Lesezeichen.'
38
41
  remove:
39
42
  button: 'Lesezeichen entfernen'
40
43
  success: 'Lesezeichen erfolgreich gelöscht.'
41
- failure: 'Entschuldigung, es gab ein Problem bein löschen von Lesezeichen.'
42
- action_confirm: 'Entfernen dieses Lesezeichen?'
44
+ failure: 'Entschuldigung, es gab ein Problem beim Löschen der Lesezeichen.'
45
+ action_confirm: 'Dieses Lesezeichen entfernen?'
43
46
  clear:
44
47
  action_title: 'Lesezeichen löschen'
45
- action_confirm: 'Löschen deine Lesezeichen?'
46
- success: 'Dein Lesezeichen sind gelöscht gewesen.'
47
- failure: 'Entschuldigung, es gab ein Problem beim löschen von Lesezeichen.'
48
- need_login: 'Bitte melden Sie sich an, um Ihre Lesezeichen verwalten und ansehen.'
49
- list_title: 'Dein Lesezeichen'
48
+ action_confirm: 'Ihre Lesezeichen löschen?'
49
+ success: 'Ihre Lesezeichen wurden gelöscht.'
50
+ failure: 'Entschuldigung, es gab ein Problem beim Löschen der Lesezeichen.'
51
+ need_login: 'Bitte melden Sie sich an, um Ihre Lesezeichen zu verwalten und anzusehen.'
52
+ list_title: 'Ihre Lesezeichen'
50
53
  delete: 'Löschen'
51
54
 
52
55
  saved_searches:
@@ -70,22 +73,22 @@ de:
70
73
 
71
74
  search_history:
72
75
  clear:
73
- action_title: 'Löschen Suchverlauf'
74
- action_confirm: 'Löschen dein Suchverlauf?'
76
+ action_title: 'Suchverlauf löschen'
77
+ action_confirm: 'Ihren Suchverlauf löschen?'
75
78
  success: 'Suchverlauf gelöscht.'
76
- failure: 'Es gab ein Problem beim löschen von Suchverlauf.'
79
+ failure: 'Es gab ein Problem beim Löschen des Suchverlaufs.'
77
80
  title: 'Suchverlauf'
78
81
  page_title: 'Suchverlauf - %{application_name}'
79
- no_history: 'Sie haben keine Suchverlauf'
80
- recent: 'Deine neueste Suchen'
82
+ no_history: 'Sie haben keinen Suchverlauf'
83
+ recent: 'Ihre neuesten Suchen'
81
84
  forget: 'vergessen'
82
85
  save: 'speichern'
83
86
 
84
87
  tools:
85
88
  title: 'Werkzeuge'
86
- cite: 'Zitieren'
87
- email: 'Email'
88
- sms: 'SMS dieses'
89
+ citation: 'Zitieren'
90
+ email: 'E-Mail'
91
+ sms: 'SMS'
89
92
  clear: 'Löschen'
90
93
 
91
94
  citation:
@@ -95,10 +98,10 @@ de:
95
98
 
96
99
  email:
97
100
  form:
98
- title: 'Email dieses'
99
- to: 'Email:'
100
- message: 'Meldung:'
101
- submit: 'Abgeben'
101
+ title: 'E-Mail'
102
+ to: 'E-Mail-Adresse:'
103
+ message: 'Nachricht:'
104
+ submit: 'Senden'
102
105
  text:
103
106
  default_title: 'N/A'
104
107
  title: 'Titel: %{value}'
@@ -111,34 +114,34 @@ de:
111
114
  url: 'URL: %{url}'
112
115
  message: 'Mitteilung: %{message}'
113
116
 
114
- success: "Email Verschickt"
117
+ success: "E-Mail verschickt"
115
118
 
116
119
  errors:
117
120
  to:
118
- invalid: 'Sie müssen ein gültige E-Mail-Addresse eingeben'
119
- blank: 'Sie müssen ein Empfänger eingeben, um dieses Mitteilung schicken'
121
+ invalid: 'Sie müssen eine gültige E-Mail-Addresse eingeben'
122
+ blank: 'Sie müssen einen Empfänger eingeben, um diese Mitteilung zu schicken'
120
123
  sms:
121
124
  form:
122
- title: 'SMS dieses'
125
+ title: 'SMS'
123
126
  to: 'Telefonnummer:'
124
- carrier: 'Netzbetrieber'
125
- carrier_prompt: 'Bitte auswählen dein Netzbetrieber'
127
+ carrier: 'Netzbetreiber'
128
+ carrier_prompt: 'Bitte wählen Sie Ihren Netzbetreiber aus'
126
129
  submit: 'Schicken'
127
130
  text:
128
131
  title: '%{value}'
129
132
  author: ' von %{value}'
130
133
  url: 'Link: %{url}'
131
- success: "SMS Verschicht"
134
+ success: "SMS verschickt"
132
135
  errors:
133
136
  to:
134
- invalid: 'Sie müssen ein gültig 10 Stelle Telefonnummer wählen'
135
- blank: "Sie müssen die Telefonnummer eines Empfängers eingeben, um dieses Mitteilung schicken"
137
+ invalid: 'Sie müssen eine gültige Telefonnummer mit 10 Stellen wählen'
138
+ blank: "Sie müssen die Telefonnummer eines Empfängers eingeben, um diese Mitteilung zu schicken"
136
139
  carrier:
137
- blank: 'Sie müssen ein Netzbetrieber wählen'
138
- invalid: "Sie müssen ein gültig Netzbetrieber wählen"
140
+ blank: 'Sie müssen einen Netzbetreiber wählen'
141
+ invalid: "Sie müssen einen gültigen Netzbetreiber wählen"
139
142
 
140
- back_to_search: 'Zurück nach suchen'
141
- back_to_bookmarks: 'Zuruch nach Lesezeichen'
143
+ back_to_search: 'Zurück zur Suche'
144
+ back_to_bookmarks: 'Zurück zu Lesezeichen'
142
145
 
143
146
  search:
144
147
  # i18n key 'title' is deprecated and will be removed in Blacklight 6.0
@@ -150,20 +153,21 @@ de:
150
153
  search_results_header: 'Suchen'
151
154
  search_results: 'Suchergebnisse'
152
155
  errors:
153
- request_error: "Entschuldigung, Ich habe dein Suche nicht verstanden."
154
- invalid_solr_id: "Entschuldigung, Sie einen nicht vorhandenen Datensatz angefordert haben."
156
+ request_error: "Entschuldigung, ich habe Ihre Suche nicht verstanden."
157
+ invalid_solr_id: "Entschuldigung, Sie haben einen nicht vorhandenen Datensatz angefordert."
155
158
  per_page:
156
159
  label: '%{count}<span class="sr-only"> pro Seite</span>'
157
160
  button_label: '%{count} pro Seite'
158
- title: 'Anzahl der Ergebnisse pro Seite angezeigt werden'
161
+ title: 'Anzahl der Ergebnisse, die pro Seite angezeigt werden'
159
162
  submit: 'Aktualisieren'
163
+ aria_label: 'Ergebnisnavigation'
160
164
  sort:
161
- label: 'Ordnen bei %{field}'
165
+ label: 'Ordnen nach %{field}'
162
166
  submit: 'Ergebnisse ordnen'
163
167
  form:
164
168
  search_field:
165
169
  label: 'Suchen in'
166
- title: 'gezeilte Suchoptionen'
170
+ title: 'gezielte Suchoptionen'
167
171
  post_label: 'für'
168
172
  search:
169
173
  label: 'suchen nach'
@@ -183,7 +187,7 @@ de:
183
187
  documents:
184
188
  counter: '%{counter}. '
185
189
  facets:
186
- title: 'Beschränken dein Suche'
190
+ title: 'Suche beschränken'
187
191
  clear: 'Löschen'
188
192
  sort:
189
193
  count: 'Numerisch ordnen'
@@ -195,12 +199,12 @@ de:
195
199
  group:
196
200
  more: 'mehr »'
197
201
  filters:
198
- title: 'Sie suchte nach:'
202
+ title: 'Sie suchten nach:'
199
203
  label: '%{label}:'
200
204
  remove:
201
- value: 'Entfernen Zwang %{value}'
202
- label_value: 'Entfernen Zwang %{label}: %{value}'
203
- start_over: 'Wieder anfangen'
205
+ value: 'Filter %{value} entfernen'
206
+ label_value: 'Filter %{label}: %{value} entfernen'
207
+ start_over: 'Neu anfangen'
204
208
  index:
205
209
  label: '%{label}:'
206
210
  show:
@@ -211,20 +215,20 @@ de:
211
215
  fields:
212
216
  default: 'Stichwort'
213
217
  bookmarks:
214
- present: "Im Lesezeichen"
218
+ present: "In Lesezeichen"
215
219
  absent: "Lesezeichen"
216
220
  inprogress: "Speichern..."
217
221
  zero_results:
218
- title: "Kein Ergebnisse für Ihere Suche gefunden"
219
- modify_search: "Änderen Sie Ihere Suche"
220
- use_fewer_keywords: "Benutzen Sie weniger Stichworten am anfang, danach verfeinen Sie dein Suche mit die links an der Linken Seite."
221
- search_fields: "Sie haben bei %{search_fields} gesucht"
222
- search_everything: "Suchen Sie von allem"
223
- view_title: "Anschauen Ergebnisse als: "
222
+ title: "Keine Ergebnisse für Ihre Suche gefunden"
223
+ modify_search: "Ändern Sie Ihre Suche"
224
+ use_fewer_keywords: "Benutzen Sie anfangs weniger Stichworte, danach verfeinern Sie Ihre Suche mit den Links auf der linken Seite."
225
+ search_fields: "Sie haben nach %{search_fields} gesucht"
226
+ search_everything: "Suchen Sie nach allem"
227
+ view_title: "Ergebnisse ansehen als: "
224
228
  view:
225
229
  list: "Liste"
226
230
 
227
231
  entry_name:
228
- default: 'eintrag'
232
+ default: 'Eintrag'
229
233
 
230
- did_you_mean: 'Meinten Sie geben: %{options}?'
234
+ did_you_mean: 'Meinten Sie: %{options}?'
@@ -25,6 +25,9 @@ en:
25
25
  and: 'and'
26
26
  or: 'or'
27
27
 
28
+ modal:
29
+ close: "Close"
30
+
28
31
  bookmarks:
29
32
  title: 'Bookmarks'
30
33
  page_title: 'Bookmarks - %{application_name}'
@@ -157,6 +160,7 @@ en:
157
160
  button_label: '%{count} per page'
158
161
  title: 'Number of results to display per page'
159
162
  submit: 'Update'
163
+ aria_label: 'Results navigation'
160
164
  sort:
161
165
  label: 'Sort by %{field}'
162
166
  submit: 'sort results'
@@ -25,6 +25,9 @@ es:
25
25
  and: 'y'
26
26
  or: 'o'
27
27
 
28
+ modal:
29
+ close: cerca
30
+
28
31
  bookmarks:
29
32
  title: 'Favoritos'
30
33
  page_title: 'Favoritos - %{application_name}'
@@ -157,6 +160,7 @@ es:
157
160
  button_label: '%{count} por página'
158
161
  title: 'El número de resultados a mostrar por página'
159
162
  submit: 'Actualización'
163
+ aria_label: 'Navegación de resultados'
160
164
  sort:
161
165
  label: 'Ordenar por %{field}'
162
166
  submit: 'Resultados de ordenación'
@@ -25,6 +25,9 @@ fr:
25
25
  and: 'et'
26
26
  or: 'ou'
27
27
 
28
+ modal:
29
+ close: Fermer
30
+
28
31
  bookmarks:
29
32
  title: 'Favoris'
30
33
  page_title: 'Favoris - %{application_name}'
@@ -162,6 +165,7 @@ fr:
162
165
  button_label: '%{count} par page'
163
166
  title: 'Nombre de résultats à afficher par page'
164
167
  submit: 'mettre à jour'
168
+ aria_label: 'Navigation dans les résultats'
165
169
  sort:
166
170
  label: 'Trier par %{field}'
167
171
  submit: 'trier les résultats'
@@ -25,6 +25,9 @@ it:
25
25
  and: 'e'
26
26
  or: 'o'
27
27
 
28
+ modal:
29
+ close: Vicino
30
+
28
31
  bookmarks:
29
32
  title: 'Preferiti'
30
33
  page_title: 'Preferiti - %{application_name}'
@@ -157,6 +160,7 @@ it:
157
160
  button_label: '%{count} per pagina'
158
161
  title: 'Risultati per pagina'
159
162
  submit: 'Aggiorna'
163
+ aria_label: 'Navigazione dei risultati'
160
164
  sort:
161
165
  label: 'Ordina per %{field}'
162
166
  submit: 'Ordina i risultati'
@@ -25,6 +25,9 @@ pt-BR:
25
25
  and: 'e'
26
26
  or: 'ou'
27
27
 
28
+ modal:
29
+ close: Fechar
30
+
28
31
  bookmarks:
29
32
  title: 'Favoritos'
30
33
  page_title: 'Favoritos - %{application_name}'
@@ -156,6 +159,7 @@ pt-BR:
156
159
  button_label: '%{count} por página'
157
160
  title: 'Número de resultados para mostrar por página'
158
161
  submit: 'Atualizar'
162
+ aria_label: 'Navegação de resultados'
159
163
  sort:
160
164
  label: 'Ordenar por %{field}'
161
165
  submit: 'ordenar resultados'
@@ -160,6 +160,7 @@ sq:
160
160
  button_label: '%{count} për faqe'
161
161
  title: 'Numri i rezultateve që do të shfaqen për faqe'
162
162
  submit: 'Përditëso'
163
+ aria_label: 'Rezultatet e lundrimit'
163
164
  sort:
164
165
  label: 'Klasifikoj sipas %{field}'
165
166
  submit: 'klasifiko rezultatet'
@@ -160,6 +160,7 @@ zh:
160
160
  button_label: '%{count} 每页'
161
161
  title: '每页显示结果数'
162
162
  submit: '更新'
163
+ aria_label: '结果导航'
163
164
  sort:
164
165
  label: '按 %{field} 排序'
165
166
  submit: '排序'
@@ -0,0 +1,38 @@
1
+ version: "3.7"
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: .
7
+ dockerfile: .docker/app/Dockerfile
8
+ args:
9
+ - ALPINE_RUBY_VERSION
10
+ # mounting . is causing seg-fault on macosx
11
+ #volumes:
12
+ #- .:/app
13
+ depends_on:
14
+ - solr
15
+ ports:
16
+ - "3000:3000"
17
+ environment:
18
+ - SOLR_URL # Set via environment variable or use default defined in .env file
19
+ - RAILS_VERSION # Set via environment variable or use default defined in .env file
20
+ - SOLR_ENV=docker-compose
21
+ - ENGINE_CART_RAILS_OPTIONS=--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test --skip-solr
22
+
23
+ solr:
24
+ environment:
25
+ - SOLR_PORT # Set via environment variable or use default defined in .env file
26
+ - SOLR_VERSION # Set via environment variable or use default defined in .env file
27
+ image: "solr:${SOLR_VERSION}"
28
+ volumes:
29
+ - $PWD/solr/conf:/opt/solr/conf
30
+ ports:
31
+ - "${SOLR_PORT}:8983"
32
+ entrypoint:
33
+ - docker-entrypoint.sh
34
+ - solr-precreate
35
+ - blacklight-core
36
+ - /opt/solr/conf
37
+ - "-Xms256m"
38
+ - "-Xmx512m"
@@ -45,10 +45,12 @@ module Blacklight
45
45
 
46
46
  config.routes = OpenStruct.new
47
47
  # Set identifier_constraint to enforce a format for the document identifiers
48
- config.routes.identifier_constraint = /[\w-]+/
48
+ config.routes.identifier_constraint = /.+/
49
49
 
50
50
  config.bookmarks_http_method = :post
51
51
 
52
52
  config.email_regexp = defined?(Devise) ? Devise.email_regexp : /\A[^@\s]+@[^@\s]+\z/
53
+
54
+ Blacklight::Engine.config.search_params_permitted_classes = [ActiveSupport::HashWithIndifferentAccess, Symbol]
53
55
  end
54
56
  end
@@ -22,7 +22,7 @@ module Blacklight
22
22
  def to_h
23
23
  @table
24
24
  end
25
-
25
+
26
26
  def select *args, &block
27
27
  self.class.new to_h.select(*args, &block)
28
28
  end
@@ -58,7 +58,7 @@ module Blacklight
58
58
  end
59
59
 
60
60
  ##
61
- # An OpenStruct refinement that converts any hash-keys into
61
+ # An OpenStruct refinement that converts any hash-keys into
62
62
  # additional instances of NestedOpenStructWithHashAccess
63
63
  class NestedOpenStructWithHashAccess < OpenStructWithHashAccess
64
64
  attr_reader :nested_class
@@ -161,7 +161,11 @@ module Blacklight
161
161
  len = args.length
162
162
 
163
163
  if len.zero?
164
- new_ostruct_member(mid)
164
+ if respond_to?(:new_ostruct_member!, true)
165
+ new_ostruct_member!(mid)
166
+ else
167
+ new_ostruct_member(mid)
168
+ end
165
169
  @table[mid]
166
170
  else
167
171
  super
@@ -1,30 +1,51 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe Search do
4
+ let(:search) { described_class.new(user: user) }
4
5
  let(:user) { User.create! email: 'xyz@example.com', password: 'xyz12345'}
6
+ let(:hash_params) { { q: "query", f: { facet: "filter" } } }
7
+ let(:query_params) { hash_params }
8
+
5
9
  describe "query_params" do
6
- before(:each) do
7
- @search = Search.new(user: user)
8
- @query_params = { :q => "query", :f => "facet" }
10
+ shared_examples "persisting query_params" do
11
+ it "can save and retrieve the hash" do
12
+ search.query_params = query_params
13
+ search.save!
14
+ expect(described_class.find(search.id).query_params).to eq query_params.with_indifferent_access
15
+ end
16
+ end
17
+
18
+ context "are an indifferent hash" do
19
+ include_context "persisting query_params" do
20
+ let(:query_params) { hash_params.with_indifferent_access }
21
+ end
22
+ end
23
+
24
+ context "are a string-keyed hash" do
25
+ include_context "persisting query_params" do
26
+ let(:query_params) { hash_params.with_indifferent_access.to_hash }
27
+ end
9
28
  end
10
29
 
11
- it "can save and retrieve the hash" do
12
- @search.query_params = @query_params
13
- @search.save!
14
- expect(Search.find(@search.id).query_params).to eq @query_params
30
+ context "include symbol keys" do
31
+ include_context "persisting query_params" do
32
+ let(:query_params) { hash_params }
33
+ end
15
34
  end
16
35
  end
17
36
 
18
37
  describe "saved?" do
19
38
  it "is true when user_id is not NULL and greater than 0" do
20
- @search = Search.new(user: user)
21
- @search.save!
22
-
23
- expect(@search).to be_saved
39
+ search.save!
40
+ expect(search).to be_saved
24
41
  end
25
- it "is false when user_id is NULL or less than 1" do
26
- @search = Search.create
27
- expect(@search).not_to be_saved
42
+
43
+ context "when user_id is NULL or less than 1" do
44
+ let(:search) { described_class.create }
45
+
46
+ it "is false" do
47
+ expect(search).not_to be_saved
48
+ end
28
49
  end
29
50
  end
30
51
 
@@ -19,6 +19,9 @@ describe "Routing" do
19
19
  it "maps { :controller => 'catalog', :action => 'show', :id => 666 } to /catalog/666" do
20
20
  expect(:get => "/catalog/666").to route_to(:controller => 'catalog', :action => 'show', :id => "666")
21
21
  end
22
+ it "maps { :controller => 'catalog', :action => 'show', :id => 666, :format => 'json' } to /catalog/666.json" do
23
+ expect(:get => "/catalog/666.json").to route_to(:controller => 'catalog', :action => 'show', :id => "666", :format => 'json')
24
+ end
22
25
  end
23
26
 
24
27
  describe 'tracking' do
@@ -35,6 +38,14 @@ describe "Routing" do
35
38
  expect(post('/catalog/gallica.bnf.fr/track')).to route_to('catalog#track', id: 'gallica.bnf.fr')
36
39
  end
37
40
  end
41
+
42
+ it "routes ids with a literal ':'" do
43
+ expect(post('/catalog/this:that/track')).to route_to('catalog#track', id: 'this:that')
44
+ end
45
+
46
+ it "routes ids with a literal ':'" do
47
+ expect(post('/catalog/this:that/track.json')).to route_to('catalog#track', id: 'this:that', format: 'json')
48
+ end
38
49
  end
39
50
 
40
51
 
@@ -62,6 +73,10 @@ describe "Routing" do
62
73
  expect(:get => solr_document_path(SolrDocument.new(:id => 'this+that'))).to route_to(:controller => 'catalog', :action => 'show', :id => 'this+that')
63
74
  end
64
75
 
76
+ it "routes ids with a literal ':'" do
77
+ expect(get: solr_document_path(SolrDocument.new(:id => 'this:that'))).to route_to(:controller => 'catalog', :action => 'show', :id => 'this:that')
78
+ end
79
+
65
80
  it "routes ids with a literal '/" do
66
81
  skip "This works if you configure your routing to have very liberal constraints on :id.. not sure how to go about testing it though"
67
82
  expect(:get => solr_document_path(SolrDocument.new(:id => 'and/or'))).to route_to(:controller => 'catalog', :action => 'show', :id => 'and/or')
data/spec/spec_helper.rb CHANGED
@@ -5,14 +5,9 @@
5
5
 
6
6
  ENV["RAILS_ENV"] ||= 'test'
7
7
 
8
- if ENV["COVERAGE"] or ENV["CI"]
9
- require 'simplecov'
10
- require 'coveralls'
11
-
12
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
13
- SimpleCov.start do
14
- add_filter "/spec/"
15
- end
8
+ require 'simplecov'
9
+ SimpleCov.start do
10
+ add_filter "/spec/"
16
11
  end
17
12
 
18
13
  require 'rsolr'
@@ -1,26 +1,54 @@
1
- require 'solr_wrapper'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'engine_cart/rake_task'
3
4
 
4
5
  require 'rspec/core/rake_task'
5
6
  RSpec::Core::RakeTask.new(:spec) do |t|
6
- t.pattern = 'spec/**/*_spec.rb'
7
+ t.pattern = 'spec/**/*_spec.rb'
7
8
  end
8
9
 
9
10
  require 'rubocop/rake_task'
10
11
  RuboCop::RakeTask.new(:rubocop)
11
12
 
12
- desc "Run test suite"
13
- task ci: ['blacklight:generate'] do
14
- SolrWrapper.wrap do |solr|
15
- solr.with_collection do
16
- within_test_app do
17
- system "RAILS_ENV=test rake blacklight:index:seed"
18
- end
19
- Rake::Task['blacklight:coverage'].invoke
13
+ require 'solr_wrapper'
14
+ require 'open3'
15
+
16
+ def system_with_error_handling(*args)
17
+ Open3.popen3(*args) do |_stdin, stdout, stderr, thread|
18
+ puts stdout.read
19
+ raise "Unable to run #{args.inspect}: #{stderr.read}" unless thread.value.success?
20
+ end
21
+ end
22
+
23
+ def with_solr(&block)
24
+ # We're being invoked by the app entrypoint script and solr is already up via docker-compose
25
+ if ENV['SOLR_ENV'] == 'docker-compose'
26
+ yield
27
+ elsif system('docker-compose -v')
28
+ # We're not running docker-compose up but still want to use a docker instance of solr.
29
+ begin
30
+ puts "Starting Solr"
31
+ system_with_error_handling "docker-compose up -d solr"
32
+ yield
33
+ ensure
34
+ puts "Stopping Solr"
35
+ system_with_error_handling "docker-compose stop solr"
36
+ end
37
+ else
38
+ SolrWrapper.wrap do |solr|
39
+ solr.with_collection(&block)
20
40
  end
21
41
  end
22
42
  end
23
43
 
44
+ desc "Run test suite"
45
+ task :ci do
46
+ with_solr do
47
+ Rake::Task['blacklight:internal:seed'].invoke
48
+ Rake::Task['blacklight:coverage'].invoke
49
+ end
50
+ end
51
+
24
52
  namespace :blacklight do
25
53
  desc "Run tests with coverage"
26
54
  task :coverage do
@@ -28,35 +56,28 @@ namespace :blacklight do
28
56
  Rake::Task["spec"].invoke
29
57
  end
30
58
 
31
- desc "Create the test rails app"
32
- task :generate => ['engine_cart:generate'] do
33
- end
34
-
35
59
  namespace :internal do
36
- task :seed => ['engine_cart:generate'] do
60
+ desc 'Index seed data in test app'
61
+ task seed: ['engine_cart:generate'] do
37
62
  within_test_app do
38
- system "bundle exec rake blacklight:index:seed"
63
+ system "bin/rake blacklight:index:seed"
39
64
  end
40
65
  end
41
66
  end
42
67
 
43
68
  desc 'Run Solr and Blacklight for interactive development'
44
- task :server, [:rails_server_args] do |t, args|
45
- if File.exist? EngineCart.destination
46
- within_test_app do
47
- system "bundle update"
48
- end
49
- else
50
- Rake::Task['engine_cart:generate'].invoke
51
- end
52
-
53
- SolrWrapper.wrap do |solr|
54
- solr.with_collection do
55
- Rake::Task['blacklight:internal:seed'].invoke
69
+ task :server, [:rails_server_args] => ['engine_cart:generate'] do |_t, args|
70
+ with_solr do
71
+ Rake::Task['blacklight:internal:seed'].invoke
56
72
 
73
+ begin
57
74
  within_test_app do
58
- system "bundle exec rails s #{args[:rails_server_args]}"
75
+ puts "Starting Blacklight (Rails server)"
76
+ system "bin/rails s #{args[:rails_server_args]}"
59
77
  end
78
+ rescue Interrupt
79
+ # We expect folks to Ctrl-c to stop the server so don't barf at them
80
+ puts "\nStopping Blacklight (Rails server)"
60
81
  end
61
82
  end
62
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.22.0
4
+ version: 6.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: exe
19
19
  cert_chain: []
20
- date: 2020-01-29 00:00:00.000000000 Z
20
+ date: 2022-07-14 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -289,20 +289,6 @@ dependencies:
289
289
  - - ">="
290
290
  - !ruby/object:Gem::Version
291
291
  version: '0'
292
- - !ruby/object:Gem::Dependency
293
- name: coveralls
294
- requirement: !ruby/object:Gem::Requirement
295
- requirements:
296
- - - ">="
297
- - !ruby/object:Gem::Version
298
- version: '0'
299
- type: :development
300
- prerelease: false
301
- version_requirements: !ruby/object:Gem::Requirement
302
- requirements:
303
- - - ">="
304
- - !ruby/object:Gem::Version
305
- version: '0'
306
292
  - !ruby/object:Gem::Dependency
307
293
  name: simplecov
308
294
  requirement: !ruby/object:Gem::Requirement
@@ -356,6 +342,11 @@ executables: []
356
342
  extensions: []
357
343
  extra_rdoc_files: []
358
344
  files:
345
+ - ".docker/app/Dockerfile"
346
+ - ".docker/app/entrypoint.sh"
347
+ - ".dockerignore"
348
+ - ".env"
349
+ - ".github/workflows/ruby.yml"
359
350
  - ".gitignore"
360
351
  - ".hound.yml"
361
352
  - ".jshintrc"
@@ -363,7 +354,6 @@ files:
363
354
  - ".rubocop.yml"
364
355
  - ".rubocop_todo.yml"
365
356
  - ".solr_wrapper.yml"
366
- - ".travis.yml"
367
357
  - ".yardopts"
368
358
  - Gemfile
369
359
  - LICENSE
@@ -478,6 +468,7 @@ files:
478
468
  - app/presenters/blacklight/rendering/terminator.rb
479
469
  - app/presenters/blacklight/show_presenter.rb
480
470
  - app/services/blacklight/field_retriever.rb
471
+ - app/services/blacklight/search_params_yaml_coder.rb
481
472
  - app/values/blacklight/types.rb
482
473
  - app/views/_flash_msg.html.erb
483
474
  - app/views/_user_util_links.html.erb
@@ -578,6 +569,7 @@ files:
578
569
  - db/migrate/20140202020201_create_searches.rb
579
570
  - db/migrate/20140202020202_create_bookmarks.rb
580
571
  - db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb
572
+ - docker-compose.yml
581
573
  - lib/blacklight.rb
582
574
  - lib/blacklight/abstract_repository.rb
583
575
  - lib/blacklight/configuration.rb
@@ -785,7 +777,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
785
777
  - !ruby/object:Gem::Version
786
778
  version: '0'
787
779
  requirements: []
788
- rubygems_version: 3.0.3
780
+ rubygems_version: 3.1.6
789
781
  signing_key:
790
782
  specification_version: 4
791
783
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
data/.travis.yml DELETED
@@ -1,53 +0,0 @@
1
- dist: bionic
2
- addons:
3
- chrome: stable
4
- language: ruby
5
- sudo: false
6
-
7
- notifications:
8
- email: false
9
-
10
- rvm:
11
- - 2.5.7
12
-
13
- matrix:
14
- include:
15
- - rvm: 2.5.7
16
- env: "RAILS_VERSION=5.2.0"
17
- - rvm: 2.4.4
18
- env: "RAILS_VERSION=4.2.10"
19
- - rvm: 2.2.10
20
- env: "RAILS_VESION=5.0.7"
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\""
25
- allow_failures:
26
- - rvm: jruby-9.1.17.0
27
- - rvm: 2.4.4
28
- env: "RAILS_VERSION=4.2.10"
29
- - rvm: 2.2.10
30
- env: "RAILS_VESION=5.0.7"
31
- fast_finish: true
32
-
33
- before_install:
34
- - gem update --system
35
- - gem install bundler
36
- - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
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"
43
-
44
- notifications:
45
- irc: "irc.freenode.org#blacklight"
46
- email:
47
- - blacklight-commits@googlegroups.com
48
-
49
- global_env:
50
- - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
51
- - ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-test'
52
-
53
- jdk: openjdk11