Доброго времни суток.
Такая проблема.
В профиле пользователя сделано предствление с открытыми фильтрами для вывода его материалов. Давно это сделал, все работало - перазагружелосось аяксом представление.
Сейчас обнаружил что работает только для админа.
Ошибок никаких не выдает.
Чистил кеши, перегружал разрешения, выключал все касномные модули, менял тему - не помогло.
"Заработало" если дать пользователям разрешения "Bypass views access control" или выключить явасктипт в admin/structure/views/settings/advanced.
В Фаяербаге пытался понять почему не работает аякс. Видно что он начинает работу, даже приходит один json ответ - у админа приход их 3.
Никаких особым модулей по доступу с представлениями не использую.
Пробовал на последней рабочей и дев. версиях views.
Понятно что в английском инете все перерыл - подобные проблемы были - но без понимания причин и лечния.
Комментарии
интересно что в когда выношу фильтры в блок - то все работает нормально,
прошелся по версиям jQuery - не помогло
понял в чем дело
использую модуль views_php https://www.drupal.org/project/views_php
В Page settings/ Access options/ Access code
добавляю код для проверки - покзать передставленеие если пользователь просматривает свой профиль
global $user;
if (arg(0) == 'user' && is_numeric(arg(1)) && $user->uid == arg(1)) {
return TRUE; // tab will be shown
}
return FALSE;
он срабатывает нормально - но ajax сортировка открытым фильтром уже перестает работать для не-админа
и видно что сам код не проблема, пробовал на "прямую" запускать return TRUE; при этом чтоб нужный код обрабатывался
global $user;
if (arg(0) == 'user' && is_numeric(arg(1)) && $user->uid == arg(1)) { dpm($user); }
return TRUE;
так работает нормально (но конечно не по условию как надо)
а вот так сработало как ожидалось
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1)) && $user->uid <> arg(1)) { // change from $user->uid == arg(1))
return FALSE;
}
return TRUE; // block will be shown
?>
решено