Videos join the media library as their own table (schema v28), with a video block and a looping background on sections. video.js starts loops only while visible, offers a pause button and leaves the still image for reduced motion and data saving. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PWYm8kjAWmZaB2QB2xuBhU
40 lines
1.2 KiB
PHP
40 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace DoctrineMigrations;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\Migrations\AbstractMigration;
|
|
|
|
final class Version20261104000100 extends AbstractMigration
|
|
{
|
|
public function getDescription(): string
|
|
{
|
|
return 'Videos in der Mediathek: fuer den Video-Baustein und den Hintergrund einer Sektion.';
|
|
}
|
|
|
|
public function isTransactional(): bool
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public function up(Schema $schema): void
|
|
{
|
|
// Eine eigene Tabelle wie bei den Dokumenten: jede Stelle, die ein Bild sucht, erwartet
|
|
// Varianten mit Breite und Hoehe.
|
|
$video = $schema->createTable('video');
|
|
$video->addColumn('id', 'string', ['length' => 32]);
|
|
$video->addColumn('title', 'string', ['length' => 160]);
|
|
$video->addColumn('mime', 'string', ['length' => 16]);
|
|
$video->addColumn('bytes', 'integer');
|
|
$video->addColumn('archived', 'boolean', ['default' => false]);
|
|
$video->addColumn('version', 'integer', ['default' => 1]);
|
|
$video->addColumn('created_at', 'datetime_immutable');
|
|
$video->setPrimaryKey(['id']);
|
|
}
|
|
|
|
public function down(Schema $schema): void
|
|
{
|
|
$schema->dropTable('video');
|
|
}
|
|
}
|