Прочитанные сообщения

2940
Приветствую всех! В продолжении темы. Входящие сообщения являются прочитанными тогда, когда открывешь папку с сообщениями. Немного неудобно получается... Пришло, например, 5 сообщений от разных людей, октрыл раздел "входящие" и все они разом стали прочитанными, пока отвечаешь одному, отвлекся на что-нибудь и про остальных забыл). Думаю было бы удобней чтобы непрочитанные месседжи так и оставались таковыми, т.е. в пользовательском меню в скобках отображалось количество таких писем.
Я решил эту задачу таким образом.
Открываем /components/users/messages.php и находим строку примерно 127
Код PHP:
$record['fpubdate'] = $inCore->dateFormat($record['fpubdate'], true, true, true);
                        if ($record['is_new']){
                            if ($opt=='in'){
                                //erase new mark
                                $inDB->query("UPDATE cms_user_msg SET is_new = 0 WHERE id = ".$record['id']);
                            }
                        }
меняем значение нового сообщения с 0 на 1, т.е. должно получиться SET is_new = 1

Далее можно сделать входящее сообщение кликабельным + ограничить количество символов в папке "входящие", как в других соц.сетях.
открываем ваш шаблон/components/com_users_messages.tpl и находим примерно 75 строка
Код PHP:
<td width="" valign="top"><div style="padding:6px">{$record.message}</div></td>
и меняем ее на
Код PHP:
{if $opt=='in'}				
							<td width="" valign="top"><div style="padding:6px"><a style="text-decoration:none;" href="/users/{$record.from_id}/reply{$record.id}.html">{$record.message|truncate:200}</div></td>
						{else}
						<td width="" valign="top"><div style="padding:6px">{$record.message}</div></td>
							{/if}
Теперь, когда приходят новые сообщения, пользователь может прочитать одно из них...побродить по сайту и вернуться к другим, т.к. в пользовательском меню будет висеть количество непрочитанных сообщений. Т.к. сообщение стало кликабельным, можно убрать кнопку "ответить", потому что при нажатии на письмо оно откроется и тут же можно будет писать ответ.
Пробуем!
Компонент "Биржа труда v.1.0" | Заменяем название компонента, url и т.д. на примере FAQ
Комментарии (13)
reload 18 декабря 2011 в 01:26 +4
Теперь бы добавить кнопочку отметить все как прочитанное)
Не всегда ведь хочется читать все и от всех) а кликать по всем сами понимаете не очень приятное задание)
Один из примеров это если пользователь подписался на какую либо тему и его не было на сайте месяц))
͡﴾͡๏̯͡๏﴿ 18 декабря 2011 в 01:34 0
Поддерживаю!pivua +
Автору поста(PrazdNik) БОЛЬШОЙ +
Hmelex 18 декабря 2011 в 18:11 0
Может данную проблему и её решение выложить в Багтрекере (для рассмотрения Фузе).
Идея постановки вопроса и её решение - в принципе нормальное +1
Tirpits 21 декабря 2011 в 01:42 0
спасибо! очень полезно, все работает на 1.9
Anubis 22 декабря 2011 в 15:35 +1
Отличное решение! Однако, не учтено что если сообщение стало "кликабельным", то ссылка на первоначальное приветствие от "Службы Рассылки" и других уведомлений от "Служба обновлений" будет вести на ошибку, ведь юзера с id=-1 и id=-2 нет
PrazdNik 22 декабря 2011 в 16:50 0
и правда, не учтено...
PrazdNik 22 декабря 2011 в 16:53 0
давайте придумаем как сделать кнопку "отметить все как прочитанное".
PrazdNik 23 декабря 2011 в 20:09 0
al955 23 февраля 2016 в 19:28 0
Помогите, никак не соображу, каким образом реализовать в 1.10.6, чтобы в пункте юзерского меню "Сообщения", при поступлении нового сообщения в личку? пункт меню подсвечивался другим цветом и в скобочках появлялось количество новых сообщений, так как это работает здесь на головном сайте ICMS
Ris 23 февраля 2016 в 19:35 0
В админке. Дополнения - Плагины - Анимация при новом сообщении. Включить.
al955 23 февраля 2016 в 19:43 0
не работает. Может, проблема в новом шаблоне
Ris 23 февраля 2016 в 19:52 0
Так переключите временно на дефолт - проверьте. Обратно недолго переключить.
al955 11 июня 2016 в 17:13 0
На дефолте работает. Какая предположительно может быть причина неработоспособности на новом шаблоне?