Этот плагин теперь включён в ядро Discourse в рамках Bundling more popular plugins with Discourse core. Если вы используете самостоятельное размещение и применяете этот плагин, вам необходимо удалить его из файла app.yml перед следующим обновлением.
Нам действительно необходима возможность ограничивать количество участников мероприятий, так как многие из наших событий имеют ограниченную вместимость.
В настоящее время система мероприятий не позволяет нам:
- установить максимальное количество участников,
- видеть, кто зарегистрировался первым (отсутствуют временные метки регистрации),
- управлять очередью ожидания или уведомлять людей, когда освободится место.
Нам были бы крайне полезны следующие функции:
- Ограничение количества участников (лимит), предотвращающее регистрацию новых пользователей после заполнения.
- Очередь ожидания для тех, кто всё ещё хочет посетить мероприятие после того, как оно заполнится.
- Автоматические уведомления, когда освобождается место.
- Опциональные временные метки для отображения порядка регистрации (полезно для справедливой приоритизации).
Это было бы невероятно полезно для сообществ, проводящих очные мероприятия или события с ограниченной вместимостью.
Планируется ли что-то подобное уже сейчас или находится в разработке?
Или существуют ли известные обходные пути для данного сценария использования?
Заранее большое спасибо!
Спасибо, Аурора — мы очень рады услышать, что работа над нативным календарем снова активна!
Мы также хотели бы вынести на обсуждение ещё один важный запрос, который неоднократно возникал в дискуссиях сообщества: синхронизация через iCal-каналы.
Эта тема была выделена в отдельную ветку здесь:
Возможность подписки на внешние .ics-каналы (например, школьное расписание, городские календари или мероприятия организаций) и их отображение в календаре темы на Discourse сделает эту функцию гораздо более полезной для многих реальных сценариев использования. Без неё нам приходится вручную копировать события, что чревато ошибками и трудно поддерживается.
Мы были бы очень признательны за любой комментарий от команды Discourse о том, входят ли части этого предложения — например, односторонняя синхронизация iCal, настройки интервала обновления каналов или необязательная маркировка событий — в план предстоящей реализации.
В любом случае, ещё раз спасибо за то, что вдохнули новую жизнь в Discourse Calendar — мы с нетерпением ждём, что нас ждёт впереди!
Если вы хотите отображать кнопку «Создать событие» прямо в редакторе, как показано ниже, добавьте этот код в заголовок вашей темы: администрирование > внешний вид > тема > редактировать > редактировать код > head (убедитесь, что код размещён между тегами).
Протестировано на Discourse 3.5.0.beta9-dev на рабочем столе в браузере Firefox.
```javascript
Я попробовал скрипт: кнопка «Создание события» создается корректно, но при нажатии на неё появляется то же контекстное меню, что и у кнопки «Ещё». Возможно, я что-то сделал неправильно.
После обновления ситуация улучшилась, теперь отображается, по крайней мере, только «Создать событие».
Скриншот на немецком, извините.
Привет,
У меня это работает в последней версии 3.5.0.beta9-dev. А какая у вас версия?
Кроме того, это JavaScript, поэтому, пожалуйста, предоставьте ошибку JS из консоли, которую можно открыть нажатием F12 в вашем браузере. (Вы можете нажать на кнопку, когда консоль открыта, и это должно предоставить информацию о том, что происходит в этот момент).
Я не использую Edge. Попробуйте ещё раз со скриптом, который я только что обновил в первом сообщении, так как я нашёл и исправил в нём ошибки. Если это не сработает, я обновлю его позже, после установки Edge.
Я только что обновил скрипт для лучшей совместимости с мобильными устройствами, теперь он должен работать. Пожалуйста, скопируйте и вставьте скрипт из оригинального поста.
Я подтверждаю, что обновленный код работает корректно в Edge. Если у вас установлен uBlock, вы всегда можете отключить его для страницы Discourse, но я не думаю, что это связано с проблемой.
Извините, у меня всё ещё та же проблема, я, наверное, что-то делаю не так
При этом я вставляю твой скрипт именно сюда
Всё в порядке, благодаря ситуации с Жилем я смог настроить селектор на основе уникального класса .svg иконки вместо атрибута title, который меняется в зависимости от языка. Скрипт теперь также минифицирован и обернут в IIFE.
Обновлённый скрипт можно найти здесь: Discourse Calendar (and Event) - #535 by opcourdis
Спасибо за твою помощь ![]()
Было бы очень полезно, если бы вы оформили свой скрипт как #theme-component и сделали возможность выбора категорий, к которым он применяется.
Мой сценарий использования — категория «События», где я хочу сделать публикацию событий максимально заметной.
Возможно, это также можно объединить с вашим другим отличным улучшением.
Вы можете использовать приведенное ниже и изменить первые условия, чтобы указать свои категории, а также сделать кнопку более заметной с помощью CSS: .btn.no-text.btn-icon.toolbar__button.link.custom-create-event-btn {
order: -1;
}
<script>(()=>{if(!(document.body.classList.contains("category-events")||document.body.classList.contains("category-event2")||document.body.classList.contains("category-event3")))return;const e=".d-editor-button-bar",t=".btn.no-text.fk-d-menu__trigger.toolbar-menu__options-trigger.toolbar__button.options.toolbar-popup-menu-options",n=".fk-d-menu__inner-content",o=".d-modal.fk-d-menu-modal",c=e=>{const t=e.querySelector('svg use[href="#calendar-day"]');return t?t.closest("button"):null},r=(e,t,n=4e3)=>new Promise((o,c)=>{const r=t(e);if(r)return o(r);const l=new MutationObserver(()=>{const n=t(e);n&&(l.disconnect(),o(n))});l.observe(e,{childList:!0,subtree:!0}),setTimeout(()=>{l.disconnect(),c()},n)}),l=(e=4e3)=>{const t=new MutationObserver(()=>{document.querySelector(o)&&t.disconnect()});t.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>t.disconnect(),e)},s=e=>{if(e.querySelector(".custom-create-event-btn"))return;const o=document.createElement("button");o.className="btn no-text btn-icon toolbar__button link custom-create-event-btn",o.title="Create event",o.innerHTML='<svg class="fa d-icon d-icon-calendar-day svg-icon"><use href="#calendar-day"></use></svg>',e.appendChild(o),o.addEventListener("click",async()=>{const e=document.querySelector(t);if(!e)return;e.click();let o=document.querySelector(n);o||(await new Promise((e,t)=>{const c=new MutationObserver(()=>{(o=document.querySelector(n))&&(c.disconnect(),e())});c.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{c.disconnect(),t()},2e3)}));try{(await r(o,c)).click(),l()}catch{}})},u=new MutationObserver(()=>{const t=document.querySelector(e);t&&s(t)});u.observe(document.body,{childList:!0,subtree:!0});const d=document.querySelector(e);d&&s(d)})();</script>
Спасибо за предложение. Я ещё немного новичок в Discourse и изучу компонент темы. Размещение кнопки действительно стало лучше, но мой другой скрипт для ограничения количества участников события может скоро стать ненужным благодаря этому: FEATURE: introduce max attendees for events by SamSaffron · Pull Request #34313 · discourse/discourse · GitHub
После обновления до последней версии Discourse и плагина discourse-calendar я вижу следующее предупреждение в качестве администратора:
⚠️ Посты могут отображаться некорректно, так как один из декораторов содержимого постов на вашем сайте вызвал ошибку.
Причина: плагин 'discourse-calendar'
(это сообщение отображается только администраторам сайта)
- Плагин календаря больше не работает: содержимое календаря и события не отображаются в темах.
- Плагин работал корректно до недавнего обновления.
- Мой сайт Discourse и все официальные плагины теперь обновлены до актуальных версий.
Мы используем плагин Discourse Post Event на нашем форуме.
В настоящее время, когда пользователь присоединяется (RSVP) к мероприятию, тема автоматически переводится в статус «Слежение», что означает: каждое новое сообщение в теме мероприятия отправляет уведомление всем участникам.
Мы хотим, чтобы уровень уведомлений по умолчанию оставался «Обычным», даже после того, как кто-то присоединится к мероприятию.
Я проверил настройки сайта, но не смог найти подходящую опцию.
Есть ли способ отключить или изменить это автоматическое поведение «Слежение», когда пользователи RSVP на мероприятие?
По-моему, нет. Но это была бы полезная идея для улучшения.
В качестве полезного обходного пути можно закрыть тему, чтобы остановить ответы, но связать с ней чат-канал (по умолчанию уведомления с них не приходят).
Метка на кнопке «Сегодня» может вводить в заблуждение.
Кнопка на самом деле не перемещает к текущему дню, а переключает на текущий вид активной вкладки временного диапазона (День/Неделя/Месяц/Год). Для вкладок День, Неделя и Месяц это действительно показывает текущий день. Но для вкладки Год она перемещает только к текущему году (который всегда начинается с января).
Вероятно, стоит:
- переименовать её, чтобы точнее описать её функционал, например, в «Текущий»
- или, что ещё лучше, не только перемещать к текущему году, но и прокручивать к текущему дню в списке Год








