generated from gitea_admin/default
ajout videos dans programmer
This commit is contained in:
@@ -277,6 +277,46 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<a
|
||||||
|
v-for="videoDownload in programme.videos_download || []"
|
||||||
|
:key="`video-download-${videoDownload.id}`"
|
||||||
|
:href="videoDownload.url"
|
||||||
|
:download="videoDownload.name || true"
|
||||||
|
class="flex flex-col gap-3 group"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<div class="relative w-full aspect-[4/3] bg-surface-container-low rounded-lg overflow-hidden group-hover:bg-primary-container transition-colors">
|
||||||
|
<img
|
||||||
|
v-if="getMediaPreviewUrl(videoDownload)"
|
||||||
|
:src="getMediaPreviewUrl(videoDownload)"
|
||||||
|
:alt="videoDownload.alternativeText || videoDownload.caption || videoDownload.name || ''"
|
||||||
|
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||||
|
>
|
||||||
|
<video
|
||||||
|
v-else-if="videoDownload.url"
|
||||||
|
:src="videoDownload.url"
|
||||||
|
muted
|
||||||
|
playsinline
|
||||||
|
preload="metadata"
|
||||||
|
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||||
|
></video>
|
||||||
|
<div class="absolute inset-0 bg-black/15 flex items-center justify-center">
|
||||||
|
<span class="material-symbols-outlined text-4xl text-white drop-shadow">play_circle</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
<p v-if="videoDownload.caption || videoDownload.name" class="text-xs font-bold uppercase tracking-tighter">
|
||||||
|
{{ videoDownload.caption || videoDownload.name }}
|
||||||
|
</p>
|
||||||
|
<p class="text-[10px] text-outline">
|
||||||
|
<span v-if="videoDownload.ext">{{ videoDownload.ext.replace('.', '').toUpperCase() }}</span>
|
||||||
|
<span v-if="videoDownload.ext && videoDownload.size"> • </span>
|
||||||
|
<span v-if="videoDownload.size">{{ formatKoToMo(videoDownload.size) }}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
v-for="document in programme.documents || []"
|
v-for="document in programme.documents || []"
|
||||||
:key="`document-${document.id}`"
|
:key="`document-${document.id}`"
|
||||||
@@ -433,6 +473,46 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<a
|
||||||
|
v-for="videoDownload in programme.videos_download || []"
|
||||||
|
:key="`video-download-${videoDownload.id}`"
|
||||||
|
:href="videoDownload.url"
|
||||||
|
:download="videoDownload.name || true"
|
||||||
|
class="flex flex-col gap-3 group"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<div class="relative w-full aspect-[4/3] bg-surface-container-low rounded-lg overflow-hidden group-hover:bg-primary-container transition-colors">
|
||||||
|
<img
|
||||||
|
v-if="getMediaPreviewUrl(videoDownload)"
|
||||||
|
:src="getMediaPreviewUrl(videoDownload)"
|
||||||
|
:alt="videoDownload.alternativeText || videoDownload.caption || videoDownload.name || ''"
|
||||||
|
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||||
|
>
|
||||||
|
<video
|
||||||
|
v-else-if="videoDownload.url"
|
||||||
|
:src="videoDownload.url"
|
||||||
|
muted
|
||||||
|
playsinline
|
||||||
|
preload="metadata"
|
||||||
|
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||||
|
></video>
|
||||||
|
<div class="absolute inset-0 bg-black/15 flex items-center justify-center">
|
||||||
|
<span class="material-symbols-outlined text-4xl text-white drop-shadow">play_circle</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
<p v-if="videoDownload.caption || videoDownload.name" class="text-xs font-bold uppercase tracking-tighter">
|
||||||
|
{{ videoDownload.caption || videoDownload.name }}
|
||||||
|
</p>
|
||||||
|
<p class="text-[10px] text-outline">
|
||||||
|
<span v-if="videoDownload.ext">{{ videoDownload.ext.replace('.', '').toUpperCase() }}</span>
|
||||||
|
<span v-if="videoDownload.ext && videoDownload.size"> • </span>
|
||||||
|
<span v-if="videoDownload.size">{{ formatKoToMo(videoDownload.size) }}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -482,6 +562,7 @@
|
|||||||
images: true,
|
images: true,
|
||||||
documents: true,
|
documents: true,
|
||||||
videos: true,
|
videos: true,
|
||||||
|
videos_download: true,
|
||||||
},
|
},
|
||||||
categorie: {
|
categorie: {
|
||||||
programme_categorie: true,
|
programme_categorie: true,
|
||||||
@@ -489,6 +570,7 @@
|
|||||||
images: true,
|
images: true,
|
||||||
documents: true,
|
documents: true,
|
||||||
videos: true,
|
videos: true,
|
||||||
|
videos_download: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -564,6 +646,10 @@
|
|||||||
return `${(size / 1024).toFixed(1)} Mo`
|
return `${(size / 1024).toFixed(1)} Mo`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getMediaPreviewUrl(file) {
|
||||||
|
return file?.formats?.thumbnail?.url || file?.previewUrl || ""
|
||||||
|
}
|
||||||
|
|
||||||
function getInitials(fullName) {
|
function getInitials(fullName) {
|
||||||
if (!fullName) return ""
|
if (!fullName) return ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user