blacklight-gallery 3.3.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 293ba63382be492c6f0e70f34542b75cd37b3c21904ef7f4482ae90e59709a69
4
- data.tar.gz: 9f930cbb7b02a7353bb98aec29393b7f0bee7febefcff4b53e919ae294becd25
3
+ metadata.gz: 3920e96baf118137203d9e67fafc19564991399b4cf2082d8fc0409e0095982a
4
+ data.tar.gz: 7435e227a144f08d25b1748f1a1d3eddf9ef958e7b25a5e8460fd1e6a8a98c64
5
5
  SHA512:
6
- metadata.gz: e18434c888670a0925c24fbfd7ad0ca57c341a40dc91ea138bed735ed208ef236989509b76d6971a8856a8126a9b7282fa3c480fbf98677bd624df4d71c62892
7
- data.tar.gz: 9caafa8f14d044098c1d1b7c94d221b6398004a63d72bd580992498f12ca580882e1417977e3e64b2d61d52ae2caf9d9c79b3a8a1e2c4cc121d93ae5cc7780b0
6
+ metadata.gz: 9f19253bc16e2ed53b6d5b1d6a96f9df64cc0708cc0197b01b3031a877a0bf89427212036450c6d0acaecf4b647f8b79c3f09cbe9ddfbd43f5463be93dd478b5
7
+ data.tar.gz: 94d41d45a7e516a84634607d891580bd8dc66f2347f4604633643bd94df3a80f6695224b5559f5a4bc974a32b78c9464da361870351c5b44525eb2fe3dbf0884
@@ -11,26 +11,15 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- rails_version: [6.1.1]
15
- ruby: [2.7, 3.0]
16
- env:
17
- RAILS_VERSION: ${{ matrix.rails_version }}
18
- steps:
19
- - uses: actions/checkout@v2
20
- - name: Set up Ruby ${{ matrix.ruby }}
21
- uses: ruby/setup-ruby@v1
22
- with:
23
- ruby-version: ${{ matrix.ruby }}
24
- - name: Install dependencies with Rails ${{ matrix.rails_version }}
25
- run: bundle install
26
- - name: Run tests
27
- run: bundle exec rake
28
- test_rails52:
29
- runs-on: ubuntu-latest
30
- strategy:
31
- matrix:
32
- rails_version: [5.2.4.4, 6.0.3.4]
33
- ruby: [2.7]
14
+ rails_version: [6.1.4.6]
15
+ ruby: ['2.7', '3.0']
16
+ include:
17
+ - rails_version: 7.0.2.2
18
+ ruby: '3.0'
19
+ - rails_version: 5.2.4.4
20
+ ruby: '2.7'
21
+ - rails_version: 6.0.3.4
22
+ ruby: '2.7'
34
23
  env:
35
24
  RAILS_VERSION: ${{ matrix.rails_version }}
36
25
  steps:
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Blacklight::Gallery
2
- [![Gem Version](https://badge.fury.io/rb/blacklight-gallery.svg)](http://badge.fury.io/rb/blacklight-gallery) [![Build Status](https://travis-ci.org/projectblacklight/blacklight-gallery.svg?branch=master)](https://travis-ci.org/projectblacklight/blacklight-gallery)
2
+ [![Gem Version](https://badge.fury.io/rb/blacklight-gallery.svg)](http://badge.fury.io/rb/blacklight-gallery) [![CI](https://github.com/projectblacklight/blacklight-gallery/actions/workflows/ruby.yml/badge.svg)](https://github.com/projectblacklight/blacklight-gallery/actions/workflows/ruby.yml)
3
3
 
4
4
  Gallery views for Blacklight search results
5
5
 
@@ -1 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/></svg>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 25 24">
3
+ <path d="m1 9v6h-1v-6zm6-3h12v13h-13v-13zm11 1h-11v11h11zm-13 0v11h-1v-11zm-2 1v9h-1v-9zm18-1v11h-1v-11zm2 1v8h-1v-8zm2 1v5h-1v-5z"/>
4
+ </svg>
@@ -2,9 +2,7 @@
2
2
  .document {
3
3
  border-bottom: none;
4
4
  display: flex;
5
-
6
5
  min-height: 250px;
7
- -webkit-flex: 1 0 250px;
8
6
  }
9
7
 
10
8
  .caption {
@@ -12,8 +12,10 @@ $gray-dark: #343a40 !default;
12
12
 
13
13
  .modal-header {
14
14
  border-bottom: none;
15
+ padding: 0.5rem 1rem;
15
16
 
16
17
  .close {
18
+ font-size: 2.5rem;
17
19
  color: white;
18
20
  }
19
21
  }
@@ -57,11 +59,16 @@ $gray-dark: #343a40 !default;
57
59
 
58
60
  .carousel-control {
59
61
  position: absolute;
60
- top: 40%;
62
+ top: 0;
61
63
  height: 100%;
62
64
  width: 50px;
65
+
63
66
  .blacklight-icons {
67
+ display: block;
68
+ position: absolute;
64
69
  width: 3rem;
70
+ top: calc(50% - 3rem);
71
+
65
72
  svg {
66
73
  height: 3rem;
67
74
  width: 3rem;
@@ -77,18 +84,24 @@ $gray-dark: #343a40 !default;
77
84
  }
78
85
 
79
86
  .caption {
80
- font-size: 14px;
81
- color: $gray-light;
87
+ font-size: 1rem;
82
88
  margin: 10px auto;
83
89
  min-width: 200px;
84
90
  max-width: 50%;
91
+ a {
92
+ color: $gray-light;
93
+ text-decoration: underline;
94
+ &:hover, &:focus {
95
+ color: #ffffff;
96
+ }
97
+ }
85
98
  }
86
99
 
87
100
  .counter {
88
101
  border-radius: 12px;
89
102
  border: 1px solid $gray-light;
90
103
  color: $gray-light;
91
- font-size: 12px;
104
+ font-size: 1rem;
92
105
  overflow: auto;
93
106
  padding: 4px 10px;
94
107
  text-align: center;
@@ -97,6 +110,8 @@ $gray-dark: #343a40 !default;
97
110
  .controls {
98
111
  svg {
99
112
  fill: $gray-light;
113
+ width: 32px;
114
+ height: 32px;
100
115
  }
101
116
  }
102
117
  }
@@ -2,7 +2,7 @@
2
2
  <div class="frame">
3
3
  <%= slideshow_tag %>
4
4
  <div class="caption">
5
- <%= presenter.heading %>
5
+ <%= helpers.link_to_document(presenter.document, presenter.heading, counter: @counter) %>
6
6
  </div>
7
7
 
8
8
  <span class="counter">
@@ -20,11 +20,11 @@ module Blacklight
20
20
  method_name = view_config.slideshow_method
21
21
  @view_context.send(method_name, @document, image_options)
22
22
  elsif view_config.slideshow_field
23
- url = slideshow_image_url
24
-
25
- image_tag url, image_options if url.present?
23
+ return if slideshow_image_url.blank?
24
+ image = image_tag slideshow_image_url, image_options
25
+ helpers.link_to_document(@document, image)
26
26
  elsif presenter.thumbnail.exists?
27
- presenter.thumbnail.thumbnail_tag(image_options, url_options.reverse_merge(suppress_link: true))
27
+ presenter.thumbnail.thumbnail_tag(image_options)
28
28
  end
29
29
  end
30
30
 
@@ -1,7 +1,24 @@
1
1
  module Blacklight
2
2
  module OpenseadragonHelper
3
+ # Somewhat arbitrary number; the only important thing is that
4
+ # it is bigger than the number of embedded viewers on a page
5
+ ID_COUNTER_MAX = (2**20) - 1
6
+
7
+ # Mint a (sufficiently) unique identifier, so we can associate
8
+ # the expand/collapse control with labels
9
+ def self.mint_id
10
+ @id_counter = ((@id_counter || 0) + 1) % ID_COUNTER_MAX
11
+
12
+ # We convert the ID to hex for markup compactness
13
+ @id_counter.to_s(16)
14
+ end
15
+
3
16
  def osd_container_class
4
17
  "col-md-6"
5
18
  end
19
+
20
+ def osd_html_id_prefix
21
+ "osd-#{Blacklight::OpenseadragonHelper.mint_id}".to_param
22
+ end
6
23
  end
7
- end
24
+ end
@@ -1,13 +1,16 @@
1
- <% image = document.to_openseadragon(blacklight_config.view_config(:show)) %>
1
+ <%
2
+ image = document.to_openseadragon(blacklight_config.view_config(:show))
3
+ id_prefix = osd_html_id_prefix
4
+ %>
2
5
  <%
3
6
  osd_config = {
4
7
  crossOriginPolicy: false,
5
- zoomInButton: "osd-zoom-in",
6
- zoomOutButton: "osd-zoom-out",
7
- homeButton: "osd-home",
8
- fullPageButton: "osd-full-page",
9
- nextButton: "osd-next",
10
- previousButton: "osd-previous"
8
+ zoomInButton: "#{id_prefix}-zoom-in",
9
+ zoomOutButton: "#{id_prefix}-zoom-out",
10
+ homeButton: "#{id_prefix}-home",
11
+ fullPageButton: "#{id_prefix}-full-page",
12
+ nextButton: "#{id_prefix}-next",
13
+ previousButton: "#{id_prefix}-previous"
11
14
  }
12
15
 
13
16
  osd_config_referencestrip = {
@@ -26,16 +29,16 @@
26
29
  <div class="col-md-6 pagination">
27
30
  <% if count > 1 %>
28
31
  <% osd_config = osd_config_referencestrip.merge(osd_config) %>
29
- <a id="osd-previous"><%= blacklight_icon('chevron_left') %></a>
30
- <span id="osd-page">1</span> of <%= count %>
31
- <a id="osd-next"><%= blacklight_icon('chevron_right') %></a>
32
+ <a id="<%= id_prefix %>-previous"><%= blacklight_icon('chevron_left') %></a>
33
+ <span id="<%= id_prefix %>-page">1</span> of <%= count %>
34
+ <a id="<%= id_prefix %>-next"><%= blacklight_icon('chevron_right') %></a>
32
35
  <% end %>
33
36
  </div>
34
37
  <div class="col-md-6 controls">
35
- <a id="osd-zoom-in"><%= blacklight_icon('add_circle') %></a>
36
- <a id="osd-zoom-out"><%= blacklight_icon('remove_circle') %></a>
37
- <a id="osd-home"><%= blacklight_icon('resize_small') %></a>
38
- <a id="osd-full-page"><%= blacklight_icon('custom_fullscreen') %></a>
38
+ <a id="<%= id_prefix %>-zoom-in"><%= blacklight_icon('add_circle') %></a>
39
+ <a id="<%= id_prefix %>-zoom-out"><%= blacklight_icon('remove_circle') %></a>
40
+ <a id="<%= id_prefix %>-home"><%= blacklight_icon('resize_small') %></a>
41
+ <a id="<%= id_prefix %>-full-page"><%= blacklight_icon('custom_fullscreen') %></a>
39
42
  </div>
40
43
  </div>
41
44
  <%= openseadragon_picture_tag image, class: 'osd-image row', data: { openseadragon: osd_config } %>
@@ -17,9 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "rails", '>= 5.1', '< 7'
20
+ spec.add_dependency "rails", '>= 5.1', '< 8'
21
21
  spec.add_dependency 'blacklight', '~> 7.17'
22
- spec.add_dependency "bootstrap", "~> 4.0"
23
22
 
24
23
  spec.add_development_dependency "rake"
25
24
  spec.add_development_dependency 'sqlite3'
@@ -1,5 +1,5 @@
1
1
  module Blacklight
2
2
  module Gallery
3
- VERSION = "3.3.1"
3
+ VERSION = "4.0.0"
4
4
  end
5
5
  end
@@ -16,10 +16,9 @@ module BlacklightGallery
16
16
 
17
17
  def configuration
18
18
  inject_into_file 'app/controllers/catalog_controller.rb', after: "configure_blacklight do |config|" do
19
- "\n config.view.gallery.document_component = Blacklight::Gallery::DocumentComponent" \
20
- "\n # config.view.gallery.classes = 'row-cols-2 row-cols-md-3'" \
21
- "\n config.view.masonry.document_component = Blacklight::Gallery::DocumentComponent" \
22
- "\n config.view.slideshow.document_component = Blacklight::Gallery::SlideshowComponent" \
19
+ "\n config.view.gallery(document_component: Blacklight::Gallery::DocumentComponent)" \
20
+ "\n config.view.masonry(document_component: Blacklight::Gallery::DocumentComponent)" \
21
+ "\n config.view.slideshow(document_component: Blacklight::Gallery::SlideshowComponent)" \
23
22
  "\n config.show.tile_source_field = :content_metadata_image_iiif_info_ssm" \
24
23
  "\n config.show.partials.insert(1, :openseadragon)"
25
24
  end
@@ -15,20 +15,30 @@ RSpec.describe Blacklight::Gallery::SlideshowComponent, type: :component do
15
15
  Capybara::Node::Simple.new(render)
16
16
  end
17
17
 
18
- let(:blacklight_config) { Blacklight::Configuration.new }
18
+ let(:document) do
19
+ SolrDocument.new(
20
+ id: 'x',
21
+ )
22
+ end
23
+
19
24
  let(:presenter) { Blacklight::IndexPresenter.new(document, view_context, blacklight_config) }
20
25
 
21
26
  before do
27
+ allow(view_context).to receive(:current_search_session).and_return(nil)
28
+ allow(view_context).to receive(:search_session).and_return({})
22
29
  allow(view_context).to receive(:blacklight_config).and_return(blacklight_config)
23
30
  end
24
31
 
25
32
  describe '#slideshow_tag' do
26
33
  subject { rendered }
27
34
 
28
- let(:document) { SolrDocument.new({}) }
29
-
30
35
  context 'with a slideshow method' do
31
- let(:blacklight_config) { Blacklight::Configuration.new.tap { |config| config.index.slideshow_method = :xyz } }
36
+ let(:blacklight_config) do
37
+ Blacklight::Configuration.new.tap do |config|
38
+ config.index.slideshow_method = :xyz
39
+ config.track_search_session = false
40
+ end
41
+ end
32
42
 
33
43
  it 'calls the provided slideshow method' do
34
44
  expect(view_context).to receive_messages(xyz: 'some-slideshow')
@@ -41,26 +51,39 @@ RSpec.describe Blacklight::Gallery::SlideshowComponent, type: :component do
41
51
  end
42
52
  end
43
53
 
44
- context 'with a field' do
45
- let(:blacklight_config) { Blacklight::Configuration.new.tap { |config| config.index.slideshow_field = :xyz } }
46
- let(:document) { SolrDocument.new({ xyz: 'http://example.com/some.jpg' }) }
54
+ context 'with a slideshow field' do
55
+ let(:blacklight_config) do
56
+ Blacklight::Configuration.new.tap do |config|
57
+ config.index.slideshow_field = :xyz
58
+ config.track_search_session = false
59
+ end
60
+ end
61
+ let(:document) { SolrDocument.new({ xyz: 'http://example.com/some.jpg', id: 'x' }) }
47
62
 
48
63
  it { is_expected.to have_selector 'img[src="http://example.com/some.jpg"]' }
49
64
 
50
65
  context 'without data in the field' do
51
- let(:document) { SolrDocument.new({}) }
66
+ let(:document) { SolrDocument.new({id: 'x'}) }
52
67
 
53
68
  it { is_expected.not_to have_selector 'img' }
54
69
  end
55
70
  end
56
71
 
57
- context 'with nothing configured' do
72
+ context 'with no view_config' do
73
+ let(:blacklight_config) { Blacklight::Configuration.new.tap { |config|
74
+ config.track_search_session = false
75
+ } }
58
76
  it { is_expected.not_to have_selector 'img' }
59
77
  end
60
78
 
61
79
  context 'falling back to a thumbnail' do
62
- let(:blacklight_config) { Blacklight::Configuration.new.tap { |config| config.index.thumbnail_field = :xyz } }
63
- let(:document) { SolrDocument.new({ xyz: 'http://example.com/thumb.jpg' }) }
80
+ let(:blacklight_config) do
81
+ Blacklight::Configuration.new.tap do |config|
82
+ config.index.thumbnail_field = :xyz
83
+ config.track_search_session = false
84
+ end
85
+ end
86
+ let(:document) { SolrDocument.new({ xyz: 'http://example.com/thumb.jpg', id: 'x' }) }
64
87
 
65
88
  it { is_expected.to have_selector 'img[src="http://example.com/thumb.jpg"]' }
66
89
  end
@@ -1 +0,0 @@
1
- gem 'sprockets', '< 4'
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "catalog/_document_slideshow.html.erb", :type => :view do
3
+ describe "catalog/_document_slideshow", :type => :view do
4
4
  let(:blacklight_config) do
5
5
  Blacklight::Configuration.new do |config|
6
6
  config.track_search_session = false
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe "catalog/openseadragon_default" do
4
4
  let(:document) { SolrDocument.new }
5
5
  let(:blacklight_config) { Blacklight::Configuration.new }
6
- let(:p) { "catalog/openseadragon_default.html.erb" }
6
+ let(:p) { "catalog/openseadragon_default" }
7
7
 
8
8
  before do
9
9
  allow(view).to receive_messages(blacklight_config: blacklight_config, openseadragon_picture_tag: "<img />")
@@ -14,9 +14,9 @@ describe "catalog/openseadragon_default" do
14
14
  render partial: p, locals: { document: document }
15
15
  expect(rendered).to have_selector ".openseadragon-container"
16
16
  end
17
-
17
+
18
18
  it "should support passing a container class" do
19
19
  render partial: p, locals: { document: document, osd_container_class: "custom-container" }
20
20
  expect(rendered).to have_selector ".custom-container"
21
21
  end
22
- end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-gallery
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-17 00:00:00.000000000 Z
11
+ date: 2022-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
32
+ version: '8'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: blacklight
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '7.17'
47
- - !ruby/object:Gem::Dependency
48
- name: bootstrap
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '4.0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '4.0'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: rake
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -339,7 +325,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
339
325
  - !ruby/object:Gem::Version
340
326
  version: '0'
341
327
  requirements: []
342
- rubygems_version: 3.2.3
328
+ rubygems_version: 3.2.32
343
329
  signing_key:
344
330
  specification_version: 4
345
331
  summary: Gallery display for Blacklight