aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/styles/subsilver2/template
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-06-12 19:51:55 +0200
committerJoas Schilling <nickvergessen@gmx.de>2012-06-18 15:09:25 +0200
commita6bace039ab18ce5138a7f6ffa6d74c543bd6222 (patch)
tree2104231363ce1d3ad5f2a28ddf2691cc2c36ceb5 /phpBB/styles/subsilver2/template
parent4fbee37752f8b854a98f60f4f7befc09f33e604c (diff)
downloadforums-a6bace039ab18ce5138a7f6ffa6d74c543bd6222.tar
forums-a6bace039ab18ce5138a7f6ffa6d74c543bd6222.tar.gz
forums-a6bace039ab18ce5138a7f6ffa6d74c543bd6222.tar.bz2
forums-a6bace039ab18ce5138a7f6ffa6d74c543bd6222.tar.xz
forums-a6bace039ab18ce5138a7f6ffa6d74c543bd6222.zip
[feature/new-tz-handling] Fix timezone selection in subsilver2
PHPBB3-9558
Diffstat (limited to 'phpBB/styles/subsilver2/template')
-rw-r--r--phpBB/styles/subsilver2/template/timezone.js95
-rw-r--r--phpBB/styles/subsilver2/template/timezone_option.html22
-rw-r--r--phpBB/styles/subsilver2/template/ucp_prefs_personal.html7
-rw-r--r--phpBB/styles/subsilver2/template/ucp_register.html7
4 files changed, 121 insertions, 10 deletions
diff --git a/phpBB/styles/subsilver2/template/timezone.js b/phpBB/styles/subsilver2/template/timezone.js
new file mode 100644
index 0000000000..deebbf36a8
--- /dev/null
+++ b/phpBB/styles/subsilver2/template/timezone.js
@@ -0,0 +1,95 @@
+function phpbb_switch_tz_date(keep_selection)
+{
+ var timezone_groups = document.getElementById("timezone");
+ for (var i = 0; i < timezone_groups.childElementCount; i++) {
+ if (timezone_groups.children[i].tagName == "OPTGROUP" &&
+ timezone_groups.children[i].label != document.getElementById("tz_date").value)
+ {
+ timezone_groups.children[i].style.display = "none";
+ }
+ else if (timezone_groups.children[i].tagName == "OPTGROUP")
+ {
+ // Display other options
+ timezone_groups.children[i].style.display = "block";
+ }
+ }
+ if (typeof keep_selection !== 'undefined')
+ {
+ if (!keep_selection)
+ {
+ timezone_groups.children[0].selected = true;
+ }
+ }
+}
+
+function phpbb_enable_tz_dates()
+{
+ var tz_select_date = document.getElementById("tz_select_date");
+ tz_select_date.style.display = "block";
+}
+
+function phpbb_preselect_tz_select(force_selector, l_suggestion)
+{
+
+ var selector = document.getElementById('tz_date');
+ // 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)
+ {
+ if (selector.value && selector.value != option.value && !force_selector)
+ {
+ // We do not select the option for the user, but notify him,
+ // that we would suggest a different setting.
+ document.getElementById("tz_select_date_suggest").style.display = "inline";
+ document.getElementById("tz_select_date_suggest").title = l_suggestion.replace("%s", option.innerHTML);
+ document.getElementById("tz_select_date_suggest").innerHTML = l_suggestion.replace("%s", option.innerHTML.substring(0, 9));
+ phpbb_switch_tz_date(true);
+ }
+ else
+ {
+ // 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;
+ phpbb_switch_tz_date(!force_selector);
+ document.getElementById("tz_select_date_suggest").style.display = "none";
+ }
+ break;
+ }
+ }
+}
diff --git a/phpBB/styles/subsilver2/template/timezone_option.html b/phpBB/styles/subsilver2/template/timezone_option.html
new file mode 100644
index 0000000000..184722ef7e
--- /dev/null
+++ b/phpBB/styles/subsilver2/template/timezone_option.html
@@ -0,0 +1,22 @@
+<tr>
+ <td class="row1" width="50%"><b class="genmed">{L_BOARD_TIMEZONE}:</b></td>
+ <td class="row2">
+ <!-- IF S_TZ_DATE_OPTIONS -->
+ <div id="tz_select_date" style="display: none;">
+ <select name="tz_date" id="tz_date" class="autowidth tz_select" onchange="phpbb_switch_tz_date(false);">
+ <option value="">{L_SELECT_CURRENT_TIME}</option>
+ {S_TZ_DATE_OPTIONS}
+ </select><br />
+ <a id="tz_select_date_suggest" style="display: none;" href="javascript: phpbb_preselect_tz_select(true, '');">{L_TIMEZONE_DATE_SUGGESTION}</a><br />
+ </div>
+ <!-- ENDIF -->
+ <select name="tz" id="timezone" class="autowidth tz_select">
+ <option value="">{L_SELECT_TIMEZONE}</option>
+ {S_TZ_OPTIONS}
+ </select>
+
+ <script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/timezone.js"></script>
+ <script type="text/javascript">phpbb_enable_tz_dates();</script>
+ <script type="text/javascript">phpbb_preselect_tz_select(<!-- IF S_REGISTRATION -->true<!-- ELSE -->false<!-- ENDIF -->, '{L_TIMEZONE_DATE_SUGGESTION}');</script>
+ </td>
+</tr>
diff --git a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
index 357e1fe100..bf0e67d68b 100644
--- a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
+++ b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
@@ -71,12 +71,7 @@
<td class="row2"><select name="style">{S_STYLE_OPTIONS}</select></td>
</tr>
<!-- ENDIF -->
-<tr>
- <td class="row1" width="50%"><b class="genmed">{L_BOARD_TIMEZONE}:</b></td>
- <td class="row2">
- <select id="tz" name="tz">{S_TZ_OPTIONS}</select>
- </td>
-</tr>
+<!-- INCLUDE timezone_option.html -->
<tr>
<td class="row1" width="50%"><b class="genmed">{L_BOARD_DATE_FORMAT}:</b><br /><span class="gensmall">{L_BOARD_DATE_FORMAT_EXPLAIN}</span></td>
<td class="row2">
diff --git a/phpBB/styles/subsilver2/template/ucp_register.html b/phpBB/styles/subsilver2/template/ucp_register.html
index 0c3533292d..095c97ed49 100644
--- a/phpBB/styles/subsilver2/template/ucp_register.html
+++ b/phpBB/styles/subsilver2/template/ucp_register.html
@@ -53,10 +53,9 @@
<td class="row1"><b class="genmed">{L_LANGUAGE}: </b></td>
<td class="row2"><select name="lang" onchange="change_language(this.value); return false;">{S_LANG_OPTIONS}</select></td>
</tr>
-<tr>
- <td class="row1"><b class="genmed">{L_TIMEZONE}: </b></td>
- <td class="row2"><select name="tz">{S_TZ_OPTIONS}</select></td>
-</tr>
+
+<!-- INCLUDE timezone_option.html -->
+
<!-- IF .profile_fields -->
<tr>
<td class="row2" colspan="2"><span class="gensmall">{L_ITEMS_REQUIRED}</span></td>