mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 13:28:55 +00:00
105 lines
2.7 KiB
JavaScript
105 lines
2.7 KiB
JavaScript
/**
|
|
* Hide the optgroups that are not the selected timezone
|
|
*
|
|
* @param bool keep_selection Shall we keep the value selected, or shall the user be forced to repick one.
|
|
*/
|
|
function phpbb_switch_tz_date(keep_selection)
|
|
{
|
|
$('#timezone > optgroup').css("display", "none");
|
|
$("#timezone > optgroup[label='" + $('#tz_date').val() + "']").css("display", "block");
|
|
|
|
if ($("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option").size() == 1)
|
|
{
|
|
// If there is only one timezone for the selected date, we just select that automatically.
|
|
$("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option:first").attr("selected", true);
|
|
keep_selection = true;
|
|
}
|
|
|
|
if (typeof keep_selection !== 'undefined')
|
|
{
|
|
if (!keep_selection)
|
|
{
|
|
$('#timezone > option:first').attr("selected", true);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Display the date/time select
|
|
*/
|
|
function phpbb_enable_tz_dates()
|
|
{
|
|
$('#tz_select_date').css("display", "block");
|
|
}
|
|
|
|
/**
|
|
* Preselect a date/time or suggest one, if it is not picked.
|
|
*
|
|
* @param bool force_selector Shall we select the suggestion?
|
|
* @param string l_suggestion The language string which we use, to display the selection
|
|
*/
|
|
function phpbb_preselect_tz_select(force_selector, l_suggestion)
|
|
{
|
|
|
|
// The offset returned here is in minutes and negated.
|
|
// http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp
|
|
var offset = (new Date()).getTimezoneOffset();
|
|
if (offset < 0)
|
|
{
|
|
var sign = '+';
|
|
offset = -offset;
|
|
}
|
|
else
|
|
{
|
|
var sign = '-';
|
|
}
|
|
var minutes = offset % 60;
|
|
var hours = (offset - minutes) / 60;
|
|
if (hours < 10)
|
|
{
|
|
hours = '0' + hours.toString();
|
|
}
|
|
else
|
|
{
|
|
hours = hours.toString();
|
|
}
|
|
if (minutes < 10)
|
|
{
|
|
minutes = '0' + minutes.toString();
|
|
}
|
|
else
|
|
{
|
|
minutes = minutes.toString();
|
|
}
|
|
|
|
var prefix = 'GMT' + sign + hours + ':' + minutes;
|
|
var prefix_length = prefix.length;
|
|
|
|
var selector_options = $('#tz_date > option');
|
|
for (var i = 0; i < selector_options.length; ++i)
|
|
{
|
|
var option = selector_options[i];
|
|
if (option.value.substring(0, prefix_length) == prefix)
|
|
{
|
|
if ($('#tz_date').val() != option.value && !force_selector)
|
|
{
|
|
// We do not select the option for the user, but notify him,
|
|
// that we would suggest a different setting.
|
|
$('#tz_select_date_suggest').css("display", "inline");
|
|
$('#tz_select_date_suggest').attr("title", l_suggestion.replace("%s", option.innerHTML));
|
|
$('#tz_select_date_suggest').html(l_suggestion.replace("%s", option.innerHTML.substring(0, 9)));
|
|
phpbb_switch_tz_date(true);
|
|
}
|
|
else
|
|
{
|
|
option.selected = true;
|
|
phpbb_switch_tz_date(!force_selector);
|
|
$('#tz_select_date_suggest').css("display", "none");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
phpbb_enable_tz_dates();
|
|
phpbb_preselect_tz_select(is_registration, l_timezone_date_suggestion);
|