'avi' => 'video/x-msvideo',
];
$mimeType = $mimeTypes[$ext] ?? 'video/mp4';
- $dataTable .= '<video controls width="200" preload="none">';
- $dataTable .= '<source src="' . $videoUrl . '" type="' . $mimeType . '">';
- $dataTable .= 'Ваш браузер не поддерживает видео.';
- $dataTable .= '</video>';
- if (in_array($ext, ['mov', 'avi'])) {
- $dataTable .= '<br><a href="' . $videoUrl . '" download style="font-size:13px;">Файлы mov и avi не проигрываются браузером.<br>Скачать и посмотреть</a>';
+
+ // AVI файлы не воспроизводятся в браузере - показываем карточку скачивания
+ if ($ext === 'avi') {
+ $fileName = basename($video->url);
+ $dataTable .= '<div class="video-download-card" style="width:200px; padding:15px; border:1px solid #ddd; border-radius:8px; background:#f8f9fa; text-align:center;">';
+ $dataTable .= '<div style="font-size:40px; color:#6c757d; margin-bottom:10px;">🎬</div>';
+ $dataTable .= '<div style="font-size:12px; color:#6c757d; margin-bottom:10px; word-break:break-all;">' . Html::encode($fileName) . '</div>';
+ $dataTable .= '<div style="font-size:11px; color:#999; margin-bottom:10px;">Формат AVI не поддерживается браузером</div>';
+ $dataTable .= '<a href="' . $videoUrl . '" download class="btn btn-primary btn-sm" style="width:100%;">';
+ $dataTable .= '<span style="margin-right:5px;">⬇</span>Скачать видео</a>';
+ $dataTable .= '</div>';
+ } else {
+ // MP4/MOV - используем Plyr.js плеер
+ $dataTable .= '<video class="write-offs-video" playsinline controls width="200" preload="none">';
+ $dataTable .= '<source src="' . $videoUrl . '" type="' . $mimeType . '">';
+ $dataTable .= 'Ваш браузер не поддерживает видео.';
+ $dataTable .= '</video>';
+ // Ссылка на скачивание для MOV
+ if ($ext === 'mov') {
+ $dataTable .= '<br><a href="' . $videoUrl . '" download style="font-size:12px; color:#6c757d;">⬇ Скачать MOV</a>';
+ }
}
}
$dataTable .= '</td>';
</div>
<?php
-/*
-*/
\ No newline at end of file
+// Инициализация Plyr.js для видео плееров
+$this->registerJs(<<<JS
+document.addEventListener('DOMContentLoaded', function() {
+ const players = document.querySelectorAll('.write-offs-video');
+ players.forEach(function(player) {
+ new Plyr(player, {
+ controls: ['play', 'progress', 'current-time', 'mute', 'volume', 'fullscreen'],
+ ratio: '16:9'
+ });
+ });
+});
+JS, View::POS_END);
+?>
\ No newline at end of file