Открытые фильтры срабатывают только у админа.

Главные вкладки

Аватар пользователя Kottov Kottov 30 августа 2014 в 5:33

Доброго времни суток.

Такая проблема.

В профиле пользователя сделано предствление с открытыми фильтрами для вывода его материалов. Давно это сделал, все работало - перазагружелосось аяксом представление.
Сейчас обнаружил что работает только для админа.
Ошибок никаких не выдает.
Чистил кеши, перегружал разрешения, выключал все касномные модули, менял тему - не помогло.

"Заработало" если дать пользователям разрешения "Bypass views access control" или выключить явасктипт в admin/structure/views/settings/advanced.

В Фаяербаге пытался понять почему не работает аякс. Видно что он начинает работу, даже приходит один json ответ - у админа приход их 3.
Никаких особым модулей по доступу с представлениями не использую.
Пробовал на последней рабочей и дев. версиях views.

Понятно что в английском инете все перерыл - подобные проблемы были - но без понимания причин и лечния.

Комментарии

Аватар пользователя Kottov Kottov 30 августа 2014 в 6:55

интересно что в когда выношу фильтры в блок - то все работает нормально,
прошелся по версиям jQuery - не помогло

Аватар пользователя Kottov Kottov 30 августа 2014 в 17:58

понял в чем дело
использую модуль 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;

так работает нормально (но конечно не по условию как надо)

Аватар пользователя Kottov Kottov 30 августа 2014 в 18:28

а вот так сработало как ожидалось

<?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
?>

решено