Na Velikonoční menu zařaďte třeba bramborové placky, nemusí tam být jen beránek a nádivka

Sdílet

Velikonoční prostírání
Autor: Depositphotos.com
V nynější době velikonoční menu tvoří především mazanec, beránek, vajíčková pomazánka a velikonoční nádivka. Vybavit si nějaké další velikonoční pokrmy může být pro řadu lidí těžké, ba přímo nemožné. Dříve se jich přitom připravovalo na Velikonoce daleko více. Každý den měl přesně daná jídla, která se k němu pojila. Pojďme si je připomenout.

Velikonoční oslavy měly v minulosti hlubší význam. Následovaly po několikadenním půstu, kdy pro jednotlivé dny bylo zvykem připravovat jiná jídla, což mělo svůj důvod. Všechno si postupně objasníme. V závěru ještě naleznete několik receptů, kterými letos můžete ozvláštnit své velikonoční menu.

Co se dozvíte v článku
  1. O Škaredé středě má jídlo vypadat nepovedeně
  2. Na Zelený čtvrtek byla v oblibě pučálka, šumajstr nebo kočičí tanec
  3. Velký pátek byl dnem půstu
  4. V Bílou sobotu přichází na řadu nádivka
  5. Na Boží hod velikonoční se jídávalo maso
  6. Velikonoční pondělí ve znamení vajec
  7. Dalšími tradičními pokrmy jsou pražmo a klobásníky
  8. Velikonoční menu: recepty

O Škaredé středě má jídlo vypadat nepovedeně

Se zahájením velikonočních příprav se čekalo na konec postního období a počínaly se tedy na Škaredou středu. Název tohoto dne se vepisuje i do pokrmů, které bylo zvykem daný den připravovat.

Jídlo totiž mělo na první pohled vyhlížet neúhledně a nepovedeně. Typicky se dělaly různé placky a bramboráky, přičemž nebylo na škodu, když se během smažení potrhaly, naopak se o to usilovalo. Tak vznikaly pověstné trhance. 

Na Zelený čtvrtek byla v oblibě pučálka, šumajstr nebo kočičí tanec

Co se kuchtilo na Zelený čtvrtek, bychom dokázali odhadnout i dnes. Také v současnosti nesmí v tento den na talíři chybět něco zeleného. Obvykle se do pokrmů přidávala kopřiva nebo petrželka. Dále se konzumovala zelená zelenina, jako je třeba špenát nebo zelí. Mimoto se jedly luštěniny. Věřilo se, že zmíněné potraviny jejich konzumentům zajistí zdraví po zbytek roku. 

Oblíbeným pokrmem v tento den byla pučálka, kočičí tanec nebo šumajstr. Jelikož většině tyto názvy pravděpodobně již nic neříkají, hned si uvedeme, o co se vlastně jednalo. Pučálkou se označuje opečený vyklíčený hrách na másle, který se dochucoval solí a pepřem. Existovala rovněž jeho sladká varianta, kdy se pojídal společně s rozinkami, eventuálně medem a skořicí.

Šumajstrem se nazývá směs fazolí a krup, která obsahovala ještě česnek, majoránku a smaženou cibulku a posléze se zapékala. Kočičí tanec se též váže ke směsi, která je téměř totožná s předešlou, jen se fazole vymění za čočku. 

Jako svačina pak posloužily preclíky či škvarkové placky a někteří jídávali chléb namazaný medem. Mělo se za to, že pokud ho sníte před východem slunce, uchrání vás to po celý rok od bodnutí včel nebo uštknutí hadem. 

Velikonoční vajíčka symbolizují nový život. Zkuste recept na vaječné placky, plněná či pštrosí vejce Přečtěte si také:

Velikonoční vajíčka symbolizují nový život. Zkuste recept na vaječné placky, plněná či pštrosí vejce

Velký pátek byl dnem půstu

Velký pátek byl ve znamení půstu. Výjimku tvořily pouze ryby, které bylo povoleno konzumovat. V chudších krajích pak nahrazovaly ryby bramborovým těstem ve tvaru ryby. 

Ve většině domácností měli v tento den pouze jediný chod, obvykle se servírovala hustá zelňačka s bramborami. Případně se přichystal pokrm z potravin, které měly hospodyňky běžně po ruce, jako například knedlíky se sušeným ovocem, jáhly, čočku nebo hrách. 

V Bílou sobotu přichází na řadu nádivka

Bílá sobota již nabízela pokrmy, které nám jsou dobře známé. V tento den přišlo na řadu pečení mazanců, jidášů, věnců a velikonočního beránka. Rozdíl mezi dnešními byl v tom, že dříve zpravidla neobsahovaly cukr. Sladkost jim dodala smetana, někde zase do mazance přidávali tvaroh nebo ho máčeli ve víně. 

Hlavní chod sestával z nádivky, nebo chcete-li ze sekanice, sekaniny, snítku či hlavičky, jak zní její další označení. Nádivka zvaná hlavička získala své pojmenování na základě toho, že se do ní v minulosti dávalo maso z jehněčích hlav. 

Jelikož se jednalo o den následující po půstu, dbalo se na to, aby byla nádivka dostatečně bohatá. Pokud se ještě vrátíme k oněm jidášům, měly by mít tvar provazu kvůli upomínce smrti Jidáše, jelikož se po zradě Krista oběsil. 

Na Boží hod velikonoční se jídávalo maso

Na Boží hod se ještě dodělávaly kynuté buchty a scházet nemohl ani beránek symbolizující obětování Ježíše Krista. Dočkali se i milovníci masa, hodování se totiž obvykle započalo masovým vývarem a poté následovaly chody s různě upraveným masem. Nejčastěji se jednalo o pečené jehněčí, telecí nebo kůzlečí maso. Jídlo se následně zapíjelo vínem. 

Velikonoční pondělí ve znamení vajec

O Velikonočním pondělí se všechno točí kolem vajíček, symbolu nového života. Ta se připravovala na různé způsoby. Na hodovním stole se nacházela kupříkladu plněná nebo smažená vejce.

Samozřejmostí byla také vajíčková pomazánka a zároveň vejce tvořila důležitou ingredienci v nádivce nebo se kladla do omáček. Rovněž jste mohli zaslechnout o polévce zvané šmigrustovka, do níž se přidávalo vše, co koledníci vykoledovali.

Dalšími tradičními pokrmy jsou pražmo a klobásníky

Tradiční velikonoční menu mohlo ještě sestávat z pražma, klobásníků nebo ptáčků. Pražmo se říkávalo naklíčeným obilným zrnům, jež se nechala osmažit na másle a na závěr se podle libosti dochutila. 

Jak název klobásníků napovídá, hlavní ingrediencí byla klobása, která se obalila a upekla v těstíčku. Později se místo klobásy do těstíčka zabalovalo i mleté maso. Co se týče ptáčků, stejně jako jidáše se dělaly z kynutého těsta. Jejich tvar měl připomínat ptáčka, přičemž úsek s rozinkou měl zpodobňovat hlavičku. 

Galerie: Co se jí na Velikonoce ve světě

Velikonoční menu: recepty

Klasické velikonoční menu dokáže sestavit každý, má v něm své pevně dané místo nádivka, mazanec a beránek. Pokud by se však letos někdo poohlížel po něčem trochu neobvyklejším a hodlal své slavnostní velikonoční menu trochu ozvláštnit, mohl by mu některý z níže uvedených receptů kápnout do noty. 

Polévka z kopřiv a medvědího česneku

I když zrovna nepřipravujete velikonoční menu o 6 chodech, polévka by o Velikonocích na stole neměla chybět. Vybrali jsme takovou, která už z dálky zaujme svou zelenou barvou a pro Zelený čtvrtek je tedy ideální. A to nemluvíme o všech prospěšných látkách, které obsahuje. 

Ingredience:

  • 180 g kopřiv,
  • 20 g medvědího česneku,
  • 1 cibule,
  • 3 větší brambory,
  • 15 g másla,
  • 0,5 l zeleninového vývaru,
  • 1 smetana ke šlehání,
  • sůl a pepř,
  • Na ozdobu: sedmikrásky.

Postup:

Nejdříve si nakrájíme cibuli na kostičky a tu poté na másle orestujeme dozlatova. Následně k ní přisypeme brambory, které jsme předtím taktéž nakrájeli na kostičky. Po chvilce, co spolu vše restujeme, přidáme nasekaný medvědí česnek, dále smetanu a vývar. 

Polévku vaříme do té doby, než budou brambory měkké. Zbývá ji ještě osolit a opepřit. Před koncem varu z připravených kopřiv odejmeme horní malé lístky a po omytí a nasekání je vhodíme do polévky a jen lehce je spaříme. Nandanou polévku můžeme ozdobit kvítky sedmikrásek. 

Bramborové placky s povidly

Domníváme se, že bramborové placky o Velikonocích nejsou příliš v kurzu. Je to ale škoda, jelikož se jedná o poměrně jednoduché jídlo na přípravu, což mu nicméně neubírá na chuti. Jak už navíc víme, dříve patřilo mezi tradiční velikonoční pokrmy. Jestliže je budete dělat přímo na Škaredou středu, neuškodí, pokud je v duchu tohoto dne trochu potrháte. 

Ingredience:

  • 6 větších brambor (varný typ B),
  • 1 vejce,
  • 250 g hrubé mouky,
  • švestková povidla,
  • sůl,
  • slunečnicový olej,
  • tvaroh na strouhání.

Postup:

Ze všeho nejdříve vložíme brambory do hrnce a uvaříme je doměkka, a to i se slupkou. Po vychladnutí je oloupeme a nastrouháme najemno. K bramborám přidáme vejce, přimícháme špetku soli a mouku. Z této směsi vypracujeme hladké těsto, které se nebude lepit. Poté ho necháme si na chvilku odpočinout v chladu. 

Posléze pomoučníme kuchyňskou pracovní desku, na níž těsto vyválíme do tenčího plátu, z nějž budeme moci vykrajovat placičky. Ty následně budeme smažit z obou stran na pánvi s rozehřátým slunečnicovým olejem na střední teplotu, dokud nezezlátnou. Hotové placičky se podávají se švestkovými povidly a nastrouhaným tvarohem. 

Slané muffiny se špenátem

Muffiny se spíše pokládají za sladkou pochoutku a dělají se například s čokoládou. Na Velikonoce však o sladké není nouze, a tak by mohla přijít vhod jejich slaná varianta. Muffiny představují lahodnou svačinku, která je přesně do ruky. I do tohoto receptu se zároveň vloudila zelená v podobě špenátu, když už tu máme ty svátky jara.

Ingredience:

  • 250 g hladké mouky,
  • 200 g nasekaného špenátu,
  • 300 g anglické slaniny,
  • 250 g podmáslí,
  • 75 g rozpuštěného másla,
  • 80 g strouhaného sýra,
  • 2 vejce,
  • 1 cibule,
  • 2 čajové lžičky kypřicího prášku,
  • 0,5 čajové lžičky jedlé sody,
  • sůl.

Postup:

Nejprve na tuku zpěníme cibulku nakrájenou na kostičky. K ní přidáme špenát a chvíli podusíme. V míse zatím smícháme sypké suroviny, k nimž následně přidáme vejce, rozpuštěné máslo a podmáslí. 

Směs důkladně promícháme a ještě k ní připojíme sýr, slaninu nakrájenou na kostičky a již připravený špenát. Opět vše promícháme a poté již můžeme plnit košíčky na muffiny. Ve vyhřáté troubě na 200 °C je pak necháme péct zhruba na 25 minut. Jsou-li hotové, lze snadno zjistit pomocí špejle. 

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »