# -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you # did not receive this file, see http://www.gnu.org/licenses/agpl.txt. # # Frontend module for customizing service restrictions - SeTIC - UFSC - http://setic.ufsc.br/ # Rodrigo Gonçalves - rodrigo.g@ufsc.br # # Version 2017-01-18 - First version # # -- package Kernel::Modules::NewTicketWizardRestrictedService; use strict; use warnings; use Kernel::System::VariableCheck qw(:all); use Data::Dumper; our @ObjectDependencies = ( "Kernel::System::Web::Request", "Kernel::System::DB", "Kernel::Output::HTML::Layout", "KerneL::System::Log", "Kernel::Config", "Kernel::System::DynamicField::Backend", "Kernel::System::Service", "Kernel::System::ServiceForm", "Kernel::System::SystemAddress" ); sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {%Param}; bless( $Self, $Type ); return $Self; } sub Run { my ( $Self, %Param ) = @_; my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); my $subaction = $ParamObject->GetParam( Param => "SubAction" ); if ( $subaction ) { if ( $subaction eq 'Update' ) { return $Self->UpdateRestrictions(); } } return $Self->Overview(); } sub Overview { my ( $Self, %Param ) = @_; my %Data = (); my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); my $LanguageObject = $Kernel::OM->Get("Kernel::Language"); my $RestrictedServiceObject = $Kernel::OM->Get("Kernel::System::RestrictedService"); my @restrictedServices = $RestrictedServiceObject->GetRestrictedServices(); my $ServiceList = $ServiceObject->ServiceListGet( Valid => 1, UserID => 1 ); # build output $LayoutObject->Block( Name => 'Overview', Data => { %Param, }, ); $LayoutObject->Block( Name => 'OverviewList', Data => { %Param, }, ); $Self->Debug(Dumper(\@restrictedServices)); # if there are any services defined, they are shown if ( @{$ServiceList} ) { # sort the service list by long service name @{$ServiceList} = sort { $a->{Name} . '::' cmp $b->{Name} . '::' } @{$ServiceList}; for my $ServiceData ( @{$ServiceList} ) { if ( !grep { index( $_->{Name}, $ServiceData->{Name} . "::" ) >= 0 } @{$ServiceList} ) { my %serviceDataMap = %{$ServiceData}; if ($ServiceData->{ServiceID} ~~ @restrictedServices) { $serviceDataMap{Restricted} = "selected"; } else { $serviceDataMap{Public} = "selected"; } # output row $LayoutObject->Block( Name => 'OverviewListRow', Data => { %serviceDataMap }, ); } } } $Data{Updated} = $Param{Updated}; my $Output = $LayoutObject->Header( Title => $LanguageObject->Translate("Restritect Services") ); $Output .= $LayoutObject->NavigationBar(); $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardRestrictedService', ); $Output .= $LayoutObject->Footer(); return $Output; } sub UpdateRestrictions { my ( $Self, %Param ) = @_; my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); my $LanguageObject = $Kernel::OM->Get("Kernel::Language"); my $RestrictedServiceObject = $Kernel::OM->Get("Kernel::System::RestrictedService"); my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); my $ServiceList = $ServiceObject->ServiceListGet( Valid => 1, UserID => 1 ); my @restrictedServices = (); for my $ServiceData ( @{$ServiceList} ) { if ($ParamObject->GetParam(Param => "Service" . $ServiceData->{ServiceID}) eq "Restricted") { push @restrictedServices, $ServiceData->{ServiceID}; } } $RestrictedServiceObject->SetRestrictedServices(@restrictedServices); return $Self->Overview(); } sub Debug { my $Self = shift; my $msg = shift; $Kernel::OM->Get("Kernel::System::Log") ->Log( Priority => 'debug', Message => $msg ); } 1;