eluhr/yii2-notification-module A notification module for Yii2

  1. Installation
  2. Configuration
  3. Example
  4. Example usuage
  5. Ideas

Installation

composer require eluhr/yii2-notification-module

Configuration

use eluhr\notification\components\Notification as NotificationComponent;
use eluhr\notification\Module as NotificationModule;
...
'modules' => [
    'notification' => [
        'class' => NotificationModule::class,
        // Optional: Override the list of possible message recipients
        // 'possibleUsersCallback' => function() {
        //     return \yii\helpers\ArrayHelper::map(
        //         \Da\User\Model\User::find()->where(['blocked_at' => null])->all(),
        //         'id',
        //         'username'
        //     );
        // },
    ],
    'translatemanager' => [
        'root' => [
            '@vendor/eluhr/yii2-notification-module/src'
        ]
    ]
],
'components' => [
    'notification' => [
        'class' => NotificationComponent::class,
        'mailer' => 'mailer', // OPTIONAL: Default -> mailer
        'fromEmail' => 'notifications@domain.com' // REQUIRED
    ]
],
'controllerMap' => [
    'migrate' => [
        'migrationPath' => [
            '@vendor/eluhr/yii2-notification-module/src/migrations',
        ]
    ]
]
...

Example

Inbox from the point of view of a user with all authorizations Example inbox

Write a message to individual users or entire user groups Search messages by subject, author or text
Compse message Filtered inbox
Group users to create your own personal user groups Mark, read or delete messages
User group User group
Worth knowing

Requires PHP version >= 7.*

Example usuage

ExampleModel extends ActiveRecord implements ModelChangeNotification {
        
        /**
         * @return array
         */
        public function behaviors()
        {
            $behaviors = parent::behaviors();
            $behaviors['notification'] = [
                'class' => ModelChangeNotification::class,
                'receiverIds' => [MessageUserGroup::MESSAGE_USER_GROUP_ID_PREFIX . '1']
            ];
            return $behaviors;
        }
    
    
        /**
         * @return string
         */
        public function subject()
        {
            return $this->isNewRecord ? 'New entry' : ('Updated entry #' . $this->id);
        }
    
        /**
         * @return string
         */
        public function text()
        {
            $text = Html::tag('pre', htmlentities(json_encode($this->attributes, JSON_PRETTY_PRINT)));
            $text .= Html::tag('p', Html::a('Direct link',['/widgets/crud/widget-template/view','id' => $this->id], true));
            return $text;
        }
        
}

More infos coming soon

Ideas

The following stuff will probably come in a future release

  • Draft messages for later use
  • Ability to remove messages
  • Mark messages from users with a label or something
  • Notification Widget (AdminLTE)
  • Delete (inbox) message in overview (three dots option edit)
  • Translation config
0 0
1
15 967
Yii Version: Unknown
License: BSD-3-Clause
Category: User Interface
Developed by: Elias Luhr Elias Luhr
Created: Feb 17, 2022
Packagist Profile
Github Repository

Related Extensions