add js
This commit is contained in:
parent
d413575a3c
commit
46692e2998
64
actions/MessageApiAction.php
Normal file
64
actions/MessageApiAction.php
Normal 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
23
assets/MessageAssets.php
Normal 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
34
js/vision_messages.js
Normal 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
76
models/Messages.php
Normal 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'),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
54
widgets/PrivateMessage.php
Normal file
54
widgets/PrivateMessage.php
Normal 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;
|
||||
|
||||
}
|
||||
}
|
Reference in a new issue