Added the Events Calendar wobject.
This commit is contained in:
parent
3216b92820
commit
b7f35d7ddd
4 changed files with 391 additions and 665 deletions
|
|
@ -1,207 +0,0 @@
|
|||
package WebGUI::Widget;
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
#####################################################################
|
||||
# NOTICE: Use of this subsystem is depricated and is not recommended.
|
||||
#####################################################################
|
||||
#####################################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2002 Plain Black Software.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use DBI;
|
||||
use Exporter;
|
||||
use strict qw(subs vars);
|
||||
use Tie::IxHash;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Node;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::Template;
|
||||
use WebGUI::URL;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&getProperties &purgeWidget &www_jumpDown &www_jumpUp &update &www_moveUp &www_moveDown &www_delete &www_deleteConfirm &www_cut &create &www_paste);
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _reorderWidgets {
|
||||
my ($sth, $i, $wid);
|
||||
$sth = WebGUI::SQL->read("select widgetId from widget where pageId=$_[0] order by templatePosition,sequenceNumber");
|
||||
while (($wid) = $sth->array) {
|
||||
$i++;
|
||||
WebGUI::SQL->write("update widget set sequenceNumber='$i' where widgetId=$wid");
|
||||
}
|
||||
$sth->finish;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub create {
|
||||
my ($widgetId, $nextSeq);
|
||||
$widgetId = getNextId("widgetId");
|
||||
($nextSeq) = WebGUI::SQL->quickArray("select max(sequenceNumber) from widget where pageId=$_[0]");
|
||||
$nextSeq += 1;
|
||||
WebGUI::SQL->write("insert into widget values ($widgetId, $_[0], '$_[1]', '$nextSeq', ".quote($_[2]).", '$_[3]', ".quote($_[4]).", '$_[5]', ".time().", '$session{user}{userId}', 0, 0, '$_[6]')");
|
||||
return $widgetId;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getPositions {
|
||||
my (%hash);
|
||||
tie %hash, "Tie::IxHash";
|
||||
%hash = WebGUI::Template::getPositions($session{page}{template});
|
||||
return %hash;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getProperties {
|
||||
my (%data);
|
||||
tie %data, 'Tie::CPHash';
|
||||
%data = WebGUI::SQL->quickHash("select * from widget,$_[0] where widget.widgetId=$_[1] and widget.widgetId=$_[0].widgetId");
|
||||
return %data;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub purgeWidget {
|
||||
my ($node);
|
||||
WebGUI::SQL->write("delete from $_[2] where widgetId=$_[0]",$_[1]);
|
||||
WebGUI::SQL->write("delete from widget where widgetId=$_[0]",$_[1]);
|
||||
$node = WebGUI::Node->new($_[0]);
|
||||
$node->delete;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub update {
|
||||
WebGUI::SQL->write("update widget set title=".quote($session{form}{title}).", displayTitle='$session{form}{displayTitle}', description=".quote($session{form}{description}).", processMacros='$session{form}{processMacros}', lastEdited=".time().", editedBy='$session{user}{userId}', templatePosition='$session{form}{templatePosition}' where widgetId=$session{form}{wid}");
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_cut {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update widget set pageId=2 where widgetId=".$session{form}{wid});
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_delete {
|
||||
my ($output);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$output = '<a href="'.WebGUI::URL::page('op=viewHelp&hid=14').'"><img src="'.
|
||||
$session{setting}{lib}.'/help.gif" border="0" align="right"></a>';
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(43);
|
||||
$output .= '<p>';
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('func=deleteConfirm&wid='.
|
||||
$session{form}{wid}).'">';
|
||||
$output .= WebGUI::International::get(44);
|
||||
$output .= '</a>';
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">';
|
||||
$output .= WebGUI::International::get(45);
|
||||
$output .= '</a></div>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteConfirm {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update widget set pageId=3 where widgetId=".$session{form}{wid});
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_jumpDown {
|
||||
my (@data, $thisSeq);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=9999 where widgetId=$session{form}{wid}");
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_jumpUp {
|
||||
my (@data, $thisSeq);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=0 where widgetId=$session{form}{wid}");
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
#-------------------------------------------------------------------
|
||||
sub www_moveDown {
|
||||
my (@data, $thisSeq);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from widget where widgetId=$session{form}{wid}");
|
||||
@data = WebGUI::SQL->quickArray("select widgetId from widget where pageId=$session{page}{pageId} and sequenceNumber=$thisSeq+1");
|
||||
if ($data[0] ne "") {
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=sequenceNumber+1 where widgetId=$session{form}{wid}");
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=sequenceNumber-1 where widgetId=$data[0]");
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
}
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_moveUp {
|
||||
my (@data, $thisSeq);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from widget where widgetId=$session{form}{wid}");
|
||||
@data = WebGUI::SQL->quickArray("select widgetId from widget where pageId=$session{page}{pageId} and sequenceNumber=$thisSeq-1");
|
||||
if ($data[0] ne "") {
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=sequenceNumber-1 where widgetId=$session{form}{wid}");
|
||||
WebGUI::SQL->write("update widget set sequenceNumber=sequenceNumber+1 where widgetId=$data[0]");
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
}
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_paste {
|
||||
my ($output, $nextSeq);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
($nextSeq) = WebGUI::SQL->quickArray("select max(sequenceNumber) from widget where pageId=$session{page}{pageId}");
|
||||
$nextSeq += 1;
|
||||
WebGUI::SQL->write("update widget set pageId=$session{page}{pageId}, sequenceNumber='$nextSeq' where widgetId=$session{form}{wid}");
|
||||
_reorderWidgets($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
@ -1,457 +0,0 @@
|
|||
package WebGUI::Widget::EventsCalendar;
|
||||
|
||||
our $namespace = "EventsCalendar";
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2002 Plain Black Software.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use HTML::CalendarMonthSimple;
|
||||
use Tie::CPHash;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Macro;
|
||||
use WebGUI::Paginator;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::Shortcut;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::URL;
|
||||
use WebGUI::Utility;
|
||||
use WebGUI::Widget;
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _calendarLayout {
|
||||
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("100%");
|
||||
$calendar->border(1);
|
||||
$calendar->cellclass("tableData");
|
||||
$calendar->todaycellclass("tableHeader");
|
||||
$calendar->headerclass("tableHeader");
|
||||
($start,$end) = monthStartEnd($_[1]);
|
||||
$sth = WebGUI::SQL->read("select name, description, startDate, endDate from EventsCalendar_event where widgetId='$_[0]' order by startDate,endDate");
|
||||
while (%event = $sth->hash) {
|
||||
if (epochToHuman($event{startDate},"%M %y") eq $thisMonth ||
|
||||
epochToHuman($event{endDate},"%M %y") eq $thisMonth) {
|
||||
$message = $event{name};
|
||||
if ($event{description}) {
|
||||
$message = '<a href=\'javascript:popUp("'.$event{description}.'");\'>'.
|
||||
$message.'</a>';
|
||||
}
|
||||
$message .= '<br>';
|
||||
if ($event{startDate} == $event{endDate}) {
|
||||
$calendar->addcontent(epochToHuman($event{startDate},"%D"),$message);
|
||||
} else {
|
||||
$nextDate = $event{startDate};
|
||||
while($nextDate <= $event{endDate}) {
|
||||
if (epochToHuman($nextDate,"%M %y") eq $thisMonth) {
|
||||
$calendar->addcontent(epochToHuman($nextDate,"%D"),$message);
|
||||
}
|
||||
$nextDate = addToDate($nextDate,0,0,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$sth->finish;
|
||||
return '<script language="JavaScript">function popUp(message) { alert(message); }</script>'.$calendar->as_HTML;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub duplicate {
|
||||
my ($sth, %data, $newWidgetId, $pageId, @row, $newEventId, $previousRecurringEventId);
|
||||
tie %data, 'Tie::CPHash';
|
||||
%data = getProperties($namespace,$_[0]);
|
||||
$pageId = $_[1] || $data{pageId};
|
||||
$newWidgetId = create($pageId,$namespace,$data{title},
|
||||
$data{displayTitle},$data{description},$data{processMacros},$data{templatePosition});
|
||||
WebGUI::SQL->write("insert into EventsCalendar values ($newWidgetId, '$data{calendarLayout}', '$data{paginateAfter}')");
|
||||
$sth = WebGUI::SQL->read("select * from EventsCalendar_event where widgetId=$_[0] order by recurringEventId");
|
||||
while (@row = $sth->array) {
|
||||
$newEventId = getNextId("eventId");
|
||||
if ($row[6] > 0 && $row[6] != $previousRecurringEventId) {
|
||||
$row[6] = getNextId("recurringEventId");
|
||||
$previousRecurringEventId = $row[6];
|
||||
}
|
||||
WebGUI::SQL->write("insert into EventsCalendar_event values ($newEventId, $newWidgetId, ".
|
||||
quote($row[2]).", ".quote($row[3]).", '".$row[4].
|
||||
"', '".$row[5]."', $row[6])");
|
||||
}
|
||||
$sth->finish;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub purge {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where widgetId=$_[0]",$_[1]);
|
||||
purgeWidget($_[0],$_[1],$namespace);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub widgetName {
|
||||
return WebGUI::International::get(2,$namespace);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_add {
|
||||
my ($output, %hash);
|
||||
tie %hash, "Tie::IxHash";
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$output = helpLink(1,$namespace);
|
||||
$output .= '<h1>'.WebGUI::International::get(3,$namespace).'</h1>';
|
||||
$output .= formHeader();
|
||||
$output .= WebGUI::Form::hidden("widget",$namespace);
|
||||
$output .= WebGUI::Form::hidden("func","addSave");
|
||||
$output .= '<table>';
|
||||
$output .= tableFormRow(WebGUI::International::get(99),
|
||||
WebGUI::Form::text("title",20,128,'Events Calendar'));
|
||||
$output .= tableFormRow(WebGUI::International::get(174),WebGUI::Form::checkbox("displayTitle",1,1));
|
||||
$output .= tableFormRow(WebGUI::International::get(175),WebGUI::Form::checkbox("processMacros",1));
|
||||
%hash = WebGUI::Widget::getPositions();
|
||||
$output .= tableFormRow(WebGUI::International::get(363),
|
||||
WebGUI::Form::selectList("templatePosition",\%hash));
|
||||
$output .= tableFormRow(WebGUI::International::get(85),WebGUI::Form::textArea("description",'',50,5,1));
|
||||
%hash = (list => WebGUI::International::get(17,$namespace),
|
||||
calendar => WebGUI::International::get(18,$namespace));
|
||||
$output .= tableFormRow(WebGUI::International::get(16,$namespace),
|
||||
WebGUI::Form::selectList("calendarLayout",\%hash));
|
||||
$output .= tableFormRow(WebGUI::International::get(19,$namespace),
|
||||
WebGUI::Form::text("paginateAfter",20,30,50));
|
||||
$output .= tableFormRow(WebGUI::International::get(1,$namespace),WebGUI::Form::checkbox("proceed",1,1));
|
||||
$output .= formSave();
|
||||
$output .= '</table></form>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_addSave {
|
||||
my ($widgetId);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$widgetId = create($session{page}{pageId},$session{form}{widget},
|
||||
$session{form}{title},$session{form}{displayTitle},$session{form}{description},
|
||||
$session{form}{processMacros},$session{form}{templatePosition});
|
||||
WebGUI::SQL->write("insert into EventsCalendar values ($widgetId, '$session{form}{calendarLayout}', '$session{form}{paginateAfter}')");
|
||||
if ($session{form}{proceed} == 1) {
|
||||
$session{form}{wid} = $widgetId;
|
||||
return www_addEvent();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_addEvent {
|
||||
my ($output, $today, %recursEvery);
|
||||
tie %recursEvery, 'Tie::IxHash';
|
||||
%recursEvery = ('never'=>WebGUI::International::get(4,$namespace),
|
||||
'day'=>WebGUI::International::get(5,$namespace),
|
||||
'week'=>WebGUI::International::get(6,$namespace)
|
||||
);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
($today) = epochToSet(time());
|
||||
$output = '<h1>'.WebGUI::International::get(7,$namespace).'</h1>';
|
||||
$output .= formHeader();
|
||||
$output .= WebGUI::Form::hidden("wid",$session{form}{wid});
|
||||
$output .= WebGUI::Form::hidden("func","addEventSave");
|
||||
$output .= '<table>';
|
||||
$output .= tableFormRow(WebGUI::International::get(99),WebGUI::Form::text("name",20,128));
|
||||
$output .= tableFormRow(WebGUI::International::get(85),
|
||||
WebGUI::Form::textArea("description",'',50,10,1));
|
||||
$output .= tableFormRow(WebGUI::International::get(14,$namespace),
|
||||
WebGUI::Form::text("startDate",20,30,$today,1,'onBlur="this.form.endDate.value=this.form.startDate.value;this.form.until.value=this.form.startDate.value;"'));
|
||||
$output .= tableFormRow(WebGUI::International::get(15,$namespace),
|
||||
WebGUI::Form::text("endDate",20,30,$today,1));
|
||||
$output .= tableFormRow(WebGUI::International::get(8,$namespace),WebGUI::Form::selectList("recursEvery",\%recursEvery).' '.WebGUI::International::get(9,$namespace).' '.WebGUI::Form::text("until",20,30,$today,1));
|
||||
$output .= formSave();
|
||||
$output .= '</table></form>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_addEventSave {
|
||||
my ($i, $recurringEventId, @startDate, @endDate, @eventId, $until);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$startDate[0] = setToEpoch($session{form}{startDate});
|
||||
$endDate[0] = setToEpoch($session{form}{endDate});
|
||||
$until = setToEpoch($session{form}{until});
|
||||
$eventId[0] = getNextId("eventId");
|
||||
if ($session{form}{recursEvery} eq "never") {
|
||||
$recurringEventId = 0;
|
||||
} elsif ($session{form}{recursEvery} eq "day") {
|
||||
$recurringEventId = getNextId("recurringEventId");
|
||||
while ($startDate[$i] < $until) {
|
||||
$i++;
|
||||
$eventId[$i] = getNextId("eventId");
|
||||
$startDate[$i] = $startDate[0] + (86400 * $i);
|
||||
$endDate[$i] = $endDate[0] + (86400 * $i);
|
||||
}
|
||||
} elsif ($session{form}{recursEvery} eq "week") {
|
||||
$recurringEventId = getNextId("recurringEventId");
|
||||
while ($startDate[$i] < $until) {
|
||||
$i++;
|
||||
$eventId[$i] = getNextId("eventId");
|
||||
$startDate[$i] = $startDate[0] + (604800 * $i);
|
||||
$endDate[$i] = $endDate[0] + (604800 * $i);
|
||||
}
|
||||
}
|
||||
$i = 0;
|
||||
while ($eventId[$i] > 0) {
|
||||
WebGUI::SQL->write("insert into EventsCalendar_event values ($eventId[$i], $session{form}{wid}, ".quote($session{form}{name}).", ".quote($session{form}{description}).", '".$startDate[$i]."', '".$endDate[$i]."', $recurringEventId)");
|
||||
$i++;
|
||||
}
|
||||
return www_edit();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_copy {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
duplicate($session{form}{wid});
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteEvent {
|
||||
my ($output);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$output = '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(10,$namespace);
|
||||
if ($session{form}{rid} > 0) {
|
||||
$output .= ' '.WebGUI::International::get(11,$namespace);
|
||||
}
|
||||
$output .= '?<p><div align="center"><a href="'.
|
||||
WebGUI::URL::page('func=deleteEventConfirm&wid='.$session{form}{wid}.
|
||||
'&eid='.$session{form}{eid}.'&rid='.$session{form}{rid}).'">'.
|
||||
WebGUI::International::get(44).'</a> <a href="'.
|
||||
WebGUI::URL::page('func=edit&wid='.$session{form}{wid}).'">'.
|
||||
WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteEventConfirm {
|
||||
my ($output);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
if ($session{form}{rid} > 0) {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where recurringEventId=$session{form}{rid}");
|
||||
} else {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where eventId=$session{form}{eid}");
|
||||
}
|
||||
return www_edit();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_edit {
|
||||
my ($output, %data, @event, $sth, %hash, @array);
|
||||
tie %hash, 'Tie::IxHash';
|
||||
tie %data, 'Tie::CPHash';
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
%data = getProperties($namespace,$session{form}{wid});;
|
||||
$output = helpLink(1,$namespace);
|
||||
$output .= '<h1>'.WebGUI::International::get(12,$namespace).'</h1>';
|
||||
$output .= formHeader();
|
||||
$output .= WebGUI::Form::hidden("wid",$session{form}{wid});
|
||||
$output .= WebGUI::Form::hidden("func","editSave");
|
||||
$output .= '<table>';
|
||||
$output .= tableFormRow(WebGUI::International::get(99),WebGUI::Form::text("title",20,128,$data{title}));
|
||||
$output .= tableFormRow(WebGUI::International::get(174),
|
||||
WebGUI::Form::checkbox("displayTitle",1,$data{displayTitle}));
|
||||
$output .= tableFormRow(WebGUI::International::get(175),
|
||||
WebGUI::Form::checkbox("processMacros",1,$data{processMacros}));
|
||||
$output .= tableFormRow(WebGUI::International::get(85),
|
||||
WebGUI::Form::textArea("description",$data{description},50,5,1));
|
||||
%hash = WebGUI::Widget::getPositions();
|
||||
$array[0] = $data{templatePosition};
|
||||
$output .= tableFormRow(WebGUI::International::get(363),
|
||||
WebGUI::Form::selectList("templatePosition",\%hash,\@array));
|
||||
%hash = (list => WebGUI::International::get(17,$namespace),
|
||||
calendar => WebGUI::International::get(18,$namespace));
|
||||
$array[0] = $data{calendarLayout};
|
||||
$output .= tableFormRow(WebGUI::International::get(16,$namespace),
|
||||
WebGUI::Form::selectList("calendarLayout",\%hash,\@array));
|
||||
$output .= tableFormRow(WebGUI::International::get(19,$namespace),
|
||||
WebGUI::Form::text("paginateAfter",20,30,$data{paginateAfter}));
|
||||
$output .= formSave();
|
||||
$output .= '</table></form>';
|
||||
$output .= '<p><a href="'.WebGUI::URL::page('func=addEvent&wid='.$session{form}{wid})
|
||||
.'">Add New Event</a><p>';
|
||||
$output .= '<table border=1 cellpadding=3 cellspacing=0>';
|
||||
$sth = WebGUI::SQL->read("select eventId, name, recurringEventId, startDate from EventsCalendar_event where widgetId='$session{form}{wid}' order by startDate");
|
||||
while (@event = $sth->array) {
|
||||
$output .= '<tr><td><a href="'.WebGUI::URL::page('func=editEvent&wid='.$session{form}{wid}.
|
||||
'&eid='.$event[0]).'"><img src="'.$session{setting}{lib}.
|
||||
'/edit.gif" border=0></a><a href="'.WebGUI::URL::page('func=deleteEvent&wid='.
|
||||
$session{form}{wid}.'&eid='.$event[0].'&rid='.$event[2]).'"><img src="'.
|
||||
$session{setting}{lib}.'/delete.gif" border=0></a></td><td>'.
|
||||
epochToHuman($event[3],'%m/%d/%y').'</td><td>'.$event[1].'</td></td>';
|
||||
}
|
||||
$sth->finish;
|
||||
$output .= '</table>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editSave {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
update();
|
||||
WebGUI::SQL->write("update EventsCalendar set calendarLayout='$session{form}{calendarLayout}', paginateAfter='$session{form}{paginateAfter}' where widgetId=$session{form}{wid}");
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editEvent {
|
||||
my ($output, %event);
|
||||
tie %event, 'Tie::CPHash';
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
%event = WebGUI::SQL->quickHash("select * from EventsCalendar_event where eventId='$session{form}{eid}'");
|
||||
$output = '<h1>'.WebGUI::International::get(13,$namespace).'</h1>';
|
||||
$output .= formHeader();
|
||||
$output .= WebGUI::Form::hidden("wid",$session{form}{wid});
|
||||
$output .= WebGUI::Form::hidden("eid",$session{form}{eid});
|
||||
$output .= WebGUI::Form::hidden("func","editEventSave");
|
||||
$output .= '<table>';
|
||||
$output .= tableFormRow(WebGUI::International::get(99),
|
||||
WebGUI::Form::text("name",20,128,$event{name}));
|
||||
$output .= tableFormRow(WebGUI::International::get(85),
|
||||
WebGUI::Form::textArea("description",$event{description},50,10,1));
|
||||
$output .= tableFormRow(WebGUI::International::get(14,$namespace),
|
||||
WebGUI::Form::text("startDate",20,30,epochToSet($event{startDate}),1));
|
||||
$output .= tableFormRow(WebGUI::International::get(15,$namespace),
|
||||
WebGUI::Form::text("endDate",20,30,epochToSet($event{endDate}),1));
|
||||
$output .= formSave();
|
||||
$output .= '</table></form>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editEventSave {
|
||||
my ($eventId);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update EventsCalendar_event set name=".quote($session{form}{name}).", description=".quote($session{form}{description}).", startDate='".setToEpoch($session{form}{startDate})."', endDate='".setToEpoch($session{form}{endDate})."' where eventId=$session{form}{eid}");
|
||||
return www_edit();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_view {
|
||||
my (%data, %event, $p, $output, $sth, $flag, %previous, $junk,
|
||||
@row, $i, $maxDate, $minDate, $nextDate, $first, $last);
|
||||
tie %data, 'Tie::CPHash';
|
||||
tie %event, 'Tie::CPHash';
|
||||
tie %previous, 'Tie::CPHash';
|
||||
%data = getProperties($namespace,$_[0]);
|
||||
if (defined %data) {
|
||||
if ($data{displayTitle}) {
|
||||
$output = "<h1>".$data{title}."</h1>";
|
||||
}
|
||||
if ($data{description} ne "") {
|
||||
$output .= $data{description}.'<p>';
|
||||
}
|
||||
($minDate) = WebGUI::SQL->quickArray("select min(startDate) from EventsCalendar_event where widgetId=$_[0]");
|
||||
($maxDate) = WebGUI::SQL->quickArray("select max(endDate) from EventsCalendar_event where widgetId=$_[0]");
|
||||
($junk, $maxDate) = WebGUI::DateTime::monthStartEnd($maxDate);
|
||||
unless ($minDate && $maxDate) {
|
||||
$minDate = time();
|
||||
$maxDate = time()+86400;
|
||||
}
|
||||
if ($data{calendarLayout} eq "calendar") {
|
||||
$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);
|
||||
}
|
||||
$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});
|
||||
$session{form}{pn} = "";
|
||||
} else {
|
||||
$sth = WebGUI::SQL->read("select name, description, startDate, endDate from EventsCalendar_event where widgetId='$_[0]' 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] .= "<hr size=1>";
|
||||
}
|
||||
%previous = %event;
|
||||
$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,$data{paginateAfter});
|
||||
$output .= $p->getPage($session{form}{pn}).$p->getBarSimple($session{form}{pn});
|
||||
}
|
||||
if ($data{processMacros}) {
|
||||
$output = WebGUI::Macro::process($output);
|
||||
}
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
384
lib/WebGUI/Wobject/EventsCalendar.pm
Normal file
384
lib/WebGUI/Wobject/EventsCalendar.pm
Normal file
|
|
@ -0,0 +1,384 @@
|
|||
package WebGUI::Wobject::EventsCalendar;
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2002 Plain Black Software.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use HTML::CalendarMonthSimple;
|
||||
use Tie::CPHash;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::HTMLForm;
|
||||
use WebGUI::Icon;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Paginator;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::URL;
|
||||
use WebGUI::Utility;
|
||||
use WebGUI::Wobject;
|
||||
|
||||
our @ISA = qw(WebGUI::Wobject);
|
||||
our $namespace = "EventsCalendar";
|
||||
our $name = WebGUI::International::get(2,$namespace);
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _calendarLayout {
|
||||
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("100%");
|
||||
$calendar->border(1);
|
||||
$calendar->cellclass("tableData");
|
||||
$calendar->todaycellclass("tableHeader");
|
||||
$calendar->headerclass("tableHeader");
|
||||
($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) {
|
||||
$message = "";
|
||||
if ($session{var}{adminOn}) {
|
||||
$message = deleteIcon('func=deleteEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event{eventId}
|
||||
.'&rid='.$event{recurringEventId})
|
||||
.editIcon('func=editEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event{eventId})
|
||||
.' ';
|
||||
}
|
||||
if ($event{description}) {
|
||||
$message .= '<a href=\'javascript:popUp("'.$event{description}.'");\'>'.$event{name}.'</a>';
|
||||
} else {
|
||||
$message .= $event{name};
|
||||
}
|
||||
$message .= '<br>';
|
||||
if ($event{startDate} == $event{endDate}) {
|
||||
$calendar->addcontent(epochToHuman($event{startDate},"%D"),$message);
|
||||
} else {
|
||||
$nextDate = $event{startDate};
|
||||
while($nextDate <= $event{endDate}) {
|
||||
if (epochToHuman($nextDate,"%M %y") eq $thisMonth) {
|
||||
$calendar->addcontent(epochToHuman($nextDate,"%D"),$message);
|
||||
}
|
||||
$nextDate = addToDate($nextDate,0,0,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$sth->finish;
|
||||
return '<script language="JavaScript">function popUp(message) { alert(message); }</script>'.$calendar->as_HTML;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub duplicate {
|
||||
my ($sth, $w, @row, $newEventId, $previousRecurringEventId);
|
||||
$w = $_[0]->SUPER::duplicate($_[1]);
|
||||
$w = WebGUI::Wobject::EventsCalendar->new({wobjectId=>$w,namespace=>$namespace});
|
||||
$w->set({
|
||||
calendarLayout=>$_[0]->get("calendarLayout"),
|
||||
paginateAfter=>$_[0]->get("paginateAfter")
|
||||
});
|
||||
$sth = WebGUI::SQL->read("select * from EventsCalendar_event where wobjectId=".$_[0]->get("wobjectId")." order by recurringEventId");
|
||||
while (@row = $sth->array) {
|
||||
$newEventId = getNextId("eventId");
|
||||
if ($row[6] > 0 && $row[6] != $previousRecurringEventId) {
|
||||
$row[6] = getNextId("recurringEventId");
|
||||
$previousRecurringEventId = $row[6];
|
||||
}
|
||||
WebGUI::SQL->write("insert into EventsCalendar_event values ($newEventId, ".$_[0]->get("wobjectId").", ".
|
||||
quote($row[2]).", ".quote($row[3]).", '".$row[4]."', '".$row[5]."', $row[6])");
|
||||
}
|
||||
$sth->finish;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub new {
|
||||
my ($self, $class, $property);
|
||||
$class = shift;
|
||||
$property = shift;
|
||||
$self = WebGUI::Wobject->new($property);
|
||||
bless $self, $class;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub purge {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where wobjectId=".$_[0]->get("wobjectId"));
|
||||
$_[0]->SUPER::purge();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub set {
|
||||
$_[0]->SUPER::set($_[1],[qw(calendarLayout paginateAfter)]);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_copy {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$_[0]->duplicate;
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteEvent {
|
||||
my ($output);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$output = '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(10,$namespace);
|
||||
if ($session{form}{rid} > 0) {
|
||||
$output .= ' '.WebGUI::International::get(11,$namespace);
|
||||
}
|
||||
$output .= '?<p><div align="center"><a href="'.
|
||||
WebGUI::URL::page('func=deleteEventConfirm&wid='.$session{form}{wid}.
|
||||
'&eid='.$session{form}{eid}.'&rid='.$session{form}{rid}).'">'.
|
||||
WebGUI::International::get(44).'</a> <a href="'.
|
||||
WebGUI::URL::page('func=edit&wid='.$session{form}{wid}).'">'.
|
||||
WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteEventConfirm {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
if ($session{form}{rid} > 0) {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where recurringEventId=$session{form}{rid}");
|
||||
} else {
|
||||
WebGUI::SQL->write("delete from EventsCalendar_event where eventId=$session{form}{eid}");
|
||||
}
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_edit {
|
||||
my ($output, %hash, $f, $paginateAfter, $proceed);
|
||||
tie %hash, 'Tie::IxHash';
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
if ($_[0]->get("wobjectId") eq "new") {
|
||||
$proceed = 1;
|
||||
}
|
||||
$paginateAfter = $_[0]->get("paginateAfter") || 50;
|
||||
$output = helpIcon(1,$namespace);
|
||||
$output .= '<h1>'.WebGUI::International::get(12,$namespace).'</h1>';
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
%hash = (list => WebGUI::International::get(17,$namespace),
|
||||
calendar => WebGUI::International::get(18,$namespace));
|
||||
$f->select("calendarLayout",\%hash,WebGUI::International::get(16,$namespace),[$_[0]->get("calendarLayout")]);
|
||||
$f->integer("paginateAfter",WebGUI::International::get(19,$namespace),$paginateAfter);
|
||||
$f->yesNo("proceed",WebGUI::International::get(21,$namespace),$proceed);
|
||||
$output .= $_[0]->SUPER::www_edit($f->printRowsOnly);
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editSave {
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
$_[0]->SUPER::www_editSave();
|
||||
$_[0]->set({
|
||||
calendarLayout=>$session{form}{calendarLayout},
|
||||
paginateAfter=>$session{form}{paginateAfter}
|
||||
});
|
||||
if ($session{form}{proceed}) {
|
||||
$session{form}{eid} = "new";
|
||||
return $_[0]->www_editEvent;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editEvent {
|
||||
my (%recursEvery, $special, $output, $f, %event);
|
||||
tie %event, 'Tie::CPHash';
|
||||
tie %recursEvery, 'Tie::IxHash';
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
if ($session{form}{eid} eq "new") {
|
||||
%recursEvery = ('never'=>WebGUI::International::get(4,$namespace),
|
||||
'day'=>WebGUI::International::get(5,$namespace),
|
||||
'week'=>WebGUI::International::get(6,$namespace)
|
||||
);
|
||||
$event{endDate} = $event{endDate};
|
||||
$f = WebGUI::HTMLForm->new(1);
|
||||
$f->raw('<tr><td class="formdescription" valign="top">'.WebGUI::International::get(8,$namespace).'</td><td class="tableData">');
|
||||
$f->select("recursEvery",\%recursEvery);
|
||||
$f->raw(' '.WebGUI::International::get(9,$namespace).' ');
|
||||
$f->date("until");
|
||||
$f->raw("</td><tr>");
|
||||
$special = $f->printRowsOnly;
|
||||
} else {
|
||||
%event = WebGUI::SQL->quickHash("select * from EventsCalendar_event where eventId='$session{form}{eid}'");
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
$f->hidden("until");
|
||||
$special = $f->printRowsOnly;
|
||||
}
|
||||
$output = '<h1>'.WebGUI::International::get(13,$namespace).'</h1>';
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
$f->hidden("wid",$_[0]->get("wobjectId"));
|
||||
$f->hidden("eid",$session{form}{eid});
|
||||
$f->hidden("func","editEventSave");
|
||||
$f->text("name",WebGUI::International::get(99),$event{name});
|
||||
$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->raw($special);
|
||||
$f->yesNo("proceed",WebGUI::International::get(21,$namespace));
|
||||
$f->submit;
|
||||
$output .= $f->print;
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editEventSave {
|
||||
my (@startDate, @endDate, $until, @eventId, $i, $recurringEventId);
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
if ($session{form}{eid} eq "new") {
|
||||
$session{form}{eid} = getNextId("eventId");
|
||||
$startDate[0] = setToEpoch($session{form}{startDate});
|
||||
$endDate[0] = setToEpoch($session{form}{endDate});
|
||||
$until = setToEpoch($session{form}{until});
|
||||
$eventId[0] = getNextId("eventId");
|
||||
if ($session{form}{recursEvery} eq "never") {
|
||||
$recurringEventId = 0;
|
||||
} elsif ($session{form}{recursEvery} eq "day") {
|
||||
$recurringEventId = getNextId("recurringEventId");
|
||||
while ($startDate[$i] < $until) {
|
||||
$i++;
|
||||
$eventId[$i] = getNextId("eventId");
|
||||
$startDate[$i] = $startDate[0] + (86400 * $i);
|
||||
$endDate[$i] = $endDate[0] + (86400 * $i);
|
||||
}
|
||||
} elsif ($session{form}{recursEvery} eq "week") {
|
||||
$recurringEventId = getNextId("recurringEventId");
|
||||
while ($startDate[$i] < $until) {
|
||||
$i++;
|
||||
$eventId[$i] = getNextId("eventId");
|
||||
$startDate[$i] = $startDate[0] + (604800 * $i);
|
||||
$endDate[$i] = $endDate[0] + (604800 * $i);
|
||||
}
|
||||
}
|
||||
$i = 0;
|
||||
while ($eventId[$i] > 0) {
|
||||
WebGUI::SQL->write("insert into EventsCalendar_event values ($eventId[$i],
|
||||
".$_[0]->get("wobjectId").", ".quote($session{form}{name}).", ".quote($session{form}{description}).",
|
||||
$startDate[$i], $endDate[$i], $recurringEventId)");
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
WebGUI::SQL->write("update EventsCalendar_event set name=".quote($session{form}{name}).",
|
||||
description=".quote($session{form}{description}).", startDate='".setToEpoch($session{form}{startDate})."',
|
||||
endDate='".setToEpoch($session{form}{endDate})."' where eventId=$session{form}{eid}");
|
||||
}
|
||||
if ($session{form}{proceed}) {
|
||||
$session{form}{eid} = "new";
|
||||
return $_[0]->www_editEvent;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_view {
|
||||
my (%event, $p, $output, $sth, $flag, %previous, $junk, @row, $i, $maxDate, $minDate, $nextDate, $first, $last);
|
||||
tie %event, 'Tie::CPHash';
|
||||
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>';
|
||||
}
|
||||
($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;
|
||||
}
|
||||
if ($_[0]->get("calendarLayout") eq "calendar") {
|
||||
$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);
|
||||
}
|
||||
$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});
|
||||
$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{eventId}
|
||||
.'&rid='.$event{recurringEventId})
|
||||
.editIcon('func=editEvent&wid='.$_[0]->get("wobjectId").'&eid='.$event{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);
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue