Вы здесь

Проблема с модулем ajax pages

0

Добрый день! Есть такой модуль, ajax pages, очень понравился, но почему то у меня он не работает, точнее работает только при клике первый раз, страница загружается ajax'ом при втором клике на любую сслылку не работает. В консоль сыпятся ошибки:

Safari

Mozilla Firefox (firebug)

По запросу в гугле "Drupal.settings.urlIsAjaxTrusted[element_settings.url]" ничего толкового кроме информации, что это новшество появилось в 7.39.

Может кто сталкивался с подобными ошибками, куда копать?

UPDATE! Нашел на Drupal.org

Major changes since 7.38:

The Ajax system now validates URLs before making an Ajax request. Existing code which uses the Drupal Ajax API in any of the standard ways should continue to work after this update. In the event you have unusual Ajax code which does not work with Drupal 7.39, you can have your code manually validate the URL in one of two ways. Either add the URL to the "urlIsAjaxTrusted" JavaScript setting (see ajax_pre_render_element() for an example) or call ajax_set_verification_header() in the Ajax callback function to mark the current URL as trusted. Only do this for URLs that you actually trust; Ajax requests in Drupal should never be made to untrusted URLs.

Буду копать дальше.

Версия Drupal: 
7.x
Категория: 
AJAXJavascript
Связанные проекты: 
Ajax pages
Вопрос задан 20.09.2015 - 11:53
Аватар пользователя Sora
Sora
91

Ответы

1

Решил проблему! Дело в том, что в модуле, файле ajax-pages.js был переопределен кусок с Drupall.settings и в нем благополучно нету urlIsAjaxTrusted, который появился в 7.39.

Добавил пару строк и все заработало :) Может пригодится.

/**
 * Custom Ajax command to set Drupal.settings.
 */
Drupal.ajax.prototype.commands.ajaxPagesSettings = function(ajax, response, status) {
  // Replace Drupal.settings with the supplied settings array while preserving
  // the ajaxPageState object.
  var ajaxPageState = Drupal.settings.ajaxPageState,
      urlIsAjaxTrusted = Drupal.settings.urlIsAjaxTrusted;
  Drupal.settings = response.settings;
  Drupal.settings.urlIsAjaxTrusted = urlIsAjaxTrusted;
  Drupal.settings.ajaxPageState = ajaxPageState;
}

Оффтоп: Приятно удивлен отладчиком JS в Firebug никогда не пользовался до этого им.

Ответ дан 20.09.2015 - 18:54
Аватар пользователя Sora
Sora
91

попробуй примени патч на чистый модуль и измени статус на Reviewed and tested в issue если все ок =) явно у всех проблема будет, так что полезно

Комментарий оставлен 20.09.2015 - 19:58

Спасибо большое за помощь, хотел сам сделать, просто срочно делаю заказ.

Комментарий оставлен 20.09.2015 - 20:05