Здравствуйте.
Пытаюсь запретить редактирование ноды определенным пользователям по условию.
Делал так:
1. Давал возможность редактировать всем пользователям свой тип материала.
2. Пытался запретить редактирование по условию:
2.1 использовал hook_nodeapi на случай prepare. проверял по условию, и если FALSE запускал drupal_access_denied().
но проблема в том, что форма теперь отображается дважды:
первый раз - с "Доступ запрещен" с боковыми блоками и меню,
и второй - обычная форма редактирования + блоки и меню.
Вобщем вышел слепок из желаемого мной результата, и того что было раньше.
2.2 использовал hook_form_alter с тем же исходом.
Вкратце хочу получить страницу с запретом, если пользователь прошел проверку с негативным исходом или обычную форму редактирования, если пользователь прошел проверку с позитивным результатом.
Прошу помочь с решением задачи.
Комментарии
можно сделать через:
1) hook_menu_alter
проставить access = false когла надо
2) можно через хук hook_node_view
запретить показ
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 такая функция не попадает. что делаю не так? может забыл что-то?
ошибся. недосмотрел. заработало.
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);
}
Большое спасибо за совет!