Templatized Events Calendar.

This commit is contained in:
JT Smith 2002-11-25 05:50:58 +00:00
parent f3872bc104
commit 86d374258c
6 changed files with 318 additions and 114 deletions

View file

@ -35,8 +35,36 @@ delete from groups where groupId=9;
delete from groupings where groupId=9;
delete from groupGroupings where groupId=9;
delete from groupGroupings where inGroup=9;
alter table EventsCalendar add column startMonth varchar(35) not null default 'current';
alter table EventsCalendar add column endMonth varchar(35) not null default 'after12';
alter table EventsCalendar add column defaultMonth varchar(35) not null default 'current';
alter table EventsCalendar add column templateId int not null default 1;
alter table EventsCalendar add column eventTemplateId int not null default 1;
update EventsCalendar set templateId=2 where calendarLayout <> 'calendarMonth';
delete from international where namespace='EventsCalendar' and internationalId=17;
delete from international where namespace='EventsCalendar' and internationalId=18;
delete from international where namespace='EventsCalendar' and internationalId=74;
delete from international where namespace='EventsCalendar' and internationalId=16;
delete from international where namespace='EventsCalendar' and internationalId=21;
delete from international where namespace='EventsCalendar' and internationalId=1;
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (91,1,'EventsCalendar','Add a new event.', 1038190852);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (82,1,'EventsCalendar','Current.', 1038190803);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (83,1,'EventsCalendar','First in the calendar.', 1038190781);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (85,1,'EventsCalendar','Last in the calendar.', 1038190764);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (90,1,'EventsCalendar','Default Month', 1038190708);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (89,1,'EventsCalendar','Show 3 months from start.', 1038190646);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (88,1,'EventsCalendar','Show 6 months from start.', 1038190632);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (87,1,'EventsCalendar','Show 9 months from start.', 1038190626);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (86,1,'EventsCalendar','Show 12 months from start.', 1038190601);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (84,1,'EventsCalendar','End Month', 1038190527);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (81,1,'EventsCalendar','Start Month', 1038190442);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (80,1,'EventsCalendar','Event Template', 1038190379);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (79,1,'EventsCalendar','Main Template', 1038190356);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (93,1,'EventsCalendar','Next Event', 1038202290);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (92,1,'EventsCalendar','Previous Event', 1038202281);
INSERT INTO template VALUES (1,'Calendar Month (Big)','<tmpl_if displayTitle>\r\n <h1><tmpl_var title></h1>\r\n</tmpl_if>\r\n\r\n<tmpl_if description>\r\n <tmpl_var description><p/>\r\n</tmpl_if>\r\n\r\n<tmpl_if session.var.adminOn>\r\n <a href=\"<tmpl_var addevent.url>\"><tmpl_var addevent.label></a>\r\n <p/>\r\n</tmpl_if>\r\n\r\n<tmpl_var bigCalendar>\r\n\r\n<tmpl_if calendar.multiplePages>\r\n <div class=\"pagination\">\r\n <tmpl_var calendar.previousPage> &middot; <tmpl_var calendar.pageList> &middot; <tmpl_var calendar.nextPage>\r\n </div>\r\n</tmpl_if>','EventsCalendar');
INSERT INTO template VALUES (2,'Events List','<tmpl_if displayTitle>\r\n <h1><tmpl_var title></h1>\r\n</tmpl_if>\r\n\r\n<tmpl_if description>\r\n <tmpl_var description><p/>\r\n</tmpl_if>\r\n\r\n<tmpl_if session.var.adminOn>\r\n <a href=\"<tmpl_var addevent.url>\"><tmpl_var addevent.label></a>\r\n <p/>\r\n</tmpl_if>\r\n\r\n<tmpl_loop list_loop>\r\n <tmpl_unless list.sameAsPrevious>\r\n <b><tmpl_var list.date></b>\r\n </tmpl_unless>\r\n <blockquote>\r\n <tmpl_if session.var.adminOn>\r\n <tmpl_var list.controls>\r\n </tmpl_if>\r\n <i><tmpl_var list.title></i>\r\n <tmpl_if list.description>\r\n - <tmpl_var list.description>\r\n </tmpl_if>\r\n <p/>\r\n </blockquote>\r\n</tmpl_loop>\r\n\r\n<tmpl_if list.multiplePages>\r\n <div class=\"pagination\">\r\n <tmpl_var list.previousPage> &middot; <tmpl_var list.nextPage>\r\n </div>\r\n</tmpl_if>','EventsCalendar');
INSERT INTO template VALUES (3,'Calendar Month (Small)','<tmpl_if displayTitle>\r\n <h1><tmpl_var title></h1>\r\n</tmpl_if>\r\n\r\n<tmpl_if description>\r\n <tmpl_var description><p/>\r\n</tmpl_if>\r\n\r\n<tmpl_if session.var.adminOn>\r\n <a href=\"<tmpl_var addevent.url>\"><tmpl_var addevent.label></a>\r\n <p/>\r\n</tmpl_if>\r\n\r\n<tmpl_var smallCalendar>\r\n\r\n<tmpl_if calendar.multiplePages>\r\n <div class=\"pagination\">\r\n <tmpl_var calendar.previousPage> &middot; <tmpl_var calendar.nextPage>\r\n </div>\r\n</tmpl_if>','EventsCalendar');
INSERT INTO template VALUES (1,'Default Event','<h1><tmpl_var title></h1>\r\n\r\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">\r\n<tr>\r\n<td valign=\"top\" class=\"tableHeader\" width=\"100%\">\r\n<b><tmpl_var start.label>:</b> <tmpl_var start.date><br>\r\n<b><tmpl_var end.label>:</b> <tmpl_var end.date><br>\r\n</td><td valign=\"top\" class=\"tableMenu\" nowrap=\"1\">\r\n\r\n<tmpl_if canEdit>\r\n <a href=\"<tmpl_var edit.url>\"><tmpl_var edit.label></a><br>\r\n <a href=\"<tmpl_var delete.url>\"><tmpl_var delete.label></a><br>\r\n</tmpl_if>\r\n\r\n<tmpl_if previous.url>\r\n <a href=\"<tmpl_var previous.url>\"><tmpl_var previous.label></a><br>\r\n</tmpl_if>\r\n\r\n<tmpl_if next.url>\r\n <a href=\"<tmpl_var next.url>\"><tmpl_var next.label></a><br>\r\n</tmpl_if>\r\n\r\n</td></tr>\r\n</table>\r\n<tmpl_var description>','EventsCalendar/Event');

View file

@ -399,6 +399,32 @@ sub localtime {
return Date::Calc::Localtime($_[0]);
}
#-------------------------------------------------------------------
=head2 monthCount ( startEpoch, endEpoch )
Returns the number of months between the start and end dates
(inclusive).
=item startEpoch
An epoch datestamp corresponding to the first month.
=item endEpoch
An epoch datestamp corresponding to the last month.
=cut
sub monthCount {
my ($start, $end) = @_;
my $count = 1;
while (addToDate($start,0,$count,0) < $end) {
$count++;
}
return $count;
}
#-------------------------------------------------------------------
=head2 monthStartEnd ( epoch )

View file

@ -56,6 +56,7 @@ use WebGUI::SQL;
$f->text("firstName", "First Name");
$f->textarea("emailMessage","Email Message");
$f->url("homepage","Home Page");
$f->whatNext(\%options);
$f->yesNo("happy","Are you happy?");
$f->zipcode("workZip","Office Zip Code");
@ -1775,7 +1776,7 @@ sub url {
#-------------------------------------------------------------------
=head2 whatNext ( hashRef ] )
=head2 whatNext ( options [, value, name, label, subtext, uiLevel, extras ] )
Adds a "What next?" select list to this form for use with chained
action forms in WebGUI.

View file

@ -337,7 +337,7 @@ sub getPageData {
=cut
sub getPageNumber {
return $_[0]->{_pn} || 1;
return $_[0]->{_pn};
}
#-------------------------------------------------------------------
@ -429,12 +429,12 @@ sub getPreviousPageLink {
sub new {
my ($class, $currentURL, $rowsPerPage, $rowRef, $formVar, $pageRef, $pn);
$class = shift;
$currentURL = shift;
$rowRef = shift;
$rowsPerPage = shift || 25;
$pn = shift || $session{form}{$formVar};
$formVar = shift || "pn";
$class = $_[0];
$currentURL = $_[1];
$rowRef = $_[2];
$rowsPerPage = $_[3] || 25;
$formVar = $_[5] || "pn";
$pn = $_[4] || $session{form}{$formVar} || 1;
bless {_url => $currentURL, _rpp => $rowsPerPage, _rowRef => $rowRef, _formVar => $formVar, _pn => $pn}, $class;
}

View file

@ -95,7 +95,7 @@ sub process {
#$value = '{'.join(', ',map {"$_ => $value->{$_}"} keys %$value).'}';
}
unless (lc($key) eq "password" || lc($key) eq "identifier") {
$t->param($section.".".$key=>$value);
$t->param("session.".$section.".".$key=>$value);
}
}
}

View file

@ -21,6 +21,7 @@ use WebGUI::Paginator;
use WebGUI::Privilege;
use WebGUI::Session;
use WebGUI::SQL;
use WebGUI::Template;
use WebGUI::URL;
use WebGUI::Utility;
use WebGUI::Wobject;
@ -30,7 +31,7 @@ our $namespace = "EventsCalendar";
our $name = WebGUI::International::get(2,$namespace);
#-------------------------------------------------------------------
sub _calendarLayout {
sub _drawBigCalendar {
my ($thisMonth, $calendar, $message, $start, $end, $sth, %event, $nextDate);
tie %event, 'Tie::CPHash';
$thisMonth = epochToHuman($_[1],"%M %y");
@ -80,7 +81,59 @@ sub _calendarLayout {
}
}
$sth->finish;
return '<script language="JavaScript">function popUp(message) { alert(message); }</script>'.$calendar->as_HTML;
return $calendar->as_HTML;
}
#-------------------------------------------------------------------
sub _drawSmallCalendar {
my ($thisMonth, $calendar, $message, $start, $end, $sth, %event, $nextDate);
tie %event, 'Tie::CPHash';
$thisMonth = epochToHuman($_[1],"%M %y");
$calendar = new HTML::CalendarMonthSimple('year'=>epochToHuman($_[1],"%y"),'month'=>epochToHuman($_[1],"%M"));
$calendar->width(200);
$calendar->border(0);
$calendar->cellclass("tableData");
$calendar->todaycellclass("tableHeader");
$calendar->headerclass("tableHeader");
$calendar->mondayisfirstday($session{user}{firstDayOfWeek});
$calendar->sunday(substr(WebGUI::International::get(27),0,1));
#$calendar->showweekdayheaders(0);
$calendar->weekdays(
substr(WebGUI::International::get(28),0,1),
substr(WebGUI::International::get(29),0,1),
substr(WebGUI::International::get(30),0,1),
substr(WebGUI::International::get(31),0,1),
substr(WebGUI::International::get(32),0,1)
);
$calendar->saturday(substr(WebGUI::International::get(33),0,1));
$calendar->monthname(WebGUI::DateTime::getMonthName($calendar->month));
$calendar->header('<b>'.$calendar->monthname.' '.$calendar->year.'</b>');
($start,$end) = monthStartEnd($_[1]);
$sth = WebGUI::SQL->read("select * from EventsCalendar_event where wobjectId="
.$_[0]->get("wobjectId")." order by startDate,endDate");
while (%event = $sth->hash) {
if (epochToHuman($event{startDate},"%M %y") eq $thisMonth || epochToHuman($event{endDate},"%M %y") eq $thisMonth) {
if ($event{startDate} == $event{endDate}) {
$calendar->setdatehref(epochToHuman($event{startDate},"%D"),
WebGUI::URL::page('wid='.$_[0]->get("wobjectId")
.'&func=viewEvent&eid='.$event{EventsCalendar_eventId}));
#$calendar->datecellclass(epochToHuman($nextDate,"%D"),"highlight");
} else {
$nextDate = $event{startDate};
while($nextDate <= $event{endDate}) {
if (epochToHuman($nextDate,"%M %y") eq $thisMonth) {
$calendar->setdatehref(epochToHuman($nextDate,"%D"),
WebGUI::URL::page('wid='.$_[0]->get("wobjectId")
.'&func=viewEvent&eid='.$event{EventsCalendar_eventId}));
#$calendar->datecellclass(epochToHuman($nextDate,"%D"),"highlight");
}
$nextDate = addToDate($nextDate,0,0,1);
}
}
}
}
$sth->finish;
return $calendar->as_HTML;
}
#-------------------------------------------------------------------
@ -89,7 +142,11 @@ sub duplicate {
$w = $_[0]->SUPER::duplicate($_[1]);
$w = WebGUI::Wobject::EventsCalendar->new({wobjectId=>$w,namespace=>$namespace});
$w->set({
calendarLayout=>$_[0]->get("calendarLayout"),
templateId=>$_[0]->get("templateId"),
eventTemplateId=>$_[0]->get("eventTemplateId"),
startMonth=>$_[0]->get("startMonth"),
endMonth=>$_[0]->get("endMonth"),
defaultMonth=>$_[0]->get("defaultMonth"),
paginateAfter=>$_[0]->get("paginateAfter")
});
$sth = WebGUI::SQL->read("select * from EventsCalendar_event where wobjectId="
@ -114,7 +171,7 @@ sub purge {
#-------------------------------------------------------------------
sub set {
$_[0]->SUPER::set($_[1],[qw(calendarLayout paginateAfter)]);
$_[0]->SUPER::set($_[1],[qw(templateId eventTemplateId startMonth endMonth defaultMonth paginateAfter)]);
}
#-------------------------------------------------------------------
@ -148,21 +205,70 @@ sub www_deleteEventConfirm {
#-------------------------------------------------------------------
sub www_edit {
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage());
my ($output, %hash, $f, $paginateAfter, $proceed);
tie %hash, 'Tie::IxHash';
if ($_[0]->get("wobjectId") eq "new") {
$proceed = 1;
}
my ($output, $startMonth, $endMonth, $afterEdit, $defaultMonth, $f, $paginateAfter);
$paginateAfter = $_[0]->get("paginateAfter") || 50;
$startMonth = $_[0]->get("startMonth") || "current";
$endMonth = $_[0]->get("endMonth") || "after12";
$defaultMonth = $_[0]->get("defaultMonth") || "current";
$afterEdit = 'func=edit&wid='.$_[0]->get("wobjectId") if ($_[0]->get("wobjectId") ne "new");
$output = helpIcon(1,$namespace);
$output .= '<h1>'.WebGUI::International::get(12,$namespace).'</h1>';
$f = WebGUI::HTMLForm->new;
%hash = (list => WebGUI::International::get(17,$namespace),
calendarMonth => WebGUI::International::get(18,$namespace));
# calendarMonthSmall => WebGUI::International::get(74,$namespace));
$f->select("calendarLayout",\%hash,WebGUI::International::get(16,$namespace),[$_[0]->get("calendarLayout")]);
$f->template(
-name=>"templateId",
-value=>$_[0]->get("templateId"),
-namespace=>$namespace,
-label=>WebGUI::International::get(79,$namespace),
-afterEdit=>$afterEdit
);
$f->template(
-name=>"eventTemplateId",
-value=>$_[0]->get("eventTemplateId"),
-namespace=>$namespace."/Event",
-label=>WebGUI::International::get(80,$namespace),
-afterEdit=>$afterEdit
);
$f->select(
-name=>"startMonth",
-options=>{
"current"=>WebGUI::International::get(82,$namespace),
"first"=>WebGUI::International::get(83,$namespace)
},
-label=>WebGUI::International::get(81,$namespace),
-value=>[$startMonth]
);
$f->select(
-name=>"endMonth",
-options=>{
"last"=>WebGUI::International::get(85,$namespace),
"after12"=>WebGUI::International::get(86,$namespace),
"after9"=>WebGUI::International::get(87,$namespace),
"after6"=>WebGUI::International::get(88,$namespace),
"after3"=>WebGUI::International::get(89,$namespace),
"current"=>WebGUI::International::get(82,$namespace),
},
-label=>WebGUI::International::get(84,$namespace),
-value=>[$endMonth]
);
$f->select(
-name=>"defaultMonth",
-options=>{
"current"=>WebGUI::International::get(82,$namespace),
"last"=>WebGUI::International::get(85,$namespace),
"first"=>WebGUI::International::get(83,$namespace)
},
-label=>WebGUI::International::get(90,$namespace),
-value=>[$defaultMonth]
);
$f->integer("paginateAfter",WebGUI::International::get(19,$namespace),$paginateAfter);
$f->yesNo("proceed",WebGUI::International::get(21,$namespace),$proceed);
if ($_[0]->get("wobjectId") eq "new") {
$f->whatNext(
-options=>{
addEvent=>WebGUI::International::get(91,$namespace),
backToPage=>WebGUI::International::get(745)
}
);
}
$output .= $_[0]->SUPER::www_edit($f->printRowsOnly);
return $output;
}
@ -171,7 +277,11 @@ sub www_edit {
sub www_editSave {
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage());
$_[0]->SUPER::www_editSave({
calendarLayout=>$session{form}{calendarLayout},
templateId=>$session{form}{templateId},
eventTemplateId=>$session{form}{eventTemplateId},
startMonth=>$session{form}{startMonth},
endMonth=>$session{form}{endMonth},
defaultMonth=>$session{form}{defaultMonth},
paginateAfter=>$session{form}{paginateAfter}
});
if ($session{form}{proceed}) {
@ -220,7 +330,12 @@ sub www_editEvent {
$f->HTMLArea("description",WebGUI::International::get(85),$event{description});
$f->date("startDate",WebGUI::International::get(14,$namespace),$event{startDate},
'onBlur="this.form.endDate.value=this.form.startDate.value;this.form.until.value=this.form.startDate.value;"');
$f->date("endDate",WebGUI::International::get(15,$namespace),$event{endDate});
$f->date(
-name=>"endDate",
-label=>WebGUI::International::get(15,$namespace),
-value=>$event{endDate},
-extras=>'onBlur="this.form.until.value=this.form.endDate.value;"'
);
$f->raw($special);
$f->yesNo("proceed",WebGUI::International::get(21,$namespace));
$f->submit;
@ -285,104 +400,138 @@ sub www_editEventSave {
#-------------------------------------------------------------------
sub www_view {
my (%event, $p, $output, $sth, $flag, %previous, $junk, @row, $i, $maxDate, $minDate, $nextDate, $first, $last);
tie %event, 'Tie::CPHash';
my (%var, $sameDate, $p, @list, $date, $flag, %previous, @row, $i, $maxDate, $minDate);
tie %previous, 'Tie::CPHash';
$output = $_[0]->displayTitle;
$output .= $_[0]->description;
if ($session{var}{adminOn}) {
$output .= '<p><a href="'.WebGUI::URL::page('func=editEvent&eid=new&wid='.$_[0]->get("wobjectId")).'">'
.WebGUI::International::get(20,$namespace).'</a><p>';
$var{"addevent.url"} = WebGUI::URL::page('func=editEvent&eid=new&wid='.$_[0]->get("wobjectId"));
$var{"addevent.label"} = WebGUI::International::get(20,$namespace);
if ($_[0]->get("startMonth") eq "first") {
($minDate) = WebGUI::SQL->quickArray("select min(startDate) from EventsCalendar_event
where wobjectId=".$_[0]->get("wobjectId"));
}
($minDate) = WebGUI::SQL->quickArray("select min(startDate) from EventsCalendar_event where wobjectId=".$_[0]->get("wobjectId"));
($maxDate) = WebGUI::SQL->quickArray("select max(endDate) from EventsCalendar_event where wobjectId=".$_[0]->get("wobjectId"));
($junk, $maxDate) = WebGUI::DateTime::monthStartEnd($maxDate);
unless ($minDate && $maxDate) {
$minDate = time();
$maxDate = time()+86400;
$minDate = $minDate || time();
if ($_[0]->get("endMonth") eq "last") {
($maxDate) = WebGUI::SQL->quickArray("select max(endDate) from EventsCalendar_event where
wobjectId=".$_[0]->get("wobjectId"));
} elsif ($_[0]->get("endMonth") eq "after12") {
$maxDate = WebGUI::DateTime::addToDate($minDate,0,12,0);
} elsif ($_[0]->get("endMonth") eq "after9") {
$maxDate = WebGUI::DateTime::addToDate($minDate,0,9,0);
} elsif ($_[0]->get("endMonth") eq "after6") {
$maxDate = WebGUI::DateTime::addToDate($minDate,0,6,0);
} elsif ($_[0]->get("endMonth") eq "after3") {
$maxDate = WebGUI::DateTime::addToDate($minDate,0,3,0);
}
if ($_[0]->get("calendarLayout") eq "calendarMonth") {
$nextDate = $minDate;
while ($nextDate <= $maxDate) {
$row[$i] = _calendarLayout($_[0],$nextDate);
($first,$last) = WebGUI::DateTime::monthStartEnd($nextDate);
if ($session{form}{pn} eq "" && $first <= time() && $last >= time()) {
$session{form}{pn} = $i+1;
}
$i++;
$nextDate = addToDate($nextDate,0,1,0);
$maxDate = $maxDate || time();
my $monthCount = WebGUI::DateTime::monthCount($minDate,$maxDate);
unless ($session{form}{pn}) {
$flag = 1;
if ($_[0]->get("defaultMonth") eq "current") {
$session{form}{pn} = WebGUI::DateTime::monthCount($minDate,time());
} elsif ($_[0]->get("defaultMonth") eq "last") {
$session{form}{pn} = WebGUI::DateTime::monthCount($minDate,$maxDate);
} else {
$session{form}{pn} = 1;
}
$p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,1);
$output .= $p->getBar($session{form}{pn}).
$p->getPage($session{form}{pn}).
$p->getBarTraditional($session{form}{pn});
}
for ($i=0;$i<$monthCount;$i++) {
if ($session{form}{pn} == ($i+1)) {
my $thisMonth = WebGUI::DateTime::addToDate($minDate,0,($i),0);
$var{bigCalendar} = $_[0]->_drawBigCalendar($thisMonth);
$var{smallCalendar} = $_[0]->_drawSmallCalendar($thisMonth);
}
$row[$i] = "page";
}
$p = WebGUI::Paginator->new("func=view&wid=".$_[0]->get("wobjectId"),\@row,1);
$var{"calendar.firstPage"} = $p->getFirstPageLink;
$var{"calendar.lastPage"} = $p->getLastPageLink;
$var{"calendar.nextPage"} = $p->getNextPageLink;
$var{"calendar.pageList"} = $p->getPageLinks;
$var{"calendar.previousPage"} = $p->getPreviousPageLink;
$var{"calendar.multiplePages"} = ($p->getNumberOfPages > 1);
if ($flag) {
$flag = 0;
$session{form}{pn} = "";
} else {
$sth = WebGUI::SQL->read("select * from EventsCalendar_event
where wobjectId=".$_[0]->get("wobjectId")." and endDate>".(time()-86400)." order by startDate,endDate");
while (%event = $sth->hash) {
unless ($event{startDate} == $previous{startDate}
&& $event{endDate} == $previous{endDate}) {
$row[$i] = "<b>".epochToHuman($event{startDate},"%c %D");
if (epochToHuman($event{startDate},"%y") ne epochToHuman($event{endDate},"%y")) {
$row[$i] .= ", ".epochToHuman($event{startDate},"%y");
$flag = 1;
}
if ($flag || epochToHuman($event{startDate},"%c") ne epochToHuman($event{endDate},"%c")) {
$row[$i] .= " - ".epochToHuman($event{endDate},"%c %D");
} elsif (epochToHuman($event{startDate},"%D") ne epochToHuman($event{endDate},"%D")) {
$row[$i] .= " - ".epochToHuman($event{endDate},"%D");
}
$flag = 0;
$row[$i] .= ", ".epochToHuman($event{endDate},"%y");
$row[$i] .= "</b>";
$row[$i] .= "<br>";
}
%previous = %event;
if ($session{var}{adminOn}) {
$row[$i] .= deleteIcon('func=deleteEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event{EventsCalendar_eventId}
.'&rid='.$event{EventsCalendar_recurringEventId})
.editIcon('func=editEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event{EventsCalendar_eventId})
.' ';
}
$row[$i] .= '<span class="eventTitle">'.$event{name}.'</span>';
if ($event{description} ne "") {
$row[$i] .= ' - ';
$row[$i] .= ''.$event{description};
}
$row[$i] .= '<p>';
$i++;
}
$sth->finish;
$p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("paginateAfter"));
$output .= $p->getPage($session{form}{pn}).$p->getBarSimple($session{form}{pn});
}
return $_[0]->processMacros($output);
$p = WebGUI::Paginator->new("func=view&wid=".$_[0]->get("wobjectId"),[],$_[0]->get("paginateAfter"));
$p->setDataByQuery("select * from EventsCalendar_event where wobjectId=".$_[0]->get("wobjectId")
." and endDate>=$minDate and startDate<=$maxDate order by startDate,endDate");
my $events = $p->getPageData;
foreach my $event (@$events) {
if ($event->{startDate} == $previous{startDate} && $event->{endDate} == $previous{endDate}) {
$sameDate = 1;
} else {
$sameDate = 0;
}
$date = epochToHuman($event->{startDate},"%c %D");
if (epochToHuman($event->{startDate},"%y") ne epochToHuman($event->{endDate},"%y")) {
$date .= ", ".epochToHuman($event->{startDate},"%y");
$flag = 1;
}
if ($flag || epochToHuman($event->{startDate},"%c") ne epochToHuman($event->{endDate},"%c")) {
$date .= " - ".epochToHuman($event->{endDate},"%c %D");
} elsif (epochToHuman($event->{startDate},"%D") ne epochToHuman($event->{endDate},"%D")) {
$date .= " - ".epochToHuman($event->{endDate},"%D");
}
$flag = 0;
$date .= ", ".epochToHuman($event->{endDate},"%y");
%previous = %{$event};
push(@list, {
"list.date"=>$date,
"list.title"=>$event->{name},
"list.description"=>$event->{description},
"list.sameAsPrevious"=>$sameDate,
"list.url"=>WebGUI::URL::page('func=viewEvent&wid='.$_[0]->get("wobjectId").'&eid='
.$event->{EventsCalendar_eventId}),
"list.controls"=>deleteIcon('func=deleteEvent&wid='.$_[0]->get("wobjectId").'&eid='
.$event->{EventsCalendar_eventId}.'&rid='.$event->{EventsCalendar_recurringEventId})
.editIcon('func=editEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event->{EventsCalendar_eventId})
});
}
$var{list_loop} = \@list;
$var{"list.firstPage"} = $p->getFirstPageLink;
$var{"list.lastPage"} = $p->getLastPageLink;
$var{"list.nextPage"} = $p->getNextPageLink;
$var{"list.pageList"} = $p->getPageLinks;
$var{"list.previousPage"} = $p->getPreviousPageLink;
$var{"list.multiplePages"} = ($p->getNumberOfPages > 1);
return $_[0]->processMacros($_[0]->processTemplate($_[0]->get("templateId"),\%var));
}
#-------------------------------------------------------------------
sub www_viewEvent {
my ($output, %event);
my ($output, %event, %var, $id);
tie %event, 'Tie::CPHash';
%event = WebGUI::SQL->quickHash("select * from EventsCalendar_event where EventsCalendar_eventId=$session{form}{eid}");
$output = '<h1>'.$event{name}.'</h1>';
$output .= '<table width="100%" cellspacing="0" cellpadding="5" border="0">';
$output .= '<tr>';
$output .= '<td valign="top" class="tableHeader" width="100%">';
$output .= '<b>'.WebGUI::International::get(14,$namespace).':</b> '.epochToHuman($event{startDate},"%z").'<br>';
$output .= '<b>'.WebGUI::International::get(15,$namespace).':</b> '.epochToHuman($event{endDate},"%z").'<br>';
$output .= '</td><td valign="top" class="tableMenu" nowrap="1">';
if (WebGUI::Privilege::canEditPage()) {
$output .= '<a href="'.WebGUI::URL::page('func=editEvent&eid='.$session{form}{eid}.'&wid='
.$session{form}{wid}).'">'.WebGUI::International::get(575).'</a><br>';
$output .= '<a href="'.WebGUI::URL::page('func=deleteEvent&eid='.$session{form}{eid}.
'&wid='.$session{form}{wid}.'&rid='.$event{EventsCalendar_recurringEventId}).'">'
.WebGUI::International::get(576).'</a><br>';
}
$output .= '</td></tr>';
$output .= '</table>';
$output .= $event{description};
return WebGUI::Macro::process($output);
$var{title} = $event{name};
$var{"start.label"} = WebGUI::International::get(14,$namespace);
$var{"start.date"} = epochToHuman($event{startDate},"%z");
$var{"end.label"} = WebGUI::International::get(15,$namespace);
$var{"end.date"} = epochToHuman($event{endDate},"%z");
$var{canEdit} = WebGUI::Privilege::canEditPage();
$var{"edit.url"} = WebGUI::URL::page('func=editEvent&eid='.$session{form}{eid}.'&wid='.$session{form}{wid});
$var{"edit.label"} = WebGUI::International::get(575);
$var{"delete.url"} = WebGUI::URL::page('func=deleteEvent&eid='.$session{form}{eid}.'&wid='
.$session{form}{wid}.'&rid='.$event{EventsCalendar_recurringEventId});
$var{"delete.label"} = WebGUI::International::get(576);
($id) = WebGUI::SQL->quickArray("select EventsCalendar_eventId from EventsCalendar_event
where EventsCalendar_eventId<>$event{EventsCalendar_eventId} and
startDate<=$event{startDate} order by startDate desc, endDate desc");
$var{"previous.label"} = '&laquo;'.WebGUI::International::get(92,$namespace);
$var{"previous.url"} = WebGUI::URL::page("func=viewEvent&wid=".$_[0]->get("wobjectId")."&eid=".$id) if ($id);
($id) = WebGUI::SQL->quickArray("select EventsCalendar_eventId from EventsCalendar_event
where EventsCalendar_eventId<>$event{EventsCalendar_eventId} and
startDate>=$event{startDate} order by startDate, endDate");
$var{"next.label"} = WebGUI::International::get(93,$namespace).'&raquo;';
$var{"next.url"} = WebGUI::URL::page("func=viewEvent&wid=".$_[0]->get("wobjectId")."&eid=".$id) if ($id);
$var{description} = $event{description};
return WebGUI::Macro::process(
WebGUI::Template::process(
WebGUI::Template::get(
$_[0]->get("eventTemplateId"),
"EventsCalendar/Event"
),
\%var)
);
}
1;