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.
- checksums.yaml +4 -4
- data/.docker/app/Dockerfile +28 -0
- data/.docker/app/entrypoint.sh +6 -0
- data/.dockerignore +3 -0
- data/.env +5 -0
- data/.github/workflows/ruby.yml +61 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/app/models/search.rb +2 -1
- data/app/services/blacklight/search_params_yaml_coder.rb +48 -0
- data/app/views/catalog/_facet_pagination.html.erb +2 -2
- data/app/views/catalog/_search_form.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/_thumbnail_default.html.erb +3 -3
- data/app/views/catalog/email.html.erb +3 -1
- data/app/views/catalog/email_success.html.erb +4 -2
- data/app/views/catalog/facet.html.erb +3 -1
- data/app/views/catalog/sms.html.erb +4 -1
- data/app/views/catalog/sms_success.html.erb +5 -2
- data/app/views/shared/_ajax_modal.html.erb +2 -2
- data/blacklight.gemspec +0 -1
- data/config/locales/blacklight.de.yml +60 -56
- data/config/locales/blacklight.en.yml +4 -0
- data/config/locales/blacklight.es.yml +4 -0
- data/config/locales/blacklight.fr.yml +4 -0
- data/config/locales/blacklight.it.yml +4 -0
- data/config/locales/blacklight.pt-BR.yml +4 -0
- data/config/locales/blacklight.sq.yml +1 -0
- data/config/locales/blacklight.zh.yml +1 -0
- data/docker-compose.yml +38 -0
- data/lib/blacklight/engine.rb +3 -1
- data/lib/blacklight/utils.rb +7 -3
- data/spec/models/search_spec.rb +35 -14
- data/spec/routing/catalog_routing_spec.rb +15 -0
- data/spec/spec_helper.rb +3 -8
- data/tasks/blacklight.rake +50 -29
- metadata +10 -18
- data/.travis.yml +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b214e0d7059ddd49b5406ed8e21d4c6b84cee26f4d0c84d626269690eff080d
|
4
|
+
data.tar.gz: 71a8fe0e8de23865a39746fb4fe21ac0f9bc9fa4e38b96ca216f1a846e838fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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"]
|
data/.dockerignore
ADDED
data/.env
ADDED
@@ -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
|
-
[](https://travis-ci.org/projectblacklight/blacklight) [](http://badge.fury.io/rb/blacklight) [](https://travis-ci.org/projectblacklight/blacklight) [](http://badge.fury.io/rb/blacklight) [](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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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-
|
2
|
+
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
3
|
+
<span aria-hidden="true">×</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-
|
2
|
+
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
3
|
+
<span aria-hidden="true">×</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-
|
6
|
+
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
7
|
+
<span aria-hidden="true">×</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
|
-
|
2
|
+
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
3
|
+
<span aria-hidden="true">×</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-
|
2
|
+
<button type="button" class="ajax-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
3
|
+
<span aria-hidden="true">×</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-
|
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: '« Erste'
|
5
5
|
last: 'Letzte »'
|
6
|
-
previous: '«
|
6
|
+
previous: '« Voherige'
|
7
7
|
next: 'Nächste »'
|
8
8
|
truncate: '…'
|
9
9
|
|
10
10
|
pagination_compact:
|
11
|
-
previous: '«
|
11
|
+
previous: '« Voherige'
|
12
12
|
next: 'Nächste »'
|
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: '
|
22
|
+
search_history: 'Suchverlauf'
|
23
23
|
|
24
|
-
welcome: '
|
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
|
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
|
42
|
-
action_confirm: '
|
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: '
|
46
|
-
success: '
|
47
|
-
failure: 'Entschuldigung, es gab ein Problem beim
|
48
|
-
need_login: 'Bitte melden Sie sich an, um Ihre Lesezeichen verwalten und
|
49
|
-
list_title: '
|
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: '
|
74
|
-
action_confirm: '
|
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
|
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
|
80
|
-
recent: '
|
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
|
-
|
87
|
-
email: '
|
88
|
-
sms: 'SMS
|
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: '
|
99
|
-
to: '
|
100
|
-
message: '
|
101
|
-
submit: '
|
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: "
|
117
|
+
success: "E-Mail verschickt"
|
115
118
|
|
116
119
|
errors:
|
117
120
|
to:
|
118
|
-
invalid: 'Sie müssen
|
119
|
-
blank: 'Sie müssen
|
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
|
125
|
+
title: 'SMS'
|
123
126
|
to: 'Telefonnummer:'
|
124
|
-
carrier: '
|
125
|
-
carrier_prompt: 'Bitte
|
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
|
134
|
+
success: "SMS verschickt"
|
132
135
|
errors:
|
133
136
|
to:
|
134
|
-
invalid: 'Sie müssen
|
135
|
-
blank: "Sie müssen die Telefonnummer eines Empfängers eingeben, um
|
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
|
138
|
-
invalid: "Sie müssen
|
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
|
141
|
-
back_to_bookmarks: '
|
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,
|
154
|
-
invalid_solr_id: "Entschuldigung, Sie einen nicht vorhandenen Datensatz angefordert
|
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
|
165
|
+
label: 'Ordnen nach %{field}'
|
162
166
|
submit: 'Ergebnisse ordnen'
|
163
167
|
form:
|
164
168
|
search_field:
|
165
169
|
label: 'Suchen in'
|
166
|
-
title: '
|
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: '
|
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
|
202
|
+
title: 'Sie suchten nach:'
|
199
203
|
label: '%{label}:'
|
200
204
|
remove:
|
201
|
-
value: '
|
202
|
-
label_value: '
|
203
|
-
start_over: '
|
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: "
|
218
|
+
present: "In Lesezeichen"
|
215
219
|
absent: "Lesezeichen"
|
216
220
|
inprogress: "Speichern..."
|
217
221
|
zero_results:
|
218
|
-
title: "
|
219
|
-
modify_search: "
|
220
|
-
use_fewer_keywords: "Benutzen Sie weniger
|
221
|
-
search_fields: "Sie haben
|
222
|
-
search_everything: "Suchen Sie
|
223
|
-
view_title: "
|
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: '
|
232
|
+
default: 'Eintrag'
|
229
233
|
|
230
|
-
did_you_mean: 'Meinten Sie
|
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'
|
data/docker-compose.yml
ADDED
@@ -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"
|
data/lib/blacklight/engine.rb
CHANGED
@@ -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 =
|
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
|
data/lib/blacklight/utils.rb
CHANGED
@@ -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
|
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
|
data/spec/models/search_spec.rb
CHANGED
@@ -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
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
expect(@search).to be_saved
|
39
|
+
search.save!
|
40
|
+
expect(search).to be_saved
|
24
41
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
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'
|
data/tasks/blacklight.rake
CHANGED
@@ -1,26 +1,54 @@
|
|
1
|
-
|
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 =
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
60
|
+
desc 'Index seed data in test app'
|
61
|
+
task seed: ['engine_cart:generate'] do
|
37
62
|
within_test_app do
|
38
|
-
system "
|
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 |
|
45
|
-
|
46
|
-
|
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
|
-
|
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.
|
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:
|
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.
|
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
|