Time Zone при регистрации пользователя

Time Zone при регистрации пользователя

от Konstantin Zakurdaev -
Количество ответов: 5

Задача вообщем простая на первый взгляд, но совсем не понятная как реализовать. Нужно что бы когда пользователь регистрируется на сайте было поле для выбора его временной зоны (и лучще сделать это поле обязательным). Как это сделать? Странно что этого нет в стандартной реализации. Почему это делается только через редактирование профиля, не понимаю. Пробывал с помощью специального плагина и ассоцыаций, но сделать временную зону через него не получается.

Хотя бы если не получится вынести это поле на страницу регистрации, как заставить пользователя заполнить это поле в обязательном порядке у себя в профиле?

В ответ на Konstantin Zakurdaev

Re: Time Zone при регистрации пользователя

от Alexandre Scherbyna -
А чем вас не устраивает, что эти данные хранятся в профиле пользователя? И где же еще, по-вашему, можно их хранить?
А еще зачем задавать вопрос на форуме, где каждый пользователь может написать не боле двух сообщений в день?
В ответ на Alexandre Scherbyna

Re: Time Zone при регистрации пользователя

от Konstantin Zakurdaev -
Главная мысль в другом. Пользователь при регистрации ДОЛЖЕН выставить этот параметр (Time Zone) в РУЧНУЮ! Что бы прям как в банке, точно знать что этот параметр установлен так как надо, а не искать вот он там, где то, и может быть он правельный для пользователя а может и нет.
В ответ на Konstantin Zakurdaev

Re: Time Zone при регистрации пользователя

от Alexandre Scherbyna -
Тогда этот параметр нужно сделать обязательным для заполнения и указывать его уже в окошке регистрации по email рядом с фамилией (если вы, конечно, такой способ регистрации используете). Как это делается на наших форумах уже обсуждалось, правда не для часового пояса, а для других параметров.
В ответ на Konstantin Zakurdaev

Re: Time Zone при регистрации пользователя

от Vadim Tabunshchik -
Изображение пользователя Developers
timezone - поле специфическое, для вывода списка часовых поясов используется целый класс core_date, а поле associated - простое, текстовое. Поэтому, даже если добавить в associated поле с поясами, то на странице регистрации новой учетки будет текстовая строка, куда новый пользователь может написать всё, что ему пожелается, хоть «Новые Васюки». улыбаюсь
Вариант с установкой флага required (обязательное) в форме профиля пользователя (и любой другой) тоже не прокатит, потому что в отличие от поля, например, email, поле timezone не может быть пустым и выставляется автоматом (forcetimezone). Поэтому оно в любом случае уже будет заполнено и чтобы его изменить, пользователю все равно придется самому редактировать свой профиль.
Я, честно говоря, не понимаю, почему у вас такая проблема с timezone, это личное дело каждого пользователя, какой часовой пояс использовать. Он может быть в долгосрочной командировке где-то на Сев. полюсе, а жить и работать по Москве. )))
Остается только правка формы создания новой уч. записи (login/signup_form.php) с добавлением поля timezone, уже существующим пользователям всё равно придется пояса исправлять/устанавливать вручную. Добавьте в форму ниже поля «Страна» этот код:
    if (isset($CFG->forcetimezone) and $CFG->forcetimezone != 99) {
        $choices = core_date::get_list_of_timezones($CFG->forcetimezone);
        $mform->addElement('static', 'forcedtimezone', get_string('timezone'), $choices[$CFG->forcetimezone]);
        $mform->addElement('hidden', 'timezone');
        $mform->setType('timezone', core_user::get_property_type('timezone'));
    } else {
        $choices = core_date::get_list_of_timezones($user->timezone, true);
        $mform->addElement('select', 'timezone', get_string('timezone'), $choices);
        $mform->addRule('timezone', get_string('required'), 'required', null, 'client');
    }

В ответ на Vadim Tabunshchik

Re: Time Zone при регистрации пользователя

от Konstantin Zakurdaev -
огромное спасибо. внедрил! работает!
Нужно это потому что народ регистрируется со всей планеты и что бы синхронизировать их работу нужно точно знать в какой кто временной зоне находится.