188 lines
5.3 KiB
Perl
188 lines
5.3 KiB
Perl
# --
|
|
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
|
|
# --
|
|
# 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 https://www.gnu.org/licenses/gpl-3.0.txt.
|
|
# --
|
|
|
|
package Kernel::Modules::AgentITSMSLAZoom;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Kernel::Language qw(Translatable);
|
|
|
|
our $ObjectManagerDisabled = 1;
|
|
|
|
sub new {
|
|
my ( $Type, %Param ) = @_;
|
|
|
|
# allocate new hash for object
|
|
my $Self = {%Param};
|
|
bless( $Self, $Type );
|
|
|
|
return $Self;
|
|
}
|
|
|
|
sub Run {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# get params
|
|
my $SLAID = $Kernel::OM->Get('Kernel::System::Web::Request')->GetParam( Param => "SLAID" );
|
|
|
|
# get layout object
|
|
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
|
|
|
# check needed stuff
|
|
if ( !$SLAID ) {
|
|
return $LayoutObject->ErrorScreen(
|
|
Message => Translatable('No SLAID is given!'),
|
|
Comment => Translatable('Please contact the administrator.'),
|
|
);
|
|
}
|
|
|
|
# get sla
|
|
my %SLA = $Kernel::OM->Get('Kernel::System::SLA')->SLAGet(
|
|
SLAID => $SLAID,
|
|
UserID => $Self->{UserID},
|
|
);
|
|
if ( !$SLA{SLAID} ) {
|
|
return $LayoutObject->ErrorScreen(
|
|
Message => $LayoutObject->{LanguageObject}->Translate( 'SLAID %s not found in database!', $SLAID ),
|
|
Comment => Translatable('Please contact the administrator.'),
|
|
);
|
|
}
|
|
|
|
# get config object
|
|
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
|
|
|
# get calendar name
|
|
if ( $SLA{Calendar} ) {
|
|
$SLA{CalendarName} = "Calendar $SLA{Calendar} - "
|
|
. $ConfigObject->Get( "TimeZone::Calendar" . $SLA{Calendar} . "Name" );
|
|
}
|
|
else {
|
|
$SLA{CalendarName} = Translatable('Calendar Default');
|
|
}
|
|
|
|
# run config item menu modules
|
|
if ( ref $ConfigObject->Get('ITSMSLA::Frontend::MenuModule') eq 'HASH' ) {
|
|
my %Menus = %{ $ConfigObject->Get('ITSMSLA::Frontend::MenuModule') };
|
|
my $Counter = 0;
|
|
for my $Menu ( sort keys %Menus ) {
|
|
|
|
# load module
|
|
if ( $Kernel::OM->Get('Kernel::System::Main')->Require( $Menus{$Menu}->{Module} ) ) {
|
|
my $Object = $Menus{$Menu}->{Module}->new(
|
|
%{$Self},
|
|
SLAID => $Self->{SLAID},
|
|
);
|
|
|
|
# set classes
|
|
if ( $Menus{$Menu}->{Target} ) {
|
|
if ( $Menus{$Menu}->{Target} eq 'PopUp' ) {
|
|
$Menus{$Menu}->{MenuClass} = 'AsPopup';
|
|
}
|
|
elsif ( $Menus{$Menu}->{Target} eq 'Back' ) {
|
|
$Menus{$Menu}->{MenuClass} = 'HistoryBack';
|
|
}
|
|
}
|
|
|
|
# run module
|
|
$Counter = $Object->Run(
|
|
%Param,
|
|
SLA => \%SLA,
|
|
Counter => $Counter,
|
|
Config => $Menus{$Menu},
|
|
);
|
|
}
|
|
else {
|
|
return $LayoutObject->FatalError();
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $SLA{ServiceIDs} && ref $SLA{ServiceIDs} eq 'ARRAY' && @{ $SLA{ServiceIDs} } ) {
|
|
|
|
# output row
|
|
$LayoutObject->Block(
|
|
Name => 'Service',
|
|
);
|
|
|
|
# create service list
|
|
my %ServiceList;
|
|
for my $ServiceID ( @{ $SLA{ServiceIDs} } ) {
|
|
|
|
# get service data
|
|
my %Service = $Kernel::OM->Get('Kernel::System::Service')->ServiceGet(
|
|
ServiceID => $ServiceID,
|
|
IncidentState => 1,
|
|
UserID => $Self->{UserID},
|
|
);
|
|
|
|
# add service to hash
|
|
$ServiceList{$ServiceID} = \%Service;
|
|
}
|
|
|
|
# set incident signal
|
|
my %InciSignals = (
|
|
Translatable('operational') => 'greenled',
|
|
Translatable('warning') => 'yellowled',
|
|
Translatable('incident') => 'redled',
|
|
);
|
|
|
|
my $CssClass = '';
|
|
for my $ServiceID (
|
|
sort { $ServiceList{$a}->{Name} cmp $ServiceList{$b}->{Name} }
|
|
keys %ServiceList
|
|
)
|
|
{
|
|
|
|
# set output object
|
|
$CssClass = $CssClass eq 'searchpassive' ? 'searchactive' : 'searchpassive';
|
|
|
|
# output row
|
|
$LayoutObject->Block(
|
|
Name => 'ServiceRow',
|
|
Data => {
|
|
%{ $ServiceList{$ServiceID} },
|
|
CurInciSignal => $InciSignals{ $ServiceList{$ServiceID}->{CurInciStateType} },
|
|
CssClass => $CssClass,
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
# get user object
|
|
my $UserObject = $Kernel::OM->Get('Kernel::System::User');
|
|
|
|
# get create user data
|
|
$SLA{CreateByName} = $UserObject->UserName(
|
|
UserID => $SLA{CreateBy},
|
|
);
|
|
|
|
# get change user data
|
|
$SLA{ChangeByName} = $UserObject->UserName(
|
|
UserID => $SLA{ChangeBy},
|
|
);
|
|
|
|
# output header
|
|
my $Output = $LayoutObject->Header();
|
|
$Output .= $LayoutObject->NavigationBar();
|
|
|
|
# generate output
|
|
$Output .= $LayoutObject->Output(
|
|
TemplateFile => 'AgentITSMSLAZoom',
|
|
Data => {
|
|
%Param,
|
|
%SLA,
|
|
},
|
|
);
|
|
$Output .= $LayoutObject->Footer();
|
|
|
|
return $Output;
|
|
}
|
|
|
|
1;
|