fix: Event calendar SCOPE doesn't work!!
This commit is contained in:
parent
e81ce2759a
commit
5675e101c9
3 changed files with 60 additions and 34 deletions
|
|
@ -15,7 +15,8 @@
|
||||||
- fix - WebGUI::Form::File doesn't use WebGUI::Form::Hidden
|
- fix - WebGUI::Form::File doesn't use WebGUI::Form::Hidden
|
||||||
- fixed various bugs in the time tracking app
|
- fixed various bugs in the time tracking app
|
||||||
- fixed a few bugs in the graphic system
|
- fixed a few bugs in the graphic system
|
||||||
- fix - Link to a page in the Webgui Page Tree
|
- fix - Link to a page in the Webgui Page Tree not working in IE
|
||||||
|
- fix - Event calendar SCOPE doesn't work!! (Wouter van Oijen / ProcoliX)
|
||||||
- better HTML compliancy
|
- better HTML compliancy
|
||||||
- fixed a lot of POD
|
- fixed a lot of POD
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,14 @@ our @ISA = qw(WebGUI::Asset);
|
||||||
sub definition {
|
sub definition {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
my $definition = shift;
|
my $definition = shift;
|
||||||
my $i18n = WebGUI::International->new($session,"Asset_Event");
|
my $i18n = WebGUI::International->new($session,"Asset_Event");
|
||||||
push(@{$definition}, {
|
push(@{$definition}, {
|
||||||
assetName=>$i18n->get('assetName'),
|
assetName=>$i18n->get('assetName'),
|
||||||
icon=>'calendar.gif',
|
icon=>'calendar.gif',
|
||||||
tableName=>'EventsCalendar_event',
|
tableName=>'EventsCalendar_event',
|
||||||
className=>'WebGUI::Asset::Event',
|
className=>'WebGUI::Asset::Event',
|
||||||
properties=>{
|
properties=>{
|
||||||
description => {
|
description => {
|
||||||
fieldType=>"HTMLArea",
|
fieldType=>"HTMLArea",
|
||||||
defaultValue=>undef
|
defaultValue=>undef
|
||||||
|
|
@ -195,7 +195,7 @@ sub processPropertiesFromFormPost {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 purgeCache ()
|
=head2 purgeCache ( )
|
||||||
|
|
||||||
See WebGUI::Asset::purgeCache() for details.
|
See WebGUI::Asset::purgeCache() for details.
|
||||||
|
|
||||||
|
|
@ -236,40 +236,65 @@ sub view {
|
||||||
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
|
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
|
||||||
return $out if $out;
|
return $out if $out;
|
||||||
}
|
}
|
||||||
my ($output, $event, $id);
|
my ($output, $id);
|
||||||
my %var = $self->get;
|
my %var = $self->get;
|
||||||
|
my $dt = $self->session->datetime;
|
||||||
my $i18n = WebGUI::International->new($self->session,"Asset_Event");
|
my $i18n = WebGUI::International->new($self->session,"Asset_Event");
|
||||||
$event = $self;
|
$var{'title'} = $self->getValue('title');
|
||||||
$var{title} = $event->getValue("title");
|
$var{'start.label'} = $i18n->get(14);
|
||||||
$var{"start.label"} = $i18n->get(14);
|
$var{'start.date'} = $dt->epochToHuman($self->getValue('eventStartDate'),"%z");
|
||||||
$var{"start.date"} =$self->session->datetime->epochToHuman($self->getValue("eventStartDate"),"%z");
|
$var{'start.time'} = $dt->epochToHuman($self->getValue('eventStartDate'),"%Z");
|
||||||
$var{"start.time"} =$self->session->datetime->epochToHuman($self->getValue("eventStartDate"),"%Z");
|
$var{'end.label'} = $i18n->get(15);
|
||||||
$var{"end.label"} = $i18n->get(15);
|
$var{'end.date'} = $dt->epochToHuman($self->getValue('eventEndDate'),'%z');
|
||||||
$var{"end.date"} =$self->session->datetime->epochToHuman($self->getValue("eventEndDate"),"%z");
|
$var{'end.time'} = $dt->epochToHuman($self->getValue('eventEndDate'),'%Z');
|
||||||
$var{"end.time"} =$self->session->datetime->epochToHuman($self->getValue("eventEndDate"),"%Z");
|
$var{'canEdit'} = $self->canEdit;
|
||||||
$var{canEdit} = $self->canEdit;
|
$var{'edit.url'} = $self->session->url->page('func=edit');
|
||||||
$var{"edit.url"} = $self->session->url->page('func=edit');
|
$var{'edit.label'} = $i18n->get(575);
|
||||||
$var{"edit.label"} = $i18n->get(575);
|
$var{'delete.url'} = $self->session->url->page('func=deleteEvent;rid='.$self->getValue('EventsCalendar_recurringId'));
|
||||||
$var{"delete.url"} = $self->session->url->page('func=deleteEvent;rid='.$self->getValue("EventsCalendar_recurringId"));
|
$var{'delete.label'} = $i18n->get(576);
|
||||||
$var{"delete.label"} = $i18n->get(576);
|
|
||||||
my @others;
|
my @others;
|
||||||
my ($start, $garbage, $end);
|
my ($start, $garbage, $end);
|
||||||
($start, $garbage) = $self->session->datetime->dayStartEnd($self->get("eventStartDate"));
|
($start, $garbage) = $dt->dayStartEnd($self->get('eventStartDate'));
|
||||||
($garbage, $end) = $self->session->datetime->dayStartEnd($self->get("eventEndDate"));
|
($garbage, $end) = $dt->dayStartEnd($self->get('eventEndDate'));
|
||||||
my $sth = $self->session->db->read("select assetId from EventsCalendar_event where ((eventStartDate >= $start and eventStartDate <= $end) or (eventEndDate >= $start and eventEndDate <= $end)) and assetId<>".$self->session->db->quote($self->getId));
|
|
||||||
while (my ($assetId) = $sth->array) {
|
my $calendar = $self->getParent();
|
||||||
my $asset = WebGUI::Asset::Event->new($self->session, $assetId);
|
my $scope = $calendar->get('scope');
|
||||||
# deal with multiple versions of the same event with conflicting dates
|
my $events;
|
||||||
next unless (($asset->get("eventStartDate") >= $start && $asset->get("eventStartDate") <= $end) || ($asset->get("eventEndDate") >= $start && $asset->get("eventEndDate") <= $end));
|
if ($scope == 0) { # Calendar Scope is Regular
|
||||||
|
$events = $calendar->getLineage(['children'],
|
||||||
|
{returnObjects=>1,
|
||||||
|
includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
|
} elsif ($scope == 2) { # Calendar Scope is Master
|
||||||
|
$events = $calendar->getLineage(['descendants'],
|
||||||
|
{returnObjects=>1,
|
||||||
|
includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
|
} elsif ($scope == 1) { # Calendar Scope is Global
|
||||||
|
my $root = WebGUI::Asset->getRoot($self->session);
|
||||||
|
$events = $root->getLineage(['descendants'],
|
||||||
|
{returnObjects=>1,
|
||||||
|
includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $event (@{$events}) {
|
||||||
|
# skip events that are already ended
|
||||||
|
next if ($event->get('eventEndDate') < $start);
|
||||||
|
# skip events that are in the future
|
||||||
|
next if ($event->get('eventStartDate') > $end);
|
||||||
|
# skip events we are not allowed to see
|
||||||
|
next unless ($event->canView);
|
||||||
|
# skip self
|
||||||
|
next if ($event->get('assetId') eq $self->get('assetId'));
|
||||||
|
|
||||||
push(@others,{
|
push(@others,{
|
||||||
url=>$asset->getUrl,
|
url=>$event->getUrl,
|
||||||
title=>$asset->getTitle,
|
title=>$event->getTitle,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$var{others_loop} = \@others;
|
$var{others_loop} = \@others;
|
||||||
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
|
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
|
||||||
if ($self->session->user->userId eq '1') {
|
if ($self->session->user->userId eq '1') {
|
||||||
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->getParent->get("visitorCacheTimeout"));
|
my $cache = WebGUI::Cache->new($self->session,'view_'.$self->getId);
|
||||||
|
$cache->set($out,$self->getParent->get('visitorCacheTimeout'));
|
||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,7 @@ sub view {
|
||||||
$events = $self->getLineage(['descendants'],
|
$events = $self->getLineage(['descendants'],
|
||||||
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
} elsif ($scope == 1) { # Calendar Scope is Global
|
} elsif ($scope == 1) { # Calendar Scope is Global
|
||||||
$events = WebGUI::Asset::getRoot($session)->getLineage(['descendants'],
|
$events = WebGUI::Asset->getRoot($session)->getLineage(['descendants'],
|
||||||
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
}
|
}
|
||||||
# Sort events by startDate, then endDate
|
# Sort events by startDate, then endDate
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue