Документация / Модули организации / Модуль «Календарь событий»
Модули организации

📄 Модуль «Календарь событий»

⏱ 9 мин чтения 🗓 Обновлено 30.07.2026

Календарь событий превращает организацию из ленты новостей в живое сообщество с реальной жизнью: встречи, вебинары, офлайн-мероприятия. Участники записываются в один клик, организатор видит, кто придёт, а напоминания сами зовут людей за день и за час до начала. Этот гайд проведёт по всему модулю — от первого события до встраивания календаря на сторонний сайт.

💡 Подсказка

Модуль включается отдельно для каждой организации в Кабинет админа → 🔧 Управление модулями. Пока переключатель «Календарь событий» выключен, кнопка раздела не появится в меню организации ни у кого.

Быстрый старт

Чтобы модуль заработал, нужны три условия: организация одобрена модератором, модуль «Календарь событий» включён в настройках модулей, и у пользователя есть право на управление событиями (для создания) либо он участник организации (для записи). Когда всё сошлось, в меню организации появляется кнопка 📅 События.

  1. Откройте организацию и перейдите в 📅 События.
  2. Нажмите + Событие (кнопка видна только организаторам).
  3. Заполните название, дату и время начала, при желании — окончание, место, обложку и лимит мест.
  4. Сохраните — событие появится в сетке календаря и в списке.
  5. Участники записываются через селект «Возможно / Я пойду / Не пойду» прямо в карточке.

Виды отображения

В шапке раздела есть переключатель двух видов:

  • Сетка — классический календарь на месяц. Дни с событиями подсвечиваются, сегодняшняя дата выделена, события показываются прямо в ячейке временем и названием. Стрелки «← Предыдущий / Следующий →» листают месяцы.
  • Список — карточки событий с обложкой, датой, местом, счётчиком участников и описанием. Удобен, когда событий много и нужна вся информация сразу.

Клик по событию в сетке прокручивает страницу к его карточке в списке и подсвечивает её.

Создание и редактирование событий

Создание и редактирование происходят в одном модальном окне. При редактировании данные события подгружаются через AJAX, а текущая обложка показывается превью — можно заменить её новой или оставить прежнюю.

Поля события

ПолеОбязательноеКомментарий
НазваниеДаДо 255 символов
НачалоДаДата и время старта
ОкончаниеНетДолжно быть позже начала
Онлайн-мероприятиеНетГалочка скрывает поле «Место» и помечает событие как 🌐 Онлайн
Место проведенияНетДля офлайн-событий; до 255 символов
Максимум участниковНетПусто = без лимита
ОписаниеНетДо 5000 символов, внизу живой счётчик
ОбложкаНетJPG / PNG / WebP, до 5 МБ

Обложка события

🖼 Рекомендация по обложке

Оптимальный размер — 1200×630 пикселей (соотношение примерно 1.9:1). Такой формат красиво выглядит и в карточке списка, и в публичном виджете. Максимальный вес файла — 5 МБ.

Если обложку не загрузить, карточка покажет фирменный градиентный плейсхолдер с иконкой 📅 — событие всё равно будет выглядеть аккуратно.

Участие и RSVP

Запись на событие устроена как один селект в карточке — без лишних кликов и модальных окон. Выбор сразу сохраняется, страница мягко обновляется, а счётчик участников пересчитывается.

Статусы участия

СтатусЧто значитНапоминания
🤔 ВозможноНейтральный статус по умолчанию, пока человек не определилсяНе приходят
✅ Я пойдуПодтверждённое участие; попадает в счётчик местПриходят за день и за час
❌ Не пойдуОтказ; человек виден в списке отказавшихсяНе приходят
⚠️ Почему по умолчанию «Возможно»

Нейтральный дефолт не вводит в заблуждение: пока участник не сделал осознанный выбор, он не считается ни идущим, ни отказавшимся. Напоминания и учёт мест работают только для статуса «Я пойду» — так организатор видит реальную явку, а не раздутые цифры.

Лимит мест

Если задан максимум участников и все места заняты статусом «Я пойду», событие помечается бейджем «Мест нет», а новые записи в статус «Я пойду» блокируются с понятным сообщением. При этом статусы «Возможно» и «Не пойду» остаются доступными — человек может обозначить интерес и попасть в список ожидания.

Список участников

Число участников в карточке (например, «👥 3 / 10») кликабельно. По клику открывается модальное окно со списком всех записавшихся, разбитым на три секции:

  • ✅ Подтвердили участие — идут на событие;
  • 🤔 Возможно придут — колеблются;
  • ❌ Отказались — не пойдут.

У каждого участника видны аватар (или инициал), имя и дата записи. Сверху — сводная статистика по всем трём статусам и лимиту мест. Организатор события (создатель или администратор организации) может удалить любого участника из списка кнопкой «Удалить» — например, если человек записался по ошибке.

Напоминания

Модуль сам держит участников в тонусе, чтобы явка не рассыпалась в последний момент. Напоминания приходят только тем, кто подтвердил участие статусом «Я пойду».

Типы напоминаний

  • 📅 За день — отправляется, когда до события остаётся 24 часа или меньше.
  • ⏰ За час — отправляется, когда до события остаётся 1 час или меньше.

Каждое напоминание попадает в колокольчик уведомлений с названием события, датой и временем, местом (или пометкой «Онлайн»), названием организации и ссылкой «Открыть событие →». Если пользователь включил дублирование на почту — придёт ещё и письмо.

Настройки в профиле

Каждый пользователь сам решает, какие напоминания получать. В разделе Редактирование профиля есть блок «🔔 Настройки уведомлений о событиях» с тремя галочками:

  • Напоминание за день до события;
  • Напоминание за час до события;
  • Дублировать напоминания на email.

По умолчанию оба напоминания в колокольчик включены, а почта — выключена.

Автоматизация через cron

Напоминания отправляет Artisan-команда events:send-reminders, которую планировщик хостинга запускает каждые 10 минут. Команда устроена так, что её можно запускать когда угодно и сколько угодно раз — защита от дублей хранится в отдельной таблице, поэтому одно и то же напоминание одному человеку не уйдёт дважды.

🛠 Как это работает под капотом

Планировщик выполняет php artisan schedule:run каждые 10 минут, а расписание внутри приложения вызывает events:send-reminders. Команда находит события в порогах «≤ 24 часов» и «≤ 1 час», проходит по участникам со статусом «Я пойду», проверяет их настройки и таблицу отправленных напоминаний — и шлёт уведомление только тем, кому ещё не слала.

Виджет для сторонних сайтов

Одна из сильных сторон модуля — возможность вынести календарь за пределы платформы. Владелец организации получает готовый код, который встраивает живую сетку событий на любой сайт, блог или лендинг.

Код для вставки

В разделе «📅 События» нажмите кнопку 🔗 Код для вставки. Откроется окно с настройками, живым превью и готовым кодом. Скопированный фрагмент — это <iframe> с небольшим скриптом: виджет сам сообщает странице свою высоту, поэтому рамка подстраивается под количество событий без пустых полей и обрезки.

Параметры кастомизации

Поведение виджета настраивается прямо в окне генератора (и через параметры URL):

ПараметрЗначенияЧто делает
limit3 / 6 / 9 / 12Сколько событий показывать (максимум 20)
viewgrid / listСетка карточек или вертикальный список
past0 / 1Показывать ли прошедшие события

Виджет адаптивен: на десктопе карточки выстраиваются в несколько колонок, на планшете — в две, на телефоне — в одну. Стили нейтральные и аккуратно смотрятся на любом сайте.

JSON API

Для разработчиков, которые хотят отрисовать события в своём дизайне, есть JSON-эндпоинт. Он отдаёт данные организации и список событий с датами, местом, счётчиком участников, обложкой и ссылкой на событие:

🔌 Эндпоинт

/widget/events/{slug}/json?limit=10&past=0 — принимает те же параметры limit и past, возвращает структурированный JSON. Удобно для мобильных приложений и кастомных интеграций.

Роли и права доступа

Доступ к управлению событиями определяется ролями организации. Просмотр и запись доступны участникам, а создание, редактирование, удаление событий и участников — только организаторам.

РазрешениеЧто даёт
manage_eventsСоздание, редактирование и удаление событий, управление участниками, доступ к коду вставки виджета.
manage_organizationДаёт все права на события автоматически (есть у владельца организации).

Администраторы сайта (роль админа и выше) проходят мимо всех проверок. Обычный участник без права manage_events видит календарь, записывается на события и смотрит список участников, но не может создавать или удалять события.

Включение и отключение модуля

Модуль включается владельцем организации в Кабинет админа → 🔧 Управление модулями переключателем «Календарь событий». При выключении кнопка раздела исчезает из меню у всех, публичный виджет перестаёт отдавать события, а сами данные сохраняются — при повторном включении календарь вернётся в прежнем виде.

Шпаргалка

ДействиеКак сделать
Создать событие+ Событие в шапке раздела
ЗаписатьсяСелект «Возможно / Я пойду / Не пойду» в карточке
Посмотреть, кто идётКлик по счётчику «👥 N» в карточке
Встроить календарь на сайт🔗 Код для вставки в шапке раздела
Настроить напоминанияРедактирование профиля → блок «🔔 Настройки уведомлений»
Отправить напоминания вручнуюКоманда php artisan events:send-reminders
Скопировано