Расширение маршрутизации контента для Элемента Контента
Многие фнукции Invision Community обрабатываются централизованно и автоматически, например, предупреждения и разрешения модератора. Для поддержки этого, вам необходимо зарегистрировать ваши типы элементов контента с помощью ядра, что с делается с помощью простого расширения Content Router (далее Маршрутизация Контента). Дополнительные сведения о расширениях смотрите в соответствующем документе.
Как реализовать расширение ContentRouter
Первым шагом к реализации вашего маршрутизатора контента является создание расширения ContentRouter в Центре разработчика вашего приложения. Имя класса должно иметь отношение к цели вашей модели, к примеру Темы. Откройте созданный файл и добавьте такой код (изменив значения, если это необходимо):
namespace IPS\yourApp\extensions\core\ContentRouter;
class _YourClass
{
public $classes = array( 'IPS\yourApp\YourContentItemClass' );
}
Далее добавьте следующее свойство в вашу модель ноды (но не в модель элемента контента):
static $modPerm = 'string';
Значение используется как ключ для хранения нод, с которыми модератор имеет разрешение работать. Это может быть что угодно. Создайте языковую строку в вашем файле lang.php с этим же ключом - это будет текстовое представление того, как называются ваши ноды (например, 'Категории'). Наконец, добавьте языковую строку в файл lang.php для каждого из действий модерации, используя этот формат:
can_<action>_<title>
где <title> это ключ, определяемый статическим свойством $title из вашей модели элемента контента. Действия, которые вам нужно определить, будут зависеть от того, какие функции элементов контента вы поддерживаете в своей модели, но могут включать:
- pin и unpin (если поддерживается закрепление).
- feature и unfeature (если поддерживается возможность делать контент популярным).
- hide, unhide и view_hidden (если поддерживается скрытие и одобрение).
- lock, unlock и reply_to_locked (если поддерживается закрытие).
- edit.
- move.
- delete.
Примечание: если ваш элемент контента поддерживает комментирование, повторите этот последний шаг для действий, которые могут быть выполнены у комментариев (edit, delete, hide, unhide и view_hidden), где <title> будет ключом, определённым статическим свойством $title из вашей модели комментария контента.
В качестве примера предположим, что $title нашей модели элемента контент является 'myapp_entry'. В таком случае языковые строки будут с такими ключами:
'can_edit_myapp_entry' => "Можно редактировать записи?",
'can_move_myapp_entry' => "Можно перемещать записи?",
'can_delete_myapp_entry' => "Можно удалять записи?"
...и так далее.
Поведение, которое изменяется после реализации расширения ContentRouter
- При создании модератора администраторы смогут настраивать разрешения модератора для ваших элементов контента.
- При просмотре профиля пользователя, показ всего контента, размещенного этим пользователем, будет содержать и ваши элементы контента.
- Если вы поддерживаете скрытие элементов контента, при просмотре панели модератора будут показаны скрытые элементы контента из вашего приложения.
- При перестройке количества сообщений пользователя учитываются элементы вашего контента.
- При удалении всего контента пользователя, элементы контента вашего приложения у пользователя также будут удалены.