Fix: Saving daylight detection
This commit is contained in:
parent
e8c266bc9e
commit
1934acf10c
@ -35,17 +35,120 @@ header("Content-type: text/html; charset=".$conf->file->character_set_client);
|
|||||||
<title><?php echo $langs->trans('Login'); ?></title>
|
<title><?php echo $langs->trans('Login'); ?></title>
|
||||||
<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery-latest.min.js"></script>
|
<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery-latest.min.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" href="<?php echo $conf_css; ?>" />
|
<link rel="stylesheet" type="text/css" href="<?php echo $conf_css; ?>" />
|
||||||
<?php echo $conf->global->MAIN_HTML_HEADER ?>
|
<link rel="shortcut icon" type="image/x-icon" href="<?php echo DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/favicon.ico'; ?>" />
|
||||||
<?php
|
<?php if (! empty($conf->global->MAIN_HTML_HEADER)) print $conf->global->MAIN_HTML_HEADER; ?>
|
||||||
$favicon=DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/favicon.ico';
|
|
||||||
?>
|
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="<?php echo $favicon; ?>" />
|
|
||||||
<!-- HTTP_USER_AGENT = <?php echo $_SERVER['HTTP_USER_AGENT']; ?> -->
|
<!-- HTTP_USER_AGENT = <?php echo $_SERVER['HTTP_USER_AGENT']; ?> -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="body">
|
<body class="body">
|
||||||
|
|
||||||
|
<!-- Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
function DisplayDstSwitchDates(firstsecond)
|
||||||
|
{
|
||||||
|
var year = new Date().getYear();
|
||||||
|
if (year < 1000) year += 1900;
|
||||||
|
|
||||||
|
var firstSwitch = 0;
|
||||||
|
var secondSwitch = 0;
|
||||||
|
var lastOffset = 99;
|
||||||
|
|
||||||
|
// Loop through every month of the current year
|
||||||
|
for (i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
// Fetch the timezone value for the month
|
||||||
|
var newDate = new Date(Date.UTC(year, i, 0, 0, 0, 0, 0));
|
||||||
|
var tz = -1 * newDate.getTimezoneOffset() / 60;
|
||||||
|
|
||||||
|
// Capture when a timzezone change occurs
|
||||||
|
if (tz > lastOffset)
|
||||||
|
firstSwitch = i-1;
|
||||||
|
else if (tz < lastOffset)
|
||||||
|
secondSwitch = i-1;
|
||||||
|
|
||||||
|
lastOffset = tz;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go figure out date/time occurences a minute before
|
||||||
|
// a DST adjustment occurs
|
||||||
|
var secondDstDate = FindDstSwitchDate(year, secondSwitch);
|
||||||
|
var firstDstDate = FindDstSwitchDate(year, firstSwitch);
|
||||||
|
|
||||||
|
if (firstsecond == 'first') return firstDstDate;
|
||||||
|
if (firstsecond == 'second') return secondDstDate;
|
||||||
|
|
||||||
|
if (firstDstDate == null && secondDstDate == null)
|
||||||
|
return 'Daylight Savings is not observed in your timezone.';
|
||||||
|
else
|
||||||
|
return 'Last minute before DST change occurs in ' +
|
||||||
|
year + ': ' + firstDstDate + ' and ' + secondDstDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
function FindDstSwitchDate(year, month)
|
||||||
|
{
|
||||||
|
// Set the starting date
|
||||||
|
var baseDate = new Date(Date.UTC(year, month, 0, 0, 0, 0, 0));
|
||||||
|
var changeDay = 0;
|
||||||
|
var changeMinute = -1;
|
||||||
|
var baseOffset = -1 * baseDate.getTimezoneOffset() / 60;
|
||||||
|
var dstDate;
|
||||||
|
|
||||||
|
// Loop to find the exact day a timezone adjust occurs
|
||||||
|
for (day = 0; day < 50; day++)
|
||||||
|
{
|
||||||
|
var tmpDate = new Date(Date.UTC(year, month, day, 0, 0, 0, 0));
|
||||||
|
var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
|
||||||
|
|
||||||
|
// Check if the timezone changed from one day to the next
|
||||||
|
if (tmpOffset != baseOffset)
|
||||||
|
{
|
||||||
|
var minutes = 0;
|
||||||
|
changeDay = day;
|
||||||
|
|
||||||
|
// Back-up one day and grap the offset
|
||||||
|
tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0));
|
||||||
|
tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
|
||||||
|
|
||||||
|
// Count the minutes until a timezone chnage occurs
|
||||||
|
while (changeMinute == -1)
|
||||||
|
{
|
||||||
|
tmpDate = new Date(Date.UTC(year, month, day-1, 0, minutes, 0, 0));
|
||||||
|
tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
|
||||||
|
|
||||||
|
// Determine the exact minute a timezone change
|
||||||
|
// occurs
|
||||||
|
if (tmpOffset != baseOffset)
|
||||||
|
{
|
||||||
|
// Back-up a minute to get the date/time just
|
||||||
|
// before a timezone change occurs
|
||||||
|
tmpOffset = new Date(Date.UTC(year, month,
|
||||||
|
day-1, 0, minutes-1, 0, 0));
|
||||||
|
changeMinute = minutes;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
minutes++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a month (for display) since JavaScript counts
|
||||||
|
// months from 0 to 11
|
||||||
|
dstDate = tmpOffset.getMonth() + 1;
|
||||||
|
|
||||||
|
// Pad the month as needed
|
||||||
|
if (dstDate < 10) dstDate = "0" + dstDate;
|
||||||
|
|
||||||
|
// Add the day and year
|
||||||
|
dstDate = year + '-' + dstDate + '-' + tmpOffset.getDate() + 'T';
|
||||||
|
|
||||||
|
// Capture the time stamp
|
||||||
|
tmpDate = new Date(Date.UTC(year, month,
|
||||||
|
day-1, 0, minutes-1, 0, 0));
|
||||||
|
dstDate += tmpDate.toTimeString().split(' ')[0] + 'Z';
|
||||||
|
return dstDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
jQuery(document).ready(function () {
|
jQuery(document).ready(function () {
|
||||||
// Set focus on correct field
|
// Set focus on correct field
|
||||||
<?php if ($focus_element) { ?>jQuery('#<?php echo $focus_element; ?>').focus(); <?php } ?> // Warning to use this only on visible element
|
<?php if ($focus_element) { ?>jQuery('#<?php echo $focus_element; ?>').focus(); <?php } ?> // Warning to use this only on visible element
|
||||||
@ -65,8 +168,13 @@ jQuery(document).ready(function () {
|
|||||||
} else {
|
} else {
|
||||||
dst = "1"; // daylight savings time is observed
|
dst = "1"; // daylight savings time is observed
|
||||||
}
|
}
|
||||||
|
var dst_first=DisplayDstSwitchDates('first');
|
||||||
|
var dst_second=DisplayDstSwitchDates('second');
|
||||||
|
//alert(dst);
|
||||||
jQuery('#tz').val(std_time_offset); // returns TZ
|
jQuery('#tz').val(std_time_offset); // returns TZ
|
||||||
jQuery('#dst').val(dst); // returns DST
|
jQuery('#dst_observed').val(dst); // returns if DST is observed on summer
|
||||||
|
jQuery('#dst_first').val(dst_first); // returns DST first switch in year
|
||||||
|
jQuery('#dst_second').val(dst_second); // returns DST second switch in year
|
||||||
// Detect and save screen resolution
|
// Detect and save screen resolution
|
||||||
jQuery('#screenwidth').val(jQuery(window).width()); // returns width of browser viewport
|
jQuery('#screenwidth').val(jQuery(window).width()); // returns width of browser viewport
|
||||||
jQuery('#screenheight').val(jQuery(window).height()); // returns width of browser viewport
|
jQuery('#screenheight').val(jQuery(window).height()); // returns width of browser viewport
|
||||||
@ -78,7 +186,9 @@ jQuery(document).ready(function () {
|
|||||||
<input type="hidden" name="loginfunction" value="loginfunction" />
|
<input type="hidden" name="loginfunction" value="loginfunction" />
|
||||||
<!-- Add fields to send local user information -->
|
<!-- Add fields to send local user information -->
|
||||||
<input type="hidden" name="tz" id="tz" value="" />
|
<input type="hidden" name="tz" id="tz" value="" />
|
||||||
<input type="hidden" name="dst" id="dst" value="" />
|
<input type="hidden" name="dst_observed" id="dst_observed" value="" />
|
||||||
|
<input type="hidden" name="dst_first" id="dst_first" value="" />
|
||||||
|
<input type="hidden" name="dst_second" id="dst_second" value="" />
|
||||||
<input type="hidden" name="screenwidth" id="screenwidth" value="" />
|
<input type="hidden" name="screenwidth" id="screenwidth" value="" />
|
||||||
<input type="hidden" name="screenheight" id="screenheight" value="" />
|
<input type="hidden" name="screenheight" id="screenheight" value="" />
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user