Yii2Private messages, simple chat
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Alexander Yakovlev 2f1d354227 Namespace / composer fix 4 years ago
actions Namespace / composer fix 4 years ago
assets Namespace / composer fix 4 years ago
components Namespace / composer fix 4 years ago
events Namespace / composer fix 4 years ago
exceptions Namespace / composer fix 4 years ago
migrations fix error group send 5 years ago
models Namespace / composer fix 4 years ago
web CSS for our design 4 years ago
widgets Namespace / composer fix 4 years ago
.gitignore add actions, component, events, exception 5 years ago
README.md Namespace / composer fix 4 years ago
composer.json Namespace / composer fix 4 years ago

README.md

Private messages

Private messages

Приватные сообщения (не чат).

Обновление сообщений при отправке или в фоне каждые 30 секунд (это можно изменить в “vendor\oreolek\yii2-private-messages\js\private_mess_pooling.js”). Есть возможность отправлять копию сообщения на email пользователя. Возможен режим когда пользователи будут видеть и смогут писать сообщения только указанным администраторам. Также возможно в фоне проверять кол-во новых сообщений + их авторов.

скрин http://prntscr.com/8mmqed или http://prntscr.com/7dt6tf

Установка

Выполните

php composer.phar require --prefer-dist vision/yii2-private-messages "dev-master"

или добавьте в ваш composer.json

"vision/yii2-private-messages": "dev-master"

Использование

После установки расширения необходимо выполнить миграцию:

yii migrate --migrationPath=@vendor/vision/yii2-private-messages/migrations/

В контроллере через который будут передаваться данные добавляем action

    public function actions()
    {
        return [
            'private-messages' => [
                'class' => \oreolek\messages\actions\MessageApiAction::className()
            ]
        ];
    }

Далее прописываем в конфиге:

'components' => [...
        'mymessages' => [
                //Обязательно
            'class'    => 'oreolek\messages\components\MyMessages',
                //не обязательно
                //класс модели пользователей
                //по-умолчанию \Yii::$app->user->identityClass
            'modelUser' => 'common\models\User',
                //имя контроллера где разместили action
            'nameController' => 'site',
                //не обязательно
                //имя поля в таблице пользователей которое будет использоваться в качестве имени
                //по-умолчанию username
            'attributeNameUser' => 'username',
                //не обязательно
                //можно указать роли и/или id пользователей которые будут видны в списке контактов всем кто не подпадает 
                //в эту выборку, при этом указанные пользователи будут и смогут писать всем зарегестрированным пользователям
            'admins' => ['admin', 7],
                //не обязательно
                //включение возможности дублировать сообщение на email
                //для работы данной функции в проектк должна быть реализована отправка почты штатными средствами фреймворка
            'enableEmail' => true,
                //задаем функцию для возврата адреса почты
                //в качестве аргумента передается объект модели пользователя
            'getEmail' => function($user_model) {
                return $user_model->email;
            },
                //задаем функцию для возврата лого пользователей в списке контактов (для виджета cloud)
                //в качестве аргумента передается id пользователя
            'getLogo' => function($user_id) {
                return '\img\ghgsd.jpg';
            },
                //указываем шаблоны сообщений, в них будет передаваться сообщение $message
            'templateEmail' => [
                'html' => 'private-message-text',
                'text' => 'private-message-html'
            ],
                //тема письма
            'subject' => 'Private message'
        ],
    ...]

Для работы достаточно во вьюхе вывести виджет

<?= oreolek\messages\widgets\CloadMessage::widget() ?>

или

<?= oreolek\messages\widgets\PrivateMessageKushalpandyaWidget::widget() ?>

Если необходимо в фоне проверять новые сообщения мы можем зарегестрировать oreolek\messages\assets\PrivateMessPoolingAsset

и добавить нужный нам слушатель

<?php
$base_script = "var baseUrlPrivateMessage ='" . \Yii::$app->mymessages->nameController . "';";
$this->registerJs($base_script, yii\web\View::POS_BEGIN);
?>

<script>
var listener = new privateMessPooling();
listener.addListener('newData', function(result){
    console.log(result);
});
listener.start();
</script>