[oneBooking 3.4.0] Небольшая оптимизация

В этой версии проведены небольшие улучшения и исправления. Основные доработки коснулись функционала пользовательских полей. Теперь с ними работать стало проще. Сниппет obExtras для них больше не нужен. В форму достаточно вставить плейсхолдер своего поля [[+myfield]]. Он будет отрендерен согласно описанию. Также исправлена ошибка, когда пользовательские поля не учитывались при запросе суммы брони.

Вот полный список изменений.
  • В чанке tpl.calendar.cell.info доступен ещё один плейсхолдер [[+description]].
  • В сниппет ob.Calendar добавлен параметр refreshCalendar для отключения обновления календаря после бронирования.
  • В сниппеты ob.Calendar, obForm, obSearch и obButton добавлен параметр redirectTo.
  • Добавлена системная настройка maximum_number, указывающая максимально допустимое количество объектов для бронирования.
  • Удален сниппет obExtras, так как необходимости в нем больше нет.
  • Переработан javascript.
Подробнее остановлюсь на параметре redirectTo. В нём можно указать id страницы с информацией об успешной операции, на которую будет перенаправлен пользователь после бронирования. После переадресации к url страницы будут добавлены 2 параметра: bid и back. В первом указывается номер заявки бронирования. Второй — это номер страницы, на которой пользователь находился до переадресации. Они пригодятся, чтобы получить информацию о заявке и вернуться обратно на страницу бронирования.

Пример страницы успешного бронирования

Создаем сниппет getBookingInfo с таким содержимым:
<?php
$sql = 'SELECT Booking.*, Objects.name as object_name FROM ' . $modx->config['table_prefix'] . 'onebooking_reserved Booking INNER JOIN '.  $modx->config['table_prefix'] .'onebooking_objects Objects ON Booking.object=Objects.id WHERE Booking.id = :id';
$stmt = $modx->prepare($sql);
$data=array();
if ($stmt->execute(array('id'=> $_GET['bid']))) {
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
}
$data['back'] = $modx->makeUrl(intval($_GET['back']));
return $modx->getChunk('successBooking', $data);

В этом сниппете вызывается чанк successBooking. Содержимое чанка может быть таким:
<h3>Ваша заявка принята!</h3>
Данные заявки:
<p>Номер заявки: [[+id]]</p>
<p>Объект: <u>[[+object_name]]</u></p>
<p>Количество: <u>[[+number]]</u></p>
<p>Дата заезда: <u>[[+start_date]]</u></p>
<p>Дата выезда: <u>[[+end_date]]</u></p>
<p>Сумма: [[+sum]]</p>
<br />
<a href="[[+back]]">Вернуться на страницу бронирования</a>
Для знатоков MODX не составит труда сделать такое самим. Тут ничего сложного.
На этом всё. Спасибо за внимание.
Сергей Шлоков
13 июля 2016, 15:30
1
990
+4

Комментарии: 12

Сергей Лим
19 сентября 2018, 12:26
0
Сергей, очень хочется решить вопрос с новым miniShop2, хочу привязать модуль оплаты Яндекс кассы, да и много нужного функционала нового miniShop2 нету. Ну 2 года уже прошло
    Сергей Шлоков
    19 сентября 2018, 16:40
    0
    Видимо придётся. Непростое это дело. Володя, например, выпускал отдельные покеты для нового минишопа. А мне, честно говоря, не хочется рожать oneBooking2.
Сергей Лим
19 сентября 2018, 17:47
0
А вообще разделить miniShop и oneBooking не легче?
    Сергей Шлоков
    19 сентября 2018, 18:16
    0
    Т.е. минишоп не нужен что-ли?
      Сергей Лим
      19 сентября 2018, 18:25
      0
      Нужен, это я ерунду сказал)
        Сергей Шлоков
        19 сентября 2018, 18:34
        0
        В новой версии miniShop изменилось API заказа. Я не большой спец по минишопу. Вернее, вообще не спец. Обратился к Володе за помощью, так как он также исправлял эту проблему. Он проигнорил. С Василием я вообще не могу найти общий язык. Поэтому нужно сесть и погрузиться. Но на это нет ни времени, ни желания. Но видимо всё-таки придётся.
          Володя
          19 сентября 2018, 20:47
          0
          Чет я не помню чтобы ты хоть когда ко мне обращался… Да и в апи заказа никаких существенных изменений не происходило что могли бы тебя смутить. Так что не надо ля ля… Видимо просто нет желания, ток ято причем?
            Сергей Шлоков
            19 сентября 2018, 21:37
            0
            Чет я не помню чтобы ты хоть когда ко мне обращался…
            Я тебе написал на gmail с гитхаба.

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

            Видимо просто нет желания
            Желания нет. Я так выше и написал. Я с минишопом вообще никогда не работал. Мне Миша Воеводский помог. Об этом я тоже писал.

            ток ято причем?
            А я где-то сказал, что ты причём? Ты мне не ответил. Я об этом и сказал.

            Так что не надо ля ля…
            Меняю на фа фа и си си.

            Я почему обратился… Ты большой спец по интеграции с минишопом. Уверен, не глядя в код можешь подсказать. А то, жуть как неохота разбираться с платежными системами, регистрироваться в них, настраивать сэндбоксы. У меня только ЯД. Покупать к нему платное дополнение для теста ломает. Поэтому и нужен совет старшего товарища.
              Володя
              19 сентября 2018, 22:09
              0
              Серег ты странно просишь о помощи.
              Если тебя действительно что то интересует то не проще акцентировать внимание на этом?
                Сергей Шлоков
                19 сентября 2018, 22:15
                0
                Серег ты странно просишь о помощи.
                Не навязчиво )

                Если тебя действительно что то интересует то не проще акцентировать внимание на этом?
                Так ты почту-то получал?
                  Володя
                  20 сентября 2018, 06:29
                  0
                  Так ты почту-то получал?
                  Нет конечно.
                    Сергей Шлоков
                    20 сентября 2018, 21:39
                    0
                    А я наивный настоящий адрес указал на гитхабе.А как к тебе напрямую постучаться, если ты можешь уделить время на меня?