Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/ilovecveti.ru/bitrix/templates/landing24/assets/js/helpers/ |
Upload File : |
;(function() { "use strict"; BX.addCustomEvent(window, "BX.Landing.Block:init", function (event) { initBlock([].slice.call(event.block.querySelectorAll('[data-source]')), event.block); }); BX.addCustomEvent("BX.Landing.Block:Node:update", function (event) { if (event.node && event.node.hasAttribute('data-source')) { initBlock([].slice.call(event.block.querySelectorAll('[data-source]')), event.block); } }); function initBlock(videos, block) { const blockId = block.getAttribute('data-id'); if (videos.length) { videos.forEach(function (video) { video = resetPlayerPreview(video); const source = video.dataset.source; const src = video.src || video.dataset.src; if ( BX.Landing.Utils.Matchers.youtube.test(source) || BX.Landing.Utils.Matchers.youtube.test(src) ) { if (src.indexOf('autoplay=1') !== -1 && BX.Landing.getMode() !== 'edit') { loadPlayerYT(video, {autoplay: 1, mute: 1}) } // div-preview else if (video.tagName !== 'IFRAME') { BX.bind(video, 'click', onYTPreviewClick); } // old format else { loadPlayerYT(video); } } else if ( BX.Landing.Utils.Matchers.vk.test(source) && video.dataset.preview ) { if (src.indexOf('autoplay=1') !== -1 && BX.Landing.getMode() !== 'edit') { loadPlayerVK(video) } BX.bind(video, 'click', () => { loadPlayerVK(video); }); } else if ( BX.Landing.Utils.Matchers.vimeo.test(source) || BX.Landing.Utils.Matchers.vine.test(source) || BX.Landing.Utils.Matchers.facebookVideos.test(source) || BX.Landing.Utils.Matchers.rutube.test(source) ) { loadPlayerIframe(video); } else { showError(video, blockId); } }); } } function showError(node, blockId) { node.classList.remove('g-video-preview'); node.classList.add('g-video-preview-error'); let innerHTML = ` <div class="g-landing-alert-v2"> <div class="g-landing-alert-title"> ${BX.message('LANDING_VIDEO_ALERT_WRONG_SOURCE')} </div> <div class="g-landing-alert-text"> ${BX.message('LANDING_VIDEO_ALERT_WRONG_SOURCE_TEXT_3')} </div> <br> `; if (isButtonNeeded(blockId)) { innerHTML += ` <div class="ui-btn" onclick="BX.Landing.PageObject?.getBlocks()?.get(${blockId})?.onShowContentPanel();"> ${BX.message('LANDING_VIDEO_ALERT_WRONG_SOURCE_BUTTON')} </div> `; } innerHTML += `</div>`; node.innerHTML = innerHTML; } function isButtonNeeded(blockId) { const block = BX.Landing.PageObject?.getBlocks()?.get(blockId); if (!block) { return false; } const blockCode = block.manifest?.code; const excludedBlockCodes = [ '46.6.cover_with_bg_image_and_bottom_title', '49.5.big_with_text_3', '54.1.cover_with_slider_bgvideo', ]; return !excludedBlockCodes.includes(blockCode); } function resetPlayerPreview(playerPreview) { // convert to div if (playerPreview.tagName === 'IFRAME') { const clearPlayerPreview = BX.create('div', { props: { className: playerPreview.className }, style: { backgroundImage: 'url('+ playerPreview.dataset.preview +')' }, dataset: { src: playerPreview.src || playerPreview.dataset.src, source: playerPreview.dataset.source } }); BX.insertBefore(clearPlayerPreview, playerPreview); BX.remove(playerPreview); return clearPlayerPreview; } // clear events BX.unbind(playerPreview, 'click', onYTPreviewClick); // clear errors playerPreview.classList.add('g-video-preview'); playerPreview.classList.remove('g-video-preview-error'); playerPreview.innerHTML = ''; return playerPreview; } function onYTPreviewClick(event) { const playerPreview = event.target; loadPlayerYT(playerPreview, {autoplay: 1}); } /** * Loader for YOutube * @param {Element} playerPreview * @param {Object} additionalParams */ function loadPlayerYT(playerPreview, additionalParams) { const loader = new BX.Loader({ target: playerPreview }); loader.show(); const playerFrame = createPlayerFrame(playerPreview); const playerParams = (typeof additionalParams !== 'undefined' && Object.keys(additionalParams).length) ? additionalParams : {} ; playerParams.onPlayerReadyHandler = () => { loader.hide(); BX.remove(playerPreview); }; BX.insertBefore(playerFrame, playerPreview); BX.Landing.MediaPlayer.Factory.create(playerFrame, playerParams); } /** * Loader for other videos (just iframe, wo API) * @param {Element} playerPreview */ function loadPlayerVK(playerPreview) { const loader = new BX.Loader({ target: playerPreview }); loader.show(); playerPreview.dataset.src = BX.Landing.Utils.addQueryParams(playerPreview.dataset.src, { autoplay: 1, }); const playerFrame = createPlayerFrame(playerPreview); playerFrame.addEventListener('load', () => { loader.hide(); BX.remove(playerPreview); }); BX.insertBefore(playerFrame, playerPreview); } /** * Loader for other videos (just iframe, wo API) * @param {Element} playerPreview */ function loadPlayerIframe(playerPreview) { const loader = new BX.Loader({ target: playerPreview }); loader.show(); const playerFrame = createPlayerFrame(playerPreview); playerFrame.addEventListener('load', () => { loader.hide(); BX.remove(playerPreview); }); BX.insertBefore(playerFrame, playerPreview); } /** * * @param {HTMLElement} playerPreview * @returns {HTMLElement} */ function createPlayerFrame(playerPreview) { // old format - iframe already loaded if (playerPreview.tagName === 'IFRAME') { return playerPreview; } const selector = playerPreview.className; playerPreview.classList.add('--loader'); return BX.create('iframe', { props: { className: selector }, attrs: { src: BX.util.htmlspecialcharsback(playerPreview.dataset.src), frameborder: "0", allowfullscreen: "allowfullscreen", allow: "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" }, dataset: { src: BX.util.htmlspecialcharsback(playerPreview.dataset.src), source: BX.util.htmlspecialcharsback(playerPreview.dataset.source), }, }); } })();