187 lines
8.1 KiB
Plaintext
187 lines
8.1 KiB
Plaintext
|
<div class="w-ba-banner ba-banner-widget-1 ba-banner-widget-youtube">
|
||
|
<div class="w-ba-banner__wrap cycle-slideshow"
|
||
|
data-list="images"
|
||
|
data-level="0"
|
||
|
data-cycle-slides=".w-ba-banner__slide"
|
||
|
data-cycle-log="false"
|
||
|
data-overlay=".w-ad-banner__overlay_{{subpart-id}}"
|
||
|
data-overlay-template="<h2><span>{{title}}</span></h2>{{desc}}"
|
||
|
data-cycle-auto-height="{{base_image}}"
|
||
|
data-cycle-speed="{{speed}}"
|
||
|
data-cycle-timeout="{{timeout}}"
|
||
|
data-cycle-fx="{{ad_fx}}"
|
||
|
data-pager=".banner_caption_{{subpart-id}}"
|
||
|
data-pager-template="<li><button></button></li>"
|
||
|
data-pager-active-class="active-slide"
|
||
|
data-cycle-youtube="true"
|
||
|
data-cycle-youtube-autostart="false"
|
||
|
data-cycle-swipe="true"
|
||
|
data-cycle-prev=".banner_prev"
|
||
|
data-cycle-next=".banner_next"
|
||
|
data-cycle-pause-on-hover="true"
|
||
|
style="padding-bottom: 56.25%;"
|
||
|
>
|
||
|
|
||
|
{{html}}
|
||
|
</div>
|
||
|
<div class="ad-overlay w-ad-banner__overlay_{{subpart-id}}"></div>
|
||
|
<div class="w-ba-banner__caption banner-pager banner_caption_{{subpart-id}}"></div>
|
||
|
<ul class="controlplay"><a class="resume-slide active" title = "<%= (I18n.locale.to_s =="zh_tw") ? "繼續播放" : "resume" %>"><i></i></a><a class="pause-slide" title = "<%= (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause"%>"><i></i></a></ul>
|
||
|
<ul class="button-mid">
|
||
|
<i class="fa fa-angle-left prev-button" aria-hidden="true" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>" style="cursor: pointer;"></i>
|
||
|
<i class="fa fa-angle-right next-button" aria-hidden="true" title = "<%= (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" %>" style="cursor: pointer;"></i>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
<script type="text/javascript">
|
||
|
if (typeof ad_banners_count === 'undefined'){
|
||
|
var ad_banners_count = 0;
|
||
|
}
|
||
|
|
||
|
if(document.getElementById("youtube-iframe-api") == null){
|
||
|
var tag = document.createElement('script');
|
||
|
tag.setAttribute("id", "youtube-iframe-api");
|
||
|
tag.src = "https://www.youtube.com/iframe_api";
|
||
|
var firstScriptTag = document.getElementsByTagName('script')[0];
|
||
|
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
||
|
}
|
||
|
$("*[data-yt-binded=0]").each(function(){
|
||
|
$(this).attr("data-yt-binded","1");
|
||
|
var obj = $(this).find("iframe");
|
||
|
obj.attr("id",$(this).data("youtube-id") + "_" + ad_banners_count);
|
||
|
ad_banners_count++;
|
||
|
})
|
||
|
if (typeof onYouTubeIframeAPIReady !== 'function'){
|
||
|
if(window.yt_players == undefined)
|
||
|
window.yt_players = {};
|
||
|
$(".w-ba-banner__wrap[data-overlay=\".w-ad-banner__overlay_{{subpart-id}}\"]");
|
||
|
function onYouTubeIframeAPIReady(){
|
||
|
$(".w-ba-banner").each(function(i,banner){
|
||
|
var iframes = $(banner).find("iframe");
|
||
|
if(iframes.length > 0){
|
||
|
var id = $(banner).attr("data-subpart-id");
|
||
|
if(yt_players[id] == undefined)
|
||
|
yt_players[id] = {};
|
||
|
var remove_ids = [];
|
||
|
Object.keys(yt_players[id]).forEach(function(k){
|
||
|
var yt_player = yt_players[id][k];
|
||
|
if($(yt_player.getIframe()).length == 0){
|
||
|
yt_player.destroy();
|
||
|
remove_ids.push(k);
|
||
|
}
|
||
|
})
|
||
|
remove_ids.forEach(function(k){
|
||
|
delete yt_players[id][k];
|
||
|
})
|
||
|
iframes.each(function(i,iframe){
|
||
|
console.log($(iframe).attr("id"))
|
||
|
var yt_player = yt_players[id][$(iframe).attr("id")];
|
||
|
if(yt_player){
|
||
|
}else{
|
||
|
yt_player = new YT.Player($(iframe).attr("id"), {
|
||
|
events: {
|
||
|
'onReady': function(event){
|
||
|
var height = $(event.target.getIframe()).height();
|
||
|
var banner_wrap = $(".w-ba-banner__wrap[data-overlay=\".w-ad-banner__overlay_{{subpart-id}}\"]");
|
||
|
banner_wrap.height(height).css({"padding-bottom":"4em","padding-top":""});
|
||
|
banner_wrap.find(".cycle-carousel-wrap").css("top","3em");
|
||
|
delete event.target.B.onStateChange;
|
||
|
var onStateChange_idx = event.target.l.i.onStateChange;
|
||
|
onStateChange_idx.reverse();
|
||
|
var event_size = 3;
|
||
|
onStateChange_idx.forEach(function(start_idx){
|
||
|
event.target.l.h.splice(start_idx,event_size);
|
||
|
});
|
||
|
event.target.l.i.onStateChange = [];
|
||
|
event.target.l.s = event.target.l.h.length;
|
||
|
event.target.addEventListener('onStateChange',onPlayerStateChange);
|
||
|
{{extra_ready_script}}
|
||
|
},
|
||
|
'onStateChange': onPlayerStateChange
|
||
|
}
|
||
|
});
|
||
|
yt_players[id][$(iframe).attr("id")] = yt_player;
|
||
|
$(iframe).data("yt_player",yt_player);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function onPlayerStateChange(event){
|
||
|
var iframe = $(event.target.h),
|
||
|
cyclediv = iframe.parents("div.cycle-slideshow");
|
||
|
var widget = cyclediv.parents('.ba-banner-widget-youtube');
|
||
|
if(event.data == YT.PlayerState.PLAYING || event.data == YT.PlayerState.BUFFERING){
|
||
|
cyclediv[0].need_resume = !(cyclediv.hasClass("cycle-paused"));
|
||
|
cyclediv.cycle("pause");
|
||
|
widget.find('.banner-pager,.controlplay,.button-mid,.ad-overlay').css('visibility','hidden')
|
||
|
}else if(event.data == YT.PlayerState.UNSTARTED || event.data == YT.PlayerState.PAUSED || event.data == YT.PlayerState.ENDED){
|
||
|
if(cyclediv[0].need_resume)
|
||
|
cyclediv.cycle("resume");
|
||
|
widget.find('.banner-pager,.controlplay,.button-mid,.ad-overlay').css('visibility','')
|
||
|
}
|
||
|
{{extra_state_chnage_script}}
|
||
|
}
|
||
|
$(document).ready(function(){
|
||
|
window.onYouTubePlayerAPIReady = function() {
|
||
|
onYouTubeIframeAPIReady.apply(this,arguments);
|
||
|
};
|
||
|
var banner_wrap = $(".w-ba-banner__wrap[data-overlay=\".w-ad-banner__overlay_{{subpart-id}}\"]");
|
||
|
var opts = banner_wrap.data('cycle.opts');
|
||
|
banner_wrap.on('cycle-paused',function(opts){
|
||
|
var controlplay = $(this).nextAll(".controlplay");
|
||
|
if(controlplay.length != 0){
|
||
|
controlplay.find(".resume-slide").removeClass("active");
|
||
|
controlplay.find(".pause-slide").addClass("active");
|
||
|
}
|
||
|
})
|
||
|
banner_wrap.on('cycle-resumed',function(opts){
|
||
|
var controlplay = $(this).nextAll(".controlplay");
|
||
|
if(controlplay.length != 0){
|
||
|
controlplay.find(".resume-slide").addClass("active");
|
||
|
controlplay.find(".pause-slide").removeClass("active");
|
||
|
}
|
||
|
})
|
||
|
var height = opts.slides.filter('.active').height() || opts.slides.height();
|
||
|
banner_wrap.height(height).css("padding-bottom","");
|
||
|
{{extra_document_ready_script}}
|
||
|
$('.pause-slide').off('click').click(function(){
|
||
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('pause');
|
||
|
$(this).addClass('active');
|
||
|
$(this).parents('.controlplay').eq(0).find('.resume-slide').removeClass('active');
|
||
|
});
|
||
|
$('.resume-slide').off('click').click(function(){
|
||
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle('resume');
|
||
|
$(this).addClass('active');
|
||
|
$(this).parents('.controlplay').eq(0).find('.pause-slide').removeClass('active');
|
||
|
});
|
||
|
$('.next-button').off('click').on('click',function(){
|
||
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("next");
|
||
|
})
|
||
|
$('.prev-button').off('click').on('click',function(){
|
||
|
$(this).parent("ul").parent('.w-ba-banner').find(".cycle-slideshow").cycle("prev");
|
||
|
})
|
||
|
var resize_timeout_id;
|
||
|
$(window).resize(function(){
|
||
|
if(resize_timeout_id){
|
||
|
window.clearTimeout(resize_timeout_id);
|
||
|
}
|
||
|
resize_timeout_id = window.setTimeout(function(){
|
||
|
var banner_wrap = $(".w-ba-banner__wrap[data-overlay=\".w-ad-banner__overlay_{{subpart-id}}\"]");
|
||
|
var opts = banner_wrap.data('cycle.opts');
|
||
|
var height = opts.slides.filter('.active').height() || opts.slides.height();
|
||
|
banner_wrap.height(height).css("padding-bottom","");
|
||
|
},300);
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
</script>
|
||
|
<style type="text/css">
|
||
|
.controlplay .resume-slide.active i{
|
||
|
color: #32D9C3;
|
||
|
}
|
||
|
.controlplay .pause-slide.active i{
|
||
|
color: #ff4500;
|
||
|
}
|
||
|
</style>
|