blacklight 6.22.0 → 6.25.0

Sign up to get free protection for your applications and to get access to all the features.
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