Блог
Изменений а шаблонах много из-за системы ЛС. Переписка пользоваетелей организована в виде динамического чата, поэтому нужно добавить много JS и стилей.
Отчёт по изменениям здесь
Описание изменений
1. Добавляем функционал ЛС
1.1 Добавляем стили и js код для функционирования чата
.btn.pm-delete {
margin-bottom: 1px;
}
.pm-deletemsg{
text-decoration: none;
border-bottom: 1px dashed silver;
}
.pm-deletemsg:hover{
text-decoration: none;
border-bottom: 1px dashed white;
cursor: pointer;
}
.pm-msgform {
text-align: right;
margin: 10px;
}
.pm-msgform textarea{
width: 400px !important;
}
.pm-row {
margin-bottom: -10px;
}
.pm-info {
font-size: 10px;
color: #8a8a8a;
margin-bottom: -7px;
margin-left: 10px;
visibility: hidden;
}
.chat-title{
width:300px;
}
.chat-table, .chat-table tr, .chat-table td, .chat-table th {
border: none !important;
}
.chat-table{
max-height: 500px;
}
.pm-date{
font-size: 12px;
color: #9a9a9a;
}
.pm {
margin: 10px 5px 5px 10px;
border: 2px solid #16A085;
padding: 10px;
font-family: arial;
position: relative;
border-radius: 4px;
font-style: italic;
}
.pm-1 .pm {
background-color: #d7ffd7;
color: #125112;
width: calc(100% - 51px);
margin-left: 30px;
}
.pm-2 .pm{
background-color: white;
width: calc(100% - 50px);
}
.pm-1 .pm-info{
text-align: right;
margin-right: 25px;
}
.pm-2 .pm-info{
text-align: left;
}
.pm-1 .pm::before {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid #16A085;
border-right: 10px solid transparent;
border-top: 10px solid #16A085;
border-bottom: 10px solid transparent;
right: -21px;
top: 6px;
}
.pm-1 .pm::after {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid #d7ffd7;
border-right: 10px solid transparent;
border-top: 10px solid #d7ffd7;
border-bottom: 10px solid transparent;
right: -16px;
top: 8px;
}
.pm-2 .pm::before {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid transparent;
border-right: 10px solid #16A085;
border-top: 10px solid #16A085;
border-bottom: 10px solid transparent;
left: -21px;
top: 6px;
}
.pm-2 .pm::after {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid transparent;
border-right: 10px solid #fff;
border-top: 10px solid #fff;
border-bottom: 10px solid transparent;
left: -16px;
top: 8px;
}
.pm-table div.pm-row {
cursor: pointer;
margin-top: -15px;
margin-left: 3px;
margin-right: -7px;
}
.pm-table div.pm-row{
cursor:pointer;
}
.pm-3 .pm{
border-color: #135C4D;
}
.pm-3.pm-1 .pm::before{
border-left-color: #135C4D;
border-top-color: #135C4D;
}
.pm-3.pm-2 .pm::before{
border-right-color: #135C4D;
border-top-color: #135C4D;
}
function chat_insert(row, before=false){
var html = '';
html += ''+TPL_L_SENT+': '+row.date_sent+', ';
html += ''+((row.received_tm == 0) ? TPL_L_UNREAD : TPL_L_READ + ' '+ row.date_received)+'';
if(row.type != 'pm') html += ', '+TPL_L_SOURCE+' — '+row.source;
html += ', '+TPL_L_DELETE+'';
html += '';
html += ''+row.text+'';
html += ' ';
if(before){
$('#pm-chat tbody').prepend(html);
}else{
$('#pm-chat tbody').append(html);
}
$('.pm-row').mouseover(function() {
$(this).children('.pm-info').css('visibility', 'visible');
});
$('.pm-row').mouseout(function() {
$(this).children('.pm-info').css('visibility', 'hidden');
});
}
if(window.chat_data !== undefined){
for(var i = 0, len = chat_data.length; i < len; i++) {
chat_insert(chat_data[i]);
}
pm_scroll();
setTimeout(function() {pm_chat_update();}, 2000);
}
function pm_chat_update(){
pm_get_new();
setTimeout(function() {
pm_chat_update();
}, 5000);
}
$('#pm-msgbtn').click(function(event) {
var el = $('#pm-msgbox');
var txt = el.val();
if($.trim(txt) != ""){
var recipient = el.attr('data-recipient');
$.post( TPL_PATH+'users/pm/post/', { msg: txt, recipient:recipient}).done(function( data ) {
data = data.split('|split|');
if(data[1]){
el.val('');
pm_get_new();
}
});
}
event.preventDefault();
});
$("#pm-msgbox").keypress(function(e){
if(e.which == 13 && e.ctrlKey == true){
$('#pm-msgbtn').trigger('click');
}
});
function pm_get_new(){
var id = 0;
$('#pm-chat tbody tr').each(function(){
id = $(this).attr('data-time');
});
$.get(TPL_PATH+'users/pm/get/from/'+$('#pm-chat').attr('data-user')+'/'+id).done(function( data ) {
data = data.split('|split|');
if(data[1]){
var chat_data = jQuery.parseJSON(data[1]);
var pm_allow_scroll = false;
for(var i = 0, len = chat_data.chat.length; i < len; i++) {
chat_insert(chat_data.chat[i]);
pm_allow_scroll = true;
}
for(var i = 0, len = chat_data.readed.length; i < len; i++) {
$('#pm_row_'+chat_data.readed[i].id+' span.pm-date-read').html(TPL_L_READ+': '+chat_data.readed[i].date_received);
}
if(pm_allow_scroll) pm_scroll();
}
});
}
function pm_scroll(){
var height = $('#panel_ads').height()+200;
$('#pm-chat').scrollTop(height);
}
$('#pm-chat').scroll(function(el){
if($('#pm-chat').scrollTop() == 0){
var old_height = $('#panel_ads').height();
$("#pm_loader").show();
var id = $('#pm-chat tbody tr').first().attr('data-time');
$.get( TPL_PATH+'users/pm/get/to/'+$('#pm-chat').attr('data-user')+'/'+id).done(function( data ) {
data = data.split('|split|')
if(data[1]){
var chat_data = jQuery.parseJSON(data[1]);
for(var i = 0, len = chat_data.length; i < len; i++) {
chat_insert(chat_data[i], true);
}
var new_height = $('#panel_ads').height();
$('#pm-chat').scrollTop(new_height - old_height);
$("#pm_loader").hide();
}
});
}
});
if($('#pm_counter').length > 0){
update_pm_counter();
}
function update_pm_counter(){
$.get({url: TPL_PATH+'ajax_data/pm/', cache: false} ).done(function( data ) {
if(data.cnt > 0){
$('#pm_counter').html(data.cnt);
$('#pm_counter').show();
}
});
setTimeout(function() {
update_pm_counter();
}, 10000);
}
$('.pm-table div.pm-row').mouseout(function(e){
$(this).removeClass('pm-3');
});
$('.pm-table div.pm-row').mouseover(function(e){
$(this).addClass('pm-3');
});
$('.pm-table div.pm-row').click(function(e){
document.location.href=$(this).attr('data-url');
});
$('.pm-delete').click(function(e){
var el = $(this);
if(confirm(TPL_L_03)){
$.get(el.attr('href')).done(function( data ) {
el.parents('tr').hide(500);
});
}
e.preventDefault();
});
$('#pm-chat').on('click', '.pm-deletemsg', function () {
var tr = $(this).parents('tr');
var id = tr.attr('id').substr(7);
if(confirm(TPL_L_03)){
$.get( TPL_PATH+'users/pm/delete/msg/'+id).done(function( data ) {
tr.hide(500);
});
}
return false;
});
1.2. Убираем поля ввода email и имени для зарегистрированных пользователей в форме обратной связи popup_sendmail.html, добавляем условие {%if !$settings.user%}
{%if !$settings.user%}
{%/if%}
1.3. В block_user.html добавляем новый пункт в меню "Личные сообщения"
1.4. В body1.html можно добавить новый тайтл "Личные сообщения"
{%elseif $c == 'pm'%}{%$locale.1345%}
2. Исправляем кнопку "Добавить в блокнот" для промо-объявлений
меняем
Save
на это
3. В header.html добавляем og теги
{%if $smarty.get.cat.0 == 'messages' && $message.fields.i.0%}
{%else%}
{%/if%}
4. В users_subscribe.html показываем регион подписки
{%foreach from=$s.region item='linenav' name='i'%}
{%$linenav.name%}
{%if $smarty.foreach.i.last eq false %} / {%/if%}
{%/foreach%}
А также добавляем поле выбора региона для подписки
{%$allregions[$second_region.id].name%} {%$locale.837%}

Комментировать
Комментарии
MySQL error #1056. Пожалуйста, сообщите об ошибке на email администратора
В block_user.html добавляем новый пункт в меню "Личные сообщения"
Не как не встает код.. куда только не пихал.. везде все ок сделал!
Как быть ? шаблон vizzel ! Все ранее расписанные этапы сделал правильно.