pageflow-embedded-video 1.7.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +6 -0
- data/CHANGELOG.md +6 -6
- data/README.md +3 -3
- data/app/assets/javascript/pageflow/embedded_video/consent.js +41 -0
- data/app/assets/javascript/pageflow/embedded_video/page_type.js +41 -14
- data/app/assets/javascript/pageflow/embedded_video.js +1 -0
- data/app/assets/stylesheets/pageflow/embedded_video.scss +15 -0
- data/app/helpers/pageflow/embedded_video/consent_helper.rb +33 -0
- data/app/views/pageflow/embedded_video/page.html.erb +12 -4
- data/config/locales/de.yml +2 -0
- data/config/locales/en.yml +2 -0
- data/lib/pageflow/embedded_video/page_type.rb +4 -1
- data/lib/pageflow/embedded_video/plugin.rb +10 -0
- data/lib/pageflow/embedded_video/version.rb +1 -1
- data/lib/pageflow-embedded-video.rb +4 -0
- data/pageflow-embedded-video.gemspec +2 -2
- metadata +13 -11
- data/.travis.yml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f403dddb6b8a214e146199922addf412fb39de8e9f5b84b5ff53d639f3234fa
|
4
|
+
data.tar.gz: 163cab3bd1a89bebddc0c7bfa592aadbe45911658fd36c3dddb6ef42b4604a7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56823041b09bb58663993d15214cf8f8d531398060f5e1ca64e03c8ea0427d17390bf1c656b63cc85e5d2ee3f30e5c855892e790777ddc3cb595a6962729375f
|
7
|
+
data.tar.gz: 24909a4216df799209a3403a9d8be343b2cb9bf3b280387f30e47f0b8d3168daa4561614f355d1d232d9a69f45c4e9780575a6ff274848c23db31bb6069c8d4c
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version 1.
|
3
|
+
### Version 1.9.0
|
4
4
|
|
5
|
-
|
5
|
+
2022-12-28
|
6
6
|
|
7
|
-
[Compare changes](https://github.com/codevise/pageflow-embedded-video/compare/1-
|
7
|
+
[Compare changes](https://github.com/codevise/pageflow-embedded-video/compare/1-8-stable...v1.9.0)
|
8
8
|
|
9
|
-
-
|
10
|
-
([#
|
9
|
+
- Add support for Pageflow 16
|
10
|
+
([#38](https://github.com/codevise/pageflow-embedded-video/pull/38))
|
11
11
|
|
12
12
|
See
|
13
|
-
[1-
|
13
|
+
[1-8-stable branch](https://github.com/codevise/pageflow-embedded-video/blob/1-8-stable/CHANGELOG.md)
|
14
14
|
for previous changes.
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Pageflow Embedded Video
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/pageflow-embedded-video.svg)](http://badge.fury.io/rb/pageflow-embedded-video)
|
4
|
-
[![Build Status](https://
|
4
|
+
[![Build Status](https://github.com/codevise/pageflow-embedded-video/workflows/tests/badge.svg)](https://github.com/codevise/pageflow-embedded-video/actions)
|
5
5
|
|
6
6
|
Page type showing Youtube/Vimeo videos in an embedded iframe.
|
7
7
|
|
@@ -14,11 +14,11 @@ Add this line to your application's Gemfile:
|
|
14
14
|
|
15
15
|
Run `bundle install`
|
16
16
|
|
17
|
-
Register the
|
17
|
+
Register the plugin:
|
18
18
|
|
19
19
|
# config/initializers/pageflow.rb
|
20
20
|
Pageflow.configure do |config|
|
21
|
-
config.
|
21
|
+
config.plugin(Pageflow::EmbeddedVideo.plugin)
|
22
22
|
end
|
23
23
|
|
24
24
|
Include javascript/stylesheets:
|
@@ -0,0 +1,41 @@
|
|
1
|
+
pageflow.embeddedVideo.consent = new (pageflow.Object.extend({
|
2
|
+
accepted: {},
|
3
|
+
promises: {},
|
4
|
+
registered: {},
|
5
|
+
|
6
|
+
ensureVendorRegistered: function(options) {
|
7
|
+
var name = options.name;
|
8
|
+
|
9
|
+
if (!name || this.registered[name]) {
|
10
|
+
return;
|
11
|
+
}
|
12
|
+
|
13
|
+
this.registered[name] = true;
|
14
|
+
|
15
|
+
pageflow.consent.registerVendor(name, {
|
16
|
+
paradigm: options.skip ? 'skip' : 'lazy opt-in',
|
17
|
+
displayName: I18n.t(
|
18
|
+
'pageflow.public.embedded_video.consent.' + name + '.vendor_name'
|
19
|
+
),
|
20
|
+
description: I18n.t(
|
21
|
+
'pageflow.public.embedded_video.consent.' + name + '.vendor_description'
|
22
|
+
)
|
23
|
+
});
|
24
|
+
},
|
25
|
+
|
26
|
+
setup: function(name) {
|
27
|
+
if (!name) {
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
|
31
|
+
var that = this;
|
32
|
+
|
33
|
+
this.promises[name] = this.promises[name] ||
|
34
|
+
pageflow.consent.requireAccepted(name).then(function(result) {
|
35
|
+
if (result == 'fulfilled') {
|
36
|
+
that.accepted[name] = true;
|
37
|
+
that.trigger('accepted:' + name);
|
38
|
+
}
|
39
|
+
});
|
40
|
+
}
|
41
|
+
}));
|
@@ -1,15 +1,40 @@
|
|
1
1
|
/*global YT, URI, $f */
|
2
2
|
|
3
|
+
pageflow.pageType.registerInitializer('embedded_video', function(configuration) {
|
4
|
+
var url = configuration.display_embedded_video_url;
|
5
|
+
|
6
|
+
pageflow.embeddedVideo.consent.ensureVendorRegistered({
|
7
|
+
name: pageflow.embeddedVideo.providerFromUrl(url),
|
8
|
+
skip: !pageflow.features.isEnabled('embedded_video_opt_in')
|
9
|
+
});
|
10
|
+
});
|
11
|
+
|
3
12
|
pageflow.react.registerPageTypeWithDefaultBackground('embedded_video', _.extend({
|
4
13
|
prepareNextPageTimeout: 0,
|
5
14
|
|
6
15
|
enhance: function(pageElement, configuration) {
|
16
|
+
var url = configuration.display_embedded_video_url;
|
17
|
+
|
18
|
+
pageflow.embeddedVideo.consent.setup(
|
19
|
+
pageflow.embeddedVideo.providerFromUrl(url)
|
20
|
+
);
|
21
|
+
|
22
|
+
pageElement.thirdPartyEmbedConsent();
|
23
|
+
|
24
|
+
if (!pageflow.features.isEnabled('embedded_video_opt_in')) {
|
25
|
+
pageElement.find('.opt_out_wrapper').hide();
|
26
|
+
}
|
27
|
+
|
7
28
|
var that = this;
|
8
29
|
|
9
30
|
pageElement.addClass('no_hidden_text_indicator');
|
10
31
|
|
11
32
|
if (pageflow.features.has('mobile platform')) {
|
12
33
|
pageElement.find('.close_button, .iframe_container').click(function(event) {
|
34
|
+
if ($(event.target).parents('.third_party_embed_opt_in').length) {
|
35
|
+
return;
|
36
|
+
}
|
37
|
+
|
13
38
|
event.stopPropagation();
|
14
39
|
that._pauseVideo();
|
15
40
|
pageElement.find('.iframe_container, .close_button').removeClass('show');
|
@@ -101,22 +126,11 @@ pageflow.react.registerPageTypeWithDefaultBackground('embedded_video', _.extend(
|
|
101
126
|
var that = this,
|
102
127
|
iframeWrapper = pageElement.find('.iframe_wrapper'),
|
103
128
|
captionElement = pageElement.find('.video_caption'),
|
129
|
+
captionTextElement = pageElement.find('.video_caption_text'),
|
104
130
|
caption = configuration.get('video_caption');
|
105
131
|
|
106
|
-
|
107
|
-
|
108
|
-
captionElement = $('<div class="video_caption"></div>');
|
109
|
-
|
110
|
-
if (pageElement.find('.scroller iframe').length) {
|
111
|
-
captionElement.insertAfter(iframeWrapper);
|
112
|
-
} else {
|
113
|
-
captionElement.appendTo(iframeWrapper);
|
114
|
-
}
|
115
|
-
}
|
116
|
-
captionElement.text(caption || '');
|
117
|
-
} else {
|
118
|
-
captionElement.remove();
|
119
|
-
}
|
132
|
+
captionElement.toggleClass('video_caption_blank', (caption || '').trim() === '');
|
133
|
+
captionTextElement.text(caption || '');
|
120
134
|
|
121
135
|
if (this.active) {
|
122
136
|
if (configuration.hasChanged('display_embedded_video_url') ||
|
@@ -140,6 +154,17 @@ pageflow.react.registerPageTypeWithDefaultBackground('embedded_video', _.extend(
|
|
140
154
|
url = configuration.display_embedded_video_url,
|
141
155
|
provider = pageflow.embeddedVideo.providerFromUrl(url);
|
142
156
|
|
157
|
+
pageflow.embeddedVideo.consent.setup(
|
158
|
+
pageflow.embeddedVideo.providerFromUrl(url)
|
159
|
+
);
|
160
|
+
|
161
|
+
if (!pageflow.embeddedVideo.consent.accepted[provider]) {
|
162
|
+
pageflow.embeddedVideo.consent.once('accepted:' + provider, function() {
|
163
|
+
this._createPlayer(pageElement, configuration);
|
164
|
+
}, this);
|
165
|
+
return;
|
166
|
+
}
|
167
|
+
|
143
168
|
if (provider === 'youtube') {
|
144
169
|
this.ytApiInitialize().done(function () {
|
145
170
|
that._createYouTubePlayer(pageElement, url, configuration);
|
@@ -255,6 +280,8 @@ pageflow.react.registerPageTypeWithDefaultBackground('embedded_video', _.extend(
|
|
255
280
|
},
|
256
281
|
|
257
282
|
_removePlayer: function (pageElement, callback) {
|
283
|
+
pageflow.embeddedVideo.consent.off(null, null, this);
|
284
|
+
|
258
285
|
if (this.player && typeof this.player.destroy === 'function') {
|
259
286
|
this.player.destroy();
|
260
287
|
}
|
@@ -76,6 +76,7 @@
|
|
76
76
|
height: initial;
|
77
77
|
padding-top: 56.25%;
|
78
78
|
position: relative;
|
79
|
+
color: #fff;
|
79
80
|
|
80
81
|
iframe {
|
81
82
|
position: absolute;
|
@@ -214,6 +215,8 @@
|
|
214
215
|
position: relative;
|
215
216
|
display: block;
|
216
217
|
margin-bottom: 40px;
|
218
|
+
padding-right: 40px;
|
219
|
+
box-sizing: border-box;
|
217
220
|
|
218
221
|
&:before {
|
219
222
|
content: "";
|
@@ -244,10 +247,22 @@
|
|
244
247
|
}
|
245
248
|
}
|
246
249
|
|
250
|
+
.video_caption_blank:before {
|
251
|
+
display: none;
|
252
|
+
}
|
253
|
+
|
247
254
|
.widescreened .video_caption {
|
248
255
|
position: absolute;
|
249
256
|
top: 100%;
|
250
257
|
width: 100%;
|
251
258
|
margin-bottom: 0;
|
252
259
|
}
|
260
|
+
|
261
|
+
.opt_out_wrapper {
|
262
|
+
position: absolute;
|
263
|
+
top: -10px;
|
264
|
+
right: -10px;
|
265
|
+
bottom: -10px;
|
266
|
+
left: -10px;
|
267
|
+
}
|
253
268
|
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Pageflow
|
2
|
+
module EmbeddedVideo
|
3
|
+
# @api private
|
4
|
+
module ConsentHelper
|
5
|
+
include PageflowPaged::ThirdPartyEmbedConsentHelper
|
6
|
+
|
7
|
+
def embedded_video_opt_in(entry, configuration)
|
8
|
+
vendor_name = embedded_video_consent_vendor_name(configuration)
|
9
|
+
return unless vendor_name
|
10
|
+
|
11
|
+
vendor_display_name = I18n.t(
|
12
|
+
"pageflow.public.embedded_video.consent.#{vendor_name}.vendor_name"
|
13
|
+
)
|
14
|
+
|
15
|
+
third_party_embed_opt_in(
|
16
|
+
entry: entry,
|
17
|
+
vendor_name: vendor_name,
|
18
|
+
message: t('pageflow.public.embedded_video.opt_in_prompt',
|
19
|
+
vendor: vendor_display_name)
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def embedded_video_consent_vendor_name(configuration)
|
24
|
+
if configuration['display_embedded_video_url'] =~ /youtube\.com/ ||
|
25
|
+
configuration['display_embedded_video_url'] =~ /youtu\.be/
|
26
|
+
'youtube'
|
27
|
+
elsif configuration['display_embedded_video_url'] =~ /vimeo\.com/
|
28
|
+
'vimeo'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -20,10 +20,18 @@
|
|
20
20
|
</div>
|
21
21
|
</div>
|
22
22
|
<div class="iframe_container">
|
23
|
-
<div class="iframe_wrapper"
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
<div class="iframe_wrapper">
|
24
|
+
<%= embedded_video_opt_in(entry, configuration) %>
|
25
|
+
</div>
|
26
|
+
<div class="video_caption
|
27
|
+
<%= configuration['video_caption'].blank? ? 'video_caption_blank' : ''%>">
|
28
|
+
<span class="video_caption_text">
|
29
|
+
<%= configuration['video_caption'] %>
|
30
|
+
</span>
|
31
|
+
<div class="opt_out_wrapper">
|
32
|
+
<%= third_party_embed_opt_out_info(entry) %>
|
33
|
+
</div>
|
34
|
+
</div>
|
27
35
|
</div>
|
28
36
|
</div>
|
29
37
|
</div>
|
data/config/locales/de.yml
CHANGED
@@ -29,6 +29,8 @@ de:
|
|
29
29
|
page_type_category_name: Media
|
30
30
|
page_type_description: Bettet ein externes Video von YouTube oder Vimeo ein
|
31
31
|
page_type_name: Embedded Video
|
32
|
+
embedded_video_opt_in:
|
33
|
+
feature_name: Opt-In für YouTube/Vimeo Embeds
|
32
34
|
ui:
|
33
35
|
configuration_editor:
|
34
36
|
tabs:
|
data/config/locales/en.yml
CHANGED
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.required_ruby_version = '~> 2.1'
|
20
20
|
|
21
|
-
spec.add_runtime_dependency 'pageflow', ['>=
|
21
|
+
spec.add_runtime_dependency 'pageflow', ['>= 15.7', '< 17']
|
22
22
|
spec.add_runtime_dependency 'pageflow-public-i18n', '~> 1.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', ['>= 1.0', '< 3']
|
25
|
-
spec.add_development_dependency 'pageflow-support', ['>= 14', '<
|
25
|
+
spec.add_development_dependency 'pageflow-support', ['>= 14', '< 17']
|
26
26
|
spec.add_development_dependency 'rake', '~> 12.0'
|
27
27
|
spec.add_development_dependency 'rspec-rails', '~> 3.0'
|
28
28
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pageflow-embedded-video
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Codevise Solutions Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pageflow
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '15.7'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '17'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '15.7'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '17'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: pageflow-public-i18n
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
version: '14'
|
74
74
|
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
76
|
+
version: '17'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
version: '14'
|
84
84
|
- - "<"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: '
|
86
|
+
version: '17'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: rake
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,10 +133,10 @@ executables: []
|
|
133
133
|
extensions: []
|
134
134
|
extra_rdoc_files: []
|
135
135
|
files:
|
136
|
+
- ".github/workflows/tests.yml"
|
136
137
|
- ".gitignore"
|
137
138
|
- ".jshintignore"
|
138
139
|
- ".jshintrc"
|
139
|
-
- ".travis.yml"
|
140
140
|
- CHANGELOG.md
|
141
141
|
- Gemfile
|
142
142
|
- README.md
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- app/assets/images/pageflow/ov-embedded_video.png
|
151
151
|
- app/assets/javascript/pageflow/URI.js
|
152
152
|
- app/assets/javascript/pageflow/embedded_video.js
|
153
|
+
- app/assets/javascript/pageflow/embedded_video/consent.js
|
153
154
|
- app/assets/javascript/pageflow/embedded_video/editor.js
|
154
155
|
- app/assets/javascript/pageflow/embedded_video/editor/collections/embedded_videos_collection.js
|
155
156
|
- app/assets/javascript/pageflow/embedded_video/editor/initializers/setup_collections.js
|
@@ -164,6 +165,7 @@ files:
|
|
164
165
|
- app/assets/stylesheets/pageflow/embedded_video/custom.scss
|
165
166
|
- app/assets/stylesheets/pageflow/embedded_video/editor.scss
|
166
167
|
- app/assets/stylesheets/pageflow/embedded_video/themes/default.scss
|
168
|
+
- app/helpers/pageflow/embedded_video/consent_helper.rb
|
167
169
|
- app/views/pageflow/embedded_video/page.html.erb
|
168
170
|
- app/views/pageflow/embedded_video/page_type.json.jbuilder
|
169
171
|
- bin/rails-cmd
|
@@ -174,6 +176,7 @@ files:
|
|
174
176
|
- lib/pageflow/embedded_video/configuration.rb
|
175
177
|
- lib/pageflow/embedded_video/engine.rb
|
176
178
|
- lib/pageflow/embedded_video/page_type.rb
|
179
|
+
- lib/pageflow/embedded_video/plugin.rb
|
177
180
|
- lib/pageflow/embedded_video/version.rb
|
178
181
|
- pageflow-embedded-video.gemspec
|
179
182
|
- spec/integration/page_type_spec.rb
|
@@ -197,8 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
200
|
- !ruby/object:Gem::Version
|
198
201
|
version: '0'
|
199
202
|
requirements: []
|
200
|
-
|
201
|
-
rubygems_version: 2.7.5
|
203
|
+
rubygems_version: 3.0.8
|
202
204
|
signing_key:
|
203
205
|
specification_version: 4
|
204
206
|
summary: Pagetype for embedded youtube/vimeo videos
|