280 lines
8.2 KiB
Perl
280 lines
8.2 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::Output::HTML::ITSMTemplate::OverviewSmall;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
our @ObjectDependencies = (
|
|
'Kernel::Config',
|
|
'Kernel::Language',
|
|
'Kernel::System::Group',
|
|
'Kernel::Output::HTML::Layout',
|
|
'Kernel::System::ITSMChange::Template',
|
|
'Kernel::System::Log',
|
|
'Kernel::System::User',
|
|
'Kernel::System::Valid',
|
|
);
|
|
|
|
sub new {
|
|
my ( $Type, %Param ) = @_;
|
|
|
|
# allocate new hash for object
|
|
my $Self = {%Param};
|
|
bless( $Self, $Type );
|
|
|
|
# get UserID param
|
|
$Self->{UserID} = $Param{UserID} || die "Got no UserID!";
|
|
|
|
return $Self;
|
|
}
|
|
|
|
sub Run {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# get log object
|
|
my $LogObject = $Kernel::OM->Get('Kernel::System::Log');
|
|
|
|
# check needed stuff
|
|
for my $Needed (qw(PageShown StartHit)) {
|
|
if ( !$Param{$Needed} ) {
|
|
$LogObject->Log(
|
|
Priority => 'error',
|
|
Message => "Need $Needed!",
|
|
);
|
|
return;
|
|
}
|
|
}
|
|
|
|
# need TemplateIDs
|
|
if ( !$Param{TemplateIDs} ) {
|
|
$LogObject->Log(
|
|
Priority => 'error',
|
|
Message => 'Need the TemplateIDs!',
|
|
);
|
|
return;
|
|
}
|
|
|
|
# store the template IDs
|
|
my @IDs = @{ $Param{TemplateIDs} };
|
|
|
|
# check ShowColumns parameter
|
|
my @ShowColumns;
|
|
if ( $Param{ShowColumns} && ref $Param{ShowColumns} eq 'ARRAY' ) {
|
|
@ShowColumns = @{ $Param{ShowColumns} };
|
|
}
|
|
|
|
# for the template deletion link we need to check the permissions
|
|
my $DeleteFound = grep { $_ eq 'Delete' } @ShowColumns;
|
|
if ($DeleteFound) {
|
|
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
|
my $GroupObject = $Kernel::OM->Get('Kernel::System::Group');
|
|
my $ModuleReg = $ConfigObject->Get('Frontend::Module')->{AgentITSMTemplateDelete};
|
|
|
|
my %Groups;
|
|
$Groups{GroupRo} = {
|
|
reverse $GroupObject->PermissionUserGet(
|
|
UserID => $Self->{UserID},
|
|
Type => 'ro',
|
|
)
|
|
};
|
|
$Groups{Group} = {
|
|
reverse $GroupObject->PermissionUserGet(
|
|
UserID => $Self->{UserID},
|
|
Type => 'rw',
|
|
)
|
|
};
|
|
|
|
my $AccessOk;
|
|
for my $GroupType (qw(Group GroupRo)) {
|
|
|
|
PERMISSION:
|
|
for my $Group ( @{ $ModuleReg->{$GroupType} || [] } ) {
|
|
next PERMISSION if !$Groups{$GroupType}->{$Group};
|
|
|
|
$AccessOk = 1;
|
|
|
|
last PERMISSION;
|
|
}
|
|
}
|
|
|
|
if ( !$AccessOk ) {
|
|
@ShowColumns = grep { $_ ne 'Delete' } @ShowColumns;
|
|
}
|
|
}
|
|
|
|
my @Col = (qw(Name TemplateTypeID ValidID CreateTime ChangeTime));
|
|
my %Order;
|
|
my %CSS;
|
|
|
|
for my $Key (@Col) {
|
|
if ( $Param{SortBy} && ( $Param{SortBy} eq $Key ) ) {
|
|
if ( $Param{OrderBy} && ( $Param{OrderBy} eq 'Up' ) ) {
|
|
$Order{ 'OrderBy' . $Key } = 'Down';
|
|
$CSS{ 'Sort' . $Key } = ' SortDescending';
|
|
}
|
|
else {
|
|
$Order{ 'OrderBy' . $Key } = 'Up';
|
|
$CSS{ 'Sort' . $Key } = ' SortAscending';
|
|
}
|
|
}
|
|
}
|
|
|
|
# get layout object
|
|
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
|
|
|
# build column header blocks
|
|
for my $Column (@ShowColumns) {
|
|
|
|
$LayoutObject->Block(
|
|
Name => 'Record' . $Column . 'Header',
|
|
Data => {
|
|
%Param,
|
|
%Order,
|
|
%CSS,
|
|
},
|
|
);
|
|
}
|
|
|
|
my $Output = '';
|
|
my $Counter = 0;
|
|
|
|
# show templates if there are some
|
|
if (@IDs) {
|
|
|
|
ID:
|
|
for my $ID (@IDs) {
|
|
$Counter++;
|
|
|
|
next ID if $Counter < $Param{StartHit};
|
|
last ID if $Counter >= ( $Param{PageShown} + $Param{StartHit} );
|
|
|
|
# display the template data
|
|
my $Template = $Kernel::OM->Get('Kernel::System::ITSMChange::Template')->TemplateGet(
|
|
TemplateID => $ID,
|
|
UserID => $Self->{UserID},
|
|
);
|
|
my %Data = %{$Template};
|
|
|
|
# human readable validity
|
|
$Data{Valid} = $Kernel::OM->Get('Kernel::System::Valid')->ValidLookup( ValidID => $Data{ValidID} );
|
|
|
|
# get user data for needed user types
|
|
USERTYPE:
|
|
for my $UserType (qw(CreateBy ChangeBy)) {
|
|
|
|
# check if UserType attribute exists in the template
|
|
next USERTYPE if !$Data{$UserType};
|
|
|
|
# get user data
|
|
my %User = $Kernel::OM->Get('Kernel::System::User')->GetUserData(
|
|
UserID => $Data{$UserType},
|
|
Cached => 1,
|
|
);
|
|
|
|
# set user data
|
|
$Data{ $UserType . 'UserLogin' } = $User{UserLogin};
|
|
$Data{ $UserType . 'UserFirstname' } = $User{UserFirstname};
|
|
$Data{ $UserType . 'UserLastname' } = $User{UserLastname};
|
|
$Data{ $UserType . 'UserFullname' } = $User{UserFullname};
|
|
}
|
|
|
|
# build record block
|
|
$LayoutObject->Block(
|
|
Name => 'Record',
|
|
Data => {
|
|
%Param,
|
|
%Data,
|
|
},
|
|
);
|
|
|
|
# build column record blocks
|
|
COLUMN:
|
|
for my $Column (@ShowColumns) {
|
|
if ( $Column eq 'EditContent' && $Data{Type} eq 'CAB' ) {
|
|
$LayoutObject->Block(
|
|
Name => 'RecordEditContentCAB',
|
|
Data => {
|
|
%Param,
|
|
%Data,
|
|
},
|
|
);
|
|
|
|
next COLUMN;
|
|
}
|
|
|
|
if ( $Column eq 'EditContent' || $Column eq 'Delete' ) {
|
|
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
|
my $LanguageObject = $Kernel::OM->Get('Kernel::Language');
|
|
|
|
my %JSData = ();
|
|
|
|
$JSData{ElementID} = $Column . 'TemplateID' . $Data{TemplateID};
|
|
$JSData{ElementSelector} = '#' . $JSData{ElementID};
|
|
|
|
$JSData{DialogContentQueryString} = sprintf(
|
|
'Action=AgentITSMTemplate%s;%sTemplateID=%s',
|
|
$Column,
|
|
( $Column eq 'EditContent' ? 'Subaction=TemplateEditContentShowDialog;' : '' ),
|
|
$Data{TemplateID},
|
|
);
|
|
|
|
$JSData{ConfirmedActionQueryString} = sprintf(
|
|
'Action=AgentITSMTemplate%s;Subaction=Template%s;TemplateID=%s',
|
|
$Column,
|
|
$Column,
|
|
$Data{TemplateID},
|
|
);
|
|
|
|
$JSData{DialogTitle} = $Column eq 'Delete'
|
|
? 'Delete Template'
|
|
: 'Edit Template Content';
|
|
|
|
$LayoutObject->AddJSData(
|
|
Key => 'ITSMChangeTemplateOverviewConfirmDialog.' . $JSData{ElementID},
|
|
Value => \%JSData,
|
|
);
|
|
}
|
|
|
|
$LayoutObject->Block(
|
|
Name => 'Record' . $Column,
|
|
Data => {
|
|
%Param,
|
|
%Data,
|
|
},
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
# if there are no templates to show, a no data found message is displayed in the table
|
|
else {
|
|
$LayoutObject->Block(
|
|
Name => 'NoDataFoundMsg',
|
|
Data => {
|
|
TotalColumns => scalar @ShowColumns,
|
|
},
|
|
);
|
|
}
|
|
|
|
# use template
|
|
$Output .= $LayoutObject->Output(
|
|
TemplateFile => 'AgentITSMTemplateOverviewSmall',
|
|
Data => {
|
|
%Param,
|
|
Type => $Self->{ViewType},
|
|
ColumnCount => scalar @ShowColumns,
|
|
},
|
|
);
|
|
|
|
return $Output;
|
|
}
|
|
|
|
1;
|