diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php
index 4d6a032492f..72e50d9292d 100644
--- a/htdocs/comm/action/index.php
+++ b/htdocs/comm/action/index.php
@@ -808,8 +808,18 @@ if ($resql) {
$event->id = $obj->id;
$event->ref = $event->id;
- $event->datep = $db->jdate($obj->datep); // datep and datef are GMT date. Example: 1970-01-01 01:00:00, jdate will return 0 if TZ of PHP server is Europe/Berlin
- $event->datef = $db->jdate($obj->datep2);
+ $event->fulldayevent = $obj->fulldayevent;
+
+ // event->datep and event->datef must be GMT date.
+ if ($event->fulldayevent) {
+ // TODO...
+ $event->datep = $db->jdate($obj->datep);
+ $event->datef = $db->jdate($obj->datep2);
+ } else {
+ // Example: $obj->datep = '1970-01-01 01:00:00', jdate will return 0 if TZ of PHP server is Europe/Berlin (+1)
+ $event->datep = $db->jdate($obj->datep);
+ $event->datef = $db->jdate($obj->datep2);
+ }
//$event->datep_formated_gmt = dol_print_date($event->datep, 'dayhour', 'gmt');
//var_dump($obj->datep);
//var_dump($event->datep);
@@ -829,7 +839,6 @@ if ($resql) {
$event->fetch_userassigned(); // This load $event->userassigned
$event->priority = $obj->priority;
- $event->fulldayevent = $obj->fulldayevent;
$event->location = $obj->location;
$event->transparency = $obj->transparency;
$event->fk_element = $obj->fk_element;
@@ -869,25 +878,43 @@ if ($resql) {
$annee = dol_print_date($daycursor, '%Y', 'tzuserrel');
$mois = dol_print_date($daycursor, '%m', 'tzuserrel');
$jour = dol_print_date($daycursor, '%d', 'tzuserrel');
+
+ $daycursorend = $event->date_end_in_calendar;
+ $anneeend = dol_print_date($daycursorend, '%Y', 'tzuserrel');
+ $moisend = dol_print_date($daycursorend, '%m', 'tzuserrel');
+ $jourend = dol_print_date($daycursorend, '%d', 'tzuserrel');
+
//var_dump(dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt')); // Hour at greenwich
//var_dump($annee.'-'.$mois.'-'.$jour);
+ //print 'annee='.$annee.' mois='.$mois.' jour='.$jour.'
';
// Loop on each day covered by action to prepare an index to show on calendar
$loop = true; $j = 0;
- $daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt');
+ $daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt'); // $mois, $jour, $annee has been set for user tz
+ $daykeyend = dol_mktime(0, 0, 0, $moisend, $jourend, $anneeend, 'gmt'); // $moisend, $jourend, $anneeend has been set for user tz
+ /*
+ print 'GMT '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt').'
';
+ print 'TZSERVER '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzserver').'
';
+ print 'TZUSERREL '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzuserrel').'
';
+ print 'GMT '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'gmt').'
';
+ print 'TZSERVER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzserver').'
';
+ print 'TZUSER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzuserrel').'
';
+ */
do {
//if ($event->id==408)
- //print 'daykey='.$daykey.' '.dol_print_date($daykey, 'dayhour', 'gmt').' '.$event->datep.' '.$event->datef.'
';
+ //print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'gmt').' - '.dol_print_date($event->datep, 'dayhour', 'gmt').' '.dol_print_date($event->datef, 'dayhour', 'gmt').'
';
+ //print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'tzuserrel').' - '.dol_print_date($event->datep, 'dayhour', 'tzuserrel').' '.dol_print_date($event->datef, 'dayhour', 'tzuserrel').'
';
$eventarray[$daykey][] = $event;
$j++;
$daykey += 60 * 60 * 24;
- if ($daykey > $event->date_end_in_calendar) {
+ //if ($daykey > $event->date_end_in_calendar) {
+ if ($daykey > $daykeyend) {
$loop = false;
}
} while ($loop);
-
+ //var_dump($eventarray);
//print 'Event '.$i.' id='.$event->id.' (start='.dol_print_date($event->datep).'-end='.dol_print_date($event->datef);
//print ' startincalendar='.dol_print_date($event->date_start_in_calendar).'-endincalendar='.dol_print_date($event->date_end_in_calendar).') was added in '.$j.' different index key of array
';
}
@@ -1816,12 +1843,16 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
$cssclass .= " unmovable";
} elseif ($event->type_code == 'ICALEVENT') {
$cssclass .= " unmovable";
- } elseif ($event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) {
- $tmpyearend = date('Y', $event->date_end_in_calendar);
- $tmpmonthend = date('m', $event->date_end_in_calendar);
- $tmpdayend = date('d', $event->date_end_in_calendar);
+ } elseif ($event->date_start_in_calendar && $event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) {
+ // If the event is on several days
+ $tmpyearend = dol_print_date($event->date_start_in_calendar, '%Y', 'tzuserrel');
+ $tmpmonthend = dol_print_date($event->date_start_in_calendar, '%m', 'tzuserrel');
+ $tmpdayend = dol_print_date($event->date_start_in_calendar, '%d', 'tzuserrel');
+ //var_dump($tmpyearend.' '.$tmpmonthend.' '.$tmpdayend);
if ($tmpyearend != $annee || $tmpmonthend != $mois || $tmpdayend != $jour) {
- $cssclass .= " unmovable";
+ $cssclass .= " unmovable unmovable-mustusefirstdaytodrag";
+ } else {
+ $cssclass .= ' movable cursormove';
}
} else {
if ($user->rights->agenda->allactions->create ||
diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php
index 4476228d509..f23a66bbee4 100644
--- a/htdocs/core/db/DoliDB.class.php
+++ b/htdocs/core/db/DoliDB.class.php
@@ -302,8 +302,8 @@ abstract class DoliDB implements Database
/**
* Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true)
- * 19700101020000 -> 3600 with TZ+1 and gmt=0
- * 19700101020000 -> 7200 whaterver is TZ if gmt=1
+ * 19700101020000 -> 3600 with server TZ = +1 and $gm='tzserver'
+ * 19700101020000 -> 7200 whaterver is server TZ if $gm='gmt'
*
* @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS)
* @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ
diff --git a/htdocs/core/js/dst.js b/htdocs/core/js/dst.js
index 83d4abd5f08..8433ada72a9 100644
--- a/htdocs/core/js/dst.js
+++ b/htdocs/core/js/dst.js
@@ -26,7 +26,8 @@
$(document).ready(function () {
var timezone = jstz.determine();
-
+ console.log("Timezone detected for user: "+timezone.name());
+
// Detect and save TZ and DST
var rightNow = new Date();
var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d89fd437a2d..fc163933b47 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -2560,11 +2560,11 @@ function dol_mktime($hour, $minute, $second, $month, $day, $year, $gm = 'auto',
{
global $conf;
//print "- ".$hour.",".$minute.",".$second.",".$month.",".$day.",".$year.",".$_SERVER["WINDIR"]." -";
- //print 'gm:'.$gm.' gm==auto:'.($gm == 'auto').'
';
if ($gm === 'auto') {
$gm = (empty($conf) ? 'tzserver' : $conf->tzuserinputkey);
}
+ //print 'gm:'.$gm.' gm === auto:'.($gm === 'auto').'
';exit;
// Clean parameters
if ($hour == -1 || empty($hour)) {
diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php
index 338d2bd1a19..a4d38166112 100644
--- a/htdocs/core/tpl/login.tpl.php
+++ b/htdocs/core/tpl/login.tpl.php
@@ -127,7 +127,7 @@ $(document).ready(function () {
-
+