Сделать так, чтобы автор черновой редакции (revision) видел эту самую редакцию

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

Аватар пользователя marassa marassa 29 ноября 2019 в 13:42

Пытаюсь настроить Content Moderation (D8) на простейший и казалось бы вполне логичный воркфлоу - не выходит каменный цветок.
На данный момент юзеры имеют право добавлять контент (unpublished), видеть собственный unpublished content и редактировать собственный unpublished content. При этом видеть чужой unpublished content им не положено. Это всё легко настроено и работает.
Теперь хочу дать возможность всем юзерам вносить правки в любой контент, но в статусе черновик/draft, чтобы никто другой кроме самого правщика и админа, этих правок не видел до их одобрения админом.
Казалось бы, примитивный и довольно востребованный воркфлоу, который должен бы поддерживаться ядерным модулем Content Moderation из коробки? Фигу.
Даю всем юзерам право редактировать любой контент. Для контента само собой стоит галка "создавать новую редакцию". Юзеры действительно получают право редактировать любой контент, при этом создается редакция Draft, которую никто не видит.
НО: если юзер А редактирует (=создает черновую редакцию) материала, созданного юзером Б (что само по себе работает), после редактирования юзер А не имеет права увидеть результаты собственного труда. Даже если дать ему право "видеть последнюю редакцию". Потому что он имеет право видеть только "собственный контент", а в данном случае отредактированный им контент не его, а юзера Б. Несмотря на то, что последняя редакция сделана юзером А.
Давать всем юзерам права на просмотр любого неопубликованного контента глупо, потому что тогда все видят всё, и модерация вообще теряет смысл.
Вопрос 1: Неужели это всё действительно так? Может быть я чего-то не догоняю?
Вопрос 2: Если всё действительно так, как я вижу, то как бы Вы решали эту проблему? Так как в моей идеальной картине мира юзер должен не просто иметь право видеть последнюю собственную редакцию, а должен видеть именно ее по умолчанию при просмотре ноды (совершенно не нужно ему видеть всю эту кухню редакций и тыкать в "последнюю редакцию"), то, как мне видится, альтерить нужно не контроль доступа, а прямо сам ядерный алгоритм выбора редакции при извлечении ноды из БД. Сейчас при загрузке ноды всегда грузится "текущая редакция" независимо ни от чего. А хотелось бы, чтобы грузилась последняя редакция, доступная текущему юзеру (доступная не по текущим странным правилам Друпала, а сообразно вышеописанному здравому смыслу). Причем хотелось бы не патчить ядро (как к сожалению уже стало привычным для меня), а как-то ловко переопределить нужный ядерный функционал/сервис в моем собственном модуле. Как? Куда смотреть?