2 use base qw( Exporter );
5 use RTx::Calendar qw( FindTickets LocalDate );
9 our @EXPORT_OK = qw( UserDaySchedule );
12 # Default Query and Format
13 our $DefaultFormat = "__Starts__ __Due__";
14 our $DefaultQuery = "( Status = 'new' OR Status = 'open' OR Status = 'stalled')
15 AND ( Type = 'reminder' OR 'Type' = 'ticket' )";
19 my $username = $arg{username};
20 my $date = $arg{date};
23 if ( $arg{Tickets} ) {
24 $Tickets = $arg{Tickets};
27 my $Query = $DefaultQuery;
29 # # we overide them if needed
30 # $TempQuery = $Query if $Query;
31 # $TempFormat = $Format if $Format;
33 # # we search all date types in Format string
34 # my @Dates = grep { $TempFormat =~ m/__${_}(Relative)?__/ } @DateTypes;
36 my @Dates = qw( Starts Due );
38 # # used to display or not a date in Element/CalendarEvent
39 # my %DateTypes = map { $_ => 1 } @Dates;
41 # $TempQuery .= DatesClauses(\@Dates, $start->strftime("%F"), $end->strftime("%F"));
43 my %t = FindTickets( $arg{CurrentUser}, $Query, \@Dates, $date x2 );
45 $Tickets = $t{ $date };
48 #XXX block out unavailable times
49 #alas. abstractions break, freeside-specific stuff to get availability
50 # move availability to RT side? make it all callback/pluggable?
54 #avail/unavailable times
58 #block out / show / color code existing appointments
61 #$_->Id => [ $_->StartsObj, $t->DueObj ];
63 my($sm, $sh) = ($_->StartsObj->Localtime('user'))[1,2];
64 my $starts = $sh*60 + $sm;
66 my($dm, $dh) = ($_->DueObj->Localtime('user'))[1,2];
67 my $due = $dh*60 + $dm;
69 #XXX color code existing appointments by... city? proximity? etc.
70 my $col = '99ff99'; #green
72 $_->Id => [ $starts, $due, $col, $_ ];
75 LocalDate($_->StartsObj->Unix) eq $date
76 and $_->OwnerObj->Name eq $username
91 RTx::Schedule - Scheduling extension for Request Tracker
95 This RT extension adds scheduling functionality to Request Tracker.
99 CalendarWeeklyStartMin (default 480, 8am)
101 CalendarWeeklyEndMin (default 1080, 6pm)
103 CalendarWeeklySizeMin (default 30)
105 CalendarWeeklySlots (unused now?)
113 Copyright 2014 Freeside Internet Services, Inc.
115 This program is free software; you can redistribute it and/or
116 modify it under the same terms as Request Tracker itself.