package WebGUI::Widget::EventsCalendar; #------------------------------------------------------------------- # WebGUI is Copyright 2001 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 Tie::CPHash; use WebGUI::DateTime; use WebGUI::International; use WebGUI::Macro; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::Utility; use WebGUI::Widget; #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from event where widgetId=$_[0]",$_[1]); purgeWidget($_[0],$_[1]); } #------------------------------------------------------------------- sub widgetName { return WebGUI::International::get(187); } #------------------------------------------------------------------- sub www_add { my ($output); if (WebGUI::Privilege::canEditPage()) { $output = ''; $output .= '

'.WebGUI::International::get(188).'

'; $output .= '
'; $output .= WebGUI::Form::hidden("widget","EventsCalendar"); $output .= WebGUI::Form::hidden("func","addSave"); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= '
'.WebGUI::International::get(99).''.WebGUI::Form::text("title",20,30,'Events Calendar').'
'.WebGUI::International::get(174).''.WebGUI::Form::checkbox("displayTitle",1).'
'.WebGUI::International::get(175).''.WebGUI::Form::checkbox("processMacros",1).'
'.WebGUI::International::get(85).''.WebGUI::Form::textArea("description").'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; return $output; } else { return WebGUI::Privilege::insufficient(); } return $output; } #------------------------------------------------------------------- sub www_addSave { my ($widgetId); if (WebGUI::Privilege::canEditPage()) { $widgetId = create(); return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_addEvent { my ($output, $today, %recursEvery); tie %recursEvery, 'Tie::IxHash'; %recursEvery = ('never'=>WebGUI::International::get(189), 'day'=>WebGUI::International::get(190), 'week'=>WebGUI::International::get(191) ); if (WebGUI::Privilege::canEditPage()) { ($today) = epochToSet(time()); $output = '

'.WebGUI::International::get(192).'

'; $output .= '
'; $output .= WebGUI::Form::hidden("wid",$session{form}{wid}); $output .= WebGUI::Form::hidden("func","addEventSave"); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= '
'.WebGUI::International::get(99).''.WebGUI::Form::text("name",20,30).'
'.WebGUI::International::get(85).''.WebGUI::Form::textArea("description",'',50,10,1).'
'.WebGUI::International::get(176).''.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;"').'
'.WebGUI::International::get(177).''.WebGUI::Form::text("endDate",20,30,$today,1).'
'.WebGUI::International::get(193).''.WebGUI::Form::selectList("recursEvery",\%recursEvery).' '.WebGUI::International::get(194).' '.WebGUI::Form::text("until",20,30,$today,1).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; 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 event values ($eventId[$i], $session{form}{wid}, ".quote($session{form}{name}).", ".quote($session{form}{description}).", '".$startDate[$i]."', '".$endDate[$i]."', $recurringEventId)",$session{dbh}); $i++; } return www_edit(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteEvent { my ($output); if (WebGUI::Privilege::canEditPage()) { $output = '

'.WebGUI::International::get(42).'

'; $output .= WebGUI::International::get(195); if ($session{form}{rid} > 0) { $output .= ' '.WebGUI::International::get(196); } $output .= '?

'.WebGUI::International::get(44).'   '.WebGUI::International::get(45).'
'; 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 event where recurringEventId=$session{form}{rid}",$session{dbh}); } else { WebGUI::SQL->write("delete from event where eventId=$session{form}{eid}",$session{dbh}); } return www_edit(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_edit { my ($output, %data, @event, $sth); tie %data, 'Tie::CPHash'; if (WebGUI::Privilege::canEditPage()) { %data = WebGUI::SQL->quickHash("select * from widget where widget.widgetId=$session{form}{wid}",$session{dbh}); $output = ''; $output .= '

'.WebGUI::International::get(197).'

'; $output .= '
'; $output .= WebGUI::Form::hidden("wid",$session{form}{wid}); $output .= WebGUI::Form::hidden("func","editSave"); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= '
'.WebGUI::International::get(99).''.WebGUI::Form::text("title",20,30,$data{title}).'
'.WebGUI::International::get(174).''.WebGUI::Form::checkbox("displayTitle",1,$data{displayTitle}).'
'.WebGUI::International::get(175).''.WebGUI::Form::checkbox("processMacros",1,$data{processMacros}).'
'.WebGUI::International::get(85).''.WebGUI::Form::textArea("description",$data{description}).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; $output .= '

Add New Event

'; $output .= ''; $sth = WebGUI::SQL->read("select eventId, name, recurringEventId from event where widgetId='$session{form}{wid}' order by startDate",$session{dbh}); while (@event = $sth->array) { $output .= ''; } $sth->finish; $output .= '
'.$event[1].'
'; return $output; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editSave { if (WebGUI::Privilege::canEditPage()) { update(); 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 event where eventId='$session{form}{eid}'",$session{dbh}); $output = '

'.WebGUI::International::get(198).'

'; $output .= '
'; $output .= WebGUI::Form::hidden("wid",$session{form}{wid}); $output .= WebGUI::Form::hidden("eid",$session{form}{eid}); $output .= WebGUI::Form::hidden("func","editEventSave"); $output .= ''; $output .= '' ; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= '
'.WebGUI::International::get(99).''.WebGUI::Form::text("name",20,30,$event{name}).'
'.WebGUI::International::get(85).''.WebGUI::Form::textArea("description",$event{description},50,10,1).'
'.WebGUI::International::get(176).''.WebGUI::Form::text("startDate",20,30,epochToSet($event{startDate}),1).'
'.WebGUI::International::get(177).''.WebGUI::Form::text("endDate",20,30,epochToSet($event{endDate}),1).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; return $output; } else { return WebGUI::Privilege::insufficient(); } return $output; } #------------------------------------------------------------------- sub www_editEventSave { my ($eventId); if (WebGUI::Privilege::canEditPage()) { WebGUI::SQL->write("update 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}",$session{dbh}); return www_edit(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_view { my (%data, @event, $output, $widgetId, $sth); tie %data, 'Tie::CPHash'; $widgetId = shift; %data = WebGUI::SQL->quickHash("select * from widget where widget.widgetId='$widgetId'",$session{dbh}); if (defined %data) { if ($data{displayTitle}) { $output = "

".$data{title}."

"; } if ($data{description} ne "") { $output .= $data{description}.'

'; } $sth = WebGUI::SQL->read("select name, description, startDate, endDate from event where widgetId='$widgetId' and startDate>".(time()-86400)." order by startDate",$session{dbh}); while (@event = $sth->array) { $output .= "".epochToHuman($event[2],"%c")." ".epochToHuman($event[2],"%D"); if (epochToHuman($event[2],"%D") ne epochToHuman($event[3],"%D")) { $output .= "-".epochToHuman($event[3],"%D"); } $output .= ", ".epochToHuman($event[2],"%y").""; $output .= "


"; $output .= ''.$event[0].''; if ($event[1] ne "") { $output .= ' - '; $output .= ''.$event[1]; } $output .= '

'; } $sth->finish; if ($data{processMacros}) { $output = WebGUI::Macro::process($output); } } return $output; } 1;