mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
FIX events on several days may missing the last day in calendar view.
FIX the drag and drop was not available on some events
This commit is contained in:
parent
30d7f807e4
commit
27df3cc02c
|
|
@ -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.'<br>';
|
||||
|
||||
// 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').'<br>';
|
||||
print 'TZSERVER '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzserver').'<br>';
|
||||
print 'TZUSERREL '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzuserrel').'<br>';
|
||||
print 'GMT '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'gmt').'<br>';
|
||||
print 'TZSERVER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzserver').'<br>';
|
||||
print 'TZUSER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzuserrel').'<br>';
|
||||
*/
|
||||
do {
|
||||
//if ($event->id==408)
|
||||
//print 'daykey='.$daykey.' '.dol_print_date($daykey, 'dayhour', 'gmt').' '.$event->datep.' '.$event->datef.'<br>';
|
||||
//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').'<br>';
|
||||
//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').'<br>';
|
||||
|
||||
$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<br>';
|
||||
}
|
||||
|
|
@ -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 ||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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').'<br>';
|
||||
|
||||
if ($gm === 'auto') {
|
||||
$gm = (empty($conf) ? 'tzserver' : $conf->tzuserinputkey);
|
||||
}
|
||||
//print 'gm:'.$gm.' gm === auto:'.($gm === 'auto').'<br>';exit;
|
||||
|
||||
// Clean parameters
|
||||
if ($hour == -1 || empty($hour)) {
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ $(document).ready(function () {
|
|||
<input type="hidden" name="token" value="<?php echo newToken(); ?>" />
|
||||
<input type="hidden" name="actionlogin" value="login">
|
||||
<input type="hidden" name="loginfunction" value="loginfunction" />
|
||||
<!-- Add fields to send local user information -->
|
||||
<!-- Add fields to store and send local user information. This fields are filled by the core/js/dst.js -->
|
||||
<input type="hidden" name="tz" id="tz" value="" />
|
||||
<input type="hidden" name="tz_string" id="tz_string" value="" />
|
||||
<input type="hidden" name="dst_observed" id="dst_observed" value="" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user