Gerda
Более-менее освободился и могу глянуть цитатки, нужен админский акк на тестовике, чтобы сразу править если что хотя может уже и не нужен
Добавлено спустя 31 минуту 47 секунд:
А так посмотрел навскидку, все проблемы с цитатой из-за твоих модификаций в скрипте аватарок )
А именно из-за переноса аватарки в blockquote, это не является ожидаемым для скрипта BB-цитаты...
С моим оригинальным всё работает должным образом
Добавлено спустя 55 минут 4 секунды:
Вроде бы пофиксил цитирование в custom_quotes, добавил конкретно для твоей версии правки в распознавании )
Нужно только у ссылки на custom_quotes.js сменить цифру в ?v=, чтобы сбросить кеш. А так теперь цитируется правильно.
Добавлено спустя 1 час 8 минут 16 секунд:
Код аватарки в цитате пробуй менять на такой:
Код:/****************************************************************
* Ccылка на авторский пост и аватарка в цитате © Alex_63
* + HTML вместо аватара по умолчанию
* + Вставка аватарки через фон
* + Аватар внутри blockquote
* Фикс и модификация © ForumD.ru | Gerda
* 11.02.2024, Alex_63 31.03.2024
*
* Техподдержка: https://forumd.ru/viewtopic.php?id=5914
*
****************************************************************/
//==== function setLinkAndAva() ====//
function setLinkAndAva(sel){
var arr = [];
var Ltest=false;
if(!sel){sel = '.post';}
if($('#pun-post,#pun-edit').length && typeof(PPREV)=='undefined')sel = '#post-preview,.post';
if($('#pun-delete').length)sel = '.container .fs-box';
$(sel).find('.quote-box').each(function (){
var L=$(this).find('>cite').text();
if(L=='HTML+ написал(а):'||L=='HTML написал(а):')return;
if(L.search(/^Скрытый\sтекст\:/)!=-1)return;
if(L){L=L.split(' написал')[0];}
if(L.search(/^(\d+)\,(\d+)$/g)==-1){return;}
var St = L.replace(/^(\d+)\,(\d+)$/g,'$1');
var End= L.replace(/^(\d+)\,(\d+)$/g,'$2');
$(this).attr('id','u'+End);
$(this).find('>cite').attr('id','p'+St);
arr.push(End);
});
arr = arr.join(',');//alert('UserID > ' +arr);
if(arr.length < 1){ Ltest = true;}
$(sel).find('.quote-box:not([id])').each(function(){
if ($(this).hasClass('hide-box')) {return;}
if (!$(this).find('>cite').length) {return;}
if ($(this).find('>cite').text() == 'HTML+ написал(а):' || $(this).find('>cite').text() == 'HTML написал(а):') {return;}
if ($(this).find('>cite').text().search(/^Скрытый\sтекст\:/) != -1) {return;}
var cT = $(this).find('>cite').text();
if (cT.match(/^https?\:\/\//)) {
var autq = cT.replace(/^(.*?)\,https?\:\/\/(.*?)\sнаписал.*$/mgi, '$1');
var Lnkq = cT.replace(/^(.*?)\,https?\:\/\/(.*?)\sнаписал.*$/mgi, 'https://$2');
if (Lnkq.indexOf('|') != -1) {Lnkq = Lnkq.replace(/\|(.*?)$/mgi, '');}
var avaq = cT.replace(/^(.*?)\,https?\:\/\/(.*?)\|(.*?)\sнаписал.*$/mgi, '$3');
if (avaq == cT) {avaq = '';}
if (avaq) {avaq = '/img/avatars/' + avaq;}
var a = (!avaq) ? '<span class="author-avatar">' + FdQuoteAva + '</span>' :
'<span class="author-avatar" style="background-image: url(' + avaq + ');"></span>';
var S = '<span class="qcn"><span class="qc-uname">' + autq + '</span> <span class="qc-post-link">';
var E = 'пишет</a>:</span>';
$(this).children('cite').html(S + '<a class="qc-post-link" href="' + Lnkq + '" title="Перейти к сообщению ' + autq + '">' + E);
$(this).children('blockquote').prepend('<a class="qc-post-link" href="' + Lnkq + '" title="Перейти к сообщению ' + autq + '">' + a + '</a>');
$(this).addClass('with-avatar');
} else if (cT.indexOf('#p') != -1) {
var autq = cT.replace(/^#p(\d+)\,(.*?)\sнаписал.*$/mgi, '$2');
if (autq.indexOf('|') != -1) {autq = autq.replace(/\|(.*?)$/mgi, '');}
var Lnkq = cT.replace(/^#p(\d+)\,(.*?)\sнаписал.*$/mgi, '#p$1');
if (!$(Lnkq + '.post').length) { Lnkq = '/viewtopic.php?pid=' + Lnkq.split('#p')[1] + Lnkq;}
var avaq = cT.replace(/^#p(\d+)\,(.*?)\|(.*?)\sнаписал.*$/mgi, '$3');
if (avaq == cT) {avaq = '';}
if (avaq) {avaq = '/img/avatars/' + avaq;}
var a = (!avaq) ? '<span class="author-avatar">' + FdQuoteAva + '</span>' :
'<span class="author-avatar" style="background-image: url(' + avaq + ');"></span>';
var S = '<span class="qcn"><span class="qc-uname">' + autq + '</span> <span class="qc-post-link">';
var E = 'пишет</a>:</span>';
$(this).children('cite').html(S + '<a class="qc-post-link" href="' + Lnkq + '" title="Перейти к сообщению ' + autq + '">' + E);
$(this).children('blockquote').prepend('<a class="qc-post-link" href="' + Lnkq + '" title="Перейти к сообщению ' + autq + '">' + a + '</a>');
$(this).addClass('with-avatar');
} else {
var autq = cT.replace(/^(.*?)\sнаписал.*$/mgi, '$1');
if (autq.match(/,undefined$/)) autq = 'Гость';
var a = '<span class="author-avatar guest-ava">' + FdQuoteAva + '</span>';
var S = '<span class="qcn"><span class="qc-uname">' + autq + '</span> пишет:';
$(this).children('cite').html(S);
$(this).children('blockquote').prepend(a);
$(this).addClass('with-avatar');
if ($('#pun-messages').length) {
$(this).removeClass('with-avatar');
$(this).find('.author-avatar').remove();
}
}
});
if (Ltest) {$('style#Hide_qCite').remove(); return;}
function parseQuote(user_id, ava, username) {
var a;
if (!ava) {
a = '<span class="author-avatar">' + FdQuoteAva + '</span>';
} else {
a = '<span class="author-avatar" style="background-image: url(' + ava + ');"></span>';
}
var S = '<span class="qcn"><span class="qc-uname">' + username + '</span> <span class="qc-post-link">';
var E = 'пишет</a>:</span>';
$(sel).find('.quote-box[id="u' + user_id + '"]').each(function () {
var C = $(this).find('>cite');
var Z = $(this).find('>blockquote');
var id = C.attr('id');
if (id) {id = id.split('p')[1];}
var href = '/viewtopic.php?pid=' + id + '#p' + id;
if ($('#p' + id + '.post').length) {href = '#p' + id;}
C.html(S + '<a class="qc-post-link" href="' + href + '" title="Перейти к сообщению ' + username + '">' + E);
Z.prepend('<a class="qc-post-link" href="' + href + '" title="Перейти к сообщению ' + username + '">' + a + '</a>');
C.parent().addClass('with-avatar');
});
}
function getAPIdata(dataObj) {
$.get('/api.php', dataObj, function(data){
$('style#Hide_qCite').remove();
var obj = data.response.users;
var ObjData = {};
for (var i in obj) {
var v = obj[i];
var ava = v.avatar;
parseQuote(v.user_id, ava, v.username);
ObjData[''+v.user_id] = v.username+'|-|'+ava;
}
sessionStorage.setItem('UserAVA', JSON.stringify(ObjData));
}, 'json');
}
var dataObj = {method: 'users.get', user_id: ''+arr, fields: 'user_id,username,avatar'};
if (sel == '#post-preview' && sessionStorage.getItem('UserAVA')) {
var obj_ = JSON.parse(sessionStorage.getItem('UserAVA'));
for (var j in obj_) {
var uID = j;
var SS = obj_[j].split('|-|');
var uNick = SS[0];
var ava = SS[1];
parseQuote(uID,ava,uNick);
if ($(sel).find('.quote-box:not(.with-avatar)').length)
getAPIdata(dataObj);
else
return !$('style#Hide_qCite').remove();
}
}
getAPIdata(dataObj);
}
//==== End/ - setLinkAndAva() ====//
if ($('#pun-viewtopic').length) {
document.write('<style id="Hide_qCite">.quote-box > cite{display:none!important;}</style>');
//==== Обработка кнопки "Цитировать" ====//
$(document).ready(function() {
$('.post[id]').each(function(){
var id = $(this).attr('id').substr(1);// tst = false;
var user = $(this).attr('data-user-id');
var qLnk = $(this).find('.pl-quote > a').attr('href'); //if(tst)id = '#p'+ id;
if (+user == 1) {
id = '#p' + id;
user = qLnk.match(/'(.+?)',/)[1];
}
qLnk = qLnk.replace(/quote\(\'(.*?)\',\s(\d+)\)/mgi,'quote(\''+id+','+user+'\', $2)');
$(this).find('.pl-quote > a').attr('href',qLnk);
});
});
//=End/ Обработка кнопки "Цитировать"====//
}
Гости смогут цитировать юзеров в новом формате, а для гостевых постов останется старый формат - #pID,ник т.к. для гостя ник из API никак не получить, это единственный способ сохранить оригинальный ник в цитате.
- Подпись автора
Мгновенные уведомления на форум, упоминания: @Гость | WYSI — Визуальный редактор сообщений
Комментарии к оценкам за сообщенияnew