|
Отправлено: 30 ноября 2013 — 08:38
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Alexandr
Цитата:нажимает но ничего не происходит; на др. стр. этой же темы благодарность добавляется. Что это может быть? Очень странно. В теории такого быть не должно даже в принципе. Единственное, что могу предположить - сбоит разбиение на страницы. Попробую у себя повторить...
Цитата:счётчик пользователей сказавших спасибо не меняется, несмотря на то, что реальное число стало ниже.. При случае поправлю. |
|
|
|
Отправлено: 30 ноября 2013 — 09:54
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Внес правки в код мода. Убрал атавизмы отладки и решил проблему с подсчетом "мертвых душ". Изменения касаются только topic.php. Долго думал как описать и решил выложить в виде нового варианта установки. Замените один вариант кода другим...
Спойлер (Отобразить)topic.php
Ищем строку
CODE:if ($fm->exbb['karma'] === TRUE) { $fm->_LoadModuleLang('karma');}
перед которой вставляем
CODE:// ********* мод сказать "спасибо" *********
$_icon['$thank_i'] = ($fm->exbb['text_menu'] === TRUE) ? $fm->LANG['IconThank'] : '<img src="./templates/'.DEF_SKIN.'/im/'.DEF_LANG.'/thanks.gif" border="0" title="'.$fm->LANG['DescThank'].'" alt="'.$fm->LANG['IconThank'].'">';
if ($fm->input['action'] == 'thanks' && $fm->user['id'] != 0)
{
$key = $fm->input['post'];
$member_id = (isset($threads[$key]['p_id'])) ? $threads[$key]['p_id'] : 0;
if ($fm->user['id'] != $member_id)
{
$threads = $fm->_Read2Write($fp_threads, 'forum'.$forum_id.'/'.$topic_id.'-thd.php');
if (!isset($threads[$key]['thanks'])) {$threads[$key]['thanks'] = $fm->user['id'];}
if (strpos($threads[$key]['thanks'],strval($fm->user['id'])) === false) {$threads[$key]['thanks'] .= ','.$fm->user['id'];}
$fm->_Write($fp_threads, $threads);
}
header ('Location: topic.php?forum='.$forum_id.'&topic='.$topic_id.'&postid='.$key.'#'.$key);
}
// *******************************************
затем ниже ищем строку
CODE:$info = $fm->LANG['PostDate'].' <b>'.$postdate.'</b> '.$postIP;
после которой вставляем
CODE:// ********* мод сказать "спасибо" *********
$say_thank_b = ($access === TRUE && $topic['state'] != 'closed' && $fm->user['id'] != 0 && $fm->user['id'] != $member_id)
? '<a href="topic.php?action=thanks&forum='.$forum_id.'&topic='.$topic_id.'&post='.$key.'" title='.$fm->LANG['DescThank'].'>'.$_icon['$thank_i'].'</a>'.$_icon['divider']
: '';
$say_thank_d = '';
if (isset($threads[$key]['thanks']))
{
$th_list = '';
$th_id = explode(",", $threads[$key]['thanks']);
$th_count = 0;
foreach ($th_id as $usid)
{
if ($member=$fm->_Getmember($usid))
{
$th_count++;
if (in_array($usid,$fm->_Moderators)) {$member['status'] = 'mo';}
switch ($member['status'])
{
case 'ad': $class = ' class="admin"'; break;
case 'sm': $class = ' class="supmoder"'; break;
case 'mo': $class = ' class="moder"'; break;
default: $class = '';
}
$th_list .= '<a href="profile.php?action=show&member='.$usid.'"'.$class.'>'.$member['name'].'</a> ';
}
}
if ($th_count > 5)
{
$say_thank_d = '<span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span>
<span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span>
<div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;
}
else {$say_thank_d = '<span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;}
}
// ***************************************** (Отредактировано автором: 30 ноября 2013 — 09:56) |
|
|
Иван Петров |
Отправлено: 30 ноября 2013 — 19:45
|
Full Member
Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2012
Репутация: 3
|
Alexandr пишет:Кто-то стал вам неугоден, через админку учетку похерили, т.е. юзера не стало, под списком поблагодаривших запись также убирается, а вот счётчик пользователей сказавших спасибо не меняется, несмотря на то, что реальное число стало ниже.. (а также, появился другой пользователь который сказал спасибо, счётчик считает его значение и добавляет плюс 1 к указанной сумме, получается что суммарное число также не правильное)
Я очень редко кого-то удаляю, считаю, что бана достаточно.
Ну почему же не правильно считает.., очень даже правильно, ведь удаленному пользователю тоже понравилось, а значит счетчик говорит правду
NordWest, установил ваши последние изменения в моде, но пришлось все заново восстанавливать, т.к. теперь стало отображаться вот так: (пример)
Спойлер (Отобразить)конец сообщения постаЗа этот пост сказали спасибо:
Т.е. без всякого отступа и пробела стал отображаться список поблагодаривших |
|
|
Alexandr |
Отправлено: 30 ноября 2013 — 19:49
|
Junior Member
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Откуда: Russia
Репутация: 1
|
Счетчик "мертвых душ" теперь обрабатывается корректно. Только по-моему, где-то не хватает тега <br> (скрин).
По поводу пользователя, да, очень странно, в каком-то конкретном сообщении кнопку нажимает но ничего не добавляется, хотя может перейти на др. страничку - там всё ок, нажимает и запись внизу появляется.
Вы уж простите) заметил ещё - допустим тема состоит из четырёх страниц, нужно перейти на вторую, третью, не важно - и в самом первом сообщении страницы нажать кнопку "спасибо", запись об этом добавится, но при этом перекинет на страничку номером ниже, например: были на третьей, поблагодарили за первый пост, переместились на вторую и т.д., общий алгоритм такой.
p.s. для демонстрации обоих примеров могу дать доступ на площадку где это всё уже установлено, а так же логин/пароль проблемного пользователя, чтобы можно было увидеть вживую.
Ещё раз спасибо! Прикреплено изображение
|
|
|
Alexandr |
Отправлено: 17 декабря 2013 — 20:29
|
Junior Member
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Откуда: Russia
Репутация: 1
|
NordWest пишет:Всё посмотрю завтра - сегодня уже башка не варит...
NordWest, поправьте пожалуйста перенос строки в Вашем последнем посте (от 30 ноября 2013) с инструкцией по установке. Мне этот вариант нравится больше, чем в начале темы.
Проверил также, что на чистой сборке многих проблем перечисленных мной нет, видимо на моём форуме вполне вероятно есть что-то "нехорошее" в текстовой базе (может появилось в результате нескольких обновлений движка за последние годы или переезда с одного места в другое)(Отредактировано автором: 17 декабря 2013 — 20:32) |
|
|
|
Отправлено: 17 декабря 2013 — 20:40
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Если у вас не хватает переноса попробуйте этот код
CODE:if ($th_count > 5)
{
$say_thank_d = '<span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span>
<span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span>
<div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;
}
else {$say_thank_d = '<span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;}
заменить кодом
CODE:if ($th_count > 5)
{
$say_thank_d = '<br /><span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span>
<span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span>
<div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;
}
else {$say_thank_d = '<br /><span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;} |
|
|
Alexandr |
Отправлено: 18 декабря 2013 — 20:42
|
Junior Member
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Откуда: Russia
Репутация: 1
|
Лучше всего во всех вариантах отображение получилось при двойном <br />. Спасибо!
CODE:if ($th_count > 5)
{
$say_thank_d = '<br /><br /><span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span>
<span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span>
<div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;
}
else {$say_thank_d = '<br /><br /><span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;}
Немного выше писал ещё о таком баге:
Цитата:допустим тема состоит из четырёх страниц, нужно перейти на вторую, третью, не важно - и в самом первом сообщении страницы нажать кнопку "спасибо", запись об этом добавится, но при этом перекинет на страничку номером ниже, например: были на третьей, поблагодарили за первый пост, переместились на вторую и т.д.
При поиске по форуму наткнулся на такую темку: http://exbb.info/community/topic.php?forum=6&topic=258
(она довольно старая и осталась без ответа тогда), походу ноги растут оттуда, т.к. у меня имеется такая же проблема (на 99% уверен, что и с модом "спасибо" перекидывает на страничку ниже, если поблагодарить автора первого поста, из-за неё). Если есть решение - подскажите пожалуйста.(Отредактировано автором: 18 декабря 2013 — 20:45) |
|
|
|