Created
June 19, 2012 16:37
-
-
Save nickvergessen/2955168 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js | |
index 958b6c9..ab1aaa8 100644 | |
--- a/phpBB/assets/javascript/core.js | |
+++ b/phpBB/assets/javascript/core.js | |
@@ -411,6 +411,91 @@ phpbb.ajaxify = function(options) { | |
return this; | |
} | |
+/** | |
+* 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. | |
+*/ | |
+phpbb.timezone_switch_date = function(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' && !keep_selection) { | |
+ $('#timezone > option:first').attr('selected', true); | |
+ } | |
+} | |
+ | |
+/** | |
+* Display the date/time select | |
+*/ | |
+phpbb.timezone_enable_date_selection = function() { | |
+ $('#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? | |
+*/ | |
+phpbb.timezone_preselect_select = function(force_selector) { | |
+ | |
+ // 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', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML)); | |
+ $('#tz_select_date_suggest').attr('value', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML.substring(0, 9))); | |
+ phpbb.timezone_switch_date(true); | |
+ } else { | |
+ option.selected = true; | |
+ phpbb.timezone_switch_date(!force_selector); | |
+ $('#tz_select_date_suggest').css('display', 'none'); | |
+ } | |
+ break; | |
+ } | |
+ } | |
+} | |
+ | |
phpbb.ajax_callbacks = {}; | |
/** | |
diff --git a/phpBB/styles/prosilver/template/timezone.js b/phpBB/styles/prosilver/template/timezone.js | |
index 30f4b87..cd03710 100644 | |
--- a/phpBB/styles/prosilver/template/timezone.js | |
+++ b/phpBB/styles/prosilver/template/timezone.js | |
@@ -1,92 +1,5 @@ | |
(function($) { // Avoid conflicts with other libraries | |
-/** | |
-* 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. | |
-*/ | |
-phpbb.timezone_switch_date = function(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' && !keep_selection) { | |
- $('#timezone > option:first').attr('selected', true); | |
- } | |
-} | |
- | |
-/** | |
-* Display the date/time select | |
-*/ | |
-phpbb.timezone_enable_date_selection = function() { | |
- $('#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? | |
-*/ | |
-phpbb.timezone_preselect_select = function(force_selector) { | |
- | |
- // 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', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML)); | |
- $('#tz_select_date_suggest').attr('value', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML.substring(0, 9))); | |
- phpbb.timezone_switch_date(true); | |
- } else { | |
- option.selected = true; | |
- phpbb.timezone_switch_date(!force_selector); | |
- $('#tz_select_date_suggest').css('display', 'none'); | |
- } | |
- break; | |
- } | |
- } | |
-} | |
- | |
-})(jQuery); // Avoid conflicts with other libraries | |
- | |
$('#tz_date').change(function() { | |
phpbb.timezone_switch_date(false); | |
}); | |
@@ -99,6 +12,11 @@ $(document).ready( | |
phpbb.timezone_enable_date_selection | |
); | |
-$(document).ready( | |
- phpbb.timezone_preselect_select($('#tz_select_date_suggest').attr('data-is-registration') == 'true') | |
-); | |
+$(document).ready(function() { | |
+ // If we didn't find the data-is-registration we are in ACP and don't display a suggestion. | |
+ if (typeof $('#tz_select_date_suggest').attr('data-is-registration') !== 'undefined') { | |
+ phpbb.timezone_preselect_select($('#tz_select_date_suggest').attr('data-is-registration') == 'true') | |
+ } | |
+}); | |
+ | |
+})(jQuery); // Avoid conflicts with other libraries |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment