blacklight-gallery 2.0.0 → 3.0.1
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/.github/workflows/ruby.yml +45 -0
- data/README.md +1 -1
- data/app/assets/javascripts/blacklight_gallery/default.js +0 -1
- data/app/assets/javascripts/blacklight_gallery/masonry.js +1 -1
- data/app/assets/javascripts/blacklight_gallery/osd_viewer.js +1 -1
- data/app/assets/javascripts/blacklight_gallery/slideshow.js +1 -2
- data/app/assets/stylesheets/blacklight_gallery/_gallery.scss +11 -17
- data/app/assets/stylesheets/blacklight_gallery/_masonry.scss +55 -24
- data/app/assets/stylesheets/blacklight_gallery/_slideshow.scss +5 -3
- data/app/components/blacklight/gallery/document_component.html.erb +21 -0
- data/app/components/blacklight/gallery/document_component.rb +11 -0
- data/app/components/blacklight/gallery/slideshow_component.html.erb +12 -0
- data/app/components/blacklight/gallery/slideshow_component.rb +40 -0
- data/app/components/blacklight/gallery/slideshow_preview_component.html.erb +5 -0
- data/app/components/blacklight/gallery/slideshow_preview_component.rb +28 -0
- data/app/helpers/blacklight/gallery_helper.rb +0 -38
- data/app/models/concerns/blacklight/gallery/openseadragon_solr_document.rb +1 -1
- data/app/views/catalog/_document_gallery.html.erb +4 -3
- data/app/views/catalog/_document_masonry.html.erb +2 -3
- data/app/views/catalog/_document_slideshow.html.erb +26 -5
- data/app/views/catalog/_slideshow_modal.html.erb +2 -3
- data/blacklight-gallery.gemspec +4 -4
- data/config/locales/blacklight-gallery.ar.yml +7 -4
- data/lib/blacklight/gallery/engine.rb +0 -1
- data/lib/blacklight/gallery/version.rb +1 -1
- data/lib/generators/blacklight_gallery/install_generator.rb +10 -3
- data/lib/generators/blacklight_gallery/templates/blacklight_gallery.js +2 -1
- data/spec/components/blacklight/gallery/document_component_spec.rb +46 -0
- data/spec/components/blacklight/gallery/slideshow_component_spec.rb +67 -0
- data/spec/features/gallery_spec.rb +3 -4
- data/spec/features/masonry_spec.rb +2 -3
- data/spec/features/slideshow_spec.rb +0 -2
- data/spec/models/concerns/openseadragon_solr_document_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -11
- data/spec/views/catalog/_document_slideshow.html.erb_spec.rb +15 -5
- metadata +43 -39
- data/.travis.yml +0 -21
- data/app/views/catalog/_grid_slideshow.html.erb +0 -11
- data/app/views/catalog/_index_gallery.html.erb +0 -14
- data/app/views/catalog/_index_masonry.html.erb +0 -8
- data/app/views/catalog/_index_masonry_default.html.erb +0 -1
- data/app/views/catalog/_index_slideshow.html.erb +0 -11
- data/app/views/catalog/_slideshow.html.erb +0 -23
- data/spec/helpers/blacklight/gallery_helper_spec.rb +0 -110
- data/spec/views/catalog/_index_gallery.html.erb_spec.rb +0 -22
- data/spec/views/catalog/_index_masonry.html.erb_spec.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ec7eb8df1dac5b37f61ab01b6ab16d5a42e9b40692f86286a1a3480041f0633
|
4
|
+
data.tar.gz: 8f15749eee6522bf77e3b8406c845fdf2ffa220249c6f2054a0053389d68ba75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a740861b723008f04f1cb80c1705c040727ba4a732484f4035493a5ecb5ccb0b3a012ceaa555245c895d3775a5539610855e5df826400a70f785e96e1ab3ed5
|
7
|
+
data.tar.gz: 4785d69541407fb35631d8db774369527494ff5e03acd04357ea5565ea1be9a691b012df67b9c430e8fb697461abf3b15706985b3690f889495b65f626616877
|
@@ -0,0 +1,45 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
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]
|
34
|
+
env:
|
35
|
+
RAILS_VERSION: ${{ matrix.rails_version }}
|
36
|
+
steps:
|
37
|
+
- uses: actions/checkout@v2
|
38
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
39
|
+
uses: ruby/setup-ruby@v1
|
40
|
+
with:
|
41
|
+
ruby-version: ${{ matrix.ruby }}
|
42
|
+
- name: Install dependencies with Rails ${{ matrix.rails_version }}
|
43
|
+
run: bundle install
|
44
|
+
- name: Run tests
|
45
|
+
run: bundle exec rake
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Blacklight::Gallery
|
2
|
-
[](http://badge.fury.io/rb/blacklight-gallery)
|
2
|
+
[](http://badge.fury.io/rb/blacklight-gallery) [](https://travis-ci.org/projectblacklight/blacklight-gallery)
|
3
3
|
|
4
4
|
Gallery views for Blacklight search results
|
5
5
|
|
@@ -1 +1 @@
|
|
1
|
-
//= require openseadragon/rails
|
1
|
+
//= require openseadragon/rails
|
@@ -85,7 +85,6 @@
|
|
85
85
|
});
|
86
86
|
|
87
87
|
$(document).on('click', '[data-slide], [data-slide-to]', function(e) {
|
88
|
-
|
89
88
|
e.preventDefault();
|
90
89
|
|
91
90
|
pos = parseInt($(this).attr('data-slide-to'), 10) || $(this).attr('data-slide');
|
@@ -122,5 +121,5 @@
|
|
122
121
|
|
123
122
|
|
124
123
|
Blacklight.onLoad(function() {
|
125
|
-
$('
|
124
|
+
$('.documents-slideshow').slideshow();
|
126
125
|
});
|
@@ -1,21 +1,7 @@
|
|
1
|
-
.gallery {
|
2
|
-
|
3
|
-
display: -webkit-box;
|
4
|
-
display: -moz-box;
|
5
|
-
display: -ms-flexbox;
|
6
|
-
display: -webkit-flex;
|
7
|
-
display: flex;
|
8
|
-
flex-flow: row wrap;
|
9
|
-
-webkit-flex-wrap: wrap;
|
10
|
-
|
11
|
-
|
1
|
+
.documents-gallery {
|
12
2
|
.document {
|
13
3
|
border-bottom: none;
|
14
|
-
|
15
|
-
-webkit-box-flex: 1;
|
16
|
-
-moz-box-flex: 1;
|
17
|
-
-ms-flex: 1;
|
18
|
-
flex: 1;
|
4
|
+
display: flex;
|
19
5
|
|
20
6
|
min-height: 250px;
|
21
7
|
-webkit-flex: 1 0 250px;
|
@@ -39,12 +25,20 @@
|
|
39
25
|
|
40
26
|
.document-metadata {
|
41
27
|
dt, dd {
|
28
|
+
flex: 0 0 100%;
|
29
|
+
max-width: 100%;
|
30
|
+
padding-left: 0;
|
31
|
+
padding-right: 0;
|
42
32
|
float: none;
|
43
33
|
width: auto;
|
44
34
|
clear: none;
|
45
35
|
text-align: left;
|
46
36
|
margin: 0;
|
47
37
|
}
|
48
|
-
|
49
38
|
}
|
50
39
|
}
|
40
|
+
|
41
|
+
.documents-gallery, .documents-masonry, .documents-slideshow {
|
42
|
+
padding-bottom: $spacer;
|
43
|
+
border-bottom: $pagination-border-width solid $pagination-border-color
|
44
|
+
}
|
@@ -1,35 +1,66 @@
|
|
1
|
-
.masonry {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
.documents-masonry {
|
2
|
+
.document {
|
3
|
+
&:hover, &:focus {
|
4
|
+
.caption-area {
|
5
|
+
display: block;
|
6
|
+
}
|
7
|
+
}
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
margin-bottom: $spacer;
|
10
|
+
position: relative;
|
11
|
+
width: auto;
|
12
|
+
|
13
|
+
.thumbnail-container {
|
14
|
+
position: relative;
|
15
|
+
min-height: 200px;
|
16
|
+
min-width: 200px;
|
12
17
|
}
|
13
18
|
|
14
|
-
.caption {
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
.caption-area {
|
20
|
+
// styling for documents without thumbnails
|
21
|
+
&:first-child {
|
22
|
+
display: block;
|
23
|
+
max-height: 100%;
|
24
|
+
background-color: rgba(0,0,0,0.7) !important;
|
18
25
|
}
|
19
|
-
|
20
|
-
|
21
|
-
|
26
|
+
@extend .bg-dark;
|
27
|
+
@extend .text-white;
|
28
|
+
display: none;
|
29
|
+
padding: 5px 7px;
|
30
|
+
background-color: rgba(0,0,0,0.5) !important;
|
22
31
|
position: absolute;
|
23
32
|
bottom: 0;
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
33
|
+
overflow-x: hidden;
|
34
|
+
overflow-y: scroll;
|
35
|
+
max-height: 75%;
|
36
|
+
}
|
37
|
+
|
38
|
+
.document-counter {
|
28
39
|
display: none;
|
29
40
|
}
|
30
|
-
|
31
|
-
|
32
|
-
|
41
|
+
|
42
|
+
.index_title {
|
43
|
+
@extend .h6;
|
44
|
+
a, a:hover, a:visited, a:active {
|
45
|
+
@extend .stretched-link;
|
46
|
+
color: $gray-300
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
.document-metadata {
|
51
|
+
dt {
|
52
|
+
color: $gray-300;
|
53
|
+
}
|
54
|
+
dt, dd {
|
55
|
+
flex: 0 0 100%;
|
56
|
+
max-width: 100%;
|
57
|
+
padding-left: 0;
|
58
|
+
padding-right: 0;
|
59
|
+
float: none;
|
60
|
+
width: auto;
|
61
|
+
clear: none;
|
62
|
+
text-align: left;
|
63
|
+
margin: 0;
|
33
64
|
}
|
34
65
|
}
|
35
66
|
}
|
@@ -101,7 +101,7 @@ $gray-dark: #343a40 !default;
|
|
101
101
|
}
|
102
102
|
}
|
103
103
|
|
104
|
-
.slideshow
|
104
|
+
.documents-slideshow {
|
105
105
|
margin: 0;
|
106
106
|
|
107
107
|
.info {
|
@@ -120,10 +120,12 @@ $gray-dark: #343a40 !default;
|
|
120
120
|
}
|
121
121
|
|
122
122
|
.grid {
|
123
|
+
display: flex;
|
124
|
+
flex-wrap: wrap;
|
123
125
|
$square-thumb-size: 100px;
|
124
126
|
|
125
127
|
.document {
|
126
|
-
|
128
|
+
display: flex;
|
127
129
|
margin-right: 20px;
|
128
130
|
margin-top: 0;
|
129
131
|
padding-top: 0;
|
@@ -140,7 +142,7 @@ $gray-dark: #343a40 !default;
|
|
140
142
|
position: relative;
|
141
143
|
width: $square-thumb-size;
|
142
144
|
|
143
|
-
|
145
|
+
img {
|
144
146
|
height: $square-thumb-size;
|
145
147
|
max-height: none;
|
146
148
|
max-width: none;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= render(Blacklight::DocumentComponent.new(classes: 'col', component: :div, document: @document, counter: @counter)) do |component| %>
|
2
|
+
<% component.with(:body) do %>
|
3
|
+
<div class="thumbnail-container">
|
4
|
+
<% # Checking if #thumbnail takes any args before passing image_options. #thumbnail did not take any args in version 7.14.1 and earlier %>
|
5
|
+
<%= method(:thumbnail).arity.zero? ? thumbnail : thumbnail(class: 'img-thumbnail') %>
|
6
|
+
|
7
|
+
<div class="caption-area">
|
8
|
+
<div class="caption container">
|
9
|
+
<header class="documentHeader row">
|
10
|
+
<%= content_tag @title_component, class: 'index_title document-title-heading' do %>
|
11
|
+
<%= before_title %><%= title %><%= after_title %>
|
12
|
+
<% end %>
|
13
|
+
<%= actions %>
|
14
|
+
</header>
|
15
|
+
<%= content %>
|
16
|
+
<%= metadata %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="item<%= ' active' if @counter == 1 %>">
|
2
|
+
<div class="frame">
|
3
|
+
<%= slideshow_tag %>
|
4
|
+
<div class="caption">
|
5
|
+
<%= presenter.heading %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<span class="counter">
|
9
|
+
<%= t :'blacklight_gallery.catalog.modal_slideshow.counter', counter: @counter, count: count %>
|
10
|
+
</span>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
module Gallery
|
5
|
+
class SlideshowComponent < Blacklight::DocumentComponent
|
6
|
+
def count
|
7
|
+
@document.response&.total
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_document_class(*args)
|
11
|
+
@view_context.render_document_class(*args)
|
12
|
+
end
|
13
|
+
|
14
|
+
def presenter
|
15
|
+
@presenter ||= @view_context.document_presenter(@document)
|
16
|
+
end
|
17
|
+
|
18
|
+
def slideshow_tag(image_options = { alt: '' })
|
19
|
+
if view_config.slideshow_method
|
20
|
+
method_name = view_config.slideshow_method
|
21
|
+
@view_context.send(method_name, @document, image_options)
|
22
|
+
elsif view_config.slideshow_field
|
23
|
+
url = slideshow_image_url
|
24
|
+
|
25
|
+
image_tag url, image_options if url.present?
|
26
|
+
elsif presenter.thumbnail.exists?
|
27
|
+
presenter.thumbnail.thumbnail_tag(image_options, url_options.reverse_merge(suppress_link: true))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def slideshow_image_url
|
32
|
+
@document.first(view_config.slideshow_field) if @document.has? view_config.slideshow_field
|
33
|
+
end
|
34
|
+
|
35
|
+
def view_config
|
36
|
+
presenter.thumbnail.view_config
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= render(Blacklight::DocumentComponent.new(classes: 'slideshow-preview-thumbnail', component: :div, document: @document, counter: @counter)) do |component| %>
|
2
|
+
<% component.with(:body) do %>
|
3
|
+
<%= @view_context.link_to_document(@document, thumbnail, class: 'thumbnail', data: { 'context-href': nil, 'slide-to': @document_counter - 1, toggle: "modal", target: "#slideshow-modal" }) %>
|
4
|
+
<% end %>
|
5
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
module Gallery
|
5
|
+
class SlideshowPreviewComponent < Blacklight::DocumentComponent
|
6
|
+
with_collection_parameter :document
|
7
|
+
|
8
|
+
def initialize(document:, document_counter: nil, **args)
|
9
|
+
super(document: document, document_counter: document_counter, **args)
|
10
|
+
@document_counter = document_counter || @counter
|
11
|
+
end
|
12
|
+
|
13
|
+
def thumbnail
|
14
|
+
@thumbnail ||
|
15
|
+
(presenter.thumbnail.exists? && presenter.thumbnail.render({ alt: presenter.heading })) ||
|
16
|
+
content_tag(:div, t('.missing_image', scope: [:blacklight_gallery]), class: 'thumbnail thumbnail-placeholder')
|
17
|
+
end
|
18
|
+
|
19
|
+
def presenter
|
20
|
+
@presenter ||= @view_context.document_presenter(@document)
|
21
|
+
end
|
22
|
+
|
23
|
+
def render_document_class(*args)
|
24
|
+
@view_context.render_document_class(*args)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,42 +1,4 @@
|
|
1
1
|
module Blacklight
|
2
2
|
module GalleryHelper
|
3
|
-
def render_gallery_collection documents
|
4
|
-
index = -1
|
5
|
-
documents.map do |object|
|
6
|
-
index += 1
|
7
|
-
template = gallery_wrapper_template(object)
|
8
|
-
template.render(self, {document: object, document_counter: index}) if template
|
9
|
-
|
10
|
-
end.join().html_safe
|
11
|
-
end
|
12
|
-
|
13
|
-
def render_slideshow_tag(document, image_options = {}, url_options = {})
|
14
|
-
if blacklight_config.view_config(document_index_view_type).slideshow_method
|
15
|
-
method_name = blacklight_config.view_config(document_index_view_type).slideshow_method
|
16
|
-
send(method_name, document, image_options)
|
17
|
-
elsif blacklight_config.view_config(document_index_view_type).slideshow_field
|
18
|
-
url = slideshow_image_url(document)
|
19
|
-
|
20
|
-
image_tag url, image_options if url.present?
|
21
|
-
elsif has_thumbnail?(document)
|
22
|
-
render_thumbnail_tag(document, image_options, url_options.reverse_merge(suppress_link: true))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def slideshow_image_url(document)
|
27
|
-
if document.has? blacklight_config.view_config(document_index_view_type).slideshow_field
|
28
|
-
document.first(blacklight_config.view_config(document_index_view_type).slideshow_field)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def gallery_wrapper_template(object)
|
33
|
-
format = document_partial_name(object, nil)
|
34
|
-
['index_gallery_%{format}_wrapper', 'index_gallery'].each do |str|
|
35
|
-
partial = str % { format: format }
|
36
|
-
logger.debug "Looking for gallery document wrapper #{partial}"
|
37
|
-
template = lookup_context.find_all(partial, lookup_context.prefixes, true, [:document, :document_counter], {}).first
|
38
|
-
return template if template
|
39
|
-
end
|
40
|
-
end
|
41
3
|
end
|
42
4
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Blacklight::Gallery::OpenseadragonSolrDocument
|
2
2
|
def to_openseadragon(view_config = nil)
|
3
|
-
return unless view_config
|
3
|
+
return unless view_config&.tile_source_field &&
|
4
4
|
fetch(view_config.tile_source_field, nil)
|
5
5
|
Array(fetch(view_config.tile_source_field))
|
6
6
|
end
|