chakchakman / flarum-interactive-maps
Interactive tabletop maps and controlled character tokens for Flarum
Package info
github.com/Chakchakman/flarum-interactive-maps
Language:JavaScript
Type:flarum-extension
pkg:composer/chakchakman/flarum-interactive-maps
Requires
- flarum/core: ^2.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-20 00:24:32 UTC
README
Разработано для Flarum 2.x и локальной Docker-среды flarum-map-lab.
Что есть в версии 0.1
- Нативная страница
/maps, открывается внутри Flarum. - Список карт + создание карты администратором.
- Изображение фона по URL (для лаборатории —
http://localhost:8081/map.jpg). - Настраиваемая квадратная сетка: размер, смещения, включение, привязка фишек.
- Создание фишек по URL изображения.
- Привязка фишки к
usernameзарегистрированного пользователя Flarum. - Администратор может перемещать любую фишку, игрок — только назначенную ему.
- Проверка разрешения и координат выполняется на PHP-сервере, не в браузере.
- Позиции хранятся в MariaDB в таблице
chak_tokens. - Каждые 5 секунд другие открытые вкладки обновляют расположение фишек.
Пока нет: загрузки файлов через UI, произвольных фигур/гексов, zoom/pan, истории действий, продвинутых групповых прав, тумана войны. Карты пока публичны для всех посетителей форума. Не размещай секретные карты в этой версии. Управление картами доступно только администратору.
Установка на Windows — PowerShell
Убедись, что Docker контейнеры app, db, prototype работают:
docker compose ps
-
Перемести скачанный архив
flarum-interactive-maps-v0.1.zipв папкуflarum-map-lab\flarum-map-lab— рядом сdocker-compose.yml. -
Из этой папки в PowerShell:
Expand-Archive ".\flarum-interactive-maps-v0.1.zip" -DestinationPath ".\extension" -Force
Важно: в .\extension\ теперь должны быть файлы composer.json, extend.php, js\package.json и папки src, migrations. Не создавай вложенную папку extension\flarum-interactive-maps-v0.1.
- Подключи папку расширения к Composer как локальный пакет (только один раз):
docker compose exec app composer config repositories.local path "packages/*"
- Установи локальный пакет через Composer:
docker compose exec app composer require "chakchakman/flarum-interactive-maps:*@dev" --no-interaction
Если Composer не нашёл пакет, убедись, что extension/composer.json присутствует, а app видит его через смонтированную папку /var/www/flarum/packages/map-correct:
docker compose exec app ls -la /var/www/flarum/packages/map-correct
- Собери JS frontend. Команды ниже используют отдельный контейнер Node из лаборатории; устанавливать Node.js в Windows не нужно:
docker compose run --rm node npm install
docker compose run --rm node npm run build
- Очисти кеш Flarum:
docker compose exec app php flarum cache:clear
-
Открой http://localhost:8080/admin → Extensions → Interactive Maps (DEV) → Enable.
-
Перейди на http://localhost:8080/maps.
Мини-тест функциональности
- Администратор создаёт карту «Evil West Test», оставив предложенный фон
http://localhost:8081/map.jpg. - В редакторе карты добавляет фишку, например:
- Имя:
Сайлас МакГроу - Адрес изображения:
http://localhost:8081/percy/silas.png - Владелец: свой
usernameFlarum (или имя другого тестового пользователя).
- Имя:
- Двигает фишку мышью.
- Обновляет страницу — новая позиция должна сохраняться.
- Меняет размер сетки и смещение; обновляет страницу — настройки должны сохраняться.
- Проверяет во втором браузере с другим аккаунтом Flarum: назначенный игрок может двигать свою фишку, чужие не двигаются.
Диагностика
Если страница пустая либо выдаёт ошибку 500:
docker compose logs --tail=100 app
Логи PHP / Flarum:
docker compose exec app sh -c "ls -l storage/logs; tail -n 80 storage/logs/*.log"
Если после изменения JS не видны изменения:
docker compose run --rm node npm run build
docker compose exec app php flarum cache:clear
Если изменяли PHP/миграции:
docker compose exec app php flarum migrate docker compose exec app php flarum cache:clear
Как устроен код
extension/
├── composer.json # имя и настройки Composer-пакета
├── extend.php # регистрация frontend и API-маршрутов
├── migrations/ # таблицы chak_maps и chak_tokens
├── src/
│ ├── Api/ # серверные обработчики с авторизацией
│ └── Models/ # модели MariaDB
├── js/
│ ├── src/forum/
│ │ ├── extend.js # маршруты /maps и /maps/:id
│ │ └── pages/ # визуальный интерфейс карт
│ ├── package.json
│ └── webpack.config.js
└── less/forum.less # стили интерфейса
Этот архив не обновляет старый map-correct и не изменяет существующие сообщения форума. Для теста используются изображения, которые Nginx уже отдаёт на 8081. Firebase из прототипа не используется.
Следующий этап
Настройка редактора: загрузка своих фонов и токенов, список пользователей с автопоиском, роли «мастер» и «игрок», панорамирование и масштабирование карты.