Перейти к содержимому

Sber Media Player

Данный файл содержит общее описание плагина. Более подробная информация находится в директории docs

Sber Media Player — это медиа плеер позволяющий выводить видео и аудио, для вывода используется PlayerJS.

Основные функции:

  • Вывод видео и аудио
  • Генерация миниатюры из видео
  • Вывод для видео субтитров и глав.
  • Конвертация видео в mp4 с возможностью выбора различного качества
  • Конвертация видео в формат HLS с возможностью выбора различного качества

Проект представляет собой WordPress плагин. Для правильной работы плагина требуются

  • PHP 8.2+
  • WordPress 6+
  • ACF Pro 6+

Для установки PHP зависимостей нужно запустить composer i в корне проекта. Для установки фронтенд зависимостей npm i в директории assets.

Фронтенд можно собрать в dev режиме с помощью npm run build:dev. С помощью npm run dev можно запустить watch сервер с автопересборкой файлов

Для сборки проекта для продакшена есть /bin/zip.sh скрипт. Он установит prod зависимости composer и npm, уберет все лишние файлы и создаст zip архив плагина для дальнейшей установки

Есть возможность задать общие настройки на странице настроек (/wp-admin/edit.php?post_type=&page=)

Директория src содержит ключевые PHP-файлы, реализующие логику плагина,

  • FrameMiniatures.php: AJAX обработчик для запуска генерации миниатюр кадра.
  • SkinUpload.php: AJAX обработчик для загрузки скинов PlayerJS.
  • Main.php: доработка фронтенд конфигов в сборке

Все основные сущности для сборки курсов

Стандартный набор классов для работы плагина

Директория assets содержит все необходимые ресурсы для фронтенд-части плагина, включая стили, скрипты и изображения, которые обеспечивают интерфейс и визуальное оформление курса

  • js: Основные JavaScript-файлы, организованные по функциям и модулям.
    • meta_boxes:
    • src: Главные функциональные скрипты для фронтенда.
    • utils: Вспомогательные утилиты
  • scss: Стили для фронтенда
  • webpack - Конфигурации и модули для Webpack, инструмента сборки JavaScript.
    • Parts/BasicPart.js - здесь находится список всех собираемых js файлов
  • phpcs.sh - Скрипт для запуска PHP_CodeSniffer для проверки стандартов кода. Запускается с помощью composer
  • zip.sh - Скрипт для упаковки проекта в ZIP-архив. Можно запустить с помощью composer, но лучше запускать напрямую

Анализ кода производится автоматически с помощью PHP библиотек PHPcs, Rector и Psalm. Для упрощения запуска в composer.json добавлены скрипты. Скрипт для запуска всех линтеров code:fix

Проверяет стиль написания кода на соответствие стандартам WordPress с частичными послаблениями описанными в файле ruleset.xml

  • phpcs - вывод краткой информации об ошибках
  • phpcs:full - вывод подробной информации об ошибках
  • phpcs:fix - автоматическое исправление ошибок

Проверяет логику кода и производит автоматический рефакторинг кода. Конфигурация библиотеки находится в файле rector.php

  • rector:dry - вывод информации об ошибках
  • rector:fix - авто исправление ошибок

Все шаблоны страниц и компонентов находятся в этой директории. Для их рендера можно воспользоваться функциями в главном файле плагина

Директория с авто тестами на основе PHPUnit, но unit и интеграционных тестов недостаточно для полноценной проверки плагина. Нужны e2e тесты на основе Cypress (или аналога)

Все строки в плагине пишутся на английском языке с применением языковых WP функций (codex). В js коде для перевода нужно использовать i18n.js библиотеку, например wp.i18n.__('Copy id', 'sber-media-player'), важно использовать полный путь до функции перевода, чтобы она не была минимизирована webpack’ом и могла быть считана при подготовке перевода. Домен перевода соответствует имени плагина sber-media-player.

Composer скрипты для генерации файлов перевода:

  • make-pot - генерация шаблонного файла перевода
  • update-po - обновление всех файлов перевода на основе pot файла. После вызова этого скрипта нужно открыть все обновленные po файлы и проверить, что все строки переведены
  • make-mo - генерация mo файлов на основе po файлов
  • make-mo-json - генерация json файлов для перевода js кода

languages - Папка с файлами локализации, включающая .mo, .po, и .pot файлы для поддержки перевода и работы с различными языковыми версиями.