Блог
Изменений а шаблонах много из-за системы ЛС. Переписка пользоваетелей организована в виде динамического чата, поэтому нужно добавить много 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 = ''; 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; }); '; 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 += '
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 ! Все ранее расписанные этапы сделал правильно.