- Совместимость с XenForo
- 2.3.x
- Видимый копирайт
- Нет
- Русификатор
- Нет
- Доп. требования
- XenForo 2.3.13+. Протестировано на версии 2.3.13.
XQ Timestamp Fix — это простое решение давней проблемы XenForo, из-за которой при несовпадении часового пояса браузера посетителя с часовым поясом, используемым XenForo для отображения дат, может отображаться неправильное название дня недели.
О проблеме сообщалось в январе 2021 года и снова в ноябре 2022 года. Проблема по-прежнему воспроизводится в XenForo 2.3.13, спустя более пяти лет после первоначального сообщения.
Изначально XenForo формирует правильную дату и время с помощью PHP. Затем с помощью JavaScript-кода можно вычислить название дня недели, используя часовой пояс браузера, при этом сохранив формат времени, соответствующий часовому поясу гостя или участника.
В результате из двух разных локальных дат получается одна неверная временная метка.
Например, один и тот же пост может выглядеть так:
Таким образом, даже разница в часовых поясах в один час может привести к ошибке в отображении названия дня недели. В этом примере из-за неверной метки гостя может показаться, что публикация была сделана на 24 часа позже, чем на самом деле, если судить по тихоокеанскому времени.
При максимальном смещении часовых поясов по разные стороны от международной линии перемены дат календарные даты могут отличаться на два дня, что приводит к расхождению в 48 часов в отображении даты и времени.
Сохраненная временная метка не изменяется. Полная дата, отображаемая во всплывающей подсказке, остается верной. Это ошибка отображения, но из-за нее может быть сложно понять время и порядок разговоров.
Кто может столкнуться с этой проблемой?
Что делает это дополнение
XQ Timestamp Fix сохраняет правильные временные метки с названиями дней недели, созданные PHP-модулем XenForo, и не позволяет JavaScript перезаписывать их.
Оно нацелено на диапазон названий дней недели в XenForo, обычно это публикации, опубликованные от двух до шести календарных дней назад. Поддерживаются все семь названий дней недели, включая субботу и воскресенье.
Это целенаправленный обходной путь на PHP. Защищенные метки с названиями дней недели остаются неизменными до тех пор, пока страница не будет перерисована.
Это не решает проблему с обновлением в реальном времени, возникающую в XenForo, когда вкладка остается открытой после полуночи. Если при загрузке страницы временная метка выходит за пределы защищенного диапазона, проблема может возникнуть позже. При обновлении страницы и получении нового ответа от сервера метки пересчитываются корректно.
При возврате на предыдущую страницу и переходе на следующую, а также при использовании кэшированных страниц могут сохраняться старые метки. Пользовательские отображения даты, которые не используют стандартный рендерер XenForo, не входят в сферу применения этого дополнения.
Установка
Настройки не требуются. Используйте стандартные элементы управления надстройками XenForo, чтобы отключить или удалить ее.
Совместимость
Требуется XenForo 2.3.13 или более поздняя версия. Версия 1.0.0 была протестирована на XenForo 2.3.13, включая обширную симуляцию часовых поясов, переход на летнее время, переведенные метки, а также оригинальное и минифицированное обновление даты в JavaScript.
Проверьте совместимость после обновления XenForo. Если XenForo устранит основную проблему, этот обходной путь можно будет отключить или удалить.
О проблеме сообщалось в январе 2021 года и снова в ноябре 2022 года. Проблема по-прежнему воспроизводится в XenForo 2.3.13, спустя более пяти лет после первоначального сообщения.
Изначально XenForo формирует правильную дату и время с помощью PHP. Затем с помощью JavaScript-кода можно вычислить название дня недели, используя часовой пояс браузера, при этом сохранив формат времени, соответствующий часовому поясу гостя или участника.
В результате из двух разных локальных дат получается одна неверная временная метка.
Например, один и тот же пост может выглядеть так:
- Участник, вошедший в систему, использует горное время: Вчера в 00:14.
- Гость, использующий настройку тихоокеанского времени на форуме: Понедельник в 23:14.
- Правильная временная метка для гостя: Воскресенье в 23:14.
Таким образом, даже разница в часовых поясах в один час может привести к ошибке в отображении названия дня недели. В этом примере из-за неверной метки гостя может показаться, что публикация была сделана на 24 часа позже, чем на самом деле, если судить по тихоокеанскому времени.
При максимальном смещении часовых поясов по разные стороны от международной линии перемены дат календарные даты могут отличаться на два дня, что приводит к расхождению в 48 часов в отображении даты и времени.
Сохраненная временная метка не изменяется. Полная дата, отображаемая во всплывающей подсказке, остается верной. Это ошибка отображения, но из-за нее может быть сложно понять время и порядок разговоров.
Кто может столкнуться с этой проблемой?
- Гости, чей часовой пояс в браузере отличается от настроенного часового пояса для гостей.
- Зарегистрированные участники, чей часовой пояс в браузере отличается от выбранного часового пояса в их учетной записи.
Что делает это дополнение
XQ Timestamp Fix сохраняет правильные временные метки с названиями дней недели, созданные PHP-модулем XenForo, и не позволяет JavaScript перезаписывать их.
Оно нацелено на диапазон названий дней недели в XenForo, обычно это публикации, опубликованные от двух до шести календарных дней назад. Поддерживаются все семь названий дней недели, включая субботу и воскресенье.
- Работает для гостей и зарегистрированных участников.
- Использует существующие в XenForo расчеты часовых поясов и календарей.
- Сохраняет видимый текст временной метки, всплывающую подсказку с полной датой, стиль и машиночитаемую дату.
- Оставляет другие диапазоны временных меток без изменений, как при обычном обновлении в реальном времени в XenForo.
- Не требует настройки.
- Не добавляет JavaScript, не вносит изменений в шаблоны, не использует внешние зависимости, запланированные задачи или пользовательские таблицы базы данных.
- Не вносит изменений в сохраненные временные метки или настройки часового пояса пользователя.
- Включает хэши работоспособности файлов.
Это целенаправленный обходной путь на PHP. Защищенные метки с названиями дней недели остаются неизменными до тех пор, пока страница не будет перерисована.
Это не решает проблему с обновлением в реальном времени, возникающую в XenForo, когда вкладка остается открытой после полуночи. Если при загрузке страницы временная метка выходит за пределы защищенного диапазона, проблема может возникнуть позже. При обновлении страницы и получении нового ответа от сервера метки пересчитываются корректно.
При возврате на предыдущую страницу и переходе на следующую, а также при использовании кэшированных страниц могут сохраняться старые метки. Пользовательские отображения даты, которые не используют стандартный рендерер XenForo, не входят в сферу применения этого дополнения.
Установка
- Установите ZIP-архив через Admin CP → Дополнения → Установить/обновить из архива или загрузите его содержимое и установите обычным способом.
- Запустите проверку работоспособности файла.
- Обновите проблемную страницу.
Настройки не требуются. Используйте стандартные элементы управления надстройками XenForo, чтобы отключить или удалить ее.
Совместимость
Требуется XenForo 2.3.13 или более поздняя версия. Версия 1.0.0 была протестирована на XenForo 2.3.13, включая обширную симуляцию часовых поясов, переход на летнее время, переведенные метки, а также оригинальное и минифицированное обновление даты в JavaScript.
Проверьте совместимость после обновления XenForo. Если XenForo устранит основную проблему, этот обходной путь можно будет отключить или удалить.