installers (calendaring), RT#16584
[freeside.git] / rt / share / html / Schedule / UserBar
1 <%perl>
2
3 use GD;
4 use RTx::Schedule qw( UserDaySchedule );
5
6 my $im = new GD::Image($width, $height) or die;
7
8 my $white = $im->colorAllocate(255,255,255);
9
10 my $black = $im->colorAllocate(0,0,0); 
11 $im->rectangle(0,0,$width-1,$height-1,$black);
12
13 my $darkgray = $im->colorAllocate(102, 102, 102);
14 $im->filledRectangle(0, 1, $width-1, $height-2, $darkgray);
15
16 my %schedule = UserDaySchedule( CurrentUser => $session{CurrentUser},
17                                 username    => $Username,
18                                 'date'      => $Date,
19                               );
20
21 #white out available times
22 foreach my $avail ( @{ $schedule{'avail'} } ) {
23   my( $start, $end ) = @$avail;
24   
25   $im->filledRectangle( $start >= $stime ? int(($start-$stime)/10) : 0,
26                         1,
27                         int(($end-$stime)/10)-1,
28                         $height-2,
29                         $white,
30                       );
31 }
32
33 #block out / show / color code existing appointments
34 foreach my $id ( keys %{ $schedule{'scheduled'} } ) {
35
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 );
39
40 }
41
42 $r->content_type('image/png');
43 $m->clear_buffer;
44 $m->out($im->png);
45 $m->abort;
46
47 </%perl>
48 <%args>
49 $Username => undef
50 $Date     => undef
51 </%args>
52 <%once>
53
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
58
59 my $width = int( ( $etime - $stime ) / 10 );
60 my $height = 12; #Elements/CalendarDaySchedule
61
62 </%once>