Здравствуйте! Не могу сообразить, как решить задачу на Drupal 10.
Есть роли Автор и Редактор.
Автор создает свой материал. По умолчанию он не опубликован. Поле публикации в планах скрыть от авторов.
Редактор смотрит материал. И далее:
1) если всё ок, ставит галочку публикации, сохраняет, и материал публикуется
2) может сам внести корректировки, ставит галочку, и материал публикуется с внесенными изменениями. Изменения автоматически попадают в журнал редакции и в зависимости от того, что поменялось, должно что-то происходить на сайте (уведомления, изменение поля в ЛК автора)
3) может не одобрить материал, оставить комментарий с недочетами, сохраняет материал без публикации
Как примерно это всё организовать и какими хуками?
В принципе вроде как получилось это сделать с помощью hook_entity_presave. Но как при этом отслеживать изменения?
Комментарии
В hook_entity_presave приходит параметр $entity (или $node) у которого есть элемент
$node->original
. Это предыдущая копия $node, содержащая значения полей до текущего изменения. Остаётся сверить интересующие поля.PS. Например:
<?php
...
$old_node = $node->original;
if (
$node->field_body->value != $old_node->field_body->value) {// Изменилось поле field_body.
}
...
?>
Спасибо большое!