]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
auto-claude: subtask-4-2 - Заменить блок видео на Plyr.js плеер + карточку скачивания
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Thu, 19 Feb 2026 16:48:41 +0000 (19:48 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Thu, 19 Feb 2026 16:48:41 +0000 (19:48 +0300)
- Добавлен класс write-offs-video для инициализации Plyr.js плеера
- Для AVI файлов создана карточка скачивания с классом video-download-card
- MP4/MOV воспроизводятся через Plyr.js с кастомными контролами
- MOV файлы имеют дополнительную ссылку на скачивание
- Добавлена JS инициализация Plyr плееров при загрузке страницы

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
erp24/views/write_offs_erp/view.php

index e9aba86bd8ad121d18d2318066d7c70df924e6a6..774b512817f00e0213d04a2c9561eec20972d4c1 100644 (file)
@@ -156,12 +156,27 @@ $this->registerJsFile('https://cdn.plyr.io/3.7.8/plyr.min.js', ['position' => Vi
                                         '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>';
@@ -310,5 +325,16 @@ $this->registerJsFile('https://cdn.plyr.io/3.7.8/plyr.min.js', ['position' => Vi
 
     </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