{% extends 'web/base.html.twig' %}
{% block title %}Videoteka – 2sweet Slastičarnica Zagreb{% endblock %}
{% block seo %}
<meta name="description" content="Pogledajte video savjete i inspiraciju za svadbene torte i kolače od 2sweet slastičarnice Zagreb. Edukativni i inspirativni sadržaj.">
<meta property="og:title" content="Videoteka – 2sweet Slastičarnica Zagreb">
<meta property="og:description" content="Video savjeti i inspiracija za svadbene torte i kolače.">
{% endblock %}
{% block body %}
{{ include('web/components/inner/breadcrumb.html.twig') }}
<div class="bgWhite">
<div class="container">
<div class="emptySpace-xs60 emptySpace120"></div>
<div class="row">
<div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
<div class="big titleShortcode">
<div class="emptySpace20 emptySpace-xs5"></div>
<h2 class="h2 bottomLine">Videoteka</h2>
<div class="emptySpace30"></div>
</div>
</div>
</div>
<div class="emptySpace75 emptySpace-xs30"></div>
<div class="row">
{% for video in videos %}
<div class="col-sm-6 col-md-4" style="margin-bottom:40px;">
<div class="normall contentShortcode" style="cursor:pointer;" onclick="openVideoModal('{{ video.id }}')">
{# Thumbnail #}
<div style="position:relative; overflow:hidden; border-radius:6px;">
{% if video.type == 'youtube' and video.youtubeId %}
<img src="https://img.youtube.com/vi/{{ video.youtubeId }}/hqdefault.jpg"
class="imgShortcode"
style="width:100%; height:220px; object-fit:cover; display:block;"
alt="{{ video.title }}">
{% elseif video.thumbnail %}
<img src="{{ asset('uploads/' ~ video.thumbnail) }}"
class="imgShortcode"
style="width:100%; height:220px; object-fit:cover; display:block;"
alt="{{ video.title }}">
{% else %}
<div style="width:100%; height:220px; background:#f0ebe8; display:flex; align-items:center; justify-content:center; border-radius:6px;">
<span style="font-size:48px; opacity:0.4;">🎬</span>
</div>
{% endif %}
{# Play button overlay #}
<div style="position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,0.25); transition:background 0.2s;"
onmouseover="this.style.background='rgba(0,0,0,0.4)'"
onmouseout="this.style.background='rgba(0,0,0,0.25)'">
<div style="width:56px; height:56px; background:#b85b63; border-radius:50%; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 16px rgba(0,0,0,0.3);">
<span style="color:#fff; font-size:22px; margin-left:4px;">▶</span>
</div>
</div>
{# Tip badge #}
<div style="position:absolute; top:10px; right:10px;">
{% if video.type == 'youtube' %}
<span style="background:#ff0000; color:#fff; font-size:11px; padding:2px 8px; border-radius:3px; font-weight:bold;">YouTube</span>
{% elseif video.type == 'vimeo' %}
<span style="background:#1ab7ea; color:#fff; font-size:11px; padding:2px 8px; border-radius:3px; font-weight:bold;">Vimeo</span>
{% endif %}
</div>
</div>
<div class="emptySpace15"></div>
<h4 class="h4" style="margin-bottom:8px;">{{ video.title }}</h4>
{% if video.description %}
<p style="color:#888; font-size:14px; line-height:1.6;">{{ video.description }}</p>
{% endif %}
</div>
</div>
{% else %}
<div class="col-12 text-center">
<p class="normall" style="color:#aaa;">Videoteka je trenutno prazna.</p>
</div>
{% endfor %}
</div>
<div class="emptySpace-xs60 emptySpace120"></div>
</div>
</div>
{# Modal za reprodukciju #}
<div id="video-modal" style="display:none; position:fixed; inset:0; background:rgba(0,0,0,0.88); z-index:9998; align-items:center; justify-content:center;"
onclick="closeVideoModal()">
<button onclick="closeVideoModal()" style="position:absolute; top:20px; right:30px; background:none; border:none; color:#fff; font-size:36px; cursor:pointer; z-index:1;">×</button>
<div onclick="event.stopPropagation();" style="width:90vw; max-width:900px;">
<div id="video-modal-inner" style="position:relative; padding-bottom:56.25%; height:0;">
</div>
</div>
</div>
{# Podaci videa u JS #}
<script>
var videoData = {
{% for video in videos %}
'{{ video.id }}': {
type: '{{ video.type }}',
{% if video.type == 'youtube' %}
embedUrl: '{{ video.embedUrl }}',
{% elseif video.type == 'vimeo' %}
embedUrl: '{{ video.embedUrl }}',
{% elseif video.type == 'upload' %}
src: '{{ asset('uploads/' ~ video.videoSource) }}',
{% elseif video.type == 'link' %}
embedUrl: '{{ video.embedUrl }}',
{% endif %}
},
{% endfor %}
};
function openVideoModal(id) {
var v = videoData[id];
if (!v) return;
var inner = document.getElementById('video-modal-inner');
inner.innerHTML = '';
if (v.type === 'upload') {
inner.innerHTML = '<video controls autoplay style="position:absolute;top:0;left:0;width:100%;height:100%;background:#000;">' +
'<source src="' + v.src + '"></video>';
} else if (v.embedUrl) {
inner.innerHTML = '<iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="' + v.embedUrl + '" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>';
}
var modal = document.getElementById('video-modal');
modal.style.display = 'flex';
document.body.style.overflow = 'hidden';
}
function closeVideoModal() {
document.getElementById('video-modal').style.display = 'none';
document.getElementById('video-modal-inner').innerHTML = '';
document.body.style.overflow = '';
}
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeVideoModal();
});
</script>
<div class="footerSeparator"></div>
<div class="emptySpace50 emptySpace-xs30"></div>
{% endblock %}