Initial commit - Typo3 11.5.41

This commit is contained in:
Matteo Gallo
2026-07-03 17:53:31 +02:00
commit 5ca4743197
6811 changed files with 568848 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0">
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2021-11-04T17:54:12Z" product-name="paginatedprocessors">
<header/>
<body>
<trans-unit id="gdpr-text">
<target state="translated">Wenn Sie das Video abspielen, sendet YouTube Ihnen einige Cookies!</target>
</trans-unit>
<trans-unit id="gdpr-consent">
<target>Accept &amp; Play</target>
</trans-unit>
<trans-unit id="gdpr-consentall">
<target>Accept for All Videos &amp; Play</target>
</trans-unit>
<trans-unit id="gdpr-cancel">
<target>Cancel</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0">
<file source-language="en" target-language="et" datatype="plaintext" original="messages" date="2021-11-04T17:54:12Z" product-name="paginatedprocessors">
<header/>
<body>
<trans-unit id="gdpr-text">
<target state="translated">Video käivitamisel laetakse väline meedia ja YouTube teile küpsiseid!</target>
</trans-unit>
<trans-unit id="gdpr-consent">
<target>Nõustu ja vaata</target>
</trans-unit>
<trans-unit id="gdpr-consentall">
<target>Nõustu ka edaspidi ja vaata</target>
</trans-unit>
<trans-unit id="gdpr-cancel">
<target>Loobu</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2020-02-23T18:12:17Z"
product-name="content_slug">
<header/>
<body>
<trans-unit id="gdpr-text">
<source>On 'Play' external media is loaded and YouTube sends you some cookies!</source>
</trans-unit>
<trans-unit id="gdpr-consent">
<source>Accept &amp; Play</source>
</trans-unit>
<trans-unit id="gdpr-consentall">
<source>Accept for All Videos &amp; Play</source>
</trans-unit>
<trans-unit id="gdpr-cancel">
<source>Cancel</source>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2020-02-23T18:12:17Z"
product-name="content_slug">
<header/>
<body>
<trans-unit id="tt_content.tx_content_slug_fragment">
<source>Human-readable URL #anchor</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.title">
<source>YouTube Video</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.settings">
<source>Settings</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.layout">
<source>Layout</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.cover">
<source>Video Cover</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_caption.title">
<source>Description (Caption)</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_caption.description">
<source>Usually the description of the video content in few words.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_ratio.title">
<source>Aspect Ratio</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_ratio.description">
<source>Changes video width and height ratio.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_autoplay.title">
<source>Autoplay</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_autoplay.description">
<source>Starts video playback automatically on page load.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_showinfo.title">
<source>Video Info</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_showinfo.description">
<source>Shows information (title, etc.) from YouTube.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_rel.title">
<source>Related Videos</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_rel.description">
<source>Shows related videos from YouTube at the end of the video.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_starttime.title">
<source>Start Time (hh:mm:ss)</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_starttime.description">
<source>Starts video at this minute.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_endtime.title">
<source>End Time (hh:mm:ss)</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_endtime.description">
<source>Starts video at this minute.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_fullscreen.title">
<source>Fullscreen</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_fullscreen.description">
<source>Disables and enables fullscreen option.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_mute.title">
<source>Mute</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_mute.description">
<source>Video starts playing with the sound turned off.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_loop.title">
<source>Loop</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_loop.description">
<source>Sets looping on and off.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.enable">
<source>Enable</source>
</trans-unit>
<trans-unit id="tx_youtubevideo.disable">
<source>Disable</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_covertitle.title">
<source>Cover Title</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_covertitle.description">
<source>Title shown over cover image.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_covertext.title">
<source>Cover Text</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_covertext.description">
<source>Text shown over cover image under the title.</source>
</trans-unit>
<trans-unit id="tx_youtubevideo_cover.image">
<source>Custom Cover</source>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -0,0 +1,17 @@
<div class="youtubevideo {f:if(condition: data.tx_youtubevideo_colcount, then: 'item')}" style="{f:if(condition: data.tx_youtubevideo_colcount, then: 'width: {itemWidth}%')}">
<div class="videoWrapper v{data.uid}" style="padding-bottom:<f:if condition="{item.settings.ratio} == 0">{ratioDefault}%</f:if><f:if condition="{item.settings.ratio} == 1">{ratio1}%</f:if>;">
<iframe
src="https://www.youtube.com/embed/
{item.video.contents}
{f:if(condition: item.settings.fullscreen, then: '?fs=1', else:'?fs=0')}
{f:if(condition: item.settings.loop, then: '&loop=1')}
{f:if(condition: item.settings.loop, then: '&playlist={item.video.contents}')}
{f:if(condition: item.settings.start, then: '&start={item.settings.start}')}
{f:if(condition: item.settings.end, then: '&end={item.settings.end}')}
{f:if(condition: item.settings.rel, then: '&rel=1', else: '&rel=0')}
{f:if(condition: item.settings.mute, then: '&mute=1', else: '&mute=0')}
{f:if(condition: hl, then: '&hl={hl}')}
{f:if(condition: modestbranding, then: '&modestbranding={modestbranding}')}">
</iframe>
</div>
</div>

View File

@@ -0,0 +1,78 @@
<div class="youtubevideo {f:if(condition: data.tx_youtubevideo_colcount, then: 'item')}" style="{f:if(condition: data.tx_youtubevideo_colcount, then: 'width: {itemWidth}%')}">
<div class="videoWrapper v{data.uid} <f:if condition="{item.coverimages.0}">coverimaged autoplay{item.video.autoplay}</f:if>"
style="padding-bottom:<f:if condition="{item.settings.ratio} == 0">{ratioDefault}%</f:if><f:if condition="{item.settings.ratio} == 1">{ratio1}%</f:if>;
">
<div id="player-{item.video.uid}"></div>
<a
id="coverimage-{item.video.uid}"
class="coverimage-click"
data-yt-code="{item.video.contents}"
data-yt-host="{f:if(condition: nocookiehost, then: 'https://www.youtube-nocookie.com', else: 'https://www.youtube.com')}"
data-yt-id="player-{item.video.uid}"
data-yt-uid="{item.video.uid}"
data-yt-vars="
&quot;playsinline&quot;: 1,
{f:if(condition: item.settings.fullscreen, then: '&quot;fs&quot;: 1,', else:'&quot;fs&quot;: 0,')}
{f:if(condition: item.settings.loop, then: '&quot;loop&quot;: 1,')}
{f:if(condition: item.settings.loop, then: '&quot;playlist&quot;: &quot;{item.video.contents}&quot;,')}
{f:if(condition: item.settings.start, then: '&quot;start&quot;: {item.settings.start},')}
{f:if(condition: item.settings.end, then: '&quot;end&quot;: {item.settings.end},')}
{f:if(condition: item.settings.rel, then: '&quot;rel&quot;: 1,', else: '&quot;rel&quot;: 0,')}
{f:if(condition: item.settings.mute, then: '&quot;mute&quot;: 1,', else: '&quot;mute&quot;: 0,')}
{f:if(condition: hl, then: '&quot;hl&quot;: &quot;{hl}&quot;,')}
{f:if(condition: modestbranding, then: '&quot;modestbranding&quot;: {modestbranding},')}
"
onclick="coverimageClick();
"></a>
<div
class="coverimage"
style="background:url(
<f:if condition="{item.coverimages.0}">
<f:then>
<f:uri.image
src="{item.coverimages.0.uid}"
treatIdAsReference="1"
width="{coverImageWidth_x2}"
cropVariant="{f:if(condition: item.settings.ratio, then: 'tv', else: 'widescreen')}"
/>
</f:then>
<f:else>
<f:uri.image src="{item.original.preview}" width="{coverImageWidth_x2}" />
</f:else>
</f:if>
) center center no-repeat; background-size: cover;">
<f:if condition="{item.video.title} && !{data.tx_youtubevideo_titles} || {item.video.description} && {data.tx_youtubevideo_descriptions}">
<div class="covertext">
<f:if condition="{item.video.title} && !{data.tx_youtubevideo_titles} "><h2>{item.video.title}</h2><br /></f:if>
<f:if condition="{item.video.description} && {data.tx_youtubevideo_descriptions}"><p>{item.video.description}</p></f:if>
</div>
</f:if>
<f:render section="playbutton" />
</div>
</div>
<f:render section="GdprOverlay" arguments="{_all}" />
</div>
<f:section name="playbutton">
<svg class="playbutton" height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="rgba(0,0,0,0.75)"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg>
</f:section>
<f:section name="GdprOverlay">
<div class="youtubevideo-gdpr-overlay " id="gdpr-{item.video.uid}">
<div class="youtubevideo-gdpr-text">
<div class="youtubevideo-gdpr-note">
<f:if condition="{gdprtextoverride}">
<f:then>
{gdprtextoverride}
</f:then>
<f:else>
<f:translate key="gdpr-text" extensionName="youtubevideo" />
</f:else>
</f:if>
</div>
<a class="youtubevideo-gdpr-button" data-yt-uid="{item.video.uid}" href="javascript:void(0)" onclick="gdprAgreeOnce();"><f:translate key="gdpr-consent" extensionName="youtubevideo" /></a>
<a class="youtubevideo-gdpr-button" data-yt-uid="{item.video.uid}" href="javascript:void(0)" onclick="gdprAgree();"><f:translate key="gdpr-consentall" extensionName="youtubevideo" /></a><br />
</div>
<a class="youtubevideo-gdpr-cancel" data-yt-uid="{item.video.uid}" href="javascript:void(0)" onclick="gdprCancel();">×</a>
</div>
</f:section>

View File

@@ -0,0 +1,48 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:section name="HeaderAssets">
<link rel="preconnect" href="https://www.youtube-nocookie.com">
<link rel="preconnect" href="https://www.youtube.com">
<link rel="preconnect" href="https://i.ytimg.com">
<link rel="preconnect" href="https://i9.ytimg.com">
<link rel="preconnect" href="https://s.ytimg.com">
</f:section>
<f:layout name="Default" />
<f:section name="Main">
<f:if condition="{youtubevideos -> f:count()} < {data.tx_youtubevideo_colcount}">
<f:then><f:variable name="colCount">{youtubevideos -> f:count()}</f:variable></f:then>
<f:else><f:variable name="colCount">{data.tx_youtubevideo_colcount}</f:variable></f:else>
</f:if>
<f:variable name="spaceWidthTotal">{colCount - 1 * settings.colspacewidth}</f:variable>
<f:variable name="itemWidth">{100 - spaceWidthTotal / colCount}</f:variable>
<f:variable name="spaceInPx">{colCount - 1 * settings.colspacewidth / 100 * settings.coverimagewidth}</f:variable>
<f:variable name="coverImageWidth">{settings.coverimagewidth - spaceInPx / colCount}</f:variable>
<f:variable name="coverImageWidth_x2">{coverImageWidth * 2}</f:variable>
<f:if condition="{youtubevideos -> f:count()} > 1">
<div id="youtubevideogallery-{data.uid}" class="youtubevideogallery colcount-{colCount}">
</f:if>
<f:for each="{youtubevideos}" as="item" iteration="iterator">
<f:render partial="Item" arguments="{_all}" />
<f:if condition="{iterator.isLast} != 1"><div class="space" style="width: {settings.colspacewidth}%; padding-bottom: {settings.colspacewidth}%;"></div></f:if>
</f:for>
<f:if condition="{youtubevideos -> f:count()} > 1">
</div>
</f:if>
<f:if condition="{pagination.numberOfPages} > 1">
<f:render partial="Pagination" arguments="{pagination:pagination}" />
</f:if>
<f:if condition="!{gdprnote}">
<f:then><script>disableGdpr = 1;</script></f:then>
<f:else><script>disableGdpr = 0;</script></f:else>
</f:if>
</f:section>
<f:section name="FooterAssets">
<script>
function getCookie(t){var e=("; "+document.cookie).split("; "+t+"=");return 2==e.length?e.pop().split(";").shift():null}function gdprCancel(){var t=event.target||event.srcElement;dataYtUid=0,dataYtUid=t.getAttribute("data-yt-uid"),document.getElementById("gdpr-"+dataYtUid).style.display="none"}function gdprAgree(){document.cookie="youtubevideo-consent=1; path=/;";var t=event.target||event.srcElement;dataYtUid=0,dataYtUid=t.getAttribute("data-yt-uid"),document.getElementById("gdpr-"+dataYtUid).style.display="none",document.getElementById("coverimage-"+dataYtUid).click()}function gdprAgreeOnce(){var t=event.target||event.srcElement;dataYtUid=0,dataYtUid=t.getAttribute("data-yt-uid"),gdprAgreedOnce=dataYtUid,document.getElementById("gdpr-"+dataYtUid).style.display="none",document.getElementById("coverimage-"+dataYtUid).click()}function coverimageClick(t){t||(t=window.event);var e=t.target||t.srcElement;playerId=0,playerId=e.getAttribute("data-yt-id"),dataYtCode=0,dataYtCode=e.getAttribute("data-yt-code"),dataYtVars=0,dataYtVars=JSON.parse("{"+e.getAttribute("data-yt-vars").replace(/,\s*$/,"")+"}"),dataYtHost=0,dataYtHost=e.getAttribute("data-yt-host"),dataYtUid=0,dataYtUid=e.getAttribute("data-yt-uid"),getCookie("youtubevideo-consent")||gdprAgreedOnce==dataYtUid||disableGdpr?(youTubeApiIsLoaded?loadPlayer():loadYouTubeApi(),e.classList.add("play")):document.getElementById("gdpr-"+dataYtUid).style.display="block"}function loadYouTubeApi(){var t=document.createElement("script");t.src="https://www.youtube.com/iframe_api";var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e),youTubeApiIsLoaded=1}function loadPlayer(){player=new YT.Player(playerId,{height:"390",width:"640",videoId:dataYtCode,host:dataYtHost,playerVars:dataYtVars,events:{onReady:onPlayerReady,onStateChange:onPlayerStateChange}})}function onYouTubeIframeAPIReady(){loadPlayer()}function onPlayerReady(t){player.setPlaybackRate(1),player.playVideo()}function onPlayerStateChange(t){}function stopVideo(){player.stopVideo()}function youtubevideoDetectWidth(t){for(var e=document.getElementsByClassName(t),a=0;a<e.length;++a){var d=e[a],o=e[a].clientWidth;o<containerBreakpointSmall?d.classList.add("small"):d.classList.remove("small"),o<containerBreakpointTiny?d.classList.add("tiny"):d.classList.remove("tiny")}}youTubeApiIsLoaded=0,gdprAgreedOnce=0,youtubevideoDetectWidth("youtubevideo"),window.addEventListener("resize",function(){youtubevideoDetectWidth("youtubevideo")});
</script>
<f:comment>
<script type="text/javascript" src="{f:uri.resource(path: 'JavaScript/youtubevideo.js', extensionName: 'Youtubevideo')}"></script>
</f:comment>
</f:section>
</html>

View File

@@ -0,0 +1,35 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:section name="HeaderAssets">
<link rel="preconnect" href="https://www.youtube-nocookie.com">
<link rel="preconnect" href="https://www.youtube.com">
<link rel="preconnect" href="https://i.ytimg.com">
<link rel="preconnect" href="https://i9.ytimg.com">
<link rel="preconnect" href="https://s.ytimg.com">
</f:section>
<f:layout name="Default" />
<f:section name="Main">
<f:if condition="{youtubevideos -> f:count()} < {data.tx_youtubevideo_colcount}">
<f:then><f:variable name="colCount">{youtubevideos -> f:count()}</f:variable></f:then>
<f:else><f:variable name="colCount">{data.tx_youtubevideo_colcount}</f:variable></f:else>
</f:if>
<f:variable name="spaceWidthTotal">{colCount - 1 * settings.colspacewidth}</f:variable>
<f:variable name="itemWidth">{100 - spaceWidthTotal / colCount}</f:variable>
<f:variable name="spaceInPx">{colCount - 1 * settings.colspacewidth / 100 * settings.coverimagewidth}</f:variable>
<f:variable name="coverImageWidth">{settings.coverimagewidth - spaceInPx / colCount}</f:variable>
<f:variable name="coverImageWidth_x2">{coverImageWidth * 2}</f:variable>
<f:if condition="{youtubevideos -> f:count()} > 1">
<div id="youtubevideogallery-{data.uid}" class="youtubevideogallery colcount-{colCount}">
</f:if>
<f:for each="{youtubevideos}" as="item" iteration="iterator">
<f:render partial="Iframe" arguments="{_all}" />
<f:if condition="{iterator.isLast} != 1"><div class="space" style="width: {settings.colspacewidth}%; padding-bottom: {settings.colspacewidth}%;"></div></f:if>
</f:for>
<f:if condition="{youtubevideos -> f:count()} > 1">
</div>
</f:if>
<f:if condition="{pagination.numberOfPages} > 1">
<f:render partial="Pagination" arguments="{pagination:pagination}" />
</f:if>
</f:section>
</html>