• Блог
  • Пошаговый диалог, типы брони

В этой версии много изменений. Сделано не всё что планировалось, но достаточно много. Вот полный список:

  • Оптимизировано для MODX версии 2.4.0.
  • Добавлена форма для пошагового бронирования.
  • Добавлено несколько режимов работы календаря:
    1. бронирование через форму/диалог;
    2. вывода календаря для указанных объектов;
    3. тип бронирования: день, период.
  • Добавлен сниппет для вывода пошаговой формы (без календаря).
  • Добавлен чанк для всплывающего информационного окна.
  • Добавлена возможность отключения файлов bootstrap.min.css, jquery-ui.min.css и jquery-ui.min.js в случае самостоятельного подключения.
  • Уменьшено время формирования календаря.
  • Исправлены найденные ошибки.

Теперь рассмотрим изменения подробнее.

Пошаговая форма бронирования

Как видно на картинке форма достаточно простая. На первом шаге вводятся даты и количество объектов бронирования. Даты заполняются автоматически при выборе диапазона в календаре. При переходе на второй шаг идет проверка доступности нужного количества на указанные даты. Если нужного количества нет, то перейти на второй шаг не получится.

На втором шаге вводятся персональные данные. При переходе на третий шаг проводится проверка заполнения обязательных полей, указанных в системных настройках.

На третьем шаге производится бронирование и оплата.

Если все гуд, то выводится сообщение

Эту форму можно выводить из без календаря. Для этого есть новый сниппет obForm, которому нужно указать id объекта для бронирования в параметре object.

Режимы календаря

У сниппета вызова календаря obCalendar появилось несколько параметров, отвечающих за его отображение и работу.

Первый параметр — objects. В нем можно указать один или несколько (через запятую) id объектов, для которых будет строится календарь.

Второй параметр — type. Он принимает 2 значения — day и period. В дальнейшем планирую еще и hours.

  • day указывает, что объект бронируется на день. Т.е. если указать даты бронирования с 1 по 2 января, то сумма и бронь будут считаться за 2 дня — объект будет занят и 1 января и 2 января. При бронировании на один день даты начала и окончания брони должны совпадать.
  • period больше подойдет для бронирования номеров с чекаутом на следующий день. Если в этом режиме указать даты бронирования с 1 по 2 января — это будет один день. Сумма будет за 1 января, а 2 января номер будет считаться свободным и доступным для бронирования, в отличие от режима day.

Третий параметр — interface. Если указать dialog", то будет работать как и раньше — чтобы забронировать, кликаем на дату в календаре, открывается диалог для бронирования. А если указать form, то будет выводится пошаговая форма, описанная выше.

Отображение информации в календаре

Вы можете сами решить, что отображать в ячейке. В чанке tpl.calendar.cell можно посмотреть, какие плейсхолдеры передаются и использовать их по своему усмотрению. Например, в ячейке можно вывести информацию по акциям. Или можно вывести количество доступных объектов. В чанке есть закомментированный пример.

Также появилась возможность формировать всплывающее окно с подсказкой. За это отвечает чанк tpl.calendar.cell.info. В нем указаны все доступные для использования плейсхолдеры.

Остальные изменения

У всех сниппетов появился параметр loadLibrary, который отвечает за загрузку файлов bootstrap.min.css, jquery-ui.min.css и jquery-ui.min.js. Если они уже подключены на сайте, то их загрузку можно отключить.

Оптимизирован код формирования календаря. Теперь он формируется в 1,5 раза быстрее. Подшлифовал javascript. Также теперь даты в прошлом стали недоступны для выбора.

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

Дополнительная информация

Хочу напомнить, что все подписи и названия меняются в лексиконе. Можно сделать это в админке. А можно сразу скопом сделать нужные исправления в файле custom.inc.php, который надо положить рядом с /core/components/onebooking/lexicon/ru/default.inc.php. Он подключается автоматом. И после обновления ничего не слетит.

ВАЖНО!

При обновлении нужно обязательно обновить чанки.

Посмотреть на компонент в живую можно здесь.

П.С. Изначально я планировал создать еще один более функциональный компонент. Но познакомившись поближе с minishop2, очень впечатлился. Гибкие возможности расширения, все продумано. Поэтому я решил не создавать новый продукт, а расширять этот плагинами или модулями. Из плановых модулей — «Почасовая оплата», «Периоды», которые позволяют задать разные цены для разных диапазонов дат или запретить бронь в указанные даты и «Дополнительные элементы» для подключения к брони. Таким образом достигается вполне хорошая масштабируемость.

0   52     0

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

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

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