Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

System for users to send each other private messages.

NotificationsYou must be signed in to change notification settings

thyseus/yii2-message

Repository files navigation

github has been bought by Microsoft. This repository is orphaned and has been moved to:

https://gitlab.com/thyseus/yii2-message

Thanks a lot for your understanding and blame Microsoft.

Yii2-message

System for users to send each other private messages.

  • A user configurable ignorelist and admin configurable whitelist (administrators are able to fine-tunethe definition of which users are able to write to whom) is supported.
  • Encryption is not (yet?) supported.
  • Uses Font Awesome (http://fontawesome.io/) for some icons
  • Every message sent inside the messaging system can be forwarded to the recipient be e-mail automatically.
  • Since 0.4.0 you can save drafts and use signatures

Prerequisites:

You need a Model with the 'id' and 'username' attributes. This needs to be an ActiveRecord or Model instance.

I suggest to usehttps://github.com/dektrium/yii2-user which works wonderful with this module.Note that dektrium is no longer maintained, for future projects you should take a look at:https://github.com/2amigos/yii2-usuario

Installation

$ composer require thyseus/yii2-message$ php yii migrate/up --migrationPath=@vendor/thyseus/yii2-message/migrations

Configuration

Add following lines to your main configuration file:

'modules' => ['message' => ['class' =>'thyseus\message\Module','userModelClass' =>'\app\models\User',// your User model. Needs to be ActiveRecord.    ],],

Sending E-Mails

If you want the system to automatically send E-Mails via Yii::$app->mailer you only need to provide an'email' column in your ActiveRecord Model.

Use the $mailMessages module option to define which users are getting E-Mails. For Example:

'mailMessages' =>function ($user) {return$user->profile->receive_emails ===true;        },

You can overwrite the default e-mail views and layout by providing an @app/mail/ directory inside your Application.

Mailqueue

From version 0.4 and above you can use yii2-queue (https://github.com/yiisoft/yii2-queue) to send messages via amail queue. Once you have yii2-queue configured in your application you can set

'useMailQueue' => true,

to let yii2-message push an EmailJob on to your queue instead of sending the E-Mail directly.

If you want to use an mailqueue likehttps://github.com/nterms/yii2-mailqueue you can override the 'mailer'configuration option in the module configuration. Since yii2-queue is stable and an official extension i personallyprefer to use yii2-queue instead of 3rd party extensions.

Ignore List and Recipients Filter

The user can manage his own ignore list using the message/message/ignorelist route. You can place a callback thatdefines which users should be able to be messaged. For example, if you do not want your users to be able to writeto admin users, do this:

'recipientsFilterCallback' =>function ($users) {returnarray_filter($users,function ($user) {return !$user->isAdmin;            });        },

The recipients filter is applied after the ignore list.

Actions

The following Actions are possible:

You can place this code snippet in your layouts/main.php to give your users accessto the message actions:

$messagelabel ='<span></span>';$unread = Message::find()->where(['to' =>$user->id,'status' =>0])->count();if ($unread >0)$messagelabel .='(' .$unread .')';echo Nav::widget(['encodeLabels' =>false,// important to display HTML-code (fontawesome icons)'items' => [// ...    ['label' =>$messagelabel,'url' =>'','visible' => !Yii::$app->user->isGuest,'items' => [        ['label' =>'<i></i> Inbox','url' => ['/message/message/inbox']],        ['label' =>'<i></i> Sent','url' => ['/message/message/sent']],'<hr>',        ['label' =>'<i></i> Drafts','url' => ['/message/message/drafts']],        ['label' =>'<i></i> Signature','url' => ['/message/message/signature']],        ['label' =>'<i></i> Out of Office','url' => ['/message/message/out-of-office']],        ['label' =>'<i></i> Manage your Ignorelist','url' => ['/message/message/ignorelist']],'<hr>',        ['label' =>'<i></i> Compose a Message','url' => ['/message/message/compose']],      ]    ],// ...  ]);

Since 0.3.0 you can render the compose view inside an Modal Widget like this:

usekartik\growl\GrowlAsset;useyii\bootstrap\Modal;useyii\helpers\Url;GrowlAsset::register($this);Modal::begin(['id' =>'compose-message','header' =>'<h2>Compose new Message</h2>']);Modal::end();$recipient_id =1337;# write an message to user with id 1337echo Html::a('<span></span> Compose Message','', ['class' =>'btn btn-default btn-contact-user','data-recipient' =>$recipient_id,'data-pjax' =>0]);$message_url = Url::to(['//message/message/compose']);$this->registerJs("  $('.modal-body').on('click', '.btn-send-message', function(event) {       if ($('#message-title').val()) {           $.post('".$message_url."', $('#message-form').serializeArray(), function() {               $.notify({message: 'Message has been sent successfully.'}, {type: 'success'});               $('#compose-message').modal('hide');           });      } else {          $('.modal-body').prepend('<div class=\"alert alert-warning\">Please enter a title at least.</div>');      }     event.preventDefault();  });  $('.modal-body').on('submit', '#message-form', function(event) {    $('.btn-send-message').click();    event.preventDefault();  });  $('body').on('click', '.btn-contact-user', function(event) {    $('#compose-message').modal();    recipient = $(this).data('recipient');    $.ajax('".$message_url."?to='+recipient+'&add_to_recipient_list=1', {      'success': function(result) {           $('.modal-body').html(result);       }    });    event.preventDefault();    });");

For some common url rules, you can copy Module::$urlRules into your 'rules' section of the URL Manager.

Contributing to this project

Anyone and everyone is welcome to contribute.

License

Yii2-message is released under the GPLv3 License.

About

System for users to send each other private messages.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors5

Languages


[8]ページ先頭

©2009-2025 Movatter.jp