Как правильно реализовать запрет на удаление ноды?

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

Аватар пользователя Alex_R Alex_R 19 августа 2010 в 13:53

Есть нода, есть пользователь, который по правам доступа имеет право ее удалить. В ноде есть поле ССК, значение которого может либо разрешать, либо запрещать данную операцию. Как сделать проверку этого поля непосредственно перед удалением, после нажатия пользователем на кнопку "Удалить", перед подтверждением необратимого действия? Возможно потребуется не полный запрет, а дополнительное предупреждение, но это если понять как делать в принципе уже не сложно дальше разобраться.
Посмотрел nodeapi операцию delete но он отрабатывает после удаления ноды, а необходимо сделать перехват перед удалением - как?
Заранее спасибо за ответ!

Комментарии

Аватар пользователя Ch Ch 19 августа 2010 в 14:49

"Alex_R" wrote:
Посмотрел nodeapi операцию delete но он отрабатывает после удаления ноды

операция validate вроде должна быть до удаления

Аватар пользователя Alex_R Alex_R 19 августа 2010 в 19:52

Ch wrote:
"Alex_R" wrote:
Посмотрел nodeapi операцию delete но он отрабатывает после удаления ноды

операция validate вроде должна быть до удаления

а как отслеживать до сохранения она или перед удалением? Что то я с ней не до конца смог разобраться Sad Где про нее подробнее можно почитать?

Аватар пользователя Ch Ch 19 августа 2010 в 21:05

Смотрите в параметре a3 массив с формой. Там можно определить какая операция выполняется.

"Alex_R" wrote:
Где про нее подробнее можно почитать?

http://api.drupal.ru/api/function/hook_nodeapi

Возможно, Вам лучше все таки использовать [ru-api=hook_form_alter]hook_form_alter[/ru-api].

Аватар пользователя Alex_R Alex_R 19 августа 2010 в 22:11

Ch wrote:
Смотрите в параметре a3 массив с формой. Там можно определить какая операция выполняется.

Спасибо! Этого не знал.

Ch wrote:
http://api.drupal.ru/api/function/hook_nodeapi

Это естественно читал, хотелось бы подробнее. Из данного описания даже непонятно что validate выполняется перед удалением.

Ch wrote:
Возможно, Вам лучше все таки использовать [ru-api=hook_form_alter]hook_form_alter[/ru-api].

Не понял.
" hook_form_alter ...Позволяет вносить изменения в форму перед её показом." Как это связано с поставленной задачей? Если имеется в виду убирание кнопки "удалить", то данный вариант меня не устраивает.

И еще возник вопрос - правильно ли я понимаю, что validate не выполняется перед удалением при использовании функции node_delete в тексте собственного модуля, а так же при удалении на странице admin/content/node ? Тогда похоже вариант с validate тоже является полурешением. Sad

Аватар пользователя Ch Ch 20 августа 2010 в 7:26

"Alex_R" wrote:
Из данного описания даже непонятно что validate выполняется перед удалением.

Ну дак, это всё легко выяснить самостоятельно.
Вставьте в хук drupal_set_message($op); и смотрите в каком порядке выполняются операции.

"Alex_R" wrote:
Если имеется в виду убирание кнопки "удалить", то данный вариант меня не устраивает.

Не обязательно удалять. Можно деактивировать, или отображать JS alert при нажатии кнопки "удалить". Много чего можно сделать, все зависит от конкретной задачи.

"Alex_R" wrote:
правильно ли я понимаю, что validate не выполняется перед удалением при использовании функции node_delete в тексте собственного модуля
Должна выполнятся. И кстати какая трудность это проверить?