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

Sber Media Player

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

Описание плагина

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

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

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

Запуск проекта

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

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

Dev запуск

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

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

Prod запуск

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

Конфигурация в админке

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

Описание файлов

Основные PHP файлы (папка src)

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

Основные файлы и директории

Директория ACF

Директория Ajax

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

Директория Elementor

  • Main.php: доработка фронтенд конфигов в сборке

Директория Entities

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

Директория PluginBase

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

Директория WordPressCore

Фронтенд ресурсы (папка assets)

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

Директория src

  • js: Основные JavaScript-файлы, организованные по функциям и модулям.
    • meta_boxes:
    • src: Главные функциональные скрипты для фронтенда.
    • utils: Вспомогательные утилиты
  • scss: Стили для фронтенда
  • webpack - Конфигурации и модули для Webpack, инструмента сборки JavaScript.
    • Parts/BasicPart.js - здесь находится список всех собираемых js файлов

Служебные скрипты (папка bin)

  • phpcs.sh - Скрипт для запуска PHP_CodeSniffer для проверки стандартов кода. Запускается с помощью composer
  • zip.sh - Скрипт для упаковки проекта в ZIP-архив. Можно запустить с помощью composer, но лучше запускать напрямую

Статический анализ PHPcs и Rector

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

PHPcs

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

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

Rector

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

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

Templates

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

Tests

Директория с авто тестами на основе 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 файлы для поддержки перевода и работы с различными языковыми версиями.