[РЕШЕНО]Запрет редактирования ноды по условию

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

Аватар пользователя aferuk aferuk 12 октября 2012 в 13:32

Здравствуйте.
Пытаюсь запретить редактирование ноды определенным пользователям по условию.
Делал так:
1. Давал возможность редактировать всем пользователям свой тип материала.

2. Пытался запретить редактирование по условию:
2.1 использовал hook_nodeapi на случай prepare. проверял по условию, и если FALSE запускал drupal_access_denied().
но проблема в том, что форма теперь отображается дважды:
первый раз - с "Доступ запрещен" с боковыми блоками и меню,
и второй - обычная форма редактирования + блоки и меню.
Вобщем вышел слепок из желаемого мной результата, и того что было раньше.
2.2 использовал hook_form_alter с тем же исходом.

Вкратце хочу получить страницу с запретом, если пользователь прошел проверку с негативным исходом или обычную форму редактирования, если пользователь прошел проверку с позитивным результатом.

Прошу помочь с решением задачи.

Комментарии

Аватар пользователя cosmos cosmos 12 октября 2012 в 14:35

можно сделать через:
1) hook_menu_alter
проставить access = false когла надо
2) можно через хук hook_node_view
запретить показ

Аватар пользователя aferuk aferuk 12 октября 2012 в 16:39

2й пункт мне не подходит. у меня 6ка.
а вот 1й пункт пробую освоить.
пример взял из organic groups

function mymodule_menu_alter(&$items)
{
$menu['node/%node/edit']['access callback'] = 'mymodule_menu_access_node_edit';
$menu['node/%node/edit']['access arguments'] = array(1);
}

но в items такая функция не попадает. что делаю не так? может забыл что-то?

Аватар пользователя aferuk aferuk 12 октября 2012 в 17:51

ошибся. недосмотрел. заработало.

function mymodule_menu_alter(&$items)(&$menu)
{
$menu['node/%node/edit']['access callback'] = 'mymodule_menu_access_node_edit';
$menu['node/%node/edit']['access arguments'] = array(1);
}

Большое спасибо за совет!