# -- # Kernel/Modules/AgentCalendarSmall.pm - small calender lookup # Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/ # -- # $Id: AgentCalendarSmall.pm,v 1.9 2007/01/20 18:50:39 mh Exp $ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (GPL). If you # did not receive this file, see http://www.gnu.org/licenses/gpl.txt. # -- package Kernel::Modules::AgentCalendarSmall; use strict; use Date::Pcalc qw(Today Days_in_Month Day_of_Week); use vars qw($VERSION); $VERSION = '$Revision: 1.9 $'; $VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/; sub new { my $Type = shift; my %Param = @_; # allocate new hash for object my $Self = {}; bless ($Self, $Type); # get common opjects foreach (keys %Param) { $Self->{$_} = $Param{$_}; } # check all needed objects foreach (qw(TicketObject ParamObject DBObject QueueObject LayoutObject ConfigObject LogObject)) { if (!$Self->{$_}) { $Self->{LayoutObject}->FatalError(Message => "Got no $_!"); } } return $Self; } sub Run { my $Self = shift; my %Param = @_; my $Output; my $Year = 0; my $Month = 0; my $Day = 1; my $Prefix = ""; # Prefix if ($Self->{ParamObject}->GetParam(Param => 'Prefix')) { $Prefix = $Self->{ParamObject}->GetParam(Param => 'Prefix'); } my $TimeVacationDays = $Self->{ConfigObject}->Get('TimeVacationDays'); my $TimeVacationDaysOneTime = $Self->{ConfigObject}->Get('TimeVacationDaysOneTime'); # Today my ($CYear, $CMonth, $CDay) = Today; $TimeVacationDaysOneTime->{$CYear}->{$CMonth}->{$CDay} = 'Today'; my @MonthArray = ( '', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ); # show month if ($Self->{ParamObject}->GetParam(Param => 'Month')) { my @Date = split /,/, $Self->{ParamObject}->GetParam(Param => 'Month'); $Month = $Date[0]; $Year = $Date[1]; } else { ($Year, $Month, $Day) = Today; } my $DaysOfMonth = Days_in_Month($Year, $Month); my $FirstWeekDay = Day_of_Week($Year, $Month, 1); $Param{Month} = $MonthArray[$Month]; $Param{Year} = $Year; # Last Month if ($Month == 1) { $Param{Back} = '12,'.($Year - 1); } else { $Param{Back} = ($Month - 1).','.$Year; } # Next Month if ($Month == 12) { $Param{Next} = '1,'.($Year + 1); } else { $Param{Next} = ($Month + 1).','.$Year; } # TimeInputFormat my $DateFormat = 'Option'; if ($Self->{ConfigObject}->Get('TimeInputFormat') eq 'Input') { $DateFormat = 'Input'; } $Self->{LayoutObject}->Block( Name => "DateFormat".$DateFormat, Data => { Prefix => $Prefix, }, ); # generate Calendar sheet my $CalDay = 1; while ($CalDay <= $DaysOfMonth) { $Self->{LayoutObject}->Block( Name => "Row", Data => {}, ); for (my $Col=1;$Col<8 && $CalDay <= $DaysOfMonth; $Col++) { if ($CalDay == 1 && $FirstWeekDay > $Col) { $Self->{LayoutObject}->Block( Name => "ColEmpty", Data => {}, ); } else { #styles my $Style = ''; if (defined($TimeVacationDaysOneTime->{$Year}->{$Month}->{$CalDay}) && $TimeVacationDaysOneTime->{$Year}->{$Month}->{$CalDay} eq 'Today') { $Style = 'bgcolor="orange"'; } elsif (defined($TimeVacationDays->{$Month}->{$CalDay}) || defined($TimeVacationDaysOneTime->{$Year}->{$Month}->{$CalDay})) { $Style = 'bgcolor="#ffcf00"'; } elsif ($Col == 7 || $Col == 6) { $Style = 'bgcolor="#FFE0E0"'; } $Self->{LayoutObject}->Block( Name => "Col", Data => { Day => $CalDay, Month => $Month, Year => $Year, Style => $Style, Prefix => $Prefix, }, ); $CalDay++; } } } # start with page ... $Output .= $Self->{LayoutObject}->Header(Type => 'Small'); $Output .= $Self->{LayoutObject}->Output( TemplateFile => 'AgentCalendarSmall', Data => { %Param, Prefix => $Prefix, } ); $Output .= $Self->{LayoutObject}->Footer(Type => 'Small'); return $Output; } 1;