Если кто-нибудь помнит, я давно писал про то, что часто теряю непрочитанные сообщения из-за того, что форум их не подсвечивает как новые. Это проблема уже поднадоела, особенно в больших темах, где найти новое сообщение без подсветки нереально. Недавно вычислил из-за чего это происходит. Во время чтения темы, кто-то может написать новые сообщения, перейдя по ссылке "новое на сайте" или обновив страницу, можно увидеть их подсвеченными. Но если читая такую тему написать в ней сообщение, новые сообщения других пользователей, которые я ещё не видел, уже не будут подсвечены как непрочитанные. Надеюсь на исправление этого глюка =)
Все непрочитанные сообщения отмечены отдельным значком.
Для этого специально существуют ссылки "к следующему новому" и в "Новое на сайте" переводящие сразу к новым непрочитанным сообщениям. Что бы не было необходимости искать их прокруткой.
Этого предложения вообще не понял... Как раз после обновления страницы непрочитанные сообщения вообще то прочитанными считаются.
Захожу в тему с непрочитанными сообщениями, добавляю новый комментарий, все непрочитанные сообщения остаются не прочитанными. Что я делаю не так?
Довайте медленно, по шагам. Я захожу в тему, читаю её. Долго читаю, допустим часа 2! Страницу не обновляю! Естественно за это время в ней могут появится новые сообщения, и чтобы их увидеть нужно обновить страницу или перейти на вкладку "новое на сайте" и они будут подсвечены красными иконками. Что непонятного? Зачем я вам объясняю работу сайта… Так вот если перед тем как обновлять страницу или переходить в "новое на сайте", я добавлю сообщение в тему (или отредактирую старое), то новые сообщения других участников написанные ими во время моего чтения темы (их я ещё не видел, ибо не обновлял страницу), не будут подсвечены красными иконками нигде! Форум посчитает их прочитанными, при том, что я их ещё не видел, т.к. не обновлял страницу! Что тут непонятного? Могу ещё медленней, по буквам…
Теперь понятно. Такое действительно возможно. Происходит это по той причине, что при добавления нового комментария обновляется время последнего доступа к материалу у того пользователя который добавил комментарий. И потому все непрочитанные комментарии считаются уже просмотренными.
Сделано это для того, что бы пользователю не показывались его же комментарии как не прочитанные.
Что с этим делать пока не знаю.
Ну слава богу. А то мне говорят, что я не умею объяснять… =) Для новой темы это может быть пустяком, но вот для старых, больших - это проблема…
Может как-то игнорировать собственные сообщения при подсветке… А вообще не страшно, если будут подсвечены свои…
виси всё время на списке тем, или перед тем как написать комментарий обновляй страницу. других вариантов пока ,насколько я понимаю, нет.
Я так и делаю. Как это поможет?
Если тема большая, то прока от обновления мало, ибо я могу находится внизу, а новые сообщения вверху темы (или наоборот, непринципиально). В итоге всё равно придётся перечитывать всю тему в поиске первого нового сообщения. Дальше конечно уже проще…
Дело не в подсветке. Они будут в "Новое на сайте" показываться. Т.е. ты только что тему откомментировал и у тебя в "Новое на сайте" будет показывать, что в этой тебе новый комментарий (твой).
Система определяет новые комментарии сравнивая последнее время просмотра темы пользователем и время добавления комментариев. Разницы по авторству для нее нет.
И так будет у всех пользователей, если отключить пометку прочитанных. ИМХО никому это не нужно, только путаницы добавит.
Действительно об этом я не подумал…
Стоит добавить такой функционал…
Проблему вполне можно расценивать как баг.
Добавление поста происходит через ajax (хмлхттпреквест), при этом идет отправка данных, скорее всего инсерт в базу. Функционально просмотра темы при этом не происходит, даже если в ответ приходят данные о местоположении поста и прочая лабуда.
Пофиксить можно следующим образом: наверняка обработку ajax запроса выполняет отдельный метод. Нужно запретить этому методу менять время просмотра темы для юзера. В менее приятном случае, этот метод вызывает что-то другое. Тогда нужно передать в эту другую функцию параметр, который будет определять, нужно ли апдейтить время просмотра.
З.Ы. Еще прямо руки чешутся пофиксить жуткую задержку при отображении страниц - видимо, как раз куча тормозных sql запросов высчитывают время просмотра тем...
Назовём это недоработкой конструкции =)
Задержек я не наблюдаю…
Тогда, как я уже говорил, для авторов их же сообщения будут отображаться как новые, в том числе и в "Новое на сайте".
Жуткая задержка это примерно сколько? У меня любая страница ну максимум секунду грузится. Для анонимых, так вообще летает.
Ну так замечательно. Только это другая проблема, и, если она решена таким образом - это неправильно.
Кто мешает делать элементарную проверку, при нахождении новых сообщений для пользователя, исключая его собственные? Если это делается в цикле - добавить в начало его тела одну строку вроде
if (message_author_id == logged_in_user_id) continue;
а если в SQL запросе - исключить, при подсчете, сообщения с author_id залогиненного пользователя из выборки.
До сего дня стабильно была секунду-полторы. Загрузка - это одно, а генерация страницы - другое. Для генерации страницы норма - тысячные секунды, а секунда - имхо, это уже жесть.
Поддерживаю, я об этом намекал выше… =)
Ну не знаю, форум kubuntu.ru хоть и не самый быстрый, но вполне шустрый… Бывают совсем тяжёлые случаи…
Так реализована проверка в ядре друпала, не я её придумывал.
Против вас абсолютно ничего не имел) Просто рассуждал.
Да ладно вам наезжать-то. Все нормально работает, дотошные вы наши =). У некоторых наверное слишком много свободного времени :Р.
А вы не считайте чужое время =) Лично я наезжать никак не могу, ибо у меня нет ни прав, ни мотоцикла, ни велосипеда… =)
Да какие наезды... Просто советы, с которыми есть полное право меня послать далеко и надолго =)
Вот и первое потерянное сообщение в теме =)
Костыльно решил следующим образом: перед отправкой нового комментария проверяется, не появились ли в теме новые комментарии и если появились, время доступа к материалу обновляться не будет. Минус в том, что авторский комментарий так же будет отмечен новым, зато другие не прочитанные так же будут помечены как надо.
У меня последние два сообщения, при отправке вываливали ошибки, при этом отправлялись, но форма ответа не закрывалась. Это как-то связано?
Да. Больше так не будет.
Вы выше писали:
Но такого не наблюдаю. Вы как-то обошли это? =)
Они будут показываться, если произошел случай описанной в вашей ситуации. В других случаях, все будет так же как и было раньше.
Понял =)
Отправить комментарий