4 use RTx::Schedule qw( UserDaySchedule );
6 my $im = new GD::Image($width, $height) or die;
8 my $white = $im->colorAllocate(255,255,255);
10 my $black = $im->colorAllocate(0,0,0);
11 $im->rectangle(0,0,$width-1,$height-1,$black);
13 my $darkgray = $im->colorAllocate(102, 102, 102);
14 $im->filledRectangle(0, 1, $width-1, $height-2, $darkgray);
16 my %schedule = UserDaySchedule( CurrentUser => $session{CurrentUser},
17 username => $Username,
21 #white out available times
22 foreach my $avail ( @{ $schedule{'avail'} } ) {
23 my( $start, $end ) = @$avail;
25 $im->filledRectangle( $start >= $stime ? int(($start-$stime)/10) : 0,
27 int(($end-$stime)/10)-1,
33 #block out / show / color code existing appointments
34 foreach my $id ( keys %{ $schedule{'scheduled'} } ) {
36 my( $starts, $due, $col, $t ) = @{ $schedule{'scheduled'}->{$id} };
37 my $color = $im->colorAllocate( unpack 'C*', pack 'H*', $col );
38 $im->filledRectangle( int(($starts-$stime)/10), 1, int(($due-$stime)/10)-1, $height-2, $color );
42 $r->content_type('image/png');
54 my $stime = RT->Config->Get('CalendarWeeklyStartMin');
55 $stime = 480 unless $stime =~ /^\d+$/; #8am
56 my $etime = RT->Config->Get('CalendarWeeklyEndMin');
57 $etime = 1080 unless $etime =~ /^\d+$/; #6pm
59 my $width = int( ( $etime - $stime ) / 10 );
60 my $height = 12; #Elements/CalendarDaySchedule