Files
scripts/Perl OTRS/Kernel/Modules/AgentITSMServiceZoom.pm
2024-10-14 00:08:40 +02:00

206 lines
5.7 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::AgentITSMServiceZoom;
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 $ServiceID = $Kernel::OM->Get('Kernel::System::Web::Request')->GetParam( Param => 'ServiceID' );
# get layout object
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
# check needed stuff
if ( !$ServiceID ) {
return $LayoutObject->ErrorScreen(
Message => Translatable('No ServiceID is given!'),
Comment => Translatable('Please contact the administrator.'),
);
}
# get service
my %Service = $Kernel::OM->Get('Kernel::System::Service')->ServiceGet(
ServiceID => $ServiceID,
IncidentState => 1,
UserID => $Self->{UserID},
);
if ( !$Service{ServiceID} ) {
return $LayoutObject->ErrorScreen(
Message => $LayoutObject->{LanguageObject}->Translate( 'ServiceID %s not found in database!', $ServiceID ),
Comment => Translatable('Please contact the administrator.'),
);
}
# get config object
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
# run config item menu modules
if ( ref $ConfigObject->Get('ITSMService::Frontend::MenuModule') eq 'HASH' ) {
my %Menus = %{ $ConfigObject->Get('ITSMService::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},
ServiceID => $Self->{ServiceID},
);
# 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,
Service => \%Service,
Counter => $Counter,
Config => $Menus{$Menu},
);
}
else {
return $LayoutObject->FatalError();
}
}
}
# get sla object
my $SLAObject = $Kernel::OM->Get('Kernel::System::SLA');
# get sla list
my %SLAList = $SLAObject->SLAList(
ServiceID => $ServiceID,
UserID => $Self->{UserID},
);
if (%SLAList) {
# output row
$LayoutObject->Block(
Name => 'SLA',
);
for my $SLAID ( sort { $SLAList{$a} cmp $SLAList{$b} } keys %SLAList ) {
# get sla data
my %SLA = $SLAObject->SLAGet(
SLAID => $SLAID,
UserID => $Self->{UserID},
);
# output row
$LayoutObject->Block(
Name => 'SLARow',
Data => {
%SLA,
},
);
}
}
# get linked objects
my $LinkListWithData = $Kernel::OM->Get('Kernel::System::LinkObject')->LinkListWithData(
Object => 'Service',
Key => $ServiceID,
State => 'Valid',
UserID => $Self->{UserID},
);
# get link table view mode
my $LinkTableViewMode = $ConfigObject->Get('LinkObject::ViewMode');
# create the link table
my $LinkTableStrg = $LayoutObject->LinkObjectTableCreate(
LinkListWithData => $LinkListWithData,
ViewMode => $LinkTableViewMode,
Object => 'Service',
Key => $ServiceID,
);
# output the link table
if ($LinkTableStrg) {
$LayoutObject->Block(
Name => 'LinkTable' . $LinkTableViewMode,
Data => {
LinkTableStrg => $LinkTableStrg,
},
);
}
# set incident signal
my %InciSignals = (
Translatable('operational') => 'greenled',
Translatable('warning') => 'yellowled',
Translatable('incident') => 'redled',
);
# get user object
my $UserObject = $Kernel::OM->Get('Kernel::System::User');
# get create user data
$Service{CreateByName} = $UserObject->UserName(
UserID => $Service{CreateBy},
);
# get change user data
$Service{ChangeByName} = $UserObject->UserName(
UserID => $Service{ChangeBy},
);
# store last screen
$Kernel::OM->Get('Kernel::System::AuthSession')->UpdateSessionID(
SessionID => $Self->{SessionID},
Key => 'LastScreenView',
Value => $Self->{RequestedURL},
);
# output header
my $Output = $LayoutObject->Header();
$Output .= $LayoutObject->NavigationBar();
# generate output
$Output .= $LayoutObject->Output(
TemplateFile => 'AgentITSMServiceZoom',
Data => {
%Param,
%Service,
CurInciSignal => $InciSignals{ $Service{CurInciStateType} },
},
);
$Output .= $LayoutObject->Footer();
return $Output;
}
1;