hr-design-system-handlebars 1.62.0 → 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.
Files changed (54) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/assets/index.css +76 -12
  3. package/dist/assets/js/components/externalService/dataWrapperContentRefresher.subfeature.js +85 -0
  4. package/dist/assets/js/components/externalService/dataWrapperNoResponsiveIframe.subfeature.js +44 -0
  5. package/dist/assets/js/components/externalService/externalServiceDs.feature.js +123 -189
  6. package/dist/views/components/content/copytext/components/externalservice.hbs +3 -78
  7. package/dist/views/components/content/copytext/copytext.hbs +10 -1
  8. package/dist/views/components/externalService/components/external_service_caption.hbs +5 -0
  9. package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_data_policy.hbs +6 -6
  10. package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_form_checkbox.hbs +2 -2
  11. package/dist/views/components/externalService/{external_service_load_content_button.hbs → components/external_service_load_content_button.hbs} +2 -2
  12. package/{src/stories/views/components/externalService → dist/views/components/externalService/components}/external_service_settings_button.hbs +1 -1
  13. package/dist/views/components/externalService/external_service.hbs +34 -16
  14. package/dist/views/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
  15. package/dist/views_static/components/content/copytext/components/externalservice.hbs +3 -78
  16. package/dist/views_static/components/content/copytext/copytext.hbs +10 -1
  17. package/dist/views_static/components/externalService/components/external_service_caption.hbs +5 -0
  18. package/dist/views_static/components/externalService/{external_service_data_policy.hbs → components/external_service_data_policy.hbs} +6 -6
  19. package/dist/views_static/components/externalService/{external_service_form_checkbox.hbs → components/external_service_form_checkbox.hbs} +2 -2
  20. package/{src/stories/views/components/externalService → dist/views_static/components/externalService/components}/external_service_load_content_button.hbs +2 -2
  21. package/dist/{views/components/externalService → views_static/components/externalService/components}/external_service_settings_button.hbs +1 -1
  22. package/dist/views_static/components/externalService/external_service.hbs +34 -16
  23. package/dist/views_static/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
  24. package/package.json +1 -1
  25. package/src/assets/css/custom-utilities.css +49 -15
  26. package/src/assets/fixtures/content/copytext/copytext_externalservice.json +44 -1
  27. package/src/assets/fixtures/external_service/external_service.inc.json +3 -3
  28. package/src/stories/views/components/content/copytext/components/externalservice.hbs +3 -78
  29. package/src/stories/views/components/content/copytext/copytext.hbs +10 -1
  30. package/src/stories/views/components/content/copytext/fixtures/copytext_externalservice.json +1 -1
  31. package/src/stories/views/components/externalService/components/external_service_caption.hbs +5 -0
  32. package/{dist/views/components/externalService → src/stories/views/components/externalService/components}/external_service_data_policy.hbs +6 -6
  33. package/{dist/views/components/externalService → src/stories/views/components/externalService/components}/external_service_form_checkbox.hbs +2 -2
  34. package/{dist/views_static/components/externalService → src/stories/views/components/externalService/components}/external_service_load_content_button.hbs +2 -2
  35. package/{dist/views_static/components/externalService → src/stories/views/components/externalService/components}/external_service_settings_button.hbs +1 -1
  36. package/src/stories/views/components/externalService/dataWrapperContentRefresher.subfeature.js +85 -0
  37. package/src/stories/views/components/externalService/dataWrapperNoResponsiveIframe.subfeature.js +44 -0
  38. package/src/stories/views/components/externalService/externalServiceDs.feature.js +123 -189
  39. package/src/stories/views/components/externalService/external_service.data.js +1 -1
  40. package/src/stories/views/components/externalService/external_service.hbs +34 -16
  41. package/src/stories/views/components/externalService/external_service.stories.js +1 -1
  42. package/src/stories/views/components/externalService/external_service_with_datapolicy_check.hbs +16 -0
  43. package/src/stories/views/components/externalService/fixtures/external_service_with_datapolicy.json +166 -0
  44. package/src/stories/views/components/grid/grid.stories.js +1 -1
  45. package/dist/views/components/externalService/external_service_caption.hbs +0 -3
  46. package/dist/views/components/externalService/externalservice.hbs +0 -38
  47. package/dist/views_static/components/externalService/external_service_caption.hbs +0 -3
  48. package/dist/views_static/components/externalService/externalservice.hbs +0 -38
  49. package/src/stories/views/components/externalService/external_service_caption.hbs +0 -3
  50. package/src/stories/views/components/externalService/externalservice.hbs +0 -38
  51. package/src/stories/views/components/externalService/fixtures/external_service.json +0 -1
  52. /package/dist/views/components/externalService/{data_policy_link.hbs → components/data_policy_link.hbs} +0 -0
  53. /package/dist/views_static/components/externalService/{data_policy_link.hbs → components/data_policy_link.hbs} +0 -0
  54. /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 { options } = context,
16
- { element: rootElement } = context,
17
- rootParent = rootElement.parentNode
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
- const handleDatapolicy = function (event) {
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 = createDataWrapperUniqueID()
209
- if (iFrameConfig.noResponsiveIframe == 'true') {
210
- var parentDiv = document.createElement('div')
211
- parentDiv.className = 'copytext__scrollWrapper'
212
- var div = document.createElement('div')
213
- if (iFrameConfig.aspectRatio === undefined) {
214
- div.className = 'noaspect_datawrapper_cdn'
215
- div.style.height = iFrameConfig.fixedHeight + 'px'
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
- div.appendChild(iframe)
232
- parentDiv.appendChild(div)
233
- rootElement.appendChild(parentDiv)
234
- } else {
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
- var remainingTime
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&amp;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:660px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);' >" +
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='ar--" +
429
- iFrameConfig.aspectRatio +
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/external_service.json'
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
- <div class="grid">
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='{"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/external_service_data_policy ~}}
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
- {{~> components/externalService/external_service_caption ~}}
10
- {{~> components/base/a11y/hiddenText _locaTag="story_externalservice_outro_sr" ~}}
11
- <div >
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 './external_service.hbs'
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!
@@ -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>
@@ -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
+ }