[fullCalendar] Календарь с большими возможностями
Продолжаю тему календарей. С первым некоторые уже знакомы. Этот календарь основан на той же javascript-библиотеке, что и myCalendar, только имеет более широкие возможности.

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

Тут же можно указать ряд настроек: цвет текста, цвет события, класс календаря.

Для Google календаря вводим название календаря, которое нужно получить в кабинете разработчиков Google. Как это сделать описано тут. Не забываем при этом про системную настройку, в которой указываем ключ Google Calendar API Key.
Система уведомлений
Функционал уведомлений состоит из 2 частей: онлайн уведомления и уведомления по почте. За онлайн уведомления отвечает плагин. Поэтому, на какой бы страничке сайта вы не находились, плагин сообщит о наступлении события всплывающим окошком, а также продублирует уведомление на почту по следующей логике
— если у события есть автор, то уведомляем его,
— если автора нет (аноним), то уведомляем текущего авторизованного пользователя,
— если текущий пользователь не авторизован, то отбой.
Для управления уведомлениями есть 2 системные настройки:
Есть еще скрипт для cron'а, который можно запускать по расписанию. Сейчас он работает, чтобы оповещать о событиях, которые произойдут в текущий день. Запускать его можно в полночь. Алгоритм можно прописать любой. Думаю, программисту это не составит труда.
Повторяющиеся события
Для любого календаря — это важный элемент. Функционал достаточно простой, но основные функции выполняет — повтор каждый день, каждую неделю, каждый месяц, каждый год. Возможно в дальнейшем сделаю более сложный алгоритм. Если будет востребовано.
Отличить повторяющиеся события от обычных можно по значку. Как и события с уведомлением.
Повторяющиеся события имеют класс repeated-event.

Личные события
Авторизованный пользователь может отметить событие как личное. Такие события при вызове календаря с параметром
У таких событий css класс private-event.

Минимальная длительность события 30 мин.
Теперь, когда календарь создан, можно его вызывать
В общем, пока все.
Познакомится поближе можно на странице дополнения.
Документация.

Основные отличия
- Возможность заводить сколько угодно календарей.
- Система уведомлений на сайте и по почте.
- Повторяющиеся события.
- Появились личные события, просмотр которых другим пользователям можно отключить.
Для того, чтобы вывести календарь на сайте, нужно сначала его создать. Делается это в админке.

Тут же можно указать ряд настроек: цвет текста, цвет события, класс календаря.

Для Google календаря вводим название календаря, которое нужно получить в кабинете разработчиков Google. Как это сделать описано тут. Не забываем при этом про системную настройку, в которой указываем ключ Google Calendar API Key.
Система уведомлений
Функционал уведомлений состоит из 2 частей: онлайн уведомления и уведомления по почте. За онлайн уведомления отвечает плагин. Поэтому, на какой бы страничке сайта вы не находились, плагин сообщит о наступлении события всплывающим окошком, а также продублирует уведомление на почту по следующей логике
— если у события есть автор, то уведомляем его,
— если автора нет (аноним), то уведомляем текущего авторизованного пользователя,
— если текущий пользователь не авторизован, то отбой.
Для управления уведомлениями есть 2 системные настройки:
- Онлайн-уведомления — включает/отключает уведомление на сайте.
- Уведомления по почте — включает/отключает уведомление по почте.
Есть еще скрипт для cron'а, который можно запускать по расписанию. Сейчас он работает, чтобы оповещать о событиях, которые произойдут в текущий день. Запускать его можно в полночь. Алгоритм можно прописать любой. Думаю, программисту это не составит труда.
Повторяющиеся события
Для любого календаря — это важный элемент. Функционал достаточно простой, но основные функции выполняет — повтор каждый день, каждую неделю, каждый месяц, каждый год. Возможно в дальнейшем сделаю более сложный алгоритм. Если будет востребовано.
Отличить повторяющиеся события от обычных можно по значку. Как и события с уведомлением.
Повторяющиеся события имеют класс repeated-event.

Личные события
Авторизованный пользователь может отметить событие как личное. Такие события при вызове календаря с параметром
showPrivate=`0` посторонним пользователям отображаться не будут. Но даже если разрешить показывать личные сообщения (showPrivate=`1`), то редактировать их сможет только сам автор и админ, авторизованный в backend. Если пользователь не авторизован, то чекбокс Личное становится недоступным.У таких событий css класс private-event.

Минимальная длительность события 30 мин.
Теперь, когда календарь создан, можно его вызывать
[[!fullCalendar? &calendars=`1`]]Для вызова нескольких календарей на странице используем параметр calendar и не забываем, что каждый вызов fullCalendar нужно обзывать через instance. Если вызываем только один раз, то instance можно не указывать.[[!fullCalendar? &instance=`calendar1` &calendars=`1`]]
[[!fullCalendar? &instance=`calendar2` &calendars=`2,3`]]В планах научится редактировать события Google календаря через API Google, поиск событий. Но это как пойдет. :)В общем, пока все.
Познакомится поближе можно на странице дополнения.
Документация.
Комментарии: 66
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Когда в магазине?
Всё проще. Размещение нового дополнения в modstore занимает до 5 рабочих дней. Новолуние завтра. Немного геометрии и получаем ответ, что скоро будет. :)
Не выскакивает диалог создания/редактирования. Пришлось в вёрстку добавить Добавьте это, пожалуйста, в разметку, выводимую сниппетом fullCalendar, а то не хочется этот клочок разметки календаря в моих шаблонах хранить.
Он добавляется в классе fullcalendar.class.php (строчка 106).
Благодарю за моментальный отклик.
Есть предложения к расширению функционала уведомлений.
Сделать возможность подключать смс рассылку, на событие(я), определенным пользователям.
И тоже самое с email уведомлениями.
Для примера:
Создаем событие на будущее, Собрание;
Добавляем в список рассылок уведомлений пользователей ручками путем прописывания номера телефона или email.
По Вашему вопросу. У сниппета есть несколько параметров, отвечающих за права:
— readOnly — запрет редактирования всем.
— allowGuestEdit — разрешение неавторизованным пользователям добавлять и изменять (только не личные) события.
— showPrivate — показывать всем личные сообщения, т.е. сообщения, созданные авторизованными пользователями.
Если пользователь авторизован в админке, то он может редактировать, а неавторизованные пользователи (при allowGuestEdit=`false`) нет.
Вид уведомлений
П.С. В сниппете можно настроить любое условие прав редактирования.
АнтонКак сделать чтобы редактировали:
учителя только свои календари,
секретарь1 мог редактировать несколько календарей,
секретарь 2 тоже несколько, может пересекающиеся с секретарь1,
админ редактирует все календари,
анонимы и юзеры только смотрят.
АнтонМожете подсказать?
АнтонПопробую более подробно описать.
Нужно 3 уровня доступа:
1. Админы могут менять все календари
2. Секретари могут менять несколько календарей, заданных админом
(для учителя можно использовать уровень секретаря, давать доступ только на 1 календарь)
3. Просто юзеры и анонимы не могут ничего менять, только смотрят.
Календари создаются админами.
Авторизация через админку для админов и через Office для секретарей, учителей и юзеров.
Секретарей и учителей назначает админ.
Сейчас реализовано только 2 уровня — админы и юзеры, при этом юзеры могут менять любой календарь под себя.
Не совсем понятно зачем это юзерам. Не думаю, что человек в здравом уме будет вести свой личный календарь на каком-то левом сайте, когда есть прекрасные календари на иклоуде и гугле.
Нужно реализовать чтобы к одному календарю был доступ для редактирования нескольким заданным админом юзерам(которые будут логиниться через office) и вообще убрать возможность редактирования календарей обычным юзерам(как анонимам, так и залогиненным), чтобы потом не объяснять каждому новому учителю почему он задал время занятия, а никто не пришел на урок.
АнтонБесит уже этот американский образ мышления — мне это нужно, значит это всем всегда нужно.
А как быть с заданием прав на календарь?
readOnly=`1`
Использовать сниппет-обёртку типа такого
А внутри проверять группы и учителя и выставлять readOnly в 0 для них.
Есть ли для этого какое-то API?
к примеру мне нужно каждый месяц указывать график работы того или иного сотрудника, а затем выводить на сайт, чтобы клиенты видели, в какой день к какому специалисту прийти. Такое можно сделать с помощью этого календарика?
Хранить данные в mysql нет необходимости — расписание каждый месяц меняется, и, скорее всего, если не реализован интерфейс редактирования календаря в админке, проще добавлять все через простой JSON чем лезть в базу, либо много кликать мышкой на фронтэнде.
А есть боевая реализация этого календаря? хотелось бы ознакомиться поближе с прикладной реализацией этого модуля.
У меня вопрос.
Можно ли создавать календарь программно? У меня, например, есть потребность автоматически создавать календарь для пользователя при создании нового пользователя определенной группы.
А еще вопрос (сам не нашел).
А такой fullcalendar.io/js/fullcalendar-scheduler-1.2.0/demos/grouping.html
режим с группами в вашем дополнении тоже есть?
Я правильно понимаю, что данный календарь можно связывать со статьями сайта и выводить по типу: «Сегодня» — виджет (без вывода сетки) на сайте со ссылкой на статью соответствующую событию длящемуся (актуальному) в течении текущих суток? Или просто получать ID статьи связанной с событием (что предпочтительнее)?
Для информации. В админке интерфейса нет. Менеджер будет работать на сайте.
Подскажите, насколько сильно можно менять внешний вид календаря?
P.S. ссылка на страницу дополнения отдает ошибку 404
— javascript события — для изменений на стороне клиента
— серверные события — для изменений на сервере.
Можно ли его подружить с яндекс.календарь?
Просто с гуглом как не изголялся, все события идут одним цветом с него и постоянно как ссылки, с переходом на гугл.
Сергей может вы сможете тогда помочь понять как сделать следующее?
В этом календаре все понятно и все хорошо, но вот если подключить гугл календарь, то цвета не передаются (все единым цветом) и по нажатию на событие (от гугл) открывается собственно вкладка с гуглом — хотелось бы просто в модальном окошке с описания события.