Как предотвратить редактирование или удаление некоторого контента его автором в зависимости от поля статуса утверждения?
Вот скриншот, иллюстрирующий часть моей текущей реализации:
Вот чего я хочу достичь:
Если значение "Статус администратора" не "Одобрено", то автор все равно может редактировать или удалять свой собственный контент.
Если значение "Статус администратора" равно "Одобрено", то контент не может быть отредактирован автором.
Я много пробовал, даже используя модуль Правила, но у меня ничего не получается.
Есть какие-нибудь предложения о том, как заставить это работать?
2 answers
Вы можете заставить это работать с модулем Правила с помощью события Система > Drupal инициализируется, в сочетании с Условием правил, связанным с URL-адресом для операции редактировать или удалять .
Запретить редактирование
Правило, необходимое для запрета "редактировать", является вариантом правила, которое я включил (в формате экспорта) в свой ответ на вопрос о Как ограничить доступ к узлу через узел/12 и разрешить доступ через путь, подобный контенту/некоторому заголовку?
Вот изменения в этом правиле, чтобы оно работало и в этом случае:
- Пути, содержащие
node
, следует расширить, добавив/edit
в конце (я предполагаю, что именно так выглядит URL-адрес вашей ссылки на редактирование). - Добавьте (1-е) правило " Условие ", например "Если
Author id
соответствуетuid
". - Добавьте (2-е) правила " Условие ", например "Если
Admin Status
являетсяApproved
". - Измените "Сообщение" (в Правилах 'Действие ' к чему-то, чтобы указать, что редактирование запрещено, потому что
Admin Status
Approved
. - Измените правила "Действие " в соответствии с вашими собственными требованиями, например, сделайте перенаправление на какую-нибудь "страницу справки" с более подробной информацией об этом.
Запретить удаление
Если вы также хотите запретить автору "удалять" для "Статуса администратора" = "Одобрено" (что, однако, не соответствует тому, что в настоящее время говорится в вашем вопросе...), затем создайте другое правило, в котором вы используете аналогичный подход, как и для "редактировать" (как описано выше), просто замените все "редактировать" на "удалить".
Объединить оба правила
Должна быть возможность объединить 2 предложенных выше правила, используя "ИЛИ" в Правилах. Однако знайте, что это немного сложнее заставить его работать. Так что научитесь ходить (= заставьте это работать с 2 отдельными правилами), прежде чем вы захотите научиться летать...
Видеоуроки
Если вы не знакомы (достаточно/еще) с Правилами , оформите заказ 32 (!!!) замечательных и бесплатных видеоурока Изучают структуру правил , организованных в 7 главах.
Примечание: в вашем вопросе не говорится, что должно произойти (что разрешено или нет), когда пользователь, который не является автором, пытается отредактировать или удалить что-то со статусом "Администратор" = Одобрено. Если такой сценарий возможен в вашей настройке, то вам, возможно, придется дополнительно улучшить Условия правил, которые я предложил соответствующим образом...
Первое, что приходит мне на ум, - это изменение типа содержимого узла. Модулем, который вы могли бы использовать для изменения типов контента, по крайней мере, вручную, был бы Преобразование узлов. Однако я не знаю, может ли это также быть вызвано модулями Правил или флага или тому подобным.
В любом случае – изменение типа содержимого узла позволит вам предоставить соответствующие разрешения:
content-type-not-approved
–> автор может все еще редактироватьcontent-type-approved
–> автор не может редактировать больше ничего