| Задача: в ЛК клиента выводить чат по типу чатика ВК с менеджером клиента, и чтобы никому больше в компании клиент писать не мог |
Свой компонент
nikaverro:im.messenger
файл component.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (isset($_REQUEST['AJAX_CALL']) && $_REQUEST['AJAX_CALL'] == 'Y')
return;
if (defined('IM_COMPONENT_INIT'))
return;
else
define("IM_COMPONENT_INIT", true);
if (intval($USER->GetID()) <= 0)
return;
if (!CModule::IncludeModule('im'))
return;
$arGroups = $USER->GetUserGroupArray();
if($USER ->IsAdmin() || in_array(20,$arGroups)){ //клиент
$rsUser = CUser::GetList($by, $order,
array("ID" => $USER->GetID()),
array(
"SELECT" => array("ID","NAME","UF_CONTACT","PERSONAL_PHOTO"),
)
);
if($arUser = $rsUser->Fetch()){
$companyId = $arUser["UF_CONTACT"];
if(intval($companyId)>0){
$arComp = CCrmCompany::GetByID(intval($companyId),false);
$managerId = $arComp["ASSIGNED_BY_ID"];
if($managerId >0 && ($USER->GetID() != $managerId)){
$chatId = CIMMessage::GetChatId($USER->GetID(), $managerId);
$rsUser = CUser::GetByID($managerId);
$arResult["MANAGER"] = $rsUser->Fetch();
if($arResult["MANAGER"]["NAME"] != ""){
$name[] = $arResult["MANAGER"]["NAME"];
}
if($arResult["MANAGER"]["LAST_NAME"] != ""){
$name[] = $arResult["MANAGER"]["LAST_NAME"];
}
$name = implode(" ", $name);
if($name == ""){
$name = "консультант";
}
$arResult["MANAGER"]["PRINT_NAME"] = $name;
if($chatId > 0){
$arResult["USER_ID"] = $USER->GetID();
$arResult["CHAT_ID"] = $chatId;
$arResult["MANAGER_ID"] = $managerId;
$arResult["MANAGER_AVATAR"] = CIMChat::GetAvatarImage($arResult["MANAGER"]["PERSONAL_PHOTO"]);
$arResult["USER_AVATAR"] = CIMChat::GetAvatarImage($arUser["PERSONAL_PHOTO"]);
$arResult["MESSAGES"] = array();
$CIMMessage = new CIMMessage();
$arUnreadMessages = array();
$arMessages = $CIMMessage->GetUnreadMessage();
foreach ($arMessages["message"] as $key => $arMes) {
if($arMes["chatId"]==$chatId){
$arUnreadMessages[$arMes["id"]] = $arMes["id"];
}
}
$arMessages = $CIMMessage->GetLastMessage($USER->GetID(), $managerId);
$month = array("", "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
$today = date("Y-m-d");
foreach ($arMessages["message"] as &$arMes) {
$printDate = $arMes["date"]->format("j") ." ". $month[$arMes["date"]->format("n")];
$arMes["date_print"] = ($today == $arMes["date"]->format("Y-m-d"))? "Сегодня" : $printDate;
$arMes["date_unix"] = $arMes["date"]->getTimestamp();
$arMes['read'] = (isset($arUnreadMessages[$arMes["id"]]))?"N":"Y";
unset($arMes["date"]);
}
$cnt = count($arMessages["usersMessage"][$arResult["USER_ID"]]);
if($cnt == 0){
CIMMessage::Add(array(
'FROM_USER_ID' => $managerId,
'TO_USER_ID' => $USER->GetID(),
'MESSAGE' => 'Приветствую, я ваш менеджер. У вас есть вопросы? Напишите мне!',
));
//LocalRedirect($APPLICATION->GetCurPage());
}
else{
$tempMes = array();
for ($i=($cnt-1); $i >=0 ; $i--){
$idM = $arMessages["usersMessage"][$arResult["USER_ID"]][$i];
$tempMes[] = $arMessages["message"][$idM];
}
$arMessages["message_new"] = $tempMes;
$arResult["MESSAGES"] = $arMessages;
}
$tempMes = array();
$CIMNotify = new CIMNotify();
$arNotify = $CIMNotify->GetNotifyList();
foreach ($arNotify as &$arMes) {
$printDate = $arMes["date"]->format("j") ." ". $month[$arMes["date"]->format("n")];
$arMes["date_print"] = ($today == $arMes["date"]->format("Y-m-d"))? "Сегодня" : $printDate;
$arMes["date_unix"] = $arMes["date"]->getTimestamp();
unset($arMes["date"]);
$tempMes[] = $arMes;
}
$cnt = count($arNotify);
$arResult["NOTIFY"] = array();
for ($i=($cnt-1); $i >=0 ; $i--){
$arResult["NOTIFY"][] = $tempMes[$i];
}
$this->IncludeComponentTemplate();
}
else{
CIMMessage::Add(array(
'FROM_USER_ID' => $managerId,
'TO_USER_ID' => $USER->GetID(),
'MESSAGE' => 'Приветствую, я ваш менеджер. У вас есть вопросы? Напишите мне!',
));
LocalRedirect($APPLICATION->GetCurPage());
}
}
}
}
}
return $arResult;
?> |
<?
if (!defined('IM_AJAX_INIT'))
{
define("IM_AJAX_INIT", true);
define("PUBLIC_AJAX_MODE", true);
define("NO_KEEP_STATISTIC", "Y");
define("NO_AGENT_STATISTIC","Y");
define("NO_AGENT_CHECK", true);
define("DisableEventsCheck", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
}
if (!CModule::IncludeModule("im")){
echo \Bitrix\Im\Common::objectEncode(Array('ERROR' => GetMessage('IM_MODULE_NOT_INSTALLED')));
CMain::FinalActions();
die();
}
if(!$USER->IsAuthorized()){
$USER->LoginByCookies();
}
if (intval($USER->GetID()) <= 0){
// TODO need change AUTHORIZE ERROR callbacks
//header("HTTP/1.0 401 Not Authorized");
//header("Content-Type: application/x-javascript");
//header("BX-Authorize: ".bitrix_sessid());
echo \Bitrix\Im\Common::objectEncode(Array(
'ERROR' => 'AUTHORIZE_ERROR',
'BITRIX_SESSID' => bitrix_sessid()
));
CMain::FinalActions();
die();
}
if (!(
$_POST['IM_START_WRITING'] == 'Y' ||
$_POST['IM_SEND_MESSAGE'] == 'Y' ||
$_POST['IM_READ_MESSAGE'] == 'Y' ||
$_POST['IM_READ_NOTIFICATION'] == 'Y' ||
$_POST['IM_GET_UNREAD_MESSAGES'] == 'Y' ||
$_POST['IM_GET_MESSAGES'] == 'Y'
)){
echo \Bitrix\Im\Common::objectEncode(Array(
'ERROR' => 'SCOPE_ERROR'
));
CMain::FinalActions();
die();
}
CUtil::decodeURIComponent($_POST);
if($_POST['IM_SEND_MESSAGE'] == 'Y'){
$_POST["MESSAGE"] = str_replace("<div><br></div>", "\r\r", $_POST["MESSAGE"]);
$insertID = CIMMessage::Add(array(
"FROM_USER_ID" => intval($USER->GetID()),
"TO_USER_ID" => intval($_POST['RECIPIENT_ID']),
'MESSAGE' => $_POST['MESSAGE'],
));
echo \Bitrix\Im\Common::objectEncode(array("ID"=>$insertID));
}
elseif($_POST['IM_GET_UNREAD_MESSAGES'] == 'Y'){
$arMessagesNew = array();
$arMessages = array();
if(isset($_POST["MANAGER_ID"]) && (intval($_POST["MANAGER_ID"])>0) && isset($_POST["CHAT_ID"]) && (intval($_POST["CHAT_ID"])>0)){
$arParams = array('SPEED_CHECK' => 'N', 'ORDER' => 'ASC', 'USE_SMILES' => 'N', 'USER_LOAD' => 'N', 'LOAD_DEPARTMENT' => 'N');
$CIMMessage = new CIMMessage();
$arMessages = $CIMMessage->GetUnreadMessage($arParams);
if($arMessages['countMessage']>0){
$arTemp = array();
foreach ($arMessages["unreadMessage"][intval($_POST["MANAGER_ID"])] as $mesId) {
$arTemp[] = $mesId;
if($arMessages["message"][$mesId]["chatId"] == intval($_POST["CHAT_ID"])){
$arMessagesNew[] = $arMessages["message"][$mesId];
}
}
}
}
echo \Bitrix\Im\Common::objectEncode(array("MESSAGES"=>$arMessagesNew));
}
elseif($_POST['IM_GET_MESSAGES'] == 'Y'){
if(isset($_POST["MANAGER_ID"]) && (intval($_POST["MANAGER_ID"])>0)){
$CIMMessage = new CIMMessage();
//$arMessages = $CIMMessage->GetLastMessage($USER->GetID(), $managerId);
}
}
elseif($_POST['IM_READ_MESSAGE'] == 'Y' ){
// echo \Bitrix\Im\Common::objectEncode(Array(
// 'ERROR' => 'sdfsdfs',
// 'BITRIX_SESSID' => bitrix_sessid()
// ));
if(isset($_POST["CHAT_ID"])&& (intval($_POST["CHAT_ID"])>0)){
$lastId = (isset($_POST["LAST_ID"])&& (intval($_POST["LAST_ID"])>0))? intval($_POST["LAST_ID"]) : null;
$CIMMessage = new CIMMessage();
//if($lastId>0){
$res = $CIMMessage->SetLastId($_POST["CHAT_ID"],$USER->GetID(),$lastId);
//}
//else{
// CIMMessage::SetReadMessageAll($fromUserId)
//}
// $chat = new CIMChat;
// $chat->SetReadMessage(intval($_POST["CHAT_ID"]),$lastId);
//echo $lastId;
echo \Bitrix\Im\Common::objectEncode($res);
}
//echo 2;
}
elseif($_POST['IM_READ_NOTIFICATION'] == 'Y' ){
if(isset($_POST["ID"]) && count($_POST["ID"]>0)){
$CIMNotify = new CIMNotify();
foreach ($_POST["ID"] as $idNot) {
$CIMNotify->MarkNotifyRead($idNot);
}
}
echo true;
}
CMain::FinalActions();
die(); |
template.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
CJSCore::Init(array('ajax'));
$folder = $component->getPath();
?>
<div class="messenger" id="messengerClient">
<div class="messenger-wrapper">
<div class="header">
<div class="window-options"><div class="close"></div><div class="change-size"></div></div>
<div class="name"></div>
</div>
<div class="body" id="body-mes"></div>
<div class="body" id="body-not"></div>
<div class="new-msg-cell" id="new-msg-holder">
<div class="msg-placeholder" id="msg-placeholder">Ваше сообщение...</div>
<div class="new-msg" id="msg-input" contentEditable=true></div>
<div class="new-msg-send">Отправить</div>
</div>
</div>
</div>
<div class="messenger-panel">
<a class="consultantButton" href="#" data-type="notification" id="consultantButton-not">
<div class="manager-avatar-main"><div class="manager-avatar-main-img notification">!</div></div>
</a>
<a class="consultantButton" href="#" data-type="manager" id="consultantButton-man">
<div class="manager-avatar-main"><div class="manager-avatar-main-img" style="background-image:url(<?=$arResult["MANAGER_AVATAR"]?>)"></div></div>
</a>
</div>
<script>
$(document).ready(function(){
var timerId;
var prevSymb = "";
var last_mes = "";
var notIds = [];
var userId = <?=$arResult["USER_ID"]?>;
var user_avatar = '<div class="avatar-cell"><div class="avatar" style="background-image:url(<?=$arResult["USER_AVATAR"]?>);"></div></div>';
var man_avatar = '<div class="avatar-cell"><div class="avatar" style="background-image:url(<?=$arResult["MANAGER_AVATAR"]?>);"></div></div>';
function InitMessenger(messages,notify){
var mes;
var date = "";
var b = false;
$('#body-mes').html();
for (var i = 0; i < messages.length; i++) {
mes = messages[i];
//console.log(mes);
if((date == "") || (date != mes.date_print)){
$('#body-mes').append('<div class="date"><span>'+mes.date_print+'</span></div>');
date = mes.date_print;
}
if(mes["senderId"]==userId){
$('#body-mes').append('<div class="msg my" data-id="'+mes.id+'">'+user_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
}
else{
$('#body-mes').append('<div class="msg" data-id="'+mes.id+'">'+man_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
if(mes.read == "N"){
b = true;
}
}
last_mes = mes.id;
}
if(b){
$('#consultantButton-man').addClass('new');
}
date = "";
b = false;
for (var i = 0; i < notify.length; i++) {
mes = notify[i];
//console.log(mes);
if((date == "") || (date != mes.date_print)){
$('#body-not').append('<div class="date"><span>'+mes.date_print+'</span></div>');
date = mes.date_print;
if(mes.read == "N"){
b = true;
notIds.push(mes.id);
}
}
$('#body-not').append('<div class="msg" data-id="'+mes.id+'"><div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
}
if(b){
$('#consultantButton-not').addClass('new');
}
HideAvatars();
}
function SetReadMes(last_mes){
$('#consultantButton-man').removeClass('new');
setTimeout(function(){
var postData = {
'sessid': BX.bitrix_sessid(),
'IM_READ_MESSAGE': 'Y',
'site_id': BX.message('SITE_ID'),
'LAST_ID': last_mes,
'CHAT_ID': <?=$arResult["CHAT_ID"]?>,
'MANAGER_ID': <?=$arResult["MANAGER_ID"]?>
};
console.log(postData);
BX.ajax({
url: '<?=$folder;?>/ajax.php',
method: 'POST',
data: postData,
dataType: 'json',
onsuccess: function(result){
console.log(result);
}
});
},3000);
}
function SetReadNotification(){
$('#consultantButton-not').removeClass('new');
console.log(notIds);
if(notIds.length>0){
setTimeout(function(){
var postData = {
'sessid': BX.bitrix_sessid(),
'IM_READ_NOTIFICATION': 'Y',
'site_id': BX.message('SITE_ID'),
'ID': notIds,
};
console.log(postData);
BX.ajax({
url: '<?=$folder;?>/ajax.php',
method: 'POST',
data: postData,
dataType: 'json',
onsuccess: function(result){
notIds = [];
console.log(result);
}
});
},3000);
}
}
function HideAvatars(){
var prevelement = null;
$('#body-mes .msg').removeClass('first');
$('#body-mes>div').each(function(ind,el){
if(prevelement == null){
if($(el).hasClass('msg')){
$(el).addClass('first');
}
}
else{
if($(el).hasClass('msg')){
if($(prevelement).hasClass('date')){
$(el).addClass('first');
}
else if($(prevelement).hasClass('msg') && $(prevelement).hasClass('my') && !$(el).hasClass('my')){
$(el).addClass('first');
}
else if($(prevelement).hasClass('msg') && !$(prevelement).hasClass('my') && $(el).hasClass('my')){
$(el).addClass('first');
}
}
}
prevelement = el;
});
}
var messages = <?=CUtil::PhpToJSObject($arResult["MESSAGES"]["message_new"])?>;
var notify = <?=CUtil::PhpToJSObject($arResult["NOTIFY"])?>;
InitMessenger(messages,notify);
function setCursorToEnd(ele){
var range = document.createRange();
var sel = window.getSelection();
range.setStart(ele, 1);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
ele.focus();
}
$('.consultantButton').click(function(e){
e.preventDefault();
$('#messengerClient .body').hide();
if($(this).data('type') =="manager"){
$('#messengerClient').removeClass('notification');
$('#body-mes').show();
$('#messengerClient .header .name').html('<?=$arResult["MANAGER"]["PRINT_NAME"]?>');
SetReadMes(last_mes);
}
else{
$('#messengerClient').addClass('notification');
$('#body-not').show();
$('#messengerClient .header .name').html('Уведомления');
SetReadNotification();
}
$('#messengerClient').addClass('show');
var div = $($('#messengerClient #body-mes')[0]);
div.scrollTop(div.prop('scrollHeight'));
div = $($('#messengerClient #body-not')[0]);
div.scrollTop(div.prop('scrollHeight'));
$($('#messengerClient .new-msg')[0]).focus();
});
$('.messenger .close').click(function(e){
e.preventDefault();
$('#messengerClient').removeClass('show');
});
$('.messenger .change-size').click(function(e){
e.preventDefault();
$('#messengerClient').toggleClass('big-window');
});
$('#msg-input').on('focus',function() {
prevSymb = "";
var x;
var showPlaceholder = true;
if($('#msg-placeholder').hasClass('hide')){
showPlaceholder = false;
}
timerId = setInterval(function() {
if (showPlaceholder && ($('#msg-input').html() != "")) {
showPlaceholder = false;
$('#msg-placeholder').addClass('hide');
}
else if(!showPlaceholder && $('#msg-input').html() == "" ){
showPlaceholder = true;
$('#msg-placeholder').removeClass('hide');
}
if($('#messengerClient').hasClass('big-window')){
x = $('#msg-input').height() - 109;
}
else{
x = $('#msg-input').height() - 49;
}
if(x>0){
$('#msg-input').addClass('scroll');
}
else{
$('#msg-input').removeClass('scroll');
}
}, 20);
});
$('#msg-input').on ('blur',function() {
clearInterval(timerId);
});
var maxText = "";
$('#msg-input').on('keydown',function(e) {
//var text = $('#msg-input').html();
if(e.keyCode === 13 && ($('#msg-input').html()!='')) {
//if(prevSymb != 17){
ConsultantSendMessage();
// }
// else{
// $('#msg-input').append("<div><br></div>");
// setCursorToEnd($('#msg-input')[0]);
// }
}
// else if(text.length > 1000){
// $('#msg-input').html(maxText);
// }
// else{
// maxText = text;
// }
prevSymb = e.keyCode;
});
$('#new-msg-holder .new-msg-send').click(function(){
ConsultantSendMessage();
});
function ConsultantSendMessage(){
if($('#msg-input').html()!=''){
var text = $('#msg-input').html().replace('<div><br></div>','').trim();
$('#msg-input').html('');
var postData = {
'sessid': BX.bitrix_sessid(),
'IM_SEND_MESSAGE': 'Y',
'site_id': BX.message('SITE_ID'),
'MESSAGE': text,
'RECIPIENT_ID': <?=$arResult["MANAGER_ID"]?>
};
BX.ajax({
url: '<?=$folder;?>/ajax.php',
method: 'POST',
data: postData,
dataType: 'json',
onsuccess: function(result){
if(result.ID>0){
//last_mes = result.ID;
setTimeout(function(){
// $('#body-mes').append('<div class="msg my" data-id="'+result.ID+'">'+user_avatar+'<div class="text-cell"><div class="text">'+text+'</div></div></div>');
// HideAvatars();
// var div = $($('#messengerClient .body')[0]);
// div.scrollTop(div.prop('scrollHeight'));
$('#msg-input').html('');
maxText = "";
},20);
}
}
});
}
}
BX.addCustomEvent("onPullEvent", function(module_id,command,params) {
// console.log(module_id);
// console.log(command);
// console.log(params);
if((module_id == 'im') &&(command =="message") && (params.chatId==<?=$arResult["CHAT_ID"]?>)){
var mes = params.message;
//console.log(mes);
//mes = messagesNew[i];
b = false;
$('#body-mes .msg').each(function(ind,el){
if(mes.id == $(el).data('id')){
b = true;
}
});
if(!b){
prev = mes.id +1;
$('#body-mes .msg').each(function(ind,el){
if(!b && (prev < mes.id) && (mes.id < $(el).data('id'))){
if(mes["senderId"] == userId){
$(el).before('<div class="msg my" data-id="'+mes.id+'">'+user_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
}
else{
$(el).before('<div class="msg" data-id="'+mes.id+'">'+man_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
$('#consultantButton-man').addClass('new');
}
var div = $($('#messengerClient .body')[0]);
div.scrollTop(div.prop('scrollHeight'));
b = true;
}
prev = $(el).data('id');
});
if(!b){
if(mes["senderId"]==userId){
$('#body-mes').append('<div class="msg my" data-id="'+mes.id+'">'+user_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
}
else{
$('#body-mes').append('<div class="msg" data-id="'+mes.id+'">'+man_avatar+'<div class="text-cell"><div class="text">'+mes.text+'</div></div></div>');
$('#consultantButton-man').addClass('new');
}
if($('#messengerClient').hasClass('show') && (mes["senderId"]!=userId)){
last_mes = mes.id;
SetReadMes(last_mes);
}
HideAvatars();
var div = $($('#messengerClient #body-mes')[0]);
div.scrollTop(div.prop('scrollHeight'));
}
}
last_mes = mes.id;
}
else if((module_id == 'im') &&(command =="notify")){
$('#body-not').append('<div class="msg" data-id="'+params.id+'"><div class="text-cell"><div class="text">'+params.text+'</div></div></div>');
$('#consultantButton-not').addClass('new');
div = $($('#messengerClient #body-not')[0]);
div.scrollTop(div.prop('scrollHeight'));
notIds.push(params.id);
if($('#messengerClient').hasClass('show')){
SetReadNotification();
}
}
else{
}
});
});
</script> |
.consultantButton{
/* position: fixed;
bottom: 18px;
right: 44px;
text-transform: uppercase;
padding: 5px 15px;
font-size: 18px;*/
position: relative;
}
.consultantButton:after{
content: "";
display: block;
border-radius: 50%;
top: 6px;
left: 36px;
width: 7px;
height: 7px;
position: absolute;
background-color: transparent;
}
.consultantButton.new:after{
background-color: red;
}
.messenger-panel{
position: fixed;
bottom: 34px;
right: 10px;
}
.messenger-panel .manager-avatar-main{
width: 48px;
height: 63px;
padding: 10px 0;
border: 1px solid #b8bdc2;
background: #fff;
border-radius: 3px;
text-align: center;
}
.messenger-panel .manager-avatar-main-img{
width: 40px;
height: 40px;
border-radius: 50%;
background-size: cover;
display: inline-block;
}
.messenger-panel .manager-avatar-main-img.notification{
background-color: #edebeb;
font-size: 30px;
text-align: center;
line-height: 30px;
}
.messenger{
display: none;
position: fixed;
bottom: 34px;
right: 62px;
width: 335px;
background: #f0efef;
z-index: 200;
/* webkit-box-shadow: 2px 0 15px rgba(140,149,156,.1);
box-shadow: 2px 0 15px rgba(140,149,156,.1);*/
border-radius: 9px;
/* overflow: hidden;*/
border: 1px solid #bfc3c7;
}
.messenger.show{
display: block;
}
.messenger .messenger-wrapper{
position: relative;
height: 492px;
}
.messenger .header{
background: #b8bdc2;
background: linear-gradient(35deg, #acb2b7 0%, #acb2b7 48%, #b8bdc2 44%, #b8bdc2 100%);
position: relative;
border-radius: 8px;
z-index: 100;
}
.messenger .header:after{
display: none;
width:50%;
height: 62px;
content: "";
position: absolute;
top:0;
left: 0;
background: transparent;
background: linear-gradient(39deg, #9b9da3 0%, #a0a6ae 77%,#b4b9bf 77.2%, #b4b9bf 100%)
}
.messenger .header .window-options{
float: right;
margin-right: 19px;
margin-top: 19px;
}
.messenger .header .window-options .close,
.messenger .header .window-options .change-size{
cursor: pointer;
width: 17px;
height: 17px;
background: url(images/icons.png?8);
float: right;
margin-left: 5px;
opacity: 1;
}
.messenger .header .window-options .close:hover,
.messenger .header .window-options .change-size:hover{
opacity: 0.7;
}
.messenger .header .window-options .close{
background-position: -364px -7px;
}
.messenger .header .window-options .change-size{
background-position: -363px -28px;
}
.messenger .header .name{
padding: 19px 20px;
font-size: 16px;
}
.messenger .body{
height: 368px;
overflow-y: scroll;
padding: 10px;
position: relative;
margin-top: -10px;
}
.messenger.notification .body{
height: 435px;
}
.messenger .body::-webkit-scrollbar-track {
background: #cccccc;
}
.messenger .body::-webkit-scrollbar-thumb {
background: -webkit-gradient(linear,left top,left bottom,from(#8b6308),to(#c19625));
background: linear-gradient(0deg, #8b6308 0%, #c19625 95%, #c19625 100%);
-webkit-box-shadow: inset 1px 1px 1px rgba(255,255,255,.25), inset -1px -1px 3px rgba(0,0,0,.25);
box-shadow: inset 1px 1px 1px rgba(255,255,255,.25), inset -1px -1px 3px rgba(0,0,0,.25);
border-radius: 7px;
}
.messenger .body::-webkit-scrollbar {
width: 7px;
height: 30px;
}
.messenger .date{
text-align: center;
margin: 15px 0;
}
.messenger .date>span{
padding: 2px 5px;
border-radius: 14px;
background: #e0dede;
font-style: italic;
font-size: 13px;
}
.messenger .msg{
display: table;
width: 100%;
margin: 8px 0;
padding-right: 17px;
font-size: 16px;
line-height: 22px;
}
.messenger:not(.big-window) .msg.my{
padding-right: 0;
padding-left: 84px;
}
.messenger .msg .avatar-cell{
display: table-cell;
vertical-align: bottom;
width: 66px;
padding-left: 3px;
}
.messenger:not(.big-window) .msg.my .avatar-cell{
display: none;
}
.messenger .msg .avatar{
border-radius: 50%;
height: 55px;
width: 55px;
margin-right: 4px;
text-align: center;
background: #e0dede;
line-height: 35px;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.messenger .msg .text-cell{
display: table-cell;
vertical-align: bottom;
}
.messenger .msg .text{
border-radius: 8px;
background: #f7f7f7;
float: left;
padding: 8px 13px 8px;
/*max-width: 220px;*/
word-break: break-word;
/*border: 1px solid #e0dede;*/
}
.messenger .msg.my .text{
background: #ece0d1;
}
.messenger:not(.big-window) .msg.my .text{
float: right;
}
.messenger.notification .new-msg-cell{
display: none;
}
.messenger .new-msg-cell{
border-top: 1px solid #e0dede;
padding: 1px;
position: absolute;
width: calc(100% - 1px);
bottom: 0;
left: 0;
z-index: 100;
background: #f0efef;
}
.messenger .msg-placeholder{
position: absolute;
color: #4d4d4d;
z-index: 1;
top: 8px;
left: 10px;
font-size: 18px;
-ms-user-select: none;
user-select: none;
-o-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
cursor: text;
pointer-events: none;
}
.messenger .msg-placeholder.hide{
display: none;
}
.messenger .new-msg{
padding: 5px;
min-height: 59px;
-moz-appearance: textfield-multiline;
-webkit-appearance: textarea;
}
.messenger .new-msg.scroll{
overflow-y: scroll;
overflow-x: hidden;
max-height: 60px;
padding-right: 0;
}
.messenger .new-msg:focus{
border: none;
outline-color: transparent;
}
.messenger .new-msg.scroll::-webkit-scrollbar-track {
background: #cccccc;
}
.messenger .new-msg.scroll::-webkit-scrollbar-thumb {
background: -webkit-gradient(linear,left top,left bottom,from(#8b6308),to(#c19625));
background: linear-gradient(0deg, #8b6308 0%, #c19625 95%, #c19625 100%);
-webkit-box-shadow: inset 1px 1px 1px rgba(255,255,255,.25), inset -1px -1px 3px rgba(0,0,0,.25);
box-shadow: inset 1px 1px 1px rgba(255,255,255,.25), inset -1px -1px 3px rgba(0,0,0,.25);
border-radius: 7px;
}
.messenger .new-msg.scroll::-webkit-scrollbar {
width: 7px;
height: 30px;
}
.new-msg-send{
display: block;
position: absolute;
bottom: -29px;
text-align: center;
left:0;
width: 100%;
background: #acb2b7;
/* background: linear-gradient(90deg, #8b6308 0%, #b8bdc2 95%, #c19625 100%); */
padding: 3px 5px;
border-radius: 4px;
}
@media(min-width: 601px){
.messenger.big-window{
width: calc(100% - 120px);
right: 60px;
top: 60px;
height: calc(100% - 95px);
/* bottom: 60px;*/
border-radius: 0;
}
.messenger.big-window .messenger-wrapper{
height: 100%;
}
.messenger.big-window .header{
border-radius: 0;
background: #b4b9bf;
background: linear-gradient(151deg, #b4b9bf 0%, #b4b9bf 74%, #d5d7da 74.2%, #d5d7da 100%);
}
.messenger.big-window .header:after{
/*display: inherit;*/
}
.messenger.big-window .header .window-options .change-size{
height: 2px;
margin-top: 18px;
background-position: -363px -33px;
}
.messenger.big-window .body{
height: calc(100% - 180px);
}
.messenger.big-window.notification .body{
height: calc(100% - 52px);
}
.messenger.big-window .date>span{
font-size: 16px;
padding: 7px 11px;
}
.messenger.big-window .msg:not(.first) .avatar{
opacity: 0;
height:0;
}
.messenger.big-window .new-msg{
min-height: 119px;
}
.messenger.big-window .new-msg.scroll{
overflow-y: scroll;
max-height: 120px;
}
.new-msg-send{
display: none;
}
} |