Как предотвратить редактирование или удаление некоторого контента его автором в зависимости от поля статуса утверждения?


Вот скриншот, иллюстрирующий часть моей текущей реализации:

enter image description here

Вот чего я хочу достичь:

  • Если значение "Статус администратора" не "Одобрено", то автор все равно может редактировать или удалять свой собственный контент.

  • Если значение "Статус администратора" равно "Одобрено", то контент не может быть отредактирован автором.

Я много пробовал, даже используя модуль Правила, но у меня ничего не получается.

Есть какие-нибудь предложения о том, как заставить это работать?

Author: Pierre.Vriens, 2015-04-29

2 answers

Вы можете заставить это работать с модулем Правила с помощью события Система > Drupal инициализируется, в сочетании с Условием правил, связанным с URL-адресом для операции редактировать или удалять .

Запретить редактирование

Правило, необходимое для запрета "редактировать", является вариантом правила, которое я включил (в формате экспорта) в свой ответ на вопрос о Как ограничить доступ к узлу через узел/12 и разрешить доступ через путь, подобный контенту/некоторому заголовку?

Вот изменения в этом правиле, чтобы оно работало и в этом случае:

  • Пути, содержащие node, следует расширить, добавив /edit в конце (я предполагаю, что именно так выглядит URL-адрес вашей ссылки на редактирование).
  • Добавьте (1-е) правило " Условие ", например "Если Author id соответствует uid".
  • Добавьте (2-е) правила " Условие ", например "Если Admin Status является Approved".
  • Измените "Сообщение" (в Правилах 'Действие ' к чему-то, чтобы указать, что редактирование запрещено, потому что Admin Status Approved.
  • Измените правила "Действие " в соответствии с вашими собственными требованиями, например, сделайте перенаправление на какую-нибудь "страницу справки" с более подробной информацией об этом.

Запретить удаление

Если вы также хотите запретить автору "удалять" для "Статуса администратора" = "Одобрено" (что, однако, не соответствует тому, что в настоящее время говорится в вашем вопросе...), затем создайте другое правило, в котором вы используете аналогичный подход, как и для "редактировать" (как описано выше), просто замените все "редактировать" на "удалить".

Объединить оба правила

Должна быть возможность объединить 2 предложенных выше правила, используя "ИЛИ" в Правилах. Однако знайте, что это немного сложнее заставить его работать. Так что научитесь ходить (= заставьте это работать с 2 отдельными правилами), прежде чем вы захотите научиться летать...

Видеоуроки

Если вы не знакомы (достаточно/еще) с Правилами , оформите заказ 32 (!!!) замечательных и бесплатных видеоурока Изучают структуру правил , организованных в 7 главах.

Примечание: в вашем вопросе не говорится, что должно произойти (что разрешено или нет), когда пользователь, который не является автором, пытается отредактировать или удалить что-то со статусом "Администратор" = Одобрено. Если такой сценарий возможен в вашей настройке, то вам, возможно, придется дополнительно улучшить Условия правил, которые я предложил соответствующим образом...

 2
Author: Pierre.Vriens, 2017-04-13 12:47:06

Первое, что приходит мне на ум, - это изменение типа содержимого узла. Модулем, который вы могли бы использовать для изменения типов контента, по крайней мере, вручную, был бы Преобразование узлов. Однако я не знаю, может ли это также быть вызвано модулями Правил или флага или тому подобным.

В любом случае – изменение типа содержимого узла позволит вам предоставить соответствующие разрешения:

  1. content-type-not-approved –> автор может все еще редактировать

  2. content-type-approved –> автор не может редактировать больше ничего

 0
Author: tillinberlin, 2015-09-17 06:29:57