init III
This commit is contained in:
110
Perl OTRS/Kernel/Output/HTML/ToolBar/TicketService.pm
Normal file
110
Perl OTRS/Kernel/Output/HTML/ToolBar/TicketService.pm
Normal file
@@ -0,0 +1,110 @@
|
||||
# --
|
||||
# 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::ToolBar::TicketService;
|
||||
|
||||
use Kernel::Language qw(Translatable);
|
||||
use parent 'Kernel::Output::HTML::Base';
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our @ObjectDependencies = (
|
||||
'Kernel::System::Log',
|
||||
'Kernel::Config',
|
||||
'Kernel::System::Lock',
|
||||
'Kernel::System::State',
|
||||
'Kernel::System::Queue',
|
||||
'Kernel::System::Service',
|
||||
'Kernel::System::Ticket',
|
||||
'Kernel::Output::HTML::Layout',
|
||||
);
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
if ( !$Param{Config} ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => 'Need Config!',
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
# Do nothing if ticket service feature is not enabled.
|
||||
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
||||
return if !$ConfigObject->Get('Ticket::Service');
|
||||
|
||||
return if !$ConfigObject->Get('Frontend::Module')->{AgentTicketService};
|
||||
|
||||
# Get viewable locks.
|
||||
my @ViewableLockIDs = $Kernel::OM->Get('Kernel::System::Lock')->LockViewableLock( Type => 'ID' );
|
||||
|
||||
# Get viewable states.
|
||||
my @ViewableStateIDs = $Kernel::OM->Get('Kernel::System::State')->StateGetStatesByType(
|
||||
Type => 'Viewable',
|
||||
Result => 'ID',
|
||||
);
|
||||
|
||||
# Get all queues the agent is allowed to see.
|
||||
my %ViewableQueues = $Kernel::OM->Get('Kernel::System::Queue')->GetAllQueues(
|
||||
UserID => $Self->{UserID},
|
||||
Type => 'ro',
|
||||
);
|
||||
my @ViewableQueueIDs = sort keys %ViewableQueues;
|
||||
if ( !@ViewableQueueIDs ) {
|
||||
@ViewableQueueIDs = (999_999);
|
||||
}
|
||||
|
||||
# Get custom services.
|
||||
# Set the service IDs to an array of non existing service ids (0).
|
||||
my @MyServiceIDs = $Kernel::OM->Get('Kernel::System::Service')->GetAllCustomServices( UserID => $Self->{UserID} );
|
||||
if ( !defined $MyServiceIDs[0] ) {
|
||||
@MyServiceIDs = (0);
|
||||
}
|
||||
|
||||
# Get config setting 'ViewAllPossibleTickets' for AgentTicketService and set permissions
|
||||
# accordingly.
|
||||
my $Config = $ConfigObject->Get('Ticket::Frontend::AgentTicketService');
|
||||
my $Permission = 'rw';
|
||||
if ( $Config->{ViewAllPossibleTickets} ) {
|
||||
$Permission = 'ro';
|
||||
}
|
||||
|
||||
# Get number of tickets in MyServices (which are not locked).
|
||||
my $Count = $Kernel::OM->Get('Kernel::System::Ticket')->TicketSearch(
|
||||
Result => 'COUNT',
|
||||
QueueIDs => \@ViewableQueueIDs,
|
||||
ServiceIDs => \@MyServiceIDs,
|
||||
StateIDs => \@ViewableStateIDs,
|
||||
LockIDs => \@ViewableLockIDs,
|
||||
UserID => $Self->{UserID},
|
||||
Permission => $Permission,
|
||||
) || 0;
|
||||
|
||||
my $Class = $Param{Config}->{CssClass};
|
||||
my $Icon = $Param{Config}->{Icon};
|
||||
|
||||
my $URL = $Kernel::OM->Get('Kernel::Output::HTML::Layout')->{Baselink};
|
||||
my %Return;
|
||||
my $Priority = $Param{Config}->{Priority};
|
||||
if ($Count) {
|
||||
$Return{ $Priority++ } = {
|
||||
Block => 'ToolBarItem',
|
||||
Description => Translatable('Tickets in My Services'),
|
||||
Count => $Count,
|
||||
Class => $Class,
|
||||
Icon => $Icon,
|
||||
Link => $URL . 'Action=AgentTicketService',
|
||||
AccessKey => '',
|
||||
};
|
||||
}
|
||||
return %Return;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user