This commit is contained in:
vision 2015-06-02 18:04:50 +03:00
parent d413575a3c
commit 46692e2998
5 changed files with 251 additions and 0 deletions

View file

@ -0,0 +1,64 @@
<?php
/**
* Created by PhpStorm.
* User: VisioN
* Date: 22.05.2015
* Time: 12:50
*/
namespace vision\messages\actions;
use Yii;
use yii\base\Action;
use vision\messages\exceptions\EceptionMessages;
class MessageApiAction extends Action {
protected $from_id;
protected $last_id;
protected $action;
public function run() {
$this->action = \Yii::$app->request->get('action', false);
if(!$this->action) {
$this->sendJson(['status' => false, 'message' => 'Action is null.']);
}
if(!method_exists($this, $this->action)) {
$this->sendJson(['status' => false, 'message' => 'Action not exist.']);
}
try{
$data['data'] = call_user_func([$this, $this->action]);
}catch (EceptionMessages $e) {
$this->sendJson(['status' => false, 'message' => $e->getMessage()]);
}
$data['status'] = true;
$this->sendJson($data);
}
protected function getMessage() {
$from_id = \Yii::$app->request->get('from_id', false);
return \Yii::$app->mymessages->getAllMessages(\Yii::$app->user->identity->id, $from_id);
}
protected function updateMessage() {
$id_last_message = \Yii::$app->request->post('id_last_message');
while(true){
sleep(5);
}
}
protected function sendJson($data) {
$response = Yii::$app->response;
$response->format = \yii\web\Response::FORMAT_JSON;
$response->data = $data;
$response->send();
die();
}
}

23
assets/MessageAssets.php Normal file
View file

@ -0,0 +1,23 @@
<?php
/**
* Created by PhpStorm.
* User: VisioN
* Date: 22.05.2015
* Time: 14:05
*/
namespace vision\messages\assets;
class MessageAssets extends \yii\web\AssetBundle {
public $sourcePath = '@vendor/vision/yii2-private-messages';
public $js = [
'js/vision_messages.js',
];
public $css = [
'css/vision_messages.css',
];
public $depends = [
'yii\web\JqueryAsset'
];
}

34
js/vision_messages.js Normal file
View file

@ -0,0 +1,34 @@
$(window).ready(function() {
var base_url = 'http://fitbato.com/admin/battle/private-messages';
var messages = {
box : $("#message-container"),
lastId: 0,
console:function(m) {
console.log(m);
}
};
var getAllMessages = function (from_id) {
$.ajax({
type: "POST",
url: base_url + '?action=getMessage&from_id=' + from_id,
data: {from_id:from_id},
success: function(msg){
if(msg.status) {
updateBox(msg.data);
}else{
messages.console(msg);
}
}
});
};
var updateBox = function(m) {
var html = '';
messages.console(m);
};
});

76
models/Messages.php Normal file
View file

@ -0,0 +1,76 @@
<?php
namespace vision\messages\models;
use Yii;
use yii\behaviors\TimestampBehavior;
/**
* This is the model class for table "messages".
*
* @property integer $id
* @property integer $from_id
* @property integer $whom_id
* @property string $message
* @property integer $status
* @property integer $is_delete_from
* @property integer $is_delete_whom
* @property integer $created_at
* @property integer $updated_at
*
*/
class Messages extends \yii\db\ActiveRecord
{
const STATUS_NEW = '1';
const STATUS_READ = '2';
/**
* @inheritdoc
*/
public static function tableName()
{
return 'messages';
}
/**
* @inheritdoc
*/
public function behaviors()
{
return [
TimestampBehavior::className()
];
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['from_id', 'whom_id', 'message'], 'required'],
[['from_id', 'whom_id', 'status', 'created_at', 'updated_at'], 'integer'],
[['message'], 'string', 'max' => 750],
[['status'], 'default', 'value' => self::STATUS_NEW],
['status', 'in', 'range' => [self::STATUS_NEW, self::STATUS_READ], 'message' => 'Incorrect status'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'from_id' => Yii::t('app', 'From ID'),
'whom_id' => Yii::t('app', 'Whom ID'),
'message' => Yii::t('app', 'Message'),
'status' => Yii::t('app', 'Status'),
'created_at' => Yii::t('app', 'Created At'),
'updated_at' => Yii::t('app', 'Updated At'),
];
}
}

View file

@ -0,0 +1,54 @@
<?php
namespace vision\messages\widgets;
use vision\messages\assets\MessageAssets;
use \yii\base\Widget;
class PrivateMessage extends Widget {
public $buttonName = "Отправить";
protected $html;
public function run(){
MessageAssets::register($this->view);
$this->html = '';
$this->html .= $this->getListUsers();
$this->html .= $this->getBoxMessages();
$this->html .= $this->getFormInput();
return $this->html;
}
protected function getListUsers() {
$users = \Yii::$app->mymessages->getAllUsers();
$html = '<ul class="list_users">';
foreach($users as $usr) {
$html .= '<li data-user="' . $usr['id'] . '">';
$html .= $usr[\Yii::$app->mymessages->attributeNameUser] . " ";
$html .= "<span>" .$usr['cnt_mess'] . "</span>";
$html .= "</li>";
}
$html .= '</ul>';
return $html;
}
protected function getBoxMessages() {
$html = '';
$html .= '<div class="message-container" id="message-container"></div>';
return $html;
}
protected function getFormInput() {
$html = '<form action="#" method="POST">';
$html .= '<input type="text" name="input_message">';
$html .= '<input type="hidden" name="message_id_user">';
$html .= '<button type="submit">' . $this->buttonName . '</button>';
$html .= '</form>';
return $html;
}
}