Allow users to setup time zone for their profile. This timezone can be utilized later by components.
V2.0
Reported on WhatsApp
Follow up Bug Report
If a user does not select a timezone(leaves drop down in default loaded state) and makes an error while filling out the required fields of the create account form (i.e. incorrect username), the Timezone component stops the form from reporting out to the user that they have made an error. If the user then updates the timezone component to a time zone, the form will report out properly that they have created an error.
@jambu, where is the full code? I'd love to use it, if it works. Thanks!
Thanks for your contribution, Jambu.
I'd appreciate a link to your repository, though.
Because coding "something similar" is a bit too vague for most of us, I guess. 😵
I made these changes to the source files so that the timezone is automatically set by the user's local timezone. I checked out the repo from github to branch and commit these, but it didn't have any of these files... Well this is not letting me put all the changes I made. But something like this:
In both:
components/TimeZone/plugins/default/js/timezone/account_settings.php
components/TimeZone/plugins/default/js/timezone/create_account.php
I did something similar to this:
const local_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
var select = $('.timezone-dropdown');
var option = select.find("option:contains("+ local_timezone +")");
var optionTop = option.offset().top
var selectTop = select.offset().top;
select.scrollTop(select.scrollTop() + (optionTop - selectTop));
option.prop('selected', true);
It is not available in version 5.0 can you explain reason?
Thanks for your work, using nearly all the components haha.
(just to be clear, this was about time ZONES, not the exact city a user may be located in. Z-Man's response is correct that it's not easy to determine that. If you prefer the UTC offset of your time ZONE rather than the city usually associated with that timezone as my example displays, that's easy enough to find also, just read the stackoverflow post I linked)
working jsfiddle showing a user's DEFAULT timezone as set in their browser in about 2 lines of code: jsfiddle.net/k12qL5xz
(in reference to my last post)
since Goodwin specifically asked why users should have to go through the stress of locating their correct time zone, you could do something like the following:
easy peasy. alternatively you can give the user option to update their current timezone in their profile settings. I really don't see what's so difficult about this.
Z-Man, it's perfectly possible to do with javascript (and not very difficult), even though not with PHP: https://stackoverflow.com/questions/6939685/get-client-time-zone-from-browser
javascript is used all over the place in OSSN, while it may be primarily PHP, it's certainly not exclusively written using PHP. I really don't see what's so difficult or prohibitive about:
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(tz);
obviously its not going to be possible with a server side lang like php because timezone is set on the client side.
Hope that helps, Estee and Goodwin.