pageflow-embedded-video 1.7.0 → 1.8.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/CHANGELOG.md +6 -6
- data/README.md +2 -2
- 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 +1 -1
- metadata +10 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4953d1e48d49ae77ee788c40eafa938d6cbdf6120dbe0d8958bc43cc2d661485
|
4
|
+
data.tar.gz: cada1c6fdc972ed53bc66b8419918dc9c7491a79bae641b19fc48bb00df2f806
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd4e3644d0a87253544a5f0ad4a7e57a39adc130165aa5c431513b2cbb321baa368fc171b3857f98dbba79911ca2bf39e34f2c040727980f9212afdca10927c4
|
7
|
+
data.tar.gz: 592cfb3a4363ea49b54b16ba6b48788762f55e97ce46d45727d88e03a87f54bc40cd4b913524e7aef9bb89f96772b51a6acbce8dd084d5ba242c86cce3bc5282
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version 1.
|
3
|
+
### Version 1.8.0
|
4
4
|
|
5
|
-
|
5
|
+
2022-07-18
|
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-7-stable...v1.8.0)
|
8
8
|
|
9
|
-
-
|
10
|
-
([#
|
9
|
+
- Embed opt-in
|
10
|
+
([#37](https://github.com/codevise/pageflow-embedded-video/pull/37))
|
11
11
|
|
12
12
|
See
|
13
|
-
[1-
|
13
|
+
[1-7-stable branch](https://github.com/codevise/pageflow-embedded-video/blob/1-7-stable/CHANGELOG.md)
|
14
14
|
for previous changes.
|
data/README.md
CHANGED
@@ -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,7 +18,7 @@ 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.x'
|
22
22
|
spec.add_runtime_dependency 'pageflow-public-i18n', '~> 1.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', ['>= 1.0', '< 3']
|
metadata
CHANGED
@@ -1,35 +1,29 @@
|
|
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.8.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-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pageflow
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '14'
|
20
|
-
- - "<"
|
17
|
+
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: 15.7.x
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '14'
|
30
|
-
- - "<"
|
24
|
+
- - "~>"
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
26
|
+
version: 15.7.x
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: pageflow-public-i18n
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +144,7 @@ files:
|
|
150
144
|
- app/assets/images/pageflow/ov-embedded_video.png
|
151
145
|
- app/assets/javascript/pageflow/URI.js
|
152
146
|
- app/assets/javascript/pageflow/embedded_video.js
|
147
|
+
- app/assets/javascript/pageflow/embedded_video/consent.js
|
153
148
|
- app/assets/javascript/pageflow/embedded_video/editor.js
|
154
149
|
- app/assets/javascript/pageflow/embedded_video/editor/collections/embedded_videos_collection.js
|
155
150
|
- app/assets/javascript/pageflow/embedded_video/editor/initializers/setup_collections.js
|
@@ -164,6 +159,7 @@ files:
|
|
164
159
|
- app/assets/stylesheets/pageflow/embedded_video/custom.scss
|
165
160
|
- app/assets/stylesheets/pageflow/embedded_video/editor.scss
|
166
161
|
- app/assets/stylesheets/pageflow/embedded_video/themes/default.scss
|
162
|
+
- app/helpers/pageflow/embedded_video/consent_helper.rb
|
167
163
|
- app/views/pageflow/embedded_video/page.html.erb
|
168
164
|
- app/views/pageflow/embedded_video/page_type.json.jbuilder
|
169
165
|
- bin/rails-cmd
|
@@ -174,6 +170,7 @@ files:
|
|
174
170
|
- lib/pageflow/embedded_video/configuration.rb
|
175
171
|
- lib/pageflow/embedded_video/engine.rb
|
176
172
|
- lib/pageflow/embedded_video/page_type.rb
|
173
|
+
- lib/pageflow/embedded_video/plugin.rb
|
177
174
|
- lib/pageflow/embedded_video/version.rb
|
178
175
|
- pageflow-embedded-video.gemspec
|
179
176
|
- spec/integration/page_type_spec.rb
|
@@ -197,8 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
194
|
- !ruby/object:Gem::Version
|
198
195
|
version: '0'
|
199
196
|
requirements: []
|
200
|
-
|
201
|
-
rubygems_version: 2.7.5
|
197
|
+
rubygems_version: 3.0.8
|
202
198
|
signing_key:
|
203
199
|
specification_version: 4
|
204
200
|
summary: Pagetype for embedded youtube/vimeo videos
|