Guess Timezone (Автоматическое определение часового пояса)

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 3.0.x, кроме относящихся к форуму Для авторов (phpBB 3.0.x).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Guess Timezone (Автоматическое определение часового пояса)

Сообщение Nekstati »

Guess Timezone

Автоматическое определение часового пояса пользователя.
Автоматический перевод на летнее время.

Мод работает как для авторизованных пользователей, так и для гостей. Информация о часовом поясе и летнем времени берётся непосредственно из компьютера пользователя (через cookies). По умолчанию автоопределение включено для всех пользователей. Его можно отключить в личном разделе и задать часовой пояс вручную. Для гостей автоопределение можно отключить в администраторском разделе.

Тема на phpBB.com
Поправка для phpBB 3.0.7PL1
Русская локализация
Последняя версия мода: 1.0.1.

Изображение

В этом архиве — мод с уже внесённой поправкой и русской локализацией. Можно устанавливать Автомодом.
guess_timezone_101.zip
Рекомендую. Удобная вещь. Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Nekstati »

Небольшое добавление. Куки, устанавливаемые данным модом, действуют до конца сеанса. Поэтому если закрыть браузер, а затем вновь открыть и перейти на форум, то автоопределение часового пояса в первый момент не сработает, оно сработает лишь после обновления страницы форума или при переходе по любой внутренней ссылке. Чтобы исправить этот недостаток, надо устанавливать куки не до конца сеанса, а на длительный срок. Например, на год. Для этого сделайте вставку в overall_header.html не так, как написано в инструкции, а следующим образом:

Код: Выделить всё

<!-- IF U_TIME_COOKIE -->
	var now = new Date();
	var january = (new Date(now.getFullYear(), 1, 1)).getTimezoneOffset();
	var today = now.getTimezoneOffset();
	// we use January since DST usually isn't in effect during January
	now.setTime(now.getTime() + 1000 * 3600 * 24 * 365);
	document.cookie = '{U_TIME_COOKIE}_time[zone] = ' + (-january / 60) + '; expires=' + now.toGMTString();
	document.cookie = '{U_TIME_COOKIE}_time[dst] = ' + (january != today ? 1 : 0) + '; expires=' + now.toGMTString();
<!-- ENDIF -->
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение FladeX »

Имхо для этих целей более удобен мод Automatic DST 2. Во всяком случае, там никаких кукисов нет, все гораздо проще и удобнее.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Nekstati »

Это разные вещи. Automatic DST определяет летнее время по вручную установленному часовому поясу, а Guess Timezone автоматически определяет часовой пояс и летнее время. Почувствуй разницу.

Кстати, в Automatic DST есть дыра. Когда в каком-то регионе отменяют летнее время или изменяют часовой пояс, Automatic DST не может этого учесть до тех пор, пока хостер не сподобится обновить PHP или tz_database. Например, этой весной изменились пояса в Самаре, на Камчатке и Чукотке, а у хостеров до сих пор стоят старые таблицы поясов (проверила на двух хостингах). В результате, если юзер из Самары выбирает часовой пояс «Samara», то Automatic DST выдаёт ему неправильное время. А Guess Timezone учитывает все перемены в поясах после первого же обновления Windows на компе юзера.

К тому же Automatic DST заменяет стандартный вид поясов типа «[UTC+6] Омск» на список городов без указания пояса, типа «Азия/Omsk», а это означает, что Василиса Потаповна из Поповки, отсутствующей в списке, не сможет там найти свой пояс. А если и сможет, то лишь методом тыка. Если же на форуме используется Guess Timezone, то Василисе Потаповне вообще ничего не надо знать о часовых поясах, всё сделается само.

Ну а недостаток Guess Timezone в том, что Javascript и cookies у юзера должны быть непременно включены, иначе время будет выводиться стандартным для phpBB3 методом.
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Garret_Dark »

Nekstati, очень полезная вещь, давно искал нечто подобное

Чтото только меняю в винде время (на произвольное), а на форуме так и отображается Московское, вроде ведь должно браться с моего компьютера?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Nekstati »

С компьютера берётся часовой пояс, а не время.
mart
phpBB 1.0.0
Сообщения: 1
Стаж: 15 лет 11 месяцев

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение mart »

Ставою автомодом
Выдает:


includes/session.php
Найти

Код: Выделить всё

        if ((@include $this->lang_path
        {
            die('Language file '
        } 
Добавить после

Код: Выделить всё

        switch (true)
        {
            case $this->data['user_id'] != ANONYMOUS && $this->data['use_browser']:
            case $this->data['user_id'] == ANONYMOUS && $config['use_client_browser']:
                if (isset($_COOKIE[$config['cookie_name'] . '_time']['dst']) && isset($_COOKIE[$config['cookie_name'] . '_time']['zone']))
                {
                    $temp = $_COOKIE[$config['cookie_name'] . '_time']['zone'];
                    if (!isset($lang['tz'][$temp]))
                    {
                        break;
                    }
                    $this->timezone = $temp * 3600;
                    $this->dst = ((bool) $_COOKIE[$config['cookie_name'] . '_time']['dst']) * 3600;
                }
        } 
Заданный аргумент поиска не найден
Последний раз редактировалось MIT 24.10.2010 16:23, всего редактировалось 1 раз.
Причина: Тег [code] и для тебя тоже
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Палыч »

mart
А глаза разуть?
Инструкция предназначена для phpBB 3.0.4 (если версия мода 1.0.1, а 1.0.0 и вообще для phpBB 3.0.2)
В phpBB версии 3.0.7 код в файле includes/session.php изменился.

Код: Выделить всё

        // Do not suppress error if in DEBUG_EXTRA mode
        $include_result = (defined('DEBUG_EXTRA')) ? (include $this->lang_path . $this->lang_name . "/common.$phpEx") : (@include $this->lang_path . $this->lang_name . "/common.$phpEx");

        if ($include_result === false)
        {
            die('Language file ' . $this->lang_path . $this->lang_name . "/common.$phpEx" . " couldn't be opened.");
        } 
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
bulka
phpBB 1.2.0
Сообщения: 13
Стаж: 15 лет 11 месяцев
Благодарил (а): 3 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение bulka »

Перед внесением изменений в файлы конференции необходимо выполнить след. запрос:

Код: Выделить всё

ALTER TABLE phpbb_users ADD use_browser tinyint(1) UNSIGNED DEFAULT '1' NOT NULL;
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_client_browser', '1');
Вопрос след. характера: насколько сложно реализовать php-файл (например, install/index.php), который сам выполнит подобный запрос в БД из корня сайта? Я совершенно не разбираюсь в этом, прошу помощи у вас :)
Последний раз редактировалось bulka 02.11.2010 8:53, всего редактировалось 1 раз.
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 4 месяца
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение MAzZY »

Ketzer
phpBB 1.2.0
Сообщения: 11
Стаж: 16 лет 6 месяцев
Благодарил (а): 2 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Ketzer »

Прикрутил мод, выявилась одна странность - меняешь на компе часовой пояс - заходишь под гостем на форум на страницу регистрации - при UTC+4 часовой пояс автоопределяется нормально, при остальных значениях (+7, например) - нет, выставляет все те же UTC+3

При этом если войти под пользователем и в личном кабинете нажать кнопку автоопределения - определяет правильно.

При проверке все куки/кеш соответственно чистились.
Ketzer
phpBB 1.2.0
Сообщения: 11
Стаж: 16 лет 6 месяцев
Благодарил (а): 2 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Ketzer »

Как выяснилось, в инструкции для шаблона subSilver2 (а именно для файла styles/subsilver2/template/ucp_register.html) есть строчка, из-за которой не срабатывает автоопределение:

Код: Выделить всё

onload_functions.push('guessTimezone()');
- это годится лишь для шаблонов на основе proSilver

Поменял ее на

Код: Выделить всё

window.onload = function () {
	guessTimezone();
}
и в

Код: Выделить всё

<td class="row2"><select name="tz">{S_TZ_OPTIONS}</select></td>

добавил id="tz":

Код: Выделить всё

<td class="row2"><select name="tz" id="tz">{S_TZ_OPTIONS}</select></td>
и все ОК
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Garret_Dark »

Nekstati писал(а):С компьютера берётся часовой пояс, а не время.
Наверно стоит реализовать мод так (если так можно), чтобы бралось время, а не ЧП. Я вот за последний месяц побывал в четырех часовых поясах и посидел за множеством компьютеров и практически во всех них стоял часовой пояс +3 (Москва) и просто было настроено местное время :?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Nekstati »

Это к автору. В принципе можно.
Аватара пользователя
Nibiru
phpBB 1.4.4
Сообщения: 118
Стаж: 18 лет 2 месяца
Откуда: Russia & Slovensko
Благодарил (а): 5 раз
Поблагодарили: 1 раз

Re: Guess Timezone (Автоматическое определение часового пояс

Сообщение Nibiru »

у меня автомод ловит сразу Guess Timezone - subSilver2 и устанавливает только его, а основной файл установки не хочет, с чем это связано?
Бесят девки, которые понтуются тем, что пьют и курят! Ты спортом займись, Овца, и гордись этим!

Вернуться в «Поддержка модов для phpBB 3.0.x»