Наконец, дошли руки сделать все основные хотелки. Теперь календарь стал ещё лучше, ещё гибче, ещё мощнее. В новой версии календарь получил возможность выводить любые пользовательские события, добавлены параметры для сниппетов, системные настройки, пара сниппетов, drag-n-drop события. Вот полный список изменений:

  • Обновлена библиотека fullcalendar.js до 2.9.0.
  • Обновлена библиотека jQuery до 2.2.4.
  • Добавлен сниппет fcGetEvents для вывода событий в списке.
  • Добавлен сниппет fcCreateEvent для вывода кнопки создания события. Может выводится без календаря.
  • В header календаря добавлена кнопка «addEvent» для создания события.
  • Добавлен чанк диалога для пользовательских событий.
  • Для пользовательских событий определяется класс «custom-event».
  • Добавлены системные настройки date_format и time_format.
  • Добавлены серверные события MODX — fcOnGetEventList, fcOnGetNotifications, fcOnGetEvent, fcOnSaveEvent и fcOnRemoveEvent.
  • Добавлены javascript события — fc_event_saved, fc_event_removed, fc_event_receive_error, fc_event_receive_success и fc_event_notify.
  • Добавлены перетаскиваемые события.
  • Обновлены чанки tpl.fullCalendar.dlg, tpl.fullCalendar.notify и tpl.fullCalendar.notify.email.
  • В сниппет fullCalendar добавлен параметр eventOverlap, отвечающий за пересечения событий.
  • Удалена системная настройка prepare_notify_snippet.
  • Переработан javascript.
  • Исправлены найденные ошибки.

Теперь обо всём по порядку. С библиотеками, думаю, всё понятно. Два последних пункта тоже не требуют объяснений. А вот с остальным разберёмся подробнее. Пойдём от малого к большому.

В сниппет fullCalendar добавлен параметр eventOverlap, определяющий возможность пересечения событий. Это особенно пригодится для использования календаря в качестве несложной системы онлайн записей.

Для этих целей также будут полезны drag-n-drop события.Каждому событию можно определить свою длительность и разрешить добавлять события только перетаскиванием.

Изначально я планировал внедряться в процесс формирования списка событий и уведомлений через сниппеты. Для этой цели и была создана системная настройка prepare_notify_snippet. В данной версии я отказался от этой идеи в пользу событий MODX. Они дают гораздо больше возможностей. Поэтому данную настройку я без сожаления удалил.

Но я компенсировал количество настроек добавлением двух других — для форматирования даты и времени. Эти настройки определяют формат дат в диалогах и списках событий.

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

А вот её аналог, который выводится новым сниппетом fcCreateEvent будет более полезным. Эту кнопку можно выводить на любой странице с календарём или без. Особенно она будет актуальна для списка событий, формируемого сниппетом fcGetEvents. Сниппет выводит события из указанных календарей и в указанном диапазоне.

Таких списков на странице может быть несколько. И у каждого своя кнопка создания событий.

Ну а теперь поговорим о более интересных доработках. В первую очередь это относится к серверным событиям MODX. Я добавил аж целых 5 — fcOnGetEventList, fcOnGetNotifications, fcOnGetEvent, fcOnSaveEvent и fcOnRemoveEvent. По названиям видно их назначение. Именно они сильно расширяют возможности календаря. Событие fcOnGetEventList позволяет обработать список событий перед выводом в календарь — изменить, добавить или удалить событие(я). Можно вообще полностью сформировать новый список не обращаясь к таблице календаря. Вот пример вывода в календаре событий моих публикаций. Все пользовательские события получают класс «custom-event».

Событие fcOnGetNotifications позволяет оперировать уведомлениями. Добавили событие в список уведомлений и пользователь получит уведомление на сайте или по почте в зависимости от настроек. Для каждого уведомления можно указать свой собственный чанк с оформлением. Что также расширяет возможности применения. Например, можно пользователю, находящемуся на сайте 5 минут вывести сообщение с предложением посмотреть страницу по той же тематике.

События fcOnGetEvent, fcOnSaveEvent и fcOnRemoveEvent отвечают уже за обработку отдельного события. Они позволяют изменить данные, запретить изменение или удаление события. Подробности можно посмотреть в документации.

В дополнение к серверным событиям появились и javascript события — fc_event_saved, fc_event_removed, fc_event_receive_error, fc_event_receive_success и fc_event_notify. Они добавляют интерактив. Просто нужно добавить в своём скрипте соответствующий обработчик.

$(document).on('fc_event_saved', function(e, o) {
    alert('Событие '+o.title+' сохранено.');
});

В документации если несколько примеров на эту тему.

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

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

22 июля 2016, 09:55   838     0

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.