[Office] Версия 1.4.6 - повтор заказов

Привет, друзья!

Хочу анонсировать вам обновление Office, которое стало результатом личной просьбы одного из участников митапа в Казахстане, на прошлой неделе.

Речь о возможности повторять заказы прямо из таблицы Office. У сниппета officeMiniShop2 есть теперь 3 новых параметра:
  • allowRemove — включить возможность удаления заказов со статусом «Новый».
  • allowRepeat — включить возможность повторения заказа.
  • cartLink — ссылка на корзину с оформлением заказа.
Логика работы повтора заказа следующая:
  1. Если повтор разрешён, в таблице заказов появляется соответствующая иконка.
  2. При клике на неё товары заказа набиваются в сессию, как будто бы пользователь сам добавил их в корзину.
  3. Дальше, если параметр cartLink не пуст, то пользователь переправляется на указанную страницу оформления заказа. Выбирает метод доставки, оплаты, заполняет или меняет нужные поля адреса.
  4. Если же этот параметр пуст, то заказ создаётся сразу же, копируя всё что можно из старого.
Обратите внимание, что если копируемый заказ был создан давно, и с тех пор ваши правила оформления изменились, создание заказа без корзины может выдать ошибку. Например, теперь вы требуете обязательно указывать адрес, а в копируемом заказе его нет — будет ошибка о незаполнении нужных полей.

[[!officeMiniShop2?
    &allowRemove=`1`
    &allowRepeat=`1`    
    &cartLink=`/order/cart`
]]

Новая версия уже в магазине, можно обновляться.
Василий Наумкин
05 мая 2017, 16:37
modx.pro
2
2 102
+11

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

Василий Столейков
11 мая 2017, 00:28
0
allowRepeat не работает, если товар виртуальный. По крайней мере не повторяет заказ подписки PayAndSee, выдаёт ошибку: Ошибка добавления в корзину: не указан идентификатор товара
    Константин Ильин
    11 мая 2017, 23:46
    0
    Василий подскажи пожалуйста, как отключить функционал сброса пароля?
    Т.е. мне не нужно чтобы человек ввел Логин(емайл) и ему тут же сбросился пароль.

    Пароль и Логин выдаются админом, так что сбрасывать может только админ, отсюда и такая задача.
      Константин Ильин
      12 мая 2017, 18:51
      0
      Корявенко но вот:
      //208 строчка core/components/office/controllers/auth.class.php
      //заменяем
      return $this->_resetPassword($user->username);
      //на
      return $this->error($this->modx->lexicon('office_auth_register_password_error'));
      В лексиконах добавляем запись
      office_auth_register_password_error = Вы не ввели пароль

      Плохо будет когда обновление…
        Максим Кузнецов
        13 мая 2017, 10:52
        +2
        Специально на этот случай в Office предусмотрена возможность расширения классов:

        1. Идем в директорию core/components/office/controllers/ и создаем там свой класс.
        Например, customauth.class.php
        2. Расширяем в нем стандартный класс авторизации
        <?php
        	if(!class_exists('officeAuthController')) {
        		require_once 'auth.class.php';
        	}
        
        	class officeCustomAuthController extends officeAuthController {
        		//здесь будут расширяемые функции
        	}
        	
        	return 'officeCustomAuthController';
        3. Идем в core/components/office/controllers/auth.class.php и ищем в нем дефолтную функцию, которую хотим модифицировать. В вашем случае это formLogin. Копируем её.
        4. Вставляем в отмеченном месте из шага 2 данную функцию.
        5. Заменяем желаемый участок кода
        6. Идем в вызываемый чанк нужной формы Office и меняем там auth/formLogin на наш customauth/formLogin

        Готово.
          Константин Ильин
          13 мая 2017, 15:36
          0
          эх, пробегала у меня мысль, что наверно можно расширить класс и заменить функцию, но видать лень одалела искать что-то)))
          Спасибо Максим большое! Все получилось!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5