hr-design-system-handlebars 1.61.4 → 1.63.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.
- package/CHANGELOG.md +25 -0
- package/dist/assets/index.css +76 -12
- package/dist/assets/js/components/externalService/dataWrapperContentRefresher.subfeature.js +85 -0
- package/dist/assets/js/components/externalService/dataWrapperNoResponsiveIframe.subfeature.js +44 -0
- package/dist/assets/js/components/externalService/externalServiceDs.feature.js +123 -189
- package/dist/views/components/content/copytext/components/externalservice.hbs +3 -78
- package/dist/views/components/content/copytext/copytext.hbs +10 -1
- package/dist/views/components/event/label_byline.ssi.hbs +1 -1
- package/dist/views/components/externalService/components/external_service_caption.hbs +5 -0
- package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_data_policy.hbs +6 -6
- package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_form_checkbox.hbs +2 -2
- package/dist/views/components/externalService/{external_service_load_content_button.hbs → components/external_service_load_content_button.hbs} +2 -2
- package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_settings_button.hbs +1 -1
- package/dist/views/components/externalService/external_service.hbs +34 -16
- package/dist/views/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
- package/dist/views_static/components/content/copytext/components/externalservice.hbs +3 -78
- package/dist/views_static/components/content/copytext/copytext.hbs +10 -1
- package/dist/views_static/components/event/label_byline.ssi.hbs +1 -1
- package/dist/views_static/components/externalService/components/external_service_caption.hbs +5 -0
- package/dist/views_static/components/externalService/{external_service_data_policy.hbs → components/external_service_data_policy.hbs} +6 -6
- package/dist/views_static/components/externalService/{external_service_form_checkbox.hbs → components/external_service_form_checkbox.hbs} +2 -2
- package/{src/stories/views/components/externalService → dist/views_static/components/externalService/components}/external_service_load_content_button.hbs +2 -2
- package/dist/{views/components/externalService → views_static/components/externalService/components}/external_service_settings_button.hbs +1 -1
- package/dist/views_static/components/externalService/external_service.hbs +34 -16
- package/dist/views_static/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
- package/package.json +1 -1
- package/src/assets/css/custom-utilities.css +49 -15
- package/src/assets/fixtures/content/copytext/copytext_externalservice.json +44 -1
- package/src/assets/fixtures/external_service/external_service.inc.json +3 -3
- package/src/assets/fixtures/teaser/teaser_labels.inc.json +1 -0
- package/src/stories/views/components/content/copytext/components/externalservice.hbs +3 -78
- package/src/stories/views/components/content/copytext/copytext.hbs +10 -1
- package/src/stories/views/components/content/copytext/fixtures/copytext_externalservice.json +1 -1
- package/src/stories/views/components/event/calendar/fixtures/event_calendar_event_teaser.json +1 -1
- package/src/stories/views/components/event/label_byline.ssi.hbs +1 -1
- package/src/stories/views/components/externalService/components/external_service_caption.hbs +5 -0
- package/{dist/views/components/externalService → src/stories/views/components/externalService/components}/external_service_data_policy.hbs +6 -6
- package/{dist/views/components/externalService → src/stories/views/components/externalService/components}/external_service_form_checkbox.hbs +2 -2
- package/{dist/views_static/components/externalService → src/stories/views/components/externalService/components}/external_service_load_content_button.hbs +2 -2
- package/{dist/views_static/components/externalService → src/stories/views/components/externalService/components}/external_service_settings_button.hbs +1 -1
- package/src/stories/views/components/externalService/dataWrapperContentRefresher.subfeature.js +85 -0
- package/src/stories/views/components/externalService/dataWrapperNoResponsiveIframe.subfeature.js +44 -0
- package/src/stories/views/components/externalService/externalServiceDs.feature.js +123 -189
- package/src/stories/views/components/externalService/external_service.data.js +1 -1
- package/src/stories/views/components/externalService/external_service.hbs +34 -16
- package/src/stories/views/components/externalService/external_service.stories.js +1 -1
- package/src/stories/views/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
- package/src/stories/views/components/externalService/fixtures/external_service_with_datapolicy.json +166 -0
- package/src/stories/views/components/grid/grid.stories.js +1 -1
- package/src/stories/views/components/teaser/fixtures/stage_teaser_eventtag.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_alternative_100_serif_single_event.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_alternative_100_serif_two_events.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_event_calendar_100_serif.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_100_serif_single_event.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_100_serif_two_events.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_33_serif_multiple_events.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_33_serif_single_event.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_33_serif_single_event_status.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_33_serif_two_events.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_50_serif_single_event.json +1 -1
- package/src/stories/views/components/teaser/fixtures/teaser_standard_66_serif_single_event.json +1 -1
- package/dist/views/components/externalService/external_service_caption.hbs +0 -3
- package/dist/views/components/externalService/externalservice.hbs +0 -38
- package/dist/views_static/components/externalService/external_service_caption.hbs +0 -3
- package/dist/views_static/components/externalService/externalservice.hbs +0 -38
- package/src/stories/views/components/externalService/external_service_caption.hbs +0 -3
- package/src/stories/views/components/externalService/externalservice.hbs +0 -38
- package/src/stories/views/components/externalService/fixtures/external_service.json +0 -1
- /package/dist/views/components/externalService/{data_policy_link.hbs → components/data_policy_link.hbs} +0 -0
- /package/dist/views_static/components/externalService/{data_policy_link.hbs → components/data_policy_link.hbs} +0 -0
- /package/src/stories/views/components/externalService/{data_policy_link.hbs → components/data_policy_link.hbs} +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import SettingsCookie from './globalSettingsCookie.subfeature'
|
|
2
|
+
import DataWrapperContentRefresher from './dataWrapperContentRefresher.subfeature'
|
|
3
|
+
import DataWrapperNoResponsiveIframe from './dataWrapperNoResponsiveIframe.subfeature'
|
|
2
4
|
import {
|
|
3
5
|
fireEvent,
|
|
4
6
|
hr$,
|
|
@@ -12,9 +14,9 @@ import {
|
|
|
12
14
|
} from 'hrQuery'
|
|
13
15
|
|
|
14
16
|
const ExternalService = function (context) {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
const { options } = context,
|
|
18
|
+
{ element: rootElement } = context,
|
|
19
|
+
rootParent = rootElement.parentNode
|
|
18
20
|
let dataPolicyBox = hr$('.js-datapolicy', rootElement)[0]
|
|
19
21
|
const dataPolicyBoxHTML = typeof dataPolicyBox !== 'undefined' ? dataPolicyBox.outerHTML : '',
|
|
20
22
|
contentSettingsButton = hr$('.js-content-settings-button', rootParent)[0],
|
|
@@ -33,22 +35,6 @@ const ExternalService = function (context) {
|
|
|
33
35
|
settingsCookie,
|
|
34
36
|
isExternalServiceLoaded = false
|
|
35
37
|
|
|
36
|
-
const syncAppOptionsToSettingsCookie = function () {
|
|
37
|
-
if (getJSONCookie('datapolicy')) {
|
|
38
|
-
let dataPolicyCookie = getJSONCookie('datapolicy') || {}
|
|
39
|
-
let objArray = Object.entries(dataPolicyCookie)
|
|
40
|
-
objArray.forEach(([key, value]) => {
|
|
41
|
-
settingsCookie.setCookieForOptions(key, value)
|
|
42
|
-
})
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const setWhitelistServicesForInitialApp = function () {
|
|
47
|
-
let whitelist = ['ard_mediathek', 'arte_concert', 'arte_concert_new', 'datawrapper_cdn']
|
|
48
|
-
for (let i = 0; i < whitelist.length; ++i) {
|
|
49
|
-
settingsCookie.setCookieForDataPolicy(whitelist[i], true)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
38
|
|
|
53
39
|
const embedExternalService = function (callback) {
|
|
54
40
|
$.ajax({
|
|
@@ -84,66 +70,7 @@ const ExternalService = function (context) {
|
|
|
84
70
|
})
|
|
85
71
|
}
|
|
86
72
|
|
|
87
|
-
|
|
88
|
-
if (acceptAlwaysCheckbox.checked == true) {
|
|
89
|
-
fireEvent('hr:externalService-activate-' + id)
|
|
90
|
-
settingsCookie.setCookieForOptions(id)
|
|
91
|
-
if (isWebview) {
|
|
92
|
-
settingsCookie.setCookieForDataPolicy(id)
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
loadServiceWithDataPolicyButton()
|
|
96
|
-
console.log('External Service once loaded - ' + id)
|
|
97
|
-
}
|
|
98
|
-
event.stopPropagation()
|
|
99
|
-
}
|
|
100
|
-
const loadServiceWithDataPolicyButton = function () {
|
|
101
|
-
if (rootElement.children[0].classList.contains('js-datapolicy')) {
|
|
102
|
-
insertExternalService()
|
|
103
|
-
isExternalServiceLoaded = true
|
|
104
|
-
toggleContentSettingsButton()
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const toggleContentSettingsButton = function () {
|
|
108
|
-
if (isExternalServiceLoaded) {
|
|
109
|
-
contentSettingsButton.classList.remove('hideExtButton')
|
|
110
|
-
} else {
|
|
111
|
-
contentSettingsButton.classList.add('hideExtButton')
|
|
112
|
-
}
|
|
113
|
-
console.log('Toggle den Einstellungsbutton außerhalb weil ' + isExternalServiceLoaded)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const removeDatapolicyBox = function () {
|
|
117
|
-
rootElement.innerHTML = ''
|
|
118
|
-
rootElement.classList.remove('c-dataPolicy')
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const initDataPolicy = function () {
|
|
122
|
-
if (dataPolicyCheck) {
|
|
123
|
-
settingsCookie = new SettingsCookie()
|
|
124
|
-
acceptButton = hr$('.js-dataPolicy-accept', rootElement)[0]
|
|
125
|
-
listen('click', handleDatapolicy, acceptButton)
|
|
126
|
-
if (isWebview) {
|
|
127
|
-
if (settingsCookie.isDataPolicyCookieAccepted(id)) {
|
|
128
|
-
loadServiceWithDataPolicyButton()
|
|
129
|
-
} else {
|
|
130
|
-
dataPolicyBox.style.visibility = 'visible'
|
|
131
|
-
}
|
|
132
|
-
} else {
|
|
133
|
-
if (settingsCookie.isSettingsCookieAccepted(id)) {
|
|
134
|
-
loadServiceWithDataPolicyButton()
|
|
135
|
-
} else {
|
|
136
|
-
dataPolicyBox.style.visibility = 'visible'
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
listen('hr:externalService-activate-' + id, loadServiceWithDataPolicyButton)
|
|
140
|
-
listen('hr:externalService-deactivate-' + id, removeExternalService)
|
|
141
|
-
} else {
|
|
142
|
-
insertExternalService()
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const insertExternalService = function () {
|
|
73
|
+
const insertExternalService = function () {
|
|
147
74
|
switch (embedType) {
|
|
148
75
|
case 'js':
|
|
149
76
|
switch (id) {
|
|
@@ -197,41 +124,21 @@ const ExternalService = function (context) {
|
|
|
197
124
|
rootElement.appendChild(script)
|
|
198
125
|
}
|
|
199
126
|
|
|
200
|
-
const createDataWrapperUniqueID = function () {
|
|
201
|
-
return Math.random()
|
|
202
|
-
.toString(36)
|
|
203
|
-
.replace(/[^a-z]+/g, '')
|
|
204
|
-
.substr(2, 10)
|
|
205
|
-
}
|
|
206
127
|
const createDataWrapperEmbed = function () {
|
|
207
128
|
removeDatapolicyBox()
|
|
208
|
-
var uniqueID =
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
div.style.width = '100%'
|
|
217
|
-
} else {
|
|
218
|
-
div.className = 'ar--' + iFrameConfig.aspectRatio + ' datawrapper_cdn'
|
|
219
|
-
}
|
|
220
|
-
var iframe = document.createElement('iframe')
|
|
221
|
-
iframe.className = 'ar_iframe datawrapper_cdn'
|
|
222
|
-
iframe.setAttribute('id', 'i_frame')
|
|
223
|
-
iframe.setAttribute('data-isloaded', '0')
|
|
224
|
-
iframe.setAttribute('webkitallowfullscreen', '')
|
|
225
|
-
iframe.setAttribute('mozallowfullscreen', '')
|
|
226
|
-
iframe.setAttribute('allowfullscreen', '')
|
|
227
|
-
iframe.setAttribute('scrolling', 'no')
|
|
228
|
-
iframe.setAttribute('frameborder', '0')
|
|
229
|
-
iframe.src = embedCode
|
|
129
|
+
var uniqueID = function () {
|
|
130
|
+
return Math.random()
|
|
131
|
+
.toString(36)
|
|
132
|
+
.replace(/[^a-z]+/g, '')
|
|
133
|
+
.substring(2, 10)
|
|
134
|
+
}
|
|
135
|
+
let contentRefresher = new DataWrapperContentRefresher(context, uniqueID)
|
|
136
|
+
let noResponsiveIframe = new DataWrapperNoResponsiveIframe(context, iFrameConfig.aspectRatio, iFrameConfig.fixedHeight, embedCode)
|
|
230
137
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
138
|
+
if (iFrameConfig.noResponsiveIframe == 'true') {
|
|
139
|
+
noResponsiveIframe.createNoResponsiveIframe(getAspectRatioClass())
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
235
142
|
var iframe = document.createElement('iframe')
|
|
236
143
|
iframe.className = 'dataWrapper-embed'
|
|
237
144
|
iframe.style.width = '0'
|
|
@@ -252,78 +159,7 @@ const ExternalService = function (context) {
|
|
|
252
159
|
true
|
|
253
160
|
)
|
|
254
161
|
if (iFrameConfig.refreshContent == 'true') {
|
|
255
|
-
|
|
256
|
-
var timer
|
|
257
|
-
var iframeRefresh = document.getElementById('datawrapper-chart-' + uniqueID)
|
|
258
|
-
var divCounter = document.createElement('div')
|
|
259
|
-
var divOverlay = document.createElement('div')
|
|
260
|
-
var divTextOverlay = document.createElement('div')
|
|
261
|
-
divOverlay.id = 'overlay' + uniqueID
|
|
262
|
-
divOverlay.style.position = 'absolute'
|
|
263
|
-
divOverlay.style.top = '0'
|
|
264
|
-
divOverlay.style.display = 'none'
|
|
265
|
-
divOverlay.style.alignItems = 'center'
|
|
266
|
-
divOverlay.style.justifyContent = 'center'
|
|
267
|
-
divOverlay.style.backgroundColor = '#fff'
|
|
268
|
-
divOverlay.style.width = '100%'
|
|
269
|
-
divOverlay.style.height = 'calc(100% - 36px)'
|
|
270
|
-
divOverlay.style.backgroundColor = '#d8e9f6'
|
|
271
|
-
divTextOverlay.innerHTML = 'Lade Inhalt neu...'
|
|
272
|
-
divTextOverlay.style.backgroundColor = '#005293'
|
|
273
|
-
divTextOverlay.style.padding = '8px'
|
|
274
|
-
divTextOverlay.style.color = '#fff'
|
|
275
|
-
divTextOverlay.style.fontWeight = '800'
|
|
276
|
-
divTextOverlay.style.fontFamily = 'RobotoSlab'
|
|
277
|
-
divTextOverlay.style.borderRadius = '6px 6px 6px 6px'
|
|
278
|
-
divOverlay.appendChild(divTextOverlay)
|
|
279
|
-
divCounter.id = 'counter' + uniqueID
|
|
280
|
-
divCounter.style.backgroundColor = '#006dc1'
|
|
281
|
-
divCounter.style.color = '#fff'
|
|
282
|
-
divCounter.style.fontSize = '12px'
|
|
283
|
-
divCounter.style.padding = '8px'
|
|
284
|
-
divCounter.style.borderRadius = '0 0 4px 4px'
|
|
285
|
-
rootElement.style.position = 'relative'
|
|
286
|
-
rootElement.appendChild(divCounter)
|
|
287
|
-
rootElement.appendChild(divOverlay)
|
|
288
|
-
|
|
289
|
-
const refreshIframe = function () {
|
|
290
|
-
console.log('Reload')
|
|
291
|
-
iframeRefresh.style.opacity = '0'
|
|
292
|
-
iframeRefresh.src =
|
|
293
|
-
iframeRefresh.src.split('?')[0] + '?_=' + new Date().getTime()
|
|
294
|
-
clearInterval(timer)
|
|
295
|
-
}
|
|
296
|
-
const startCountdown = function () {
|
|
297
|
-
remainingTime = Number(iFrameConfig.refreshIntervall)
|
|
298
|
-
setTimeout(function () {
|
|
299
|
-
iframeRefresh.style.opacity = '1'
|
|
300
|
-
document.getElementById('overlay' + uniqueID).style.display = 'none'
|
|
301
|
-
}, 1000)
|
|
302
|
-
timer = setInterval(function () {
|
|
303
|
-
checkTimer()
|
|
304
|
-
}, 1000)
|
|
305
|
-
}
|
|
306
|
-
const checkTimer = function () {
|
|
307
|
-
if (remainingTime >= 0) {
|
|
308
|
-
document.getElementById('counter' + uniqueID).innerHTML =
|
|
309
|
-
'Dieser Inhalt wird automatisch aktualisiert in ' +
|
|
310
|
-
secondsToTimeString(remainingTime) +
|
|
311
|
-
' Min.'
|
|
312
|
-
remainingTime -= 1
|
|
313
|
-
if (remainingTime == -1) {
|
|
314
|
-
document.getElementById('overlay' + uniqueID).style.display = 'flex'
|
|
315
|
-
document.getElementById('counter' + uniqueID).innerHTML =
|
|
316
|
-
'Zeitintervall wird neu gestartet...'
|
|
317
|
-
}
|
|
318
|
-
} else {
|
|
319
|
-
refreshIframe()
|
|
320
|
-
startCountdown()
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
const secondsToTimeString = function (seconds) {
|
|
324
|
-
return new Date(seconds * 1000).toISOString().substr(14, 5)
|
|
325
|
-
}
|
|
326
|
-
startCountdown()
|
|
162
|
+
contentRefresher.createRefresher()
|
|
327
163
|
}
|
|
328
164
|
}
|
|
329
165
|
}
|
|
@@ -373,7 +209,7 @@ const ExternalService = function (context) {
|
|
|
373
209
|
embedCode +
|
|
374
210
|
"?utm_source=ig_embed&utm_campaign=loading'" +
|
|
375
211
|
"data-instgrm-version='14'" +
|
|
376
|
-
"style='background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:
|
|
212
|
+
"style='background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:724px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);' >" +
|
|
377
213
|
'</blockquote>'
|
|
378
214
|
replaceAnimated(rootElement, instagramEmbedCode, false, reloadInstagramEmbed)
|
|
379
215
|
}
|
|
@@ -415,6 +251,27 @@ const ExternalService = function (context) {
|
|
|
415
251
|
}, 250)
|
|
416
252
|
}
|
|
417
253
|
|
|
254
|
+
const getAspectRatioClass = function () {
|
|
255
|
+
switch (iFrameConfig.aspectRatio) {
|
|
256
|
+
case '16x9':
|
|
257
|
+
return "ar-16-9"
|
|
258
|
+
case '16x7':
|
|
259
|
+
return "ar-16-7"
|
|
260
|
+
case '4x3':
|
|
261
|
+
return "ar-4-3"
|
|
262
|
+
case '100x27':
|
|
263
|
+
return "ar-100-27"
|
|
264
|
+
case '100':
|
|
265
|
+
return "ar-1-1"
|
|
266
|
+
case '9x16':
|
|
267
|
+
return "ar-9-16"
|
|
268
|
+
case '7x16':
|
|
269
|
+
return "ar-7-16"
|
|
270
|
+
default:
|
|
271
|
+
return "ar-16-9"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
418
275
|
const loadIframe = function () {
|
|
419
276
|
console.log('load iframe ' + id)
|
|
420
277
|
iframe =
|
|
@@ -425,13 +282,13 @@ const ExternalService = function (context) {
|
|
|
425
282
|
"' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"
|
|
426
283
|
if (iFrameConfig.aspectRatio) {
|
|
427
284
|
iframe =
|
|
428
|
-
"<div class='copytext__scrollWrapper'><div class='
|
|
429
|
-
|
|
285
|
+
"<div class='copytext__scrollWrapper'><div class='" +
|
|
286
|
+
getAspectRatioClass() +
|
|
430
287
|
' ' +
|
|
431
288
|
id +
|
|
432
289
|
"'><iframe id='i_frame' data-isloaded='0' src='" +
|
|
433
290
|
embedCode +
|
|
434
|
-
"' frameborder='0' class='" +
|
|
291
|
+
"' frameborder='0' class='w-full h-full " +
|
|
435
292
|
iFrameConfig.heightClass +
|
|
436
293
|
' ' +
|
|
437
294
|
id +
|
|
@@ -442,14 +299,14 @@ const ExternalService = function (context) {
|
|
|
442
299
|
iframe =
|
|
443
300
|
"<div class='copytext__scrollWrapper -fixedHeight' style='height:" +
|
|
444
301
|
iFrameConfig.fixedHeight +
|
|
445
|
-
"px'><iframe data-isloaded='0' src='" +
|
|
302
|
+
"px'><iframe data-isloaded='0' class='w-full h-full' src='" +
|
|
446
303
|
embedCode +
|
|
447
304
|
"' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>"
|
|
448
305
|
} else {
|
|
449
306
|
iframe =
|
|
450
307
|
"<div class='copytext__scrollWrapper " +
|
|
451
308
|
id +
|
|
452
|
-
"'><iframe data-isloaded='0' src='" +
|
|
309
|
+
"'><iframe data-isloaded='0' class='w-full h-full' src='" +
|
|
453
310
|
embedCode +
|
|
454
311
|
"' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>"
|
|
455
312
|
}
|
|
@@ -458,6 +315,66 @@ const ExternalService = function (context) {
|
|
|
458
315
|
replaceAnimated(rootElement, iframe, false)
|
|
459
316
|
}
|
|
460
317
|
|
|
318
|
+
const initDataPolicy = function () {
|
|
319
|
+
if (dataPolicyCheck) {
|
|
320
|
+
settingsCookie = new SettingsCookie()
|
|
321
|
+
acceptButton = hr$('.js-dataPolicy-accept', rootElement)[0]
|
|
322
|
+
listen('click', handleDatapolicy, acceptButton)
|
|
323
|
+
if (isWebview) {
|
|
324
|
+
if (settingsCookie.isDataPolicyCookieAccepted(id)) {
|
|
325
|
+
loadServiceWithDataPolicyButton()
|
|
326
|
+
} else {
|
|
327
|
+
dataPolicyBox.style.visibility = 'visible'
|
|
328
|
+
}
|
|
329
|
+
} else {
|
|
330
|
+
if (settingsCookie.isSettingsCookieAccepted(id)) {
|
|
331
|
+
loadServiceWithDataPolicyButton()
|
|
332
|
+
} else {
|
|
333
|
+
dataPolicyBox.style.visibility = 'visible'
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
listen('hr:externalService-activate-' + id, loadServiceWithDataPolicyButton)
|
|
337
|
+
listen('hr:externalService-deactivate-' + id, removeExternalService)
|
|
338
|
+
} else {
|
|
339
|
+
insertExternalService()
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const handleDatapolicy = function (event) {
|
|
344
|
+
if (acceptAlwaysCheckbox.checked == true) {
|
|
345
|
+
fireEvent('hr:externalService-activate-' + id)
|
|
346
|
+
settingsCookie.setCookieForOptions(id)
|
|
347
|
+
if (isWebview) {
|
|
348
|
+
settingsCookie.setCookieForDataPolicy(id)
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
loadServiceWithDataPolicyButton()
|
|
352
|
+
console.log('External Service once loaded - ' + id)
|
|
353
|
+
}
|
|
354
|
+
event.stopPropagation()
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const loadServiceWithDataPolicyButton = function () {
|
|
358
|
+
if (rootElement.children[0].classList.contains('js-datapolicy')) {
|
|
359
|
+
insertExternalService()
|
|
360
|
+
isExternalServiceLoaded = true
|
|
361
|
+
toggleContentSettingsButton()
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
const toggleContentSettingsButton = function () {
|
|
365
|
+
if (isExternalServiceLoaded) {
|
|
366
|
+
contentSettingsButton.classList.remove('hidden')
|
|
367
|
+
} else {
|
|
368
|
+
contentSettingsButton.classList.add('hidden')
|
|
369
|
+
}
|
|
370
|
+
console.log('Toggle den Einstellungsbutton außerhalb weil ' + isExternalServiceLoaded)
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const removeDatapolicyBox = function () {
|
|
374
|
+
rootElement.innerHTML = ''
|
|
375
|
+
rootElement.classList.remove('c-dataPolicy')
|
|
376
|
+
}
|
|
377
|
+
|
|
461
378
|
const removeExternalService = function () {
|
|
462
379
|
replaceAnimated(rootElement, dataPolicyBoxHTML, true, reinitiateDataPolicyBox)
|
|
463
380
|
}
|
|
@@ -471,6 +388,23 @@ const ExternalService = function (context) {
|
|
|
471
388
|
initDataPolicy()
|
|
472
389
|
toggleContentSettingsButton()
|
|
473
390
|
}
|
|
391
|
+
|
|
392
|
+
const syncAppOptionsToSettingsCookie = function () {
|
|
393
|
+
if (getJSONCookie('datapolicy')) {
|
|
394
|
+
let dataPolicyCookie = getJSONCookie('datapolicy') || {}
|
|
395
|
+
let objArray = Object.entries(dataPolicyCookie)
|
|
396
|
+
objArray.forEach(([key, value]) => {
|
|
397
|
+
settingsCookie.setCookieForOptions(key, value)
|
|
398
|
+
})
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
const setWhitelistServicesForInitialApp = function () {
|
|
403
|
+
let whitelist = ['ard_mediathek', 'arte_concert', 'arte_concert_new', 'datawrapper_cdn']
|
|
404
|
+
for (let i = 0; i < whitelist.length; ++i) {
|
|
405
|
+
settingsCookie.setCookieForDataPolicy(whitelist[i], true)
|
|
406
|
+
}
|
|
407
|
+
}
|
|
474
408
|
const resetCheckboxForPermanentService = function () {
|
|
475
409
|
/*Die Autocompletion des Browsers merkt sich die Zustände von Formularelementen nach einem Refresh, das wird hier hart zurückgesetzt*/
|
|
476
410
|
var clist = document.getElementsByClassName('js-dataPolicy-acceptPermanentely')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import structuredClone from 'core-js-pure/actual/structured-clone'
|
|
2
|
-
import externalServiceContent from './fixtures/
|
|
2
|
+
import externalServiceContent from './fixtures/external_service_with_datapolicy.json'
|
|
3
3
|
|
|
4
4
|
const ExternalServiceContent = structuredClone(
|
|
5
5
|
Object.assign({}, externalServiceContent)
|
|
@@ -1,17 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
{{#if this.externalServiceConfig.makeConfigurable}}
|
|
2
|
+
|
|
3
|
+
{{> components/externalService/external_service_with_datapolicy_check }}
|
|
4
|
+
|
|
5
|
+
{{else}}
|
|
6
|
+
|
|
7
|
+
{{#if this.serviceUrl}}
|
|
8
|
+
<div class="clear-both mt-10">
|
|
9
|
+
<span class="sr-only">{{loca "story_externalservice_intro_sr" }}</span>
|
|
10
|
+
{{#if this.externalServiceConfig.embedAsIFrame}}
|
|
11
|
+
|
|
12
|
+
<div class="{{#if this.fixedHeight}}overflow-y-hidden{{else}}overflow-hidden{{/if}}" {{#if this.fixedHeight}}style="height:{{this.fixedHeight}}px;"{{/if}}>
|
|
13
|
+
{{#unless this.fixedHeight}}<div class="{{~inline-switch this.aspectRatio '["16x9","16x7","4x3","100x27","100","9x16","7x16"]' '["ar-16-9","ar-16-7","ar-4-3","ar-100-27","ar-1-1","ar-9-16","ar-7-16","ar-16-9"]'~}}">{{/unless}}
|
|
14
|
+
<iframe frameborder="0" width="100%" height="100%"
|
|
15
|
+
src="{{{this.serviceUrl}}}" webkitallowfullscreen mozallowfullscreen
|
|
16
|
+
allowfullscreen scrolling='no'>
|
|
17
|
+
</iframe>
|
|
18
|
+
{{#unless this.fixedHeight}}</div>{{/unless}}
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
{{else}}
|
|
22
|
+
|
|
23
|
+
<div class="c-externalService__{{this.externalServiceConfig.externalServiceId}} js-load"
|
|
24
|
+
data-hr-external-service-ds='{"id":"{{this.externalServiceConfig.externalServiceId}}","embedCode":"{{this.serviceUrl}}", "embedType": "{{this.externalServiceConfig.externalServiceEmbedType}}", "dataPolicyCheck": false, "iFrameConfig":{}}'>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
{{/if}}
|
|
28
|
+
|
|
29
|
+
{{~> components/externalService/components/external_service_caption ~}}
|
|
30
|
+
|
|
31
|
+
<span class="sr-only">{{loca "story_externalservice_outro_sr" }}</span>
|
|
8
32
|
</div>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<div class="float-right">
|
|
13
|
-
{{~> components/externalService/external_service_settings_button ~}}
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
{{~> components/dataPolicySettings/data_policy_settings ~}}
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
35
|
+
{{/if}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExternalServiceContent
|
|
3
3
|
} from './external_service.data.js'
|
|
4
|
-
import externalService from './
|
|
4
|
+
import externalService from './external_service_with_datapolicy_check.hbs'
|
|
5
5
|
|
|
6
6
|
const TemplatePageExternalService = (args, { globals: { theme } }) => {
|
|
7
7
|
// You can either use a function to create DOM elements or use a plain html string!
|
package/src/stories/views/components/externalService/external_service_with_datapolicy_check.hbs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="grid clear-both mt-10">
|
|
2
|
+
{{~> components/base/a11y/hiddenText _locaTag="story_externalservice_intro_sr" ~}}
|
|
3
|
+
<div class="c-externalService c-externalService__{{this.externalServiceConfig.externalServiceId}} js-load"
|
|
4
|
+
data-hr-external-service-ds='{"id":"{{this.externalServiceConfig.externalServiceId}}","embedCode":"{{this.serviceUrl}}", "embedType": "{{this.externalServiceConfig.externalServiceEmbedType}}", "dataPolicyCheck": true,"iFrameConfig": {"heightClass":"ar_iframe"{{#if
|
|
5
|
+
this.fixedHeight}},"fixedHeight":"{{this.fixedHeight}}", "fixedHeightClass":"-fixedHeight"{{else}},{{#if
|
|
6
|
+
this.aspectRatio}}"aspectRatio":"{{this.aspectRatio}}"{{else}}"aspectRatio":"16x9"{{/if}}{{/if}},"noResponsiveIframe":"{{{this.setResponsiveIframe}}}","refreshContent":"{{{this.setTimedReloadIframe}}}","refreshIntervall":"{{this.setTimeForReload}}"}}'>
|
|
7
|
+
{{~> components/externalService/components/external_service_data_policy ~}}
|
|
8
|
+
</div>
|
|
9
|
+
{{~> components/externalService/components/external_service_caption ~}}
|
|
10
|
+
{{~> components/base/a11y/hiddenText _locaTag="story_externalservice_outro_sr" ~}}
|
|
11
|
+
<div class="hidden js-content-settings-button">
|
|
12
|
+
<div class="float-right">
|
|
13
|
+
{{~> components/externalService/components/external_service_settings_button ~}}
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
package/src/stories/views/components/externalService/fixtures/external_service_with_datapolicy.json
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ARD_Mediathek_Video": {
|
|
3
|
+
"externalServiceConfig": {
|
|
4
|
+
"makeConfigurable": true,
|
|
5
|
+
"embedAsIFrame": true,
|
|
6
|
+
"externalServiceId": "ard_mediathek",
|
|
7
|
+
"externalServiceEmbedType": "iFrame",
|
|
8
|
+
"externalServiceName": "ARD Mediathek (Video)"
|
|
9
|
+
},
|
|
10
|
+
"serviceUrl": "https://www.ardmediathek.de/embed/Y3JpZDovL2Z1bmsubmV0LzExNzkwL3ZpZGVvLzE3NzQ2NzU?clientType=hr",
|
|
11
|
+
"setResponsiveIframe": false,
|
|
12
|
+
"setTimedReloadIframe": false,
|
|
13
|
+
"setTimeForReload": ""
|
|
14
|
+
},
|
|
15
|
+
"ARTE_concert_new": {
|
|
16
|
+
"externalServiceConfig": {
|
|
17
|
+
"makeConfigurable": true,
|
|
18
|
+
"embedAsIFrame": true,
|
|
19
|
+
"externalServiceId": "arte_concert_new",
|
|
20
|
+
"externalServiceEmbedType": "iFrame",
|
|
21
|
+
"externalServiceName": "Arte Concert 2.0"
|
|
22
|
+
},
|
|
23
|
+
"serviceUrl": "https://www.arte.tv/player/v5/index.php?json_url=https%3A%2F%2Fapi.arte.tv%2Fapi%2Fplayer%2Fv2%2Fconfig%2Fde%2F116593-005-A&lang=de&autoplay=false&mute=0",
|
|
24
|
+
"aspectRatio": "16x9",
|
|
25
|
+
"setResponsiveIframe": false,
|
|
26
|
+
"setTimedReloadIframe": false,
|
|
27
|
+
"setTimeForReload": ""
|
|
28
|
+
},
|
|
29
|
+
"Datawrapper_CDN": {
|
|
30
|
+
"externalServiceConfig": {
|
|
31
|
+
"makeConfigurable": true,
|
|
32
|
+
"embedAsIFrame": false,
|
|
33
|
+
"externalServiceId": "datawrapper_cdn",
|
|
34
|
+
"externalServiceEmbedType": "js",
|
|
35
|
+
"externalServiceName": "Datawrapper (Datengrafik)"
|
|
36
|
+
},
|
|
37
|
+
"serviceUrl": "https://datawrapper.dwcdn.net/IC3Xn/1/",
|
|
38
|
+
"fixedHeight": "380",
|
|
39
|
+
"setResponsiveIframe": true,
|
|
40
|
+
"setTimedReloadIframe": false,
|
|
41
|
+
"setTimeForReload": ""
|
|
42
|
+
},
|
|
43
|
+
"Esri": {
|
|
44
|
+
"externalServiceConfig": {
|
|
45
|
+
"makeConfigurable": true,
|
|
46
|
+
"embedAsIFrame": true,
|
|
47
|
+
"externalServiceId": "esri",
|
|
48
|
+
"externalServiceEmbedType": "iFrame",
|
|
49
|
+
"externalServiceName": "Esri (Notfallkarte)"
|
|
50
|
+
},
|
|
51
|
+
"serviceUrl": "https://arcg.is/1aW0au0",
|
|
52
|
+
"aspectRatio": "100",
|
|
53
|
+
"setResponsiveIframe": false,
|
|
54
|
+
"setTimedReloadIframe": false,
|
|
55
|
+
"setTimeForReload": "",
|
|
56
|
+
"externalServiceCaption": "Notfallkarte"
|
|
57
|
+
},
|
|
58
|
+
"Facebook": {
|
|
59
|
+
"externalServiceConfig": {
|
|
60
|
+
"makeConfigurable": true,
|
|
61
|
+
"embedAsIFrame": false,
|
|
62
|
+
"externalServiceId": "facebook-post",
|
|
63
|
+
"externalServiceEmbedType": "js",
|
|
64
|
+
"externalServiceName": "Facebook"
|
|
65
|
+
},
|
|
66
|
+
"serviceUrl": "https://www.facebook.com/v10.0/plugins/post.php?app_id=&channel=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df000f487949b618db%26domain%3Dhessenschau-dev-red.hr.de%26is_canvas%3Dfalse%26origin%3Dhttps%253A%252F%252Fhessenschau-dev-red.hr.de%252Ffac8e6f0732031392%26relation%3Dparent.parent&container_width=1&href=https%3A%2F%2Fwww.facebook.com%2FZooFFM%2Fposts%2F1926440010874354&lazy=true&locale=de_DE&sdk=joey&width=660",
|
|
67
|
+
"setResponsiveIframe": false,
|
|
68
|
+
"setTimedReloadIframe": false,
|
|
69
|
+
"setTimeForReload": ""
|
|
70
|
+
},
|
|
71
|
+
"Flourish": {
|
|
72
|
+
"externalServiceConfig": {
|
|
73
|
+
"makeConfigurable": true,
|
|
74
|
+
"embedAsIFrame": true,
|
|
75
|
+
"externalServiceId": "flourish",
|
|
76
|
+
"externalServiceEmbedType": "iFrame",
|
|
77
|
+
"externalServiceName": "Flourish (Datengrafik)"
|
|
78
|
+
},
|
|
79
|
+
"serviceUrl": "https://public.flourish.studio/story/18361/embed",
|
|
80
|
+
"fixedHeight": "550",
|
|
81
|
+
"setResponsiveIframe": false,
|
|
82
|
+
"setTimedReloadIframe": false,
|
|
83
|
+
"setTimeForReload": ""
|
|
84
|
+
},
|
|
85
|
+
"Giphy": {
|
|
86
|
+
"externalServiceConfig": {
|
|
87
|
+
"makeConfigurable": true,
|
|
88
|
+
"embedAsIFrame": true,
|
|
89
|
+
"externalServiceId": "giphy",
|
|
90
|
+
"externalServiceEmbedType": "iFrame",
|
|
91
|
+
"externalServiceName": "Giphy (animiertes GIF)"
|
|
92
|
+
},
|
|
93
|
+
"serviceUrl": "https://giphy.com/embed/ONxw4niC96zwk",
|
|
94
|
+
"setResponsiveIframe": false,
|
|
95
|
+
"setTimedReloadIframe": false,
|
|
96
|
+
"setTimeForReload": ""
|
|
97
|
+
},
|
|
98
|
+
"Instagram": {
|
|
99
|
+
"externalServiceConfig": {
|
|
100
|
+
"makeConfigurable": true,
|
|
101
|
+
"embedAsIFrame": false,
|
|
102
|
+
"externalServiceId": "instagram",
|
|
103
|
+
"externalServiceEmbedType": "js",
|
|
104
|
+
"externalServiceName": "Instagram"
|
|
105
|
+
},
|
|
106
|
+
"serviceUrl": "https://www.instagram.com/p/CjZzvIOs7PK/embed/captioned/?cr=1&v=14&wp=658&rd=https%3A%2F%2Fhessenschau-dev-red.hr.de&rp=%2Ftest-externe-dienste-v1%2Cexternedienste-100.html#%7B%22ci%22%3A0%2C%22os%22%3A5421.799999999814%2C%22ls%22%3A4354.700000000186%2C%22le%22%3A4357.600000000559%7D",
|
|
107
|
+
"setResponsiveIframe": false,
|
|
108
|
+
"setTimedReloadIframe": false,
|
|
109
|
+
"setTimeForReload": ""
|
|
110
|
+
},
|
|
111
|
+
"Twitter": {
|
|
112
|
+
"externalServiceConfig": {
|
|
113
|
+
"makeConfigurable": true,
|
|
114
|
+
"embedAsIFrame": false,
|
|
115
|
+
"externalServiceId": "twitter-post",
|
|
116
|
+
"externalServiceEmbedType": "js",
|
|
117
|
+
"externalServiceName": "X"
|
|
118
|
+
},
|
|
119
|
+
"serviceUrl": "https://platform.twitter.com/embed/Tweet.html?creatorScreenName=hessenschau&creatorUserId=17360630&dnt=false&embedId=twitter-widget-0&features=eyJ0ZndfdGltZWxpbmVfbGlzdCI6eyJidWNrZXQiOltdLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X2ZvbGxvd2VyX2NvdW50X3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9iYWNrZW5kIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19yZWZzcmNfc2Vzc2lvbiI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfZm9zbnJfc29mdF9pbnRlcnZlbnRpb25zX2VuYWJsZWQiOnsiYnVja2V0Ijoib24iLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X21peGVkX21lZGlhXzE1ODk3Ijp7ImJ1Y2tldCI6InRyZWF0bWVudCIsInZlcnNpb24iOm51bGx9LCJ0ZndfZXhwZXJpbWVudHNfY29va2llX2V4cGlyYXRpb24iOnsiYnVja2V0IjoxMjA5NjAwLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3Nob3dfYmlyZHdhdGNoX3Bpdm90c19lbmFibGVkIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19kdXBsaWNhdGVfc2NyaWJlc190b19zZXR0aW5ncyI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdXNlX3Byb2ZpbGVfaW1hZ2Vfc2hhcGVfZW5hYmxlZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdmlkZW9faGxzX2R5bmFtaWNfbWFuaWZlc3RzXzE1MDgyIjp7ImJ1Y2tldCI6InRydWVfYml0cmF0ZSIsInZlcnNpb24iOm51bGx9LCJ0ZndfbGVnYWN5X3RpbWVsaW5lX3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9mcm9udGVuZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9fQ%3D%3D&frame=false&hideCard=false&hideThread=false&id=1578122540362465299&lang=de&origin=https%3A%2F%2Fhessenschau-dev-red.hr.de%2Ftest-externe-dienste-v1%2Cexternedienste-100.html&sessionId=56b29ff8ee6fd214d71e8ef5924dbf80fbc2d6cd&siteScreenName=hessenschau&siteUserId=17360630&theme=light&widgetsVersion=2615f7e52b7e0%3A1702314776716&width=550px",
|
|
120
|
+
"setResponsiveIframe": false,
|
|
121
|
+
"setTimedReloadIframe": false,
|
|
122
|
+
"setTimeForReload": ""
|
|
123
|
+
},
|
|
124
|
+
"Vimeo": {
|
|
125
|
+
"externalServiceConfig": {
|
|
126
|
+
"makeConfigurable": true,
|
|
127
|
+
"embedAsIFrame": true,
|
|
128
|
+
"externalServiceId": "vimeo",
|
|
129
|
+
"externalServiceEmbedType": "iFrame",
|
|
130
|
+
"externalServiceName": "Vimeo (Video)"
|
|
131
|
+
},
|
|
132
|
+
"serviceUrl": "https://player.vimeo.com/video/438111654",
|
|
133
|
+
"setResponsiveIframe": false,
|
|
134
|
+
"setTimedReloadIframe": false,
|
|
135
|
+
"setTimeForReload": ""
|
|
136
|
+
},
|
|
137
|
+
"Youtube": {
|
|
138
|
+
"externalServiceConfig": {
|
|
139
|
+
"makeConfigurable": true,
|
|
140
|
+
"embedAsIFrame": true,
|
|
141
|
+
"externalServiceId": "youtube",
|
|
142
|
+
"externalServiceEmbedType": "iFrame",
|
|
143
|
+
"externalServiceName": "YouTube (Video)"
|
|
144
|
+
},
|
|
145
|
+
"serviceUrl": "https://www.youtube-nocookie.com/embed/LMjXHYHZtrE?rel=0",
|
|
146
|
+
"aspectRatio": "16x9",
|
|
147
|
+
"setResponsiveIframe": false,
|
|
148
|
+
"setTimedReloadIframe": false,
|
|
149
|
+
"setTimeForReload": ""
|
|
150
|
+
},
|
|
151
|
+
"Youtube_360": {
|
|
152
|
+
"externalServiceConfig": {
|
|
153
|
+
"makeConfigurable": true,
|
|
154
|
+
"embedAsIFrame": true,
|
|
155
|
+
"externalServiceId": "youtube360",
|
|
156
|
+
"externalServiceEmbedType": "iFrame",
|
|
157
|
+
"externalServiceName": "YouTube 360 (360° Video)"
|
|
158
|
+
},
|
|
159
|
+
"serviceUrl": "https://www.youtube-nocookie.com/embed/yT1pyf9oXGk",
|
|
160
|
+
"aspectRatio": "16x9",
|
|
161
|
+
"setResponsiveIframe": false,
|
|
162
|
+
"setTimedReloadIframe": false,
|
|
163
|
+
"setTimeForReload": "",
|
|
164
|
+
"externalServiceCaption": "Eine Demo der Virtual Reality-Inszenierung '2049: Zeitreise Mobilität'"
|
|
165
|
+
}
|
|
166
|
+
}
|