РЕШЕНО Отключить jgrowl при добавлении в корзину

Отключить jgrowl при добавлении товара в корзину. Через
miniShop2.Callbacks.Cart.add.response.success = function() {
    $.fancybox('#modal_basket');
   
}
Вызываю модальное око, но параллельно выскакивает окошко уведомления. Как его отключить, только для добавления? Буду благодарен за любой тычок носом. Спасибо!
Алексей Марченко
20 января 2015, 18:40
modx.pro
7
4 006
0

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

Виталий Киреев
21 января 2015, 06:37
0
Самое простое — скрыть через CSS, примерно
#jGrowl {display:none}
Максим Кузнецов
21 января 2015, 08:28
+1
assets/components/minishop2/js/web/default.js — сделать копию файла и указать в системных настройках путь до нового файла, в котором произвести замену/удаление вызова jgrowl'a
    Алексей Марченко
    21 января 2015, 08:31
    0
    так не понятно, где именно в этом фале отключить вызов, именно для добавления в корзину. Для всех уведомлений остальных оставить!
      Максим Кузнецов
      21 января 2015, 09:01
      0
      Предположу, что где-то среди данных колбэков или в завязанных в этой области функциях:

      ,add: function() {
      			var callbacks = miniShop2.Cart.callbacks;
      			callbacks.add.response.success = function(response) {
      				this.Cart.status(response.data);
      			}
      			miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.add, miniShop2.Callbacks.Cart.add);
      		}
    Алексей Марченко
    21 января 2015, 08:33
    0
    Пока сделал так, понимаю что не красиво…
    miniShop2.Callbacks.Cart.add.response.success = function() {
        $.fancybox('#modal_basket');
        $("#jGrowl").css("display","none");
        setTimeout (function(){
        $("#jGrowl").css("display","block");
        }, 5000);
    Но пока другого решения не нашел!
      Сергей Скат
      21 января 2015, 11:13
      0
      ну и нормально, работает же :)
        Максим Кузнецов
        21 января 2015, 12:10
        0
        Мм… а если будет добавлено 2 товара за промежуток времени менее 5 секунд, не произойдет ли следующий сценарий:
        — первый клик (картинка прячется), запускается таймер отчета вышеописанной функции и времени до скрытия jgrowl
        — второй клик (на картинку опять навешивается display: none;), снова запускается 2 таймера
        — первый таймер проходит и jgrowl становится видимым, но т.к. таймер jgrowl до скрытия увеличен, jgrowl еще отображается и резко проявляется юзеру.

        ?
      Алексей Ерохин
      21 января 2015, 16:44
      1
      +1
      github.com/bezumkin/miniShop2/blob/186b18504214f0afde06343d9e9036c3505cf6a1/assets/components/minishop2/js/web/default.js#L128

      Здесь делаете проверку, какое действие происходит.
      Например так
      var skip = 0;
      for (var i=0; i < data.length; i++) {
           if (data[i].name == 'ms2_action' && data[i].value == 'cart/add') {
                skip = 1;
           }
      }
      if (!skip) {
          miniShop2.Message.success(response.message);
      }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      11