Templatized Events Calendar.
This commit is contained in:
parent
f3872bc104
commit
86d374258c
6 changed files with 318 additions and 114 deletions
|
|
@ -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> · <tmpl_var calendar.pageList> · <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> · <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> · <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');
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"} = '«'.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).'»';
|
||||
$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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue