mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-24 20:13:22 +01:00
[feature/new-tz-handling] Preselect a timezone in registration.
Use Javascript to obtain client's timezone offset and select the first timezone in our list with that offset. Changes for prosilver only. The javascript file should be shared between styles. PHPBB3-9558
This commit is contained in:
parent
bb461c8daa
commit
da8009603d
@ -399,6 +399,7 @@ $lang = array_merge($lang, array(
|
||||
'SIGNATURE_EXPLAIN' => 'This is a block of text that can be added to posts you make. There is a %d character limit.',
|
||||
'SIGNATURE_PREVIEW' => 'Your signature will appear like this in posts',
|
||||
'SIGNATURE_TOO_LONG' => 'Your signature is too long.',
|
||||
'SELECT_TIMEZONE' => 'Select timezone',
|
||||
'SORT' => 'Sort',
|
||||
'SORT_COMMENT' => 'File comment',
|
||||
'SORT_DOWNLOADS' => 'Downloads',
|
||||
|
54
phpBB/styles/prosilver/template/timezone.js
Normal file
54
phpBB/styles/prosilver/template/timezone.js
Normal file
@ -0,0 +1,54 @@
|
||||
function phpbb_preselect_tz_select()
|
||||
{
|
||||
var selector = document.getElementsByClassName('tz_select')[0];
|
||||
if (selector.value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// 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;
|
||||
for (var i = 0; i < selector.options.length; ++i)
|
||||
{
|
||||
var option = selector.options[i];
|
||||
if (option.value.substring(0, prefix_length) == prefix)
|
||||
{
|
||||
// Firefox scrolls the selector only to put the option into view;
|
||||
// for negative-offset timezones, this means the first timezone
|
||||
// of a particular offset will be the bottom one, and selected,
|
||||
// with all other timezones not visible. Not much can be done
|
||||
// about that here unfortunately.
|
||||
option.selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -75,7 +75,12 @@
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="timezone">{L_BOARD_TIMEZONE}:</label></dt>
|
||||
<dd><select name="tz" id="timezone" class="autowidth">{S_TZ_OPTIONS}</select></dd>
|
||||
<dd>
|
||||
<select name="tz" id="timezone" class="autowidth tz_select">
|
||||
<option value="">{L_SELECT_TIMEZONE}</option>
|
||||
{S_TZ_OPTIONS}
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="dst1">{L_BOARD_DST}:</label></dt>
|
||||
@ -141,4 +146,7 @@
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/timezone.js"></script>
|
||||
<script type="text/javascript">phpbb_preselect_tz_select();</script>
|
||||
|
||||
<!-- INCLUDE ucp_footer.html -->
|
||||
|
@ -59,7 +59,12 @@
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="tz">{L_TIMEZONE}:</label></dt>
|
||||
<dd><select name="tz" id="tz" tabindex="7" class="autowidth">{S_TZ_OPTIONS}</select></dd>
|
||||
<dd>
|
||||
<select name="tz" id="tz" tabindex="7" class="autowidth tz_select">
|
||||
<option value="">{L_SELECT_TIMEZONE}</option>
|
||||
{S_TZ_OPTIONS}
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<!-- IF .profile_fields -->
|
||||
@ -110,4 +115,7 @@
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/timezone.js"></script>
|
||||
<script type="text/javascript">phpbb_preselect_tz_select();</script>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
|
Loading…
x
Reference in New Issue
Block a user