heimrichhannot/contao-alert-reminder-bundle

此实用工具包为Contao CMS中现有警报提醒后端用户提供功能。

0.3.3 2023-09-13 11:35 UTC

This package is auto-updated.

Last update: 2024-09-13 13:47:02 UTC


README

此实用工具包为Contao CMS中现有警报提醒后端用户提供功能。

功能

  • 查找现有(可配置)的contao后端警报(通过钩子getSystemMessages添加)并添加后端消息,以便提醒后端用户。

用例

您可能会问这个功能有什么用例?

原始用例是为了提醒后端用户添加缺失的alt属性到图片(可访问性)。

没有这个功能,用户可能会忘记。由于contao简单的文件上传功能根本不包含该字段,因此强制将alt属性设置为必填也不是一个选项。

因此,需要提醒后端用户。

安装

  1. 运行composer require heimrichhannot/contao-alert-reminder-bundle并更新数据库。

技术说明

将新的contao警报添加到此捆绑包的上下文中

  1. 在contao中按常规注册一个getSystemMessages钩子

    // config.php (or use yaml tags in contao 4.9+)
    $GLOBALS['TL_HOOKS']['getSystemMessages']['myBundle'] = [
        \Acme\MyBundle\EventListener\GetSystemMessagesListener::class, '__invoke'
    ];
    // GetSystemMessagesListener.php
    
    namespace Acme\MyBundle\EventListener;
    
    use Acme\AlertReminderBundle\Manager\AlertReminderManager;
    use Acme\RequestBundle\Component\HttpFoundation\Request;
    use Symfony\Contracts\Translation\TranslatorInterface;
    
    class GetSystemMessagesListener
    {
        /**
         * @var TranslatorInterface
         */
        private $translator;
        /**
         * @var Request
         */
        private $request;
        /**
         * @var AlertReminderManager
         */
        private $alertReminderManager;
    
        public function __construct(AlertReminderManager $alertReminderManager, TranslatorInterface $translator, Request $request)
        {
            $this->translator           = $translator;
            $this->request              = $request;
            $this->alertReminderManager = $alertReminderManager;
        }
    
        public function __invoke()
        {
            $message = '<p class="tl_error">My alert message</p>';
    
            return $this->alertReminderManager->prepareSystemMessage($message, 'some_alert_type_alias');
        }
    }
  2. 为了激活提醒,您需要在项目的app/config/config.yml中添加您的警报类型

    huh_alert_reminder:
      alert_types:
        - { name: some_alert_type_alias }

将您的警报添加到警报队列后端模块

此捆绑包引入了AlertQueueModule。它只是一个消息列表。您可以使用它将您希望用户注意的所有警报的完整列表添加到用户。在提醒用户添加缺失的alt属性的情况下,这是添加具体媒体文件快捷方式的地方。

您可以通过注册一个事件监听器来添加消息,例如监听事件AddAlertsToAlertReminderQueueEvent,如下所示

public function __invoke(AddAlertsToAlertReminderQueueEvent $event)
{
    if ('alt_issues_existing' !== Input::get('type')) {
        return;
    }

    $messages = $event->getAlerts();

    $messages[] = [
        'class' => 'tl_error', // you can use Contao's tl_ classes
        'message' => 'My message'
    ];

    $event->setAlerts($messages);
}