getEventsIn window is inclusive. Fixes bug #11158
This commit is contained in:
parent
a473773214
commit
2159ab1fbc
3 changed files with 225 additions and 186 deletions
|
|
@ -31,6 +31,7 @@
|
||||||
- fixed #11138: RichEdit, upload image does not commit a version tag
|
- fixed #11138: RichEdit, upload image does not commit a version tag
|
||||||
- fixed ExpireIncompleteSurveyResponses Workflow: process responses for deleted users
|
- fixed ExpireIncompleteSurveyResponses Workflow: process responses for deleted users
|
||||||
- fixed #11157: calendar tool for entering add event date
|
- fixed #11157: calendar tool for entering add event date
|
||||||
|
- fixed #11158: Calendar iCal feed doesn't show today's all-day events
|
||||||
|
|
||||||
7.8.1
|
7.8.1
|
||||||
- mark $session->datetime->time as deprecated and remove its use from core code
|
- mark $session->datetime->time as deprecated and remove its use from core code
|
||||||
|
|
|
||||||
|
|
@ -786,8 +786,8 @@ sub getEventsIn {
|
||||||
&& Event.endTime IS NULL
|
&& Event.endTime IS NULL
|
||||||
&&
|
&&
|
||||||
!(
|
!(
|
||||||
Event.startDate >= '$endDate'
|
Event.startDate > '$endDate'
|
||||||
|| Event.endDate <= '$startDate'
|
|| Event.endDate < '$startDate'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|| !(
|
|| !(
|
||||||
|
|
@ -810,6 +810,7 @@ sub getEventsIn {
|
||||||
|
|
||||||
my $orderby = join ',', @order_priority;
|
my $orderby = join ',', @order_priority;
|
||||||
|
|
||||||
|
$self->session->log->warn("sql clause: $where");
|
||||||
my $events
|
my $events
|
||||||
= $self->getLineage(["descendants"], {
|
= $self->getLineage(["descendants"], {
|
||||||
returnObjects => 1,
|
returnObjects => 1,
|
||||||
|
|
@ -1901,15 +1902,17 @@ sub www_ical {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$dt_start = WebGUI::DateTime->new($self->session, time);
|
$dt_start = WebGUI::DateTime->new($session, time);
|
||||||
$dt_start->set_time_zone( $session->datetime->getTimeZone );
|
$dt_start->set_time_zone( $session->datetime->getTimeZone );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$session->log->warn("start1: ". $dt_start->toMysql);
|
||||||
|
|
||||||
my $dt_end;
|
my $dt_end;
|
||||||
my $end = $form->param("end");
|
my $end = $form->param("end");
|
||||||
if ($end) {
|
if ($end) {
|
||||||
$dt_end
|
$dt_end
|
||||||
= WebGUI::DateTime->new($self->session,
|
= WebGUI::DateTime->new($session,
|
||||||
mysql => $end,
|
mysql => $end,
|
||||||
time_zone => $session->datetime->getTimeZone,
|
time_zone => $session->datetime->getTimeZone,
|
||||||
);
|
);
|
||||||
|
|
@ -1918,6 +1921,8 @@ sub www_ical {
|
||||||
$dt_end = $dt_start->clone->add( seconds => $self->get('icalInterval') );
|
$dt_end = $dt_start->clone->add( seconds => $self->get('icalInterval') );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$session->log->warn("start2: ". $dt_start->toMysql);
|
||||||
|
$session->log->warn("end2: ". $dt_end->toMysql);
|
||||||
|
|
||||||
|
|
||||||
# Get all the events we're going to display
|
# Get all the events we're going to display
|
||||||
|
|
@ -1929,8 +1934,11 @@ sub www_ical {
|
||||||
. qq{VERSION:2.0\r\n};
|
. qq{VERSION:2.0\r\n};
|
||||||
|
|
||||||
# VEVENT:
|
# VEVENT:
|
||||||
|
$session->log->warn("before event processing");
|
||||||
EVENT: for my $event (@events) {
|
EVENT: for my $event (@events) {
|
||||||
|
$session->log->warn("have event: ");
|
||||||
next EVENT unless $event->canView();
|
next EVENT unless $event->canView();
|
||||||
|
$session->log->warn($event->getTitle);
|
||||||
$ical .= qq{BEGIN:VEVENT\r\n};
|
$ical .= qq{BEGIN:VEVENT\r\n};
|
||||||
|
|
||||||
### UID
|
### UID
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ use Data::Dumper;
|
||||||
use WebGUI::Asset::Wobject::Calendar;
|
use WebGUI::Asset::Wobject::Calendar;
|
||||||
use WebGUI::Asset::Event;
|
use WebGUI::Asset::Event;
|
||||||
|
|
||||||
plan tests => 15 + scalar @icalWrapTests;
|
plan tests => 14 + scalar @icalWrapTests;
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
||||||
|
|
@ -221,6 +221,30 @@ my $justAfterwt = $windowCal->addChild({
|
||||||
timeZone => $tz,
|
timeZone => $tz,
|
||||||
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||||
|
|
||||||
|
my $coincident = $windowCal->addChild({
|
||||||
|
className => 'WebGUI::Asset::Event',
|
||||||
|
title => 'Coincident with the window start and window end',
|
||||||
|
startDate => $startDt->toDatabaseDate,
|
||||||
|
endDate => $endDt->toDatabaseDate,
|
||||||
|
timeZone => $tz,
|
||||||
|
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||||
|
|
||||||
|
my $coincidentLow = $windowCal->addChild({
|
||||||
|
className => 'WebGUI::Asset::Event',
|
||||||
|
title => 'Coincident with the window start',
|
||||||
|
startDate => $startDt->toDatabaseDate,
|
||||||
|
endDate => $endDt->clone->add(days => 1)->toDatabaseDate,
|
||||||
|
timeZone => $tz,
|
||||||
|
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||||
|
|
||||||
|
my $coincidentHigh = $windowCal->addChild({
|
||||||
|
className => 'WebGUI::Asset::Event',
|
||||||
|
title => 'Coincident with the window end',
|
||||||
|
startDate => $startDt->clone->add( days => -1, )->toDatabaseDate,
|
||||||
|
endDate => $endDt->toDatabaseDate,
|
||||||
|
timeZone => $tz,
|
||||||
|
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||||
|
|
||||||
# wt suffix = with times
|
# wt suffix = with times
|
||||||
# inside
|
# inside
|
||||||
# insidewt
|
# insidewt
|
||||||
|
|
@ -228,6 +252,9 @@ my $justAfterwt = $windowCal->addChild({
|
||||||
# |-------------straddlewt---------------|
|
# |-------------straddlewt---------------|
|
||||||
# straddleLowwt
|
# straddleLowwt
|
||||||
# straddleHighwt
|
# straddleHighwt
|
||||||
|
# |----------coincident-----------|
|
||||||
|
# |----------coincidentLow------------------|
|
||||||
|
# |--------------------coincidentHigh-------|
|
||||||
# window: |-------------------------------|
|
# window: |-------------------------------|
|
||||||
# justBeforewt justAfterwt
|
# justBeforewt justAfterwt
|
||||||
# outside high
|
# outside high
|
||||||
|
|
@ -239,7 +266,7 @@ my $tag2 = WebGUI::VersionTag->getWorking($session);
|
||||||
$tag2->commit;
|
$tag2->commit;
|
||||||
WebGUI::Test->tagsToRollback($tag2);
|
WebGUI::Test->tagsToRollback($tag2);
|
||||||
|
|
||||||
is(scalar @{ $windowCal->getLineage(['children'])}, 10, 'added events to the window calendar');
|
is(scalar @{ $windowCal->getLineage(['children'])}, 13, 'added events to the window calendar');
|
||||||
|
|
||||||
my @window = $windowCal->getEventsIn($startDt->toDatabase, $endDt->toDatabase);
|
my @window = $windowCal->getEventsIn($startDt->toDatabase, $endDt->toDatabase);
|
||||||
|
|
||||||
|
|
@ -247,11 +274,14 @@ my @window = $windowCal->getEventsIn($startDt->toDatabase, $endDt->toDatabase);
|
||||||
#note join "\n", map { join ' ', $_->get('title'), $_->get('startDate'), $_->get('startTime')} @window;
|
#note join "\n", map { join ' ', $_->get('title'), $_->get('startDate'), $_->get('startTime')} @window;
|
||||||
#note $endDt->toDatabase;
|
#note $endDt->toDatabase;
|
||||||
|
|
||||||
is(scalar @window, 6, 'getEventsIn returned 6 events');
|
|
||||||
cmp_bag(
|
cmp_bag(
|
||||||
[ map { $_->get('title') } @window ],
|
[ map { $_->get('title') } @window ],
|
||||||
[ map { $_->get('title') } ($inside, $insidewt, $straddle, $straddleHighwt, $straddleLowwt, $straddlewt)],
|
[ map { $_->get('title') }
|
||||||
'..returns correct 6 events'
|
($inside, $insidewt,
|
||||||
|
$straddle, $straddleHighwt, $straddleLowwt, $straddlewt,
|
||||||
|
$coincident, $coincidentLow, $coincidentHigh, )
|
||||||
|
],
|
||||||
|
'..returns correct set of events'
|
||||||
);
|
);
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue