blacklight-gallery 3.3.1 → 4.0.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 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