diff --git a/Kernel/Config/Files/NewTicketWizard.xml b/Kernel/Config/Files/NewTicketWizard.xml index d127f3a..1d01dc1 100644 --- a/Kernel/Config/Files/NewTicketWizard.xml +++ b/Kernel/Config/Files/NewTicketWizard.xml @@ -1,9 +1,7 @@ - - + - FrontendModuleRegistration for NewTicketWizard module. + Frontend module registration for the customer interface. Ticket Frontend::Customer::ModuleRegistration @@ -11,19 +9,17 @@ Module for creating custom new ticket interfaces NewTicketWizard - New ticket wizard - New ticket + New ticket wizard + New ticket Action=NewTicketWizard NewTicketWizard Menu 8400 - + NewTicketWizard.js thirdparty/alpaca/alpaca-full.min.js - thirdparty/jquery-ui-1.10.3/jquery-ui.js - thirdparty/jquery-validate-1.11.1/jquery.validate.js alpaca/alpaca-newticketwizard.css alpaca/alpaca-jqueryui-newticketwizard.css @@ -32,19 +28,19 @@ - Frontend module registration for the agent interface. + Frontend module registration for the agent interface. Ticket Frontend::Admin::ModuleRegistration admin Admin - Service forms + Service forms Admin Kernel::Output::HTML::NavBarModuleAdmin - Service forms - Create and manage service forms. + Service forms + Create and manage service forms. Ticket 900 @@ -54,10 +50,7 @@ - Describe the form basic schema. See documentation for examples. - - Descreva o esquema básico do formulário. Veja a documentação para maiores detalhes. - + Describe the form basic schema. See documentation for examples. Ticket Frontend::Customer::NewTicketWizard @@ -116,10 +109,7 @@ - Describe the form basic fields. See documentation for examples. - - Descreva os campos básicos do formulário. Veja a documentação para maiores detalhes. - + Describe the form basic fields. See documentation for examples. Ticket Frontend::Customer::NewTicketWizard @@ -178,10 +168,7 @@ - When the queue comes from a field in the form, a prefix can be attached to the value while searching for the queue. A space is added between this and the queue name. - - Prefixo para ser anexado ao valor do campo que tem a fila para enviar o chamado. Um espaço é adicionado entre o prefixo e o valor o campo. - + When the queue comes from a field in the form, a prefix can be attached to the value while searching for the queue. A space is added between this and the queue name. Ticket Frontend::Customer::NewTicketWizard @@ -191,8 +178,7 @@ - Name of the field in the form which indicates the queue to send the form. - Nome do campo no formulário que indica para qual fila enviar o chamado. + Name of the field in the form which indicates the queue to send the ticket. Ticket Frontend::Customer::NewTicketWizard @@ -202,8 +188,7 @@ - Message to let the user choose a server. - Mensagem para o usuário selecionar um serviço. + Message to let the user choose a service. Ticket Frontend::Customer::NewTicketWizard @@ -213,8 +198,7 @@ - Message to let the user choose a server. - Mensagem para o usuário selecionar um serviço. + Message to let the user choose a service. Ticket Frontend::Customer::NewTicketWizard @@ -225,8 +209,7 @@ - Customer ID to use when public ticket is created. - ID de usuario a utilizar quando um ticket publico é criado. + Customer ID to use when public ticket is created. Ticket Frontend::Customer::NewTicketWizard @@ -236,8 +219,7 @@ - Default agent for tickets. - Usuário padrão para tickets. + Default agent for tickets. Ticket Frontend::Customer::NewTicketWizard @@ -247,19 +229,16 @@ - Default domain for user e-mails. - Domínio padrão para e-mails de usuários. + Default domain for user e-mails. Ticket Frontend::Customer::NewTicketWizard ufsc.br - - - + - FrontendModuleRegistration for NewTicketWizardPublic module. + FrontendModuleRegistration for NewTicketWizardPublic module. Framework Frontend::Public::ModuleRegistration @@ -267,34 +246,27 @@ Module for creating custom new ticket interfaces without logging in NewTicketWizardPublic - New ticket wizard public - New ticket public + New ticket wizard public + New ticket public Action=NewTicketWizardPublic NewTicketWizardPublic Menu 8400 - + NewTicketWizard.js thirdparty/alpaca/alpaca-full.min.js - thirdparty/jquery-ui-1.10.3/jquery-ui.js - thirdparty/jquery-validate-1.11.1/jquery.validate.js alpaca/alpaca-newticketwizard.css alpaca/alpaca-jqueryui-newticketwizard.css - - - + - Describe the form basic schema. See documentation for examples. - - Descreva o esquema básico do formulário. Veja a documentação para maiores detalhes. - + Describe the form basic schema. See documentation for examples. Ticket Frontend::Customer::NewTicketWizard @@ -361,10 +333,7 @@ - Describe the form basic fields. See documentation for examples. - - Descreva os campos básicos do formulário. Veja a documentação para maiores detalhes. - + Describe the form basic fields. See documentation for examples. Ticket Frontend::Customer::NewTicketWizard @@ -434,10 +403,7 @@ - When false, forces the queue to be pre-selected. - - Quando falso, a fila deve ter sido selecionada antes (parametro) - + When false, forces the queue to be pre-selected. Ticket Frontend::Customer::NewTicketWizard @@ -445,94 +411,5 @@ - - - FrontendModuleRegistration for QueuesPanel module. - Ticket - Frontend::Customer::ModuleRegistration - - - Module for choosing main queues to open tickets - QueuesPanel - - Queues panel - Queues panel - Action=QueuesPanel - QueuesPanel - Menu - 8400 - - - - - thirdparty/hColumns/jquery.hcolumns.min.js - - - QueuesPanel.css - hColumns/hcolumns.css - hColumns/hcolumns-intro.css - hColumns/reset.css - - - - - - - - - - - FrontendModuleRegistration for QueuesPanelPublic module. - Framework - Frontend::Public::ModuleRegistration - - - Module for choosing main queues to open tickets - QueuesPanel - - Queues panel - Queues panel - Action=QueuesPanelPublic - QueuesPanel - Menu - 8400 - - - - thirdparty/hColumns/jquery.hcolumns.min.js - QueuesPanel.css - hColumns/hcolumns.css - hColumns/hcolumns-intro.css - hColumns/reset.css - - - - - - - - Message to let the user choose a queue. - Mensagem para o usuário selecionar uma fila. - Ticket - Frontend::Customer::QueuesPanel - - Escolha o local para o qual deseja atendimento - - - - - Message to let the user choose a queue. - Mensagem para o usuário selecionar uma fila. - Ticket - Frontend::Customer::QueuesPanel - - Escolha o local para o qual deseja atendimento - - - - + \ No newline at end of file diff --git a/Kernel/Language/pt_BR_NewTicketWizard.pm b/Kernel/Language/pt_BR_NewTicketWizard.pm index 21d17d1..31c5864 100644 --- a/Kernel/Language/pt_BR_NewTicketWizard.pm +++ b/Kernel/Language/pt_BR_NewTicketWizard.pm @@ -1,8 +1,9 @@ # -- -# Kernel/Modules/pt_BR_NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Translations +# Kernel/Modules/pt_BR_NewTicketWizard.pm - translations for NewTicketWizardModule # -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# Copyright (C) 2014 SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Adjustments for OTRS 4 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -12,10 +13,30 @@ package Kernel::Language::pt_BR_NewTicketWizard; use strict; use warnings; +use utf8; sub Data { my $Self = shift; + $Self->{Translation}->{'Frontend module registration for the customer interface.'} = 'Registro do módulo de abertura de chamados para usuários logados.'; + $Self->{Translation}->{'Frontend module registration for the agent interface.'} = 'Registro do módulo de gestão dos formulários de abertura de chamados.'; + $Self->{Translation}->{'Describe the form basic schema. See documentation for examples.'} = 'Descreve o esquema básico do formulário. Veja a documentação para exemplos.'; + $Self->{Translation}->{'Describe the form basic fields. See documentation for examples.'} = 'Descreve os campos básicos do formulário. Veja a documentação para exemplos.'; + $Self->{Translation}->{'When the queue comes from a field in the form, a prefix can be attached to the value while searching for the queue. A space is added between this and the queue name.'} = + 'Quando a fila vem de um campo do formulário, um prefixo pode ser anexado ao valor do campo ao procurar pela fila. Um espaço é adiciona entre o prefixo e o nome da fila.'; + $Self->{Translation}->{'Name of the field in the form which indicates the queue to send the ticket.'} = + 'Nome do campo no formulário que indica a fila para qual enviar o chamado'; + $Self->{Translation}->{'Message to let the user choose a service.'} = 'Mensagem para deixar o usuário escolher um serviço.'; + $Self->{Translation}->{'Customer ID to use when public ticket is created.'} = 'Customer ID para usar ao criar um chamado público (não autenticado)'; + $Self->{Translation}->{'Default agent for tickets.'} = 'Agente padrão para os tickets.'; + $Self->{Translation}->{'Default domain for user e-mails.'} = 'Domínio padrão para os e-mails dos usuários'; + $Self->{Translation}->{'FrontendModuleRegistration for NewTicketWizardPublic module.'} = 'FrontendModuleRegistration para o módulo NewTicketWizardPublic.'; + $Self->{Translation}->{'Module for creating custom new ticket interfaces without logging in'} = 'Módulo para criar novos tickets sem precisar estar logado no OTRS'; + $Self->{Translation}->{'New ticket wizard public'} = 'Assistente de novo chamado público'; + $Self->{Translation}->{'New ticket public'} = 'Novo chamado público'; + $Self->{Translation}->{'When false, forces the queue to be pre-selected.'} = 'Quando falso, força a fila a ser pré-selecionada.'; + $Self->{Translation}->{'FrontendModuleRegistration for QueuesPanel module.'} = 'FrontendModuleRegistration para o módulo QueuesPanel'; + $Self->{Translation}->{'Module for choosing main queues to open tickets'} = 'Módulo para escolher as principais filas para abrir chamados'; $Self->{Translation}->{'The following maintenances are in progress'} = 'As seguintes manutenções estão ocorrendo'; $Self->{Translation}->{'Started at: '} = 'Iniciada em:'; $Self->{Translation}->{'Queues panel'} = 'Novo chamado'; diff --git a/Kernel/Language/pt_BR_NewTicketWizardPublic.pm b/Kernel/Language/pt_BR_NewTicketWizardPublic.pm index 21d17d1..dda7adc 100644 --- a/Kernel/Language/pt_BR_NewTicketWizardPublic.pm +++ b/Kernel/Language/pt_BR_NewTicketWizardPublic.pm @@ -1,8 +1,9 @@ # -- -# Kernel/Modules/pt_BR_NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Translations +# Kernel/Modules/pt_BR_NewTicketWizardPublic.pm - translations for NewTicketWizardModulePublic +# +# Copyright (C) 2014 SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Adjustments for OTRS 4 # -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -12,6 +13,7 @@ package Kernel::Language::pt_BR_NewTicketWizard; use strict; use warnings; +use utf8; sub Data { my $Self = shift; diff --git a/Kernel/Language/pt_BR_NewTicketWizardServiceForm.pm b/Kernel/Language/pt_BR_NewTicketWizardServiceForm.pm index 21d17d1..6dde17a 100644 --- a/Kernel/Language/pt_BR_NewTicketWizardServiceForm.pm +++ b/Kernel/Language/pt_BR_NewTicketWizardServiceForm.pm @@ -1,8 +1,8 @@ -# -- -# Kernel/Modules/pt_BR_NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Translations +# Kernel/Modules/pt_BR_NewTicketWizardServiceForm.pm - translations for NewTicketWizardModuleServiceForm # -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# Copyright (C) 2014 SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Adjustments for OTRS 4 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -12,6 +12,7 @@ package Kernel::Language::pt_BR_NewTicketWizard; use strict; use warnings; +use utf8; sub Data { my $Self = shift; diff --git a/Kernel/Language/pt_BR_QueuesPanel.pm b/Kernel/Language/pt_BR_QueuesPanel.pm deleted file mode 100644 index 21d17d1..0000000 --- a/Kernel/Language/pt_BR_QueuesPanel.pm +++ /dev/null @@ -1,36 +0,0 @@ -# -- -# Kernel/Modules/pt_BR_NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Translations -# -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -package Kernel::Language::pt_BR_NewTicketWizard; - -use strict; -use warnings; - -sub Data { - my $Self = shift; - - $Self->{Translation}->{'The following maintenances are in progress'} = 'As seguintes manutenções estão ocorrendo'; - $Self->{Translation}->{'Started at: '} = 'Iniciada em:'; - $Self->{Translation}->{'Queues panel'} = 'Novo chamado'; - $Self->{Translation}->{'Your ticket has been registered with the number: '} = 'Seu chamado foi registrado com sucesso! O número é: '; - $Self->{Translation}->{'New ticket wizard'} = 'Assistente de novo chamado'; - $Self->{Translation}->{'New ticket'} = 'Assistente de chamado'; - $Self->{Translation}->{'Service forms'} = 'Formulários de serviços'; - $Self->{Translation}->{'Service form'} = 'Formulários de serviço'; - $Self->{Translation}->{'Create and manage service forms.'} = 'Criar e gerenciar formulários de serviços'; - $Self->{Translation}->{'Introduction'} = 'Introdução'; - $Self->{Translation}->{'Service'} = 'Serviço'; - $Self->{Translation}->{'Form'} = 'Formulário'; - $Self->{Translation}->{'Choose the service to ask for support'} = 'Escolha o serviço para o qual deseja suporte'; - $Self->{Translation}->{'Ticket created'} = 'Chamado criado com sucesso'; - $Self->{Translation}->{'Click here to open another ticket'} = 'Clique aqui para abrir um outro chamado se desejar'; - return 1; -} -1; \ No newline at end of file diff --git a/Kernel/Language/pt_BR_QueuesPanelPublic.pm b/Kernel/Language/pt_BR_QueuesPanelPublic.pm deleted file mode 100644 index 21d17d1..0000000 --- a/Kernel/Language/pt_BR_QueuesPanelPublic.pm +++ /dev/null @@ -1,36 +0,0 @@ -# -- -# Kernel/Modules/pt_BR_NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Translations -# -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -package Kernel::Language::pt_BR_NewTicketWizard; - -use strict; -use warnings; - -sub Data { - my $Self = shift; - - $Self->{Translation}->{'The following maintenances are in progress'} = 'As seguintes manutenções estão ocorrendo'; - $Self->{Translation}->{'Started at: '} = 'Iniciada em:'; - $Self->{Translation}->{'Queues panel'} = 'Novo chamado'; - $Self->{Translation}->{'Your ticket has been registered with the number: '} = 'Seu chamado foi registrado com sucesso! O número é: '; - $Self->{Translation}->{'New ticket wizard'} = 'Assistente de novo chamado'; - $Self->{Translation}->{'New ticket'} = 'Assistente de chamado'; - $Self->{Translation}->{'Service forms'} = 'Formulários de serviços'; - $Self->{Translation}->{'Service form'} = 'Formulários de serviço'; - $Self->{Translation}->{'Create and manage service forms.'} = 'Criar e gerenciar formulários de serviços'; - $Self->{Translation}->{'Introduction'} = 'Introdução'; - $Self->{Translation}->{'Service'} = 'Serviço'; - $Self->{Translation}->{'Form'} = 'Formulário'; - $Self->{Translation}->{'Choose the service to ask for support'} = 'Escolha o serviço para o qual deseja suporte'; - $Self->{Translation}->{'Ticket created'} = 'Chamado criado com sucesso'; - $Self->{Translation}->{'Click here to open another ticket'} = 'Clique aqui para abrir um outro chamado se desejar'; - return 1; -} -1; \ No newline at end of file diff --git a/Kernel/Modules/NewTicketWizard.pm b/Kernel/Modules/NewTicketWizard.pm index c7bf290..817eed8 100644 --- a/Kernel/Modules/NewTicketWizard.pm +++ b/Kernel/Modules/NewTicketWizard.pm @@ -1,6 +1,9 @@ # -- # Kernel/Modules/NewTicketWizard.pm - frontend module for creating custom new ticket interfaces -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Support for OTRS 4.0.3 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -11,21 +14,29 @@ package Kernel::Modules::NewTicketWizard; use strict; use warnings; -use Kernel::System::ServiceForm; -use Kernel::System::TicketWizard; -use Kernel::System::CustomerUser; -use Kernel::System::State; -use Kernel::System::SystemAddress; -use Kernel::System::Queue; -use Kernel::System::Web::UploadCache; -use Kernel::System::DynamicField; -use Kernel::System::DynamicField::Backend; -require Kernel::System::QueueService; use Kernel::System::VariableCheck qw(:all); -use Data::Dumper; -use Kernel::System::Maintenance; -use Kernel::System::DateUtils; +our @ObjectDependencies = ( +"Kernel::System::DateUtils", +"Kernel::System::Maintenance", +"Kernel::System::QueueService", +"Kernel::System::Service", +"Kernel::System::ServiceForm", +"Kernel::System::TicketWizard", +"Kernel::System::Web::UploadCache", +"Kernel::System::DynamicField", +"Kernel::System::DynamicField::Backend", +"Kernel::System::State", +"Kernel::System::SystemAddress", +"Kernel::System::CustomerUser", +"Kernel::System::Web::Request", +"Kernel::System::DB", +"Kernel::System::Ticket", +"Kernel::Output::HTML::Layout", +"KerneL::System::Log", +"Kernel::System::Queue", +"Kernel::Config" + ); sub new { my ( $Type, %Param ) = @_; @@ -34,48 +45,27 @@ sub new { my $Self = {%Param}; bless( $Self, $Type ); - # check needed objects - for ( - qw(ParamObject DBObject TicketObject LayoutObject LogObject QueueObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # needed objects - $Self->{CustomerUserObject} = Kernel::System::CustomerUser->new(%Param); - $Self->{StateObject} = Kernel::System::State->new(%Param); - $Self->{SystemAddress} = Kernel::System::SystemAddress->new(%Param); - $Self->{UploadCacheObject} = Kernel::System::Web::UploadCache->new(%Param); - $Self->{DynamicFieldObject} = Kernel::System::DynamicField->new(%Param); - $Self->{BackendObject} = Kernel::System::DynamicField::Backend->new(%Param); - $Self->{TicketWizard} = Kernel::System::TicketWizard->new(%Param); - $Self->{ServiceFormObject} = Kernel::System::ServiceForm->new(%Param); - $Self->{ServiceObject} = Kernel::System::Service->new(%Param); - $Self->{QueueObject} = Kernel::System::Queue->new(%Param); - $Self->{QueueServiceObject} = Kernel::System::QueueService->new(%Param); - $Self->{MaintenanceObject} = Kernel::System::Maintenance->new(%Param); - $Self->{DateUtilsObject} = Kernel::System::DateUtils->new(%Param); - return $Self; } sub BuildServices { my ( $Self, %Param ) = @_; my %Data = (); - + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueServiceObject = $Kernel::OM->Get("Kernel::System::QueueService"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); + # Build service chooser my %Services = (); - if ( !$Self->{ParamObject}->GetParam( Param => "QueueID" ) ) { - %Services = $Self->{ServiceObject}->ServiceList( UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), ); + if ( !$ParamObject->GetParam( Param => "QueueID" ) ) { + %Services = $ServiceObject->ServiceList( UserID => $ConfigObject->Get('CustomerPanelUserID'), ); } else { %Services = - $Self->{QueueServiceObject} - ->GetServiceList( QueueID => $Self->{ParamObject}->GetParam( Param => "QueueID" ), ); + $QueueServiceObject->GetServiceList( QueueID => $ParamObject->GetParam( Param => "QueueID" ), ); } my @ServicesCombo = (); @@ -97,7 +87,7 @@ sub BuildServices { @ServicesCombo = sort { $a->{Value} . "::" cmp $b->{Value} . "::" } @ServicesCombo; - my $retorno = $Self->{LayoutObject}->BuildSelection( + my $retorno = $LayoutObject->BuildSelection( Data => \@ServicesCombo, Name => 'ServiceID', SelectedID => $Param{ServiceID}, @@ -109,34 +99,37 @@ sub BuildServices { Max => 200 ); - $Self->Debug( "\n\n\n Combo " . $retorno . "\n\n\n" ); return $retorno; - } sub Run { my ( $Self, %Param ) = @_; + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueObject = $Kernel::OM->Get("Kernel::System::Queue"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); + my $MaintenanceObject = $Kernel::OM->Get("Kernel::System::Maintenance"); + my $DateUtilsObject = $Kernel::OM->Get("Kernel::System::DateUtils"); + my %Data = (); - if ( $Self->{ParamObject}->GetParam( Param => "QueueID" ) ) { - $Data{QueueID} = $Self->{ParamObject}->GetParam( Param => "QueueID" ); - } - else { - + if ( $ParamObject->GetParam( Param => "QueueID" ) ) { + $Data{QueueID} = $ParamObject->GetParam( Param => "QueueID" ); + } else { # Check if must show queue - my $_ConfigTicketWizard = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); + my $_ConfigTicketWizard = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); my $_ShowQueue = $_ConfigTicketWizard->{"ShowQueue"}; if ( !$_ShowQueue ) { - $Self->Debug("Sem fila e show queue != 1"); - return $Self->{LayoutObject}->Redirect( OP => "Action=QueuesPanel" ); + return $LayoutObject->Redirect( OP => "Action=QueuesPanel" ); } } - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "GetServices" ) { + if ( $ParamObject->GetParam( Param => "Subaction" ) eq "GetServices" ) { my $content = $Self->BuildServices(); - return $Self->{LayoutObject}->Attachment( - ContentType => 'application/text; charset=' . $Self->{LayoutObject}->{Charset}, + return $LayoutObject->Attachment( + ContentType => 'application/text; charset=' . $LayoutObject->{Charset}, Content => $content, Type => 'inline', NoCache => 1, @@ -144,25 +137,25 @@ sub Run { } # Build service chooser - $Data{ServiceStrg} = $Self->BuildServices(ServiceID => $Self->{ParamObject}->GetParam( Param => "ServiceID" )); + $Data{ServiceStrg} = $Self->BuildServices(ServiceID => $ParamObject->GetParam( Param => "ServiceID" )); - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); + $Self->{Config} = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); my $msgChooseService = $Self->{Config}->{"MessageChooseService"}; - if ( $Self->{ParamObject}->GetParam( Param => "QueueID" ) ) { - my %queueData = $Self->{QueueObject}->QueueGet( ID => $Self->{ParamObject}->GetParam( Param => "QueueID" ) ); + if ( $ParamObject->GetParam( Param => "QueueID" ) ) { + my %queueData = $QueueObject->QueueGet( ID => $ParamObject->GetParam( Param => "QueueID" ) ); my $queueName = $queueData{Name}; $msgChooseService =~ s/PLACE\_NAME/$queueName/g; } $Data{MsgChooseService} = $msgChooseService; - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) ) { - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { + if ( $ParamObject->GetParam( Param => "Subaction" ) ) { + if ( $ParamObject->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { return $Self->CreateTicket(); } - elsif ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { - return $Self->GetFormJSON( ServiceID => $Self->{ParamObject}->GetParam( Param => "ServiceID" ) ); + elsif ( $ParamObject->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { + return $Self->GetFormJSON( ServiceID => $ParamObject->GetParam( Param => "ServiceID" ) ); } } else { @@ -172,37 +165,35 @@ sub Run { $Data{FieldsForm} = $fields; # build output - my $Output = - $Self->{LayoutObject} - ->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("New ticket wizard") ); + my $Output = $LayoutObject->CustomerHeader( Title => $LayoutObject->{LanguageObject}->Translate("New ticket wizard") ); # maintenances - my @maintenances = $Self->{MaintenanceObject}->ListCurrentMaintenances(); + my @maintenances = $MaintenanceObject->ListCurrentMaintenances(); if (@maintenances) { - $Self->{LayoutObject}->Block( Name => 'MaintenancesPanel', ); + $LayoutObject->Block( Name => 'MaintenancesPanel', ); for my $maintenanceHash (@maintenances) { my %maintenance = %{$maintenanceHash}; - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'MaintenanceLine', Data => { Message => $maintenance{'Description'}, - StartDate => $Self->{DateUtilsObject}->BrazilianDate( - Timestamp => $Self->{DateUtilsObject}->FromSQL( StringDate => $maintenance{StartDate} ) + StartDate => $DateUtilsObject->BrazilianDate( + Timestamp => $DateUtilsObject->FromSQL( StringDate => $maintenance{StartDate} ) ), } ); } } - $Output .= $Self->{LayoutObject}->CustomerNavigationBar(); - $Output .= $Self->{LayoutObject}->Output( + $Output .= $LayoutObject->CustomerNavigationBar(); + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizard', ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); + $Output .= $LayoutObject->CustomerFooter(); return $Output; } } @@ -210,19 +201,21 @@ sub Run { sub GetFormJSON { my ( $Self, %Param ) = @_; my %serviceForm; + + my $ServiceFormObject = $Kernel::OM->Get("Kernel::System::ServiceForm"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); if ( $Param{ServiceID} ) { - %serviceForm = $Self->{ServiceFormObject}->GetServiceForm( ServiceID => $Param{ServiceID} ); + %serviceForm = $ServiceFormObject->GetServiceForm( ServiceID => $Param{ServiceID} ); } - my $QueueID = $Self->{ParamObject}->GetParam( Param => "QueueID" ); + my $QueueID = $ParamObject->GetParam( Param => "QueueID" ); my ( $schema, $fields, $introduction ) = $Self->GetForm( ServiceForm => \%serviceForm, QueueID => $QueueID ); - $Self->Debug( "[{" . $schema . "}, {" . $fields . "}, \"" . $introduction . "\"]" ); - - return $Self->{LayoutObject}->Attachment( - ContentType => 'application/json; charset=' . $Self->{LayoutObject}->{Charset}, + return $LayoutObject->Attachment( + ContentType => 'application/json; charset=' . $LayoutObject->{Charset}, Content => "[{" . $schema . "}, {" . $fields . "}, \"" . $introduction . "\"]", Type => 'inline', NoCache => 1, @@ -231,15 +224,18 @@ sub GetFormJSON { sub GetForm { my ( $Self, %Param ) = @_; + + my $TicketWizard = $Kernel::OM->Get("Kernel::System::TicketWizard"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); - my $schema = $Self->{TicketWizard}->GetBasicFieldsSchema(); - my $fields = $Self->{TicketWizard}->GetBasicFieldsOptions(); + my $schema = $TicketWizard->GetBasicFieldsSchema(); + my $fields = $TicketWizard->GetBasicFieldsOptions(); my $introduction; - ( $schema, $fields ) = $Self->{TicketWizard}->ReplaceOTRSValues( + ( $schema, $fields ) = $TicketWizard->ReplaceOTRSValues( Schema => $schema, Options => $fields, - UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID') + UserID => $ConfigObject->Get('CustomerPanelUserID') ); if ( !$Param{ServiceForm} ) { @@ -264,7 +260,7 @@ sub GetForm { } # Incluir campos dinâmicos no replace - ( $schema, $fields ) = $Self->{TicketWizard}->ReplaceOTRSDynamicFields( Schema => $schema, Options => $fields ); + ( $schema, $fields ) = $TicketWizard->ReplaceOTRSDynamicFields( Schema => $schema, Options => $fields ); if ( $Param{"QueueID"} ) { $schema = $schema . ",\n\"QueueID\": {\n\"type\": \"string\",\n\"default\": \"" . $Param{"QueueID"} . "\"}"; @@ -276,45 +272,41 @@ sub GetForm { sub GetQueueID() { my ( $Self, %Param ) = @_; + + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueObject = $Kernel::OM->Get("Kernel::System::Queue"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); # Check if queueID was sent - my $QueueID = $Self->{ParamObject}->GetParam( Param => "QueueID" ); - $Self->Debug( "\n\nBSUCANDO $QueueID FILA\n\n"); + my $QueueID = $ParamObject->GetParam( Param => "QueueID" ); if ($QueueID) { - $Self->Debug( "\n\nRecebida fila $QueueID\n\n" ); - my %Queue = $Self->{QueueObject}->QueueGet( ID => $QueueID ); + my %Queue = $QueueObject->QueueGet( ID => $QueueID ); return ( $Queue{"Name"}, $QueueID ); } # Gets default Queue - my $ConfigTicket = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); - my $ConfigTicketWizard = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); + my $ConfigTicket = $ConfigObject->Get("Ticket::Frontend::CustomerTicketMessage"); + my $ConfigTicketWizard = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); my $QueueDefault = $ConfigTicket->{"QueueDefault"}; # Checks if there is a field for the queue - $Self->Debug( Dumper($ConfigTicketWizard) ); - my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; my $QueueField = $ConfigTicketWizard->{"QueueField"}; - $Self->{LogObject}->Log( Priority => 'info', Message => "Searching queue for - $QueuePrefix ($QueueField)!" ); - my %QueueListID = $Self->{QueueObject}->QueueList( Valid => 1 ); - my %QueueList = reverse $Self->{QueueObject}->QueueList( Valid => 1 ); + my %QueueListID = $QueueObject->QueueList( Valid => 1 ); + my %QueueList = reverse $QueueObject->QueueList( Valid => 1 ); $QueueID = $QueueList{$QueueDefault}; my $Queue = $QueueListID{$QueueID}; if ( $QueuePrefix && $QueueField ) { - my $QueueSelected = $Self->{ParamObject}->GetParam( Param => $QueueField ); + my $QueueSelected = $ParamObject->GetParam( Param => $QueueField ); my $QueueName = "$QueuePrefix $QueueSelected"; - $Self->{LogObject} - ->Log( Priority => 'info', Message => "Searching queue for - $QueuePrefix ($QueueField) - [$QueueName]!" ); if ( $QueueList{$QueueName} ) { $QueueID = $QueueList{$QueueName}; $Queue = $QueueName; - $Self->{LogObject}->Log( Priority => 'info', Message => "Custom queue found - $QueueName ($QueueID)!" ); } } @@ -325,6 +317,14 @@ sub GetQueueID() { sub CreateTicket { my ( $Self, %Param ) = @_; my %Data = (); + + my $TicketObject = $Kernel::OM->Get("Kernel::System::Ticket"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $BackendObject = $Kernel::OM->Get("Kernel::System::DynamicField::Backend"); + my $DynamicFieldObject = $Kernel::OM->Get("Kernel::System::DynamicField"); + my $CustomerUserObject = $Kernel::OM->Get("Kernel::System::CustomerUser"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); # Queue my $queueFixed = 0; @@ -334,111 +334,101 @@ sub CreateTicket { my ( $Queue, $QueueID ) = $Self->GetQueueID(%Param); $Data{QueueID} = $QueueID; - $Self->Debug( "\n\nFila achada: " . $Queue . "\n\n" ); - - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); + $Self->{Config} = $ConfigObject->Get("Ticket::Frontend::CustomerTicketMessage"); - my $TicketID = $Self->{TicketObject}->TicketCreate( - Title => $Self->{ParamObject}->GetParam( Param => "subject" ), + my $TicketID = $TicketObject->TicketCreate( + Title => $ParamObject->GetParam( Param => "subject" ), QueueID => $QueueID, Priority => $Self->{Config}->{PriorityDefault}, Lock => 'unlock', State => 'new', - ServiceID => $Self->{ParamObject}->GetParam( Param => "service" ), - TypeID => $Self->{ParamObject}->GetParam( Param => "type" ), + ServiceID => $ParamObject->GetParam( Param => "service" ), + TypeID => $ParamObject->GetParam( Param => "type" ), CustomerID => $Self->{UserCustomerID}, CustomerUser => $Self->{UserLogin}, - OwnerID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), - UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), + OwnerID => $ConfigObject->Get('CustomerPanelUserID'), + UserID => $ConfigObject->Get('CustomerPanelUserID'), ); my $MimeType = 'text/plain'; my $serviceFields = ""; # Service Fields - for ( $Self->{ParamObject}->GetParamNames() ) { + for ( $ParamObject->GetParamNames() ) { if ( substr( $_, 0, 3 ) eq "SF_" ) { - $serviceFields .= substr( $_, 3 ) . ": " . $Self->{ParamObject}->GetParam( Param => $_ ) . "\n"; + $serviceFields .= substr( $_, 3 ) . ": " . $ParamObject->GetParam( Param => $_ ) . "\n"; } } - + $serviceFields .= "Login autenticado: " . $Self->{UserLogin} . "\n"; $serviceFields .= "\n\n"; # Dynamic Fields - for ( $Self->{ParamObject}->GetParamNames() ) { + for ( $ParamObject->GetParamNames() ) { if ( substr( $_, 0, 3 ) eq "DF_" ) { - my $Success = $Self->{BackendObject}->ValueSet( - DynamicFieldConfig => $Self->{DynamicFieldObject}->DynamicFieldGet( Name => substr( $_, 3 ) ), + my $Success = $BackendObject->ValueSet( + DynamicFieldConfig => $DynamicFieldObject->DynamicFieldGet( Name => substr( $_, 3 ) ), ObjectID => $TicketID, - Value => $Self->{ParamObject}->GetParam( Param => $_ ), - UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), + Value => $ParamObject->GetParam( Param => $_ ), + UserID => $ConfigObject->Get('CustomerPanelUserID'), ); } } # Create article - my $FullName = $Self->{CustomerUserObject}->CustomerName( UserLogin => $Self->{UserLogin}, ); + my $FullName = $CustomerUserObject->CustomerName( UserLogin => $Self->{UserLogin}, ); my $From = "\"$FullName\" <$Self->{UserEmail}>"; - my $ArticleID = $Self->{TicketObject}->ArticleCreate( + my $ArticleID = $TicketObject->ArticleCreate( TicketID => $TicketID, ArticleType => $Self->{Config}->{ArticleType}, SenderType => $Self->{Config}->{SenderType}, From => $From, To => $Queue, - Subject => $Self->{ParamObject}->GetParam( Param => "subject" ), - Body => $serviceFields . $Self->{ParamObject}->GetParam( Param => "description" ), + Subject => $ParamObject->GetParam( Param => "subject" ), + Body => $serviceFields . $ParamObject->GetParam( Param => "description" ), MimeType => $MimeType, - Charset => $Self->{LayoutObject}->{UserCharset}, - UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), + Charset => $LayoutObject->{UserCharset}, + UserID => $ConfigObject->Get('CustomerPanelUserID'), HistoryType => $Self->{Config}->{HistoryType}, HistoryComment => $Self->{Config}->{HistoryComment} || '%%', - AutoResponseType => ( $Self->{ConfigObject}->Get('AutoResponseForWebTickets') ) + AutoResponseType => ( $ConfigObject->Get('AutoResponseForWebTickets') ) ? 'auto reply' : '', OrigHeader => { From => $From, To => $Queue, - Subject => $Self->{ParamObject}->GetParam( Param => "subject" ), - Body => $serviceFields . $Self->{ParamObject}->GetParam( Param => "description" ), + Subject => $ParamObject->GetParam( Param => "subject" ), + Body => $serviceFields . $ParamObject->GetParam( Param => "description" ), }, Queue => $Queue, ); # Attachments - my %UploadStuff = $Self->{ParamObject}->GetUploadAll( Param => "attachment" ); + my %UploadStuff = $ParamObject->GetUploadAll( Param => "attachment" ); # if (%UploadStuff) { - # print STDERR "\nTem anexo!\n"; - $Self->{TicketObject}->ArticleWriteAttachment( + $TicketObject->ArticleWriteAttachment( %UploadStuff, ArticleID => $ArticleID, - UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID'), + UserID => $ConfigObject->Get('CustomerPanelUserID'), ); # } - $Data{TicketNumber} = $Self->{TicketObject}->TicketNumberLookup( TicketID => $TicketID ); + $Data{TicketNumber} = $TicketObject->TicketNumberLookup( TicketID => $TicketID ); # build output if (! $queueFixed) { delete $Data{QueueID} } - my $Output = $Self->{LayoutObject}->CustomerHeader( Title => "Ticket created" ); - $Output .= $Self->{LayoutObject}->CustomerNavigationBar(); - $Output .= $Self->{LayoutObject}->Output( + my $Output = $LayoutObject->CustomerHeader( Title => "Ticket created" ); + $Output .= $LayoutObject->CustomerNavigationBar(); + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardTicketCreated', ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); + $Output .= $LayoutObject->CustomerFooter(); return $Output; } -sub Debug { - my $Self = shift; - my $msg = shift; - - print STDERR "\n\nDEBUG => \n$msg\n\n"; -} - 1; diff --git a/Kernel/Modules/NewTicketWizardPublic.pm b/Kernel/Modules/NewTicketWizardPublic.pm index 5c7684b..c152938 100644 --- a/Kernel/Modules/NewTicketWizardPublic.pm +++ b/Kernel/Modules/NewTicketWizardPublic.pm @@ -1,6 +1,9 @@ # -- # Kernel/Modules/NewTicketWizardPublic.pm - frontend module for creating custom new ticket interfaces without user login -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Support for OTRS 4.0.3 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -10,23 +13,30 @@ package Kernel::Modules::NewTicketWizardPublic; use strict; use warnings; - -use Kernel::System::DateUtils; -use Kernel::System::ServiceForm; -use Kernel::System::TicketWizard; -use Kernel::System::CustomerUser; -use Kernel::System::State; -use Kernel::System::SystemAddress; -use Kernel::System::Queue; -use Kernel::System::Web::UploadCache; -use Kernel::System::DynamicField; -use Kernel::System::DynamicField::Backend; -require Kernel::System::QueueService; use Kernel::System::VariableCheck qw(:all); -use Data::Dumper; -use Kernel::System::Maintenance; -use Kernel::System::DateUtils; +our @ObjectDependencies = ( +"Kernel::System::DateUtils", +"Kernel::System::Maintenance", +"Kernel::System::QueueService", +"Kernel::System::Service", +"Kernel::System::ServiceForm", +"Kernel::System::TicketWizard", +"Kernel::System::Web::UploadCache", +"Kernel::System::DynamicField", +"Kernel::System::DynamicField::Backend", +"Kernel::System::State", +"Kernel::System::SystemAddress", +"Kernel::System::CustomerUser", +"Kernel::System::Web::Request", +"Kernel::System::DB", +"Kernel::System::Ticket", +"Kernel::Output::HTML::Layout", +"KerneL::System::Log", +"Kernel::System::Queue", +"Kernel::Config" + ); + sub new { my ( $Type, %Param ) = @_; @@ -34,75 +44,28 @@ sub new { my $Self = {%Param}; bless( $Self, $Type ); - # check needed objects - for ( - qw(ParamObject DBObject LayoutObject LogObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # needed objects - $Self->{TicketObject} = Kernel::System::Ticket->new(%Param); - $Self->{QueueObject} = Kernel::System::Queue->new(%Param); - - $Param{QueueObject} = $Self->{QueueObject}; - - $Self->{CustomerUserObject} = Kernel::System::CustomerUser->new(%Param); - $Self->{StateObject} = Kernel::System::State->new(%Param); - $Self->{SystemAddress} = Kernel::System::SystemAddress->new(%Param); - $Self->{UploadCacheObject} = Kernel::System::Web::UploadCache->new(%Param); - $Self->{DynamicFieldObject} = Kernel::System::DynamicField->new(%Param); - $Self->{BackendObject} = Kernel::System::DynamicField::Backend->new(%Param); - $Self->{TicketWizard} = Kernel::System::TicketWizard->new(%Param); - $Self->{ServiceFormObject} = Kernel::System::ServiceForm->new(%Param); - $Self->{ServiceObject} = Kernel::System::Service->new(%Param); - $Self->{QueueServiceObject} = Kernel::System::QueueService->new(%Param); - $Self->{MaintenanceObject} = Kernel::System::Maintenance->new(%Param); - $Self->{DateUtilsObject} = Kernel::System::DateUtils->new(%Param); - return $Self; } -sub Run { +sub BuildServices { my ( $Self, %Param ) = @_; my %Data = (); - - if ($Self->{ParamObject}->GetParam(Param => "QueueID")) { - $Data{QueueID} = $Self->{ParamObject}->GetParam(Param => "QueueID"); - } else { - # Check if must show queue - my $_ConfigTicketWizard = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); - my $_ShowQueue = $_ConfigTicketWizard->{"ShowQueue"}; - if (! $_ShowQueue) { - return $Self->{LayoutObject}->Redirect( OP => "Action=QueuesPanelPublic" ); - } - } - - $Self->{DefaultUserID} = - $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{"DefaultUserID"}; - $Self->{DefaultCustomerID} = - $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{"DefaultCustomerID"}; - $Self->{DefaultUserDomain} = - $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{"DefaultUserDomain"}; - - if ($Self->{ParamObject}->GetParam(Param => "QueueID")) { - $Data{QueueID} = $Self->{ParamObject}->GetParam(Param => "QueueID"); - } + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueServiceObject = $Kernel::OM->Get("Kernel::System::QueueService"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); # Build service chooser my %Services = (); - - if ( !$Self->{ParamObject}->GetParam( Param => "QueueID" ) ) { - %Services = $Self->{ServiceObject}->ServiceList( UserID => $Self->{DefaultUserID} ); - } else { - %Services = - $Self->{QueueServiceObject} - ->GetServiceList( QueueID => $Self->{ParamObject}->GetParam( Param => "QueueID" ), ); - } + if ( !$ParamObject->GetParam( Param => "QueueID" ) ) { + %Services = $ServiceObject->ServiceList( UserID => $ConfigObject->Get('CustomerPanelUserID'), ); + } + else { + %Services = + $QueueServiceObject->GetServiceList( QueueID => $ParamObject->GetParam( Param => "QueueID" ), ); + } my @ServicesCombo = (); for my $serviceID ( keys %Services ) { @@ -123,10 +86,10 @@ sub Run { @ServicesCombo = sort { $a->{Value} . "::" cmp $b->{Value} . "::" } @ServicesCombo; - $Data{ServiceStrg} = $Self->{LayoutObject}->BuildSelection( + my $retorno = $LayoutObject->BuildSelection( Data => \@ServicesCombo, Name => 'ServiceID', - SelectedID => $Self->{ParamObject}->GetParam( Param => "ServiceID" ), + SelectedID => $Param{ServiceID}, Class => "Validate_Required " . ( $Param{Errors}->{ServiceIDInvalid} || '' ), PossibleNone => 1, TreeView => 1, @@ -134,24 +97,61 @@ sub Run { Translation => 0, Max => 200 ); - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); + + return $retorno; +} + +sub Run { + my ( $Self, %Param ) = @_; + my %Data = (); + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueObject = $Kernel::OM->Get("Kernel::System::Queue"); + my $QueueServiceObject = $Kernel::OM->Get("Kernel::System::QueueService"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); + my $MaintenanceObject = $Kernel::OM->Get("Kernel::System::Maintenance"); + my $DateUtilsObject = $Kernel::OM->Get("Kernel::System::DateUtils"); + + if ($ParamObject->GetParam(Param => "QueueID")) { + $Data{QueueID} = $ParamObject->GetParam(Param => "QueueID"); + } else { + # Check if must show queue + my $_ConfigTicketWizard = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); + my $_ShowQueue = $_ConfigTicketWizard->{"ShowQueue"}; + if (! $_ShowQueue) { + return $LayoutObject->Redirect( OP => "Action=QueuesPanelPublic" ); + } + } + + $Self->{Config} = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); + $Self->{DefaultUserID} = $Self->{Config}->{"DefaultUserID"}; + $Self->{DefaultCustomerID} = $Self->{Config}->{"DefaultCustomerID"}; + $Self->{DefaultUserDomain} = $Self->{Config}->{"DefaultUserDomain"}; + + if ($ParamObject->GetParam(Param => "QueueID")) { + $Data{QueueID} = $ParamObject->GetParam(Param => "QueueID"); + } + + # Build service chooser + $Data{ServiceStrg} = $Self->BuildServices(ServiceID => $ParamObject->GetParam( Param => "ServiceID" )); + my $msgChooseService = $Self->{Config}->{"MessageChooseServicePublic"}; - if ($Self->{ParamObject}->GetParam( Param => "QueueID" ) ) { - my %queueData = $Self->{QueueObject}->QueueGet(ID => $Self->{ParamObject}->GetParam( Param => "QueueID" )); + if ($ParamObject->GetParam( Param => "QueueID" ) ) { + my %queueData = $Self->{QueueObject}->QueueGet(ID => $ParamObject->GetParam( Param => "QueueID" )); my $queueName = $queueData{Name}; $msgChooseService =~ s/PLACE\_NAME/$queueName/g; } - $Data{MsgChooseService} = $msgChooseService; - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) ) { - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { + if ( $ParamObject->GetParam( Param => "Subaction" ) ) { + if ( $ParamObject->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { return $Self->CreateTicket(); } - elsif ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { - return $Self->GetFormJSON( ServiceID => $Self->{ParamObject}->GetParam( Param => "ServiceID" ) ); + elsif ( $ParamObject->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { + return $Self->GetFormJSON( ServiceID => $ParamObject->GetParam( Param => "ServiceID" ) ); } } else { @@ -161,36 +161,33 @@ sub Run { $Data{FieldsForm} = $fields; # build output - my $Output = - $Self->{LayoutObject} - ->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("New ticket wizard") ); + my $Output = $LayoutObject->CustomerHeader( Title => $LayoutObject->{LanguageObject}->Translate("New ticket wizard") ); # maintenances - my @maintenances = $Self->{MaintenanceObject}->ListCurrentMaintenances(); + my @maintenances = $MaintenanceObject->ListCurrentMaintenances(); if (@maintenances) { - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'MaintenancesPanel', ); for my $maintenanceHash (@maintenances) { my %maintenance = %{$maintenanceHash}; - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'MaintenanceLine', Data => { Message => $maintenance{'Description'}, - StartDate => $Self->{DateUtilsObject}->BrazilianDate(Timestamp => $Self->{DateUtilsObject}->FromSQL(StringDate => $maintenance{StartDate})), + StartDate => $DateUtilsObject->BrazilianDate(Timestamp => $DateUtilsObject->FromSQL(StringDate => $maintenance{StartDate})), }); } } - - $Output .= $Self->{LayoutObject}->Output( + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardPublic', ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); + $Output .= $LayoutObject->CustomerFooter(); return $Output; } } @@ -198,17 +195,21 @@ sub Run { sub GetFormJSON { my ( $Self, %Param ) = @_; my %serviceForm; + + my $ServiceFormObject = $Kernel::OM->Get("Kernel::System::ServiceForm"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); if ( $Param{ServiceID} ) { - %serviceForm = $Self->{ServiceFormObject}->GetServiceForm( ServiceID => $Param{ServiceID} ); + %serviceForm = $ServiceFormObject->GetServiceForm( ServiceID => $Param{ServiceID} ); } - my $QueueID = $Self->{ParamObject}->GetParam(Param => "QueueID"); + my $QueueID = $ParamObject->GetParam(Param => "QueueID"); my ( $schema, $fields, $introduction ) = $Self->GetForm( ServiceForm => \%serviceForm, QueueID => $QueueID ); - return $Self->{LayoutObject}->Attachment( - ContentType => 'application/json; charset=' . $Self->{LayoutObject}->{Charset}, + return $LayoutObject->Attachment( + ContentType => 'application/json; charset=' . $LayoutObject->{Charset}, Content => "[{" . $schema . "}, {" . $fields . "}, \"" . $introduction . "\"]", Type => 'inline', NoCache => 1, @@ -217,12 +218,15 @@ sub GetFormJSON { sub GetForm { my ( $Self, %Param ) = @_; + + my $TicketWizard = $Kernel::OM->Get("Kernel::System::TicketWizard"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); - my $schema = $Self->{TicketWizard}->GetBasicFieldsSchemaPublic(); - my $fields = $Self->{TicketWizard}->GetBasicFieldsOptionsPublic(); + my $schema = $TicketWizard->GetBasicFieldsSchemaPublic(); + my $fields = $TicketWizard->GetBasicFieldsOptionsPublic(); my $introduction; - ( $schema, $fields ) = $Self->{TicketWizard}->ReplaceOTRSValues( + ( $schema, $fields ) = $TicketWizard->ReplaceOTRSValues( Schema => $schema, Options => $fields, UserID => $Self->{DefaultUserID} @@ -250,7 +254,7 @@ sub GetForm { } # Incluir campos dinâmicos no replace - ( $schema, $fields ) = $Self->{TicketWizard}->ReplaceOTRSDynamicFields( Schema => $schema, Options => $fields ); + ( $schema, $fields ) = $TicketWizard->ReplaceOTRSDynamicFields( Schema => $schema, Options => $fields ); if ($Param{"QueueID"}) { $schema = $schema . ",\n\"QueueID\": {\n\"type\": \"string\",\n\"default\": \"" . $Param{"QueueID"} . "\"}"; @@ -263,81 +267,66 @@ sub GetForm { sub GetQueueID() { my ( $Self, %Param ) = @_; + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $QueueObject = $Kernel::OM->Get("Kernel::System::Queue"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + # Check if queueID was sent - my $QueueID = $Self->{ParamObject}->GetParam(Param => "QueueID"); - $Self->Debug( "\n\nBSUCANDO $QueueID FILA\n\n"); + my $QueueID = $ParamObject->GetParam(Param => "QueueID"); if ($QueueID) { - $Self->Debug( "\n\nRecebida fila $QueueID\n\n" ); - my %Queue = $Self->{QueueObject}->QueueGet(ID => $QueueID); + my %Queue = $QueueObject->QueueGet(ID => $QueueID); return ($Queue{"Name"}, $QueueID); } # Gets default Queue - my $ConfigTicket = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); - my $ConfigTicketWizard = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard"); + my $ConfigTicket = $ConfigObject->Get("Ticket::Frontend::CustomerTicketMessage"); + my $ConfigTicketWizard = $ConfigObject->Get("Ticket::Frontend::Customer::NewTicketWizard"); my $QueueDefault = $ConfigTicket->{"QueueDefault"}; # Checks if there is a field for the queue - #print STDERR Dumper($ConfigTicketWizard); - my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; my $QueueField = $ConfigTicketWizard->{"QueueField"}; - $Self->Debug( "Searching queue for - $QueuePrefix ($QueueField)!" ); - my %QueueListID = $Self->{QueueObject}->QueueList( Valid => 1 ); - my %QueueList = reverse $Self->{QueueObject}->QueueList( Valid => 1 ); + my %QueueListID = $QueueObject->QueueList( Valid => 1 ); + my %QueueList = reverse $QueueObject->QueueList( Valid => 1 ); $QueueID = $QueueList{$QueueDefault}; my $Queue = $QueueListID{$QueueID}; - ### $Self->Debug(Dumper(\%QueueList)); - if ( $QueuePrefix && $QueueField ) { - my $QueueSelected = $Self->{ParamObject}->GetParam( Param => $QueueField ); + my $QueueSelected = $ParamObject->GetParam( Param => $QueueField ); my $QueueName = "$QueuePrefix $QueueSelected"; - ###$Self->Debug( "Searching queue for - $QueuePrefix ($QueueField) - [$QueueName]!" ); if ( $QueueList{$QueueName} ) { $QueueID = $QueueList{$QueueName}; $Queue = $QueueName; - ###$Self->Debug( "Custom queue found - $QueueName ($QueueID)!" ); } - } - + return ( $Queue, $QueueID ); } -sub Debug { - my $Self = shift; - my $msg = shift; - - #print STDERR "\n\nDEBUG => $msg\n\n"; -} - sub GetUserIDFromEmail { my $Self = shift; my $email = shift; my $result = $Self->{DefaultCustomerID}; my $domainList = $Self->{DefaultUserDomain}; + + my $CustomerUserObject = $Kernel::OM->Get("Kernel::System::CustomerUser"); if ($domainList) { - $Self->Debug("Has Domain in config"); my @domains = split( ",", $domainList ); for my $domain (@domains) { - $Self->Debug("Checking domain <$domain>"); my @parts = split( "@", $email ); if ( $parts[1] eq $domain ) { - $Self->Debug("Domain equals config"); my $id = $parts[0]; - my %List = $Self->{CustomerUserObject}->CustomerSearch( + my %List = $CustomerUserObject->CustomerSearch( UserLogin => $id, Valid => 1, # not required, default 1 ); if ( keys %List ) { - $Self->Debug("User found!"); $result = $id; return $result; } @@ -352,6 +341,14 @@ sub CreateTicket { my ( $Self, %Param ) = @_; my %Data = (); + my $TicketObject = $Kernel::OM->Get("Kernel::System::Ticket"); + my $ConfigObject = $Kernel::OM->Get("Kernel::Config"); + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $BackendObject = $Kernel::OM->Get("Kernel::System::DynamicField::Backend"); + my $DynamicFieldObject = $Kernel::OM->Get("Kernel::System::DynamicField"); + my $CustomerUserObject = $Kernel::OM->Get("Kernel::System::CustomerUser"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + # Queue my $queueFixed = 0; if ($Data{QueueID}) { @@ -360,20 +357,18 @@ sub CreateTicket { my ( $Queue, $QueueID ) = $Self->GetQueueID(%Param); $Data{QueueID} = $QueueID; - #print STDERR "\n\nFila achada: " . $Queue . "\n\n"; - - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); + $Self->{Config} = $ConfigObject->Get("Ticket::Frontend::CustomerTicketMessage"); - my $TicketID = $Self->{TicketObject}->TicketCreate( - Title => $Self->{ParamObject}->GetParam( Param => "subject" ), + my $TicketID = $TicketObject->TicketCreate( + Title => $ParamObject->GetParam( Param => "subject" ), QueueID => $QueueID, Priority => $Self->{Config}->{PriorityDefault}, Lock => 'unlock', State => 'new', - ServiceID => $Self->{ParamObject}->GetParam( Param => "service" ), - TypeID => $Self->{ParamObject}->GetParam( Param => "type" ), - CustomerID => $Self->GetUserIDFromEmail( $Self->{ParamObject}->GetParam( Param => "email" ) ), - CustomerUser => $Self->GetUserIDFromEmail( $Self->{ParamObject}->GetParam( Param => "email" ) ), + ServiceID => $ParamObject->GetParam( Param => "service" ), + TypeID =>$ParamObject->GetParam( Param => "type" ), + CustomerID => $Self->GetUserIDFromEmail( $ParamObject->GetParam( Param => "email" ) ), + CustomerUser => $Self->GetUserIDFromEmail( $ParamObject->GetParam( Param => "email" ) ), OwnerID => $Self->{DefaultUserID}, UserID => $Self->{DefaultUserID}, ); @@ -382,61 +377,61 @@ sub CreateTicket { my $serviceFields = ""; # Service Fields - for ( $Self->{ParamObject}->GetParamNames() ) { + for ( $ParamObject->GetParamNames() ) { if ( substr( $_, 0, 3 ) eq "SF_" ) { - $serviceFields .= substr( $_, 3 ) . ": " . $Self->{ParamObject}->GetParam( Param => $_ ) . "\n"; + $serviceFields .= substr( $_, 3 ) . ": " . $ParamObject->GetParam( Param => $_ ) . "\n"; } } $serviceFields .= "\n\n"; # Dynamic Fields - for ( $Self->{ParamObject}->GetParamNames() ) { + for ( $ParamObject->GetParamNames() ) { if ( substr( $_, 0, 3 ) eq "DF_" ) { - my $Success = $Self->{BackendObject}->ValueSet( - DynamicFieldConfig => $Self->{DynamicFieldObject}->DynamicFieldGet( Name => substr( $_, 3 ) ), + my $Success = $BackendObject->ValueSet( + DynamicFieldConfig => $DynamicFieldObject->DynamicFieldGet( Name => substr( $_, 3 ) ), ObjectID => $TicketID, - Value => $Self->{ParamObject}->GetParam( Param => $_ ), + Value => $ParamObject->GetParam( Param => $_ ), UserID => $Self->{DefaultUserID}, ); } } # Create article - my $FullName = $Self->{ParamObject}->GetParam( Param => "name" ); - my $Email = $Self->{ParamObject}->GetParam( Param => "email" ); + my $FullName = $ParamObject->GetParam( Param => "name" ); + my $Email = $ParamObject->GetParam( Param => "email" ); my $From = "\"$FullName\" <$Email>"; - my $ArticleID = $Self->{TicketObject}->ArticleCreate( + my $ArticleID = $TicketObject->ArticleCreate( TicketID => $TicketID, ArticleType => $Self->{Config}->{ArticleType}, SenderType => $Self->{Config}->{SenderType}, From => $From, To => $Queue, - Subject => $Self->{ParamObject}->GetParam( Param => "subject" ), - Body => $serviceFields . $Self->{ParamObject}->GetParam( Param => "description" ), + Subject => $ParamObject->GetParam( Param => "subject" ), + Body => $serviceFields . $ParamObject->GetParam( Param => "description" ), MimeType => $MimeType, - Charset => $Self->{LayoutObject}->{UserCharset}, + Charset => $LayoutObject->{UserCharset}, UserID => $Self->{DefaultUserID}, HistoryType => $Self->{Config}->{HistoryType}, HistoryComment => $Self->{Config}->{HistoryComment} || '%%', - AutoResponseType => ( $Self->{ConfigObject}->Get('AutoResponseForWebTickets') ) + AutoResponseType => ( $ConfigObject->Get('AutoResponseForWebTickets') ) ? 'auto reply' : '', OrigHeader => { From => $From, To => $Queue, - Subject => $Self->{ParamObject}->GetParam( Param => "subject" ), - Body => $serviceFields . $Self->{ParamObject}->GetParam( Param => "description" ), + Subject => $ParamObject->GetParam( Param => "subject" ), + Body => $serviceFields . $ParamObject->GetParam( Param => "description" ), }, Queue => $Queue, ); # Attachments - my %UploadStuff = $Self->{ParamObject}->GetUploadAll( Param => "attachment" ); + my %UploadStuff = $ParamObject->GetUploadAll( Param => "attachment" ); # if (%UploadStuff) { # print STDERR "\nTem anexo!\n"; - $Self->{TicketObject}->ArticleWriteAttachment( + $TicketObject->ArticleWriteAttachment( %UploadStuff, ArticleID => $ArticleID, UserID => $Self->{DefaultUserID}, @@ -444,27 +439,20 @@ sub CreateTicket { # } - $Data{TicketNumber} = $Self->{TicketObject}->TicketNumberLookup( TicketID => $TicketID ); + $Data{TicketNumber} = $TicketObject->TicketNumberLookup( TicketID => $TicketID ); # build output if (! $queueFixed) { delete $Data{QueueID} } - my $Output = $Self->{LayoutObject}->CustomerHeader( Title => "Ticket created" ); - $Output .= $Self->{LayoutObject}->Output( + my $Output = $LayoutObject->CustomerHeader( Title => "Ticket created" ); + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardTicketCreatedPublic', ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); + $Output .= $LayoutObject->CustomerFooter(); return $Output; } -sub Debug { - my $Self = shift; - my $msg = shift; - - print STDERR "\n\nDEBUG => $msg\n"; -} - 1; diff --git a/Kernel/Modules/NewTicketWizardServiceForm.pm b/Kernel/Modules/NewTicketWizardServiceForm.pm index a47aede..2abdb79 100644 --- a/Kernel/Modules/NewTicketWizardServiceForm.pm +++ b/Kernel/Modules/NewTicketWizardServiceForm.pm @@ -1,6 +1,9 @@ # -- # Kernel/Modules/NewTicketWizard.pm - frontend module for customizing service forms -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/08/2015 - Support for OTRS 4.0.3 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -12,11 +15,17 @@ use strict; use warnings; use Kernel::System::VariableCheck qw(:all); -use Data::Dumper; -use Kernel::System::ServiceForm; -use Kernel::System::Service; -# TODO: Traducoes +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 ) = @_; @@ -25,22 +34,6 @@ sub new { my $Self = {%Param}; bless( $Self, $Type ); - # check needed objects - for ( - qw(ParamObject DBObject LayoutObject LogObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # needed objects - $Self->{SystemAddress} = Kernel::System::SystemAddress->new(%Param); - $Self->{BackendObject} = Kernel::System::DynamicField::Backend->new(%Param); - $Self->{ServiceObject} = Kernel::System::Service->new(%Param); - $Self->{ServiceFormObject} = Kernel::System::ServiceForm->new(%Param); - return $Self; } @@ -48,44 +41,46 @@ sub Run { my ( $Self, %Param ) = @_; my %Data = (); - - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) ) { + + my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); + my $ServiceFormObject = $Kernel::OM->Get("Kernel::System::ServiceForm"); + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + + if ( $ParamObject->GetParam( Param => "Subaction" ) ) { if ( $Self->{Subaction} eq 'ServiceEdit' ) { # header - my $Output = $Self->{LayoutObject}->Header(); - $Output .= $Self->{LayoutObject}->NavigationBar(); + my $Output = $LayoutObject->Header(); + $Output .= $LayoutObject->NavigationBar(); - my %serviceForm = - $Self->{ServiceFormObject} - ->GetServiceForm( ServiceID => $Self->{ParamObject}->GetParam( Param => "ServiceID" ) ); + my %serviceForm = $ServiceFormObject->GetServiceForm( ServiceID => $ParamObject->GetParam( Param => "ServiceID" ) ); $Data{Introduction} = $serviceForm{Introduction}; $Data{Form} = $serviceForm{Form}; $Data{Schema} = $serviceForm{Schema}; - $Data{ServiceID} = $Self->{ParamObject}->GetParam( Param => "ServiceID" ); + $Data{ServiceID} = $ParamObject->GetParam( Param => "ServiceID" ); - $Output .= $Self->{LayoutObject}->Output( + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardServiceFormEdit', ); # html output - $Output .= $Self->{LayoutObject}->Footer(); + $Output .= $LayoutObject->Footer(); return $Output; } elsif ( $Self->{Subaction} eq 'ServiceSave' ) { # header - my $Output = $Self->{LayoutObject}->Header(); - $Output .= $Self->{LayoutObject}->NavigationBar(); - - $Self->{ServiceFormObject}->SaveServiceForm( - ServiceID => $Self->{ParamObject}->GetParam( Param => "ServiceID" ), - Introduction => $Self->{ParamObject}->GetParam( Param => "Introduction" ), - Form => $Self->{ParamObject}->GetParam( Param => "Form" ), - Schema => $Self->{ParamObject}->GetParam( Param => "Schema" ), + my $Output = $LayoutObject->Header(); + $Output .= $LayoutObject->NavigationBar(); + + $ServiceFormObject->SaveServiceForm( + ServiceID => $ParamObject->GetParam( Param => "ServiceID" ), + Introduction => $ParamObject->GetParam( Param => "Introduction" ), + Form => $ParamObject->GetParam( Param => "Form" ), + Schema => $ParamObject->GetParam( Param => "Schema" ), ); return $Self->Overview(); @@ -101,20 +96,23 @@ sub Overview { my ( $Self, %Param ) = @_; my %Data = (); + + my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); + my $ServiceObject = $Kernel::OM->Get("Kernel::System::Service"); # build output - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'Overview', Data => { %Param, }, ); - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'OverviewList', Data => { %Param, }, ); # get service list - my $ServiceList = $Self->{ServiceObject}->ServiceListGet( + my $ServiceList = $ServiceObject->ServiceListGet( Valid => 1, UserID => $Self->{UserID}, ); @@ -129,7 +127,7 @@ sub Overview { if (! grep { index($_->{Name}, $ServiceData->{Name} . "::") >= 0} @{$ServiceList} ) { # output row - $Self->{LayoutObject}->Block( + $LayoutObject->Block( Name => 'OverviewListRow', Data => { %{$ServiceData} }, ); @@ -137,14 +135,14 @@ sub Overview { } } - my $Output = $Self->{LayoutObject}->Header( Title => $Self->{LayoutObject}->{LanguageObject}->Get("Service Form") ); + my $Output = $LayoutObject->Header( Title => $LayoutObject->{LanguageObject}->Translate("Service Form") ); - $Output .= $Self->{LayoutObject}->NavigationBar(); - $Output .= $Self->{LayoutObject}->Output( + $Output .= $LayoutObject->NavigationBar(); + $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'NewTicketWizardServiceForm', ); - $Output .= $Self->{LayoutObject}->Footer(); + $Output .= $LayoutObject->Footer(); return $Output; } diff --git a/Kernel/Modules/QueuesPanel.pm b/Kernel/Modules/QueuesPanel.pm deleted file mode 100644 index 0f60c3f..0000000 --- a/Kernel/Modules/QueuesPanel.pm +++ /dev/null @@ -1,193 +0,0 @@ -# -- -# Kernel/Modules/QueuesPanel.pm - frontend module for choosing top queues -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -package Kernel::Modules::QueuesPanel; - -use strict; -use warnings; - -use Kernel::System::Queue; -use Kernel::System::VariableCheck qw(:all); -use Data::Dumper; - -sub new { - my ( $Type, %Param ) = @_; - - # allocate new hash for object - my $Self = {%Param}; - bless( $Self, $Type ); - - # check needed objects - for ( - qw(ParamObject DBObject LayoutObject LogObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # needed objects - - return $Self; -} - -sub Run { - my ( $Self, %Param ) = @_; - my %Data = (); - - $Self->{UrlAtendimento} = '/otrs/customer.pl?Action=NewTicketWizard;QueueID='; - - $Data{"QueueJS"} = $Self->BuildQueuesJS(); - - $Self->Debug( $Data{"QueueJS"} ); - - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); - my $msgChooseService = $Self->{Config}->{"MessageChooseQueue"}; - $Data{MsgChooseQueue} = $msgChooseService; - - # build output - my $Output = - $Self->{LayoutObject}->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("Queues panel") ); - - $Output .= $Self->{LayoutObject}->Output( - Data => \%Data, - TemplateFile => 'QueuesPanel', - ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); - return $Output; -} - -sub BuildQueuesJS { - my ( $Self, %Param ) = @_; - - # Get queues - my %Queues = (); - - $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); - while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { - $Queues{ $Row[0] } = $Row[1]; - } - - my $result = - '$(document).ready(function() {' . "\n\t" - . ' $("#columns").hColumns({' - . "\n\t\t" - . ' nodeSource: function(node_id, callback) {' . "\n"; - - for my $queue ( keys %Queues ) { - $result = $result . $Self->BuildQueueJS( Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue ); - } - - $result = $result . $Self->BuildTopQueuesJS( Queues => \%Queues ); - - $result = $result . "\n\t}});\n});"; - - return $result; -} - -sub BuildTopQueuesJS { - my ( $Self, %Param ) = @_; - my %Queues = %{ $Param{"Queues"} }; - - my @topQueues = grep { index( $Queues{$_}, '::' ) == -1 } keys %Queues; - - my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; - for my $queue (@topQueues) { - - if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "folder" },' . "\n"; - } - else { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "link", url: "' - . $Self->{UrlAtendimento} - . $queue . '" },' . "\n"; - } - } - - $result = $result . "\t\t\t]);\n\t\t}\n"; - - return $result; -} - -sub BuildQueueJS { - my ( $Self, %Param ) = @_; - my %Queues = %{ $Param{"Queues"} }; - my $BaseQueue = $Param{"Queue"}; - my $BaseQueueID = $Param{"QueueID"}; - - # Get subqueues - my @subqueues = grep { index( $Queues{$_}, $BaseQueue . "::" ) >= 0 } keys %Queues; - my $level = () = $BaseQueue =~ /::/g; - $level = $level + 1; - - # Remove subsubqueues - @subqueues = grep { ( () = $Queues{$_} =~ /::/g ) == $level } @subqueues; - - # When there are no subqueues, there is no need to create a JS - if ( !@subqueues ) { - return; - } - - my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; - - for my $queue (@subqueues) { - if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "folder" }, ' . "\n"; - } - else { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "link", url: "' - . $Self->{UrlAtendimento} - . $queue . '" }, ' . "\n"; - } - } - - $result = $result . "\t\t\t]);\n\t\t}\n"; - - return $result; -} - -sub LastQueue { - my $Self = shift; - my $queue = shift; - my @parts = split( "::", $queue ); - return $parts[-1]; -} - -sub Debug { - my $Self = shift; - my $msg = shift; - - #print STDERR "\n\nDEBUG => \n$msg\n\n"; -} - -1; diff --git a/Kernel/Modules/QueuesPanelPublic.pm b/Kernel/Modules/QueuesPanelPublic.pm deleted file mode 100644 index 6d22ee3..0000000 --- a/Kernel/Modules/QueuesPanelPublic.pm +++ /dev/null @@ -1,216 +0,0 @@ -# -- -# Kernel/Modules/QueuesPanelPublic.pm - frontend module for choosing top queues -# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -package Kernel::Modules::QueuesPanelPublic; - -use strict; -use warnings; - -use Kernel::System::Queue; -use Kernel::System::VariableCheck qw(:all); -use Data::Dumper; - -sub new { - my ( $Type, %Param ) = @_; - - # allocate new hash for object - my $Self = {%Param}; - bless( $Self, $Type ); - - # check needed objects - for ( - qw(ParamObject DBObject LayoutObject LogObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # needed objects - - return $Self; -} - -sub Run { - my ( $Self, %Param ) = @_; - my %Data = (); - - ## Se recebeu o ticket, significa que usuario já está autenticado - if ( $Self->{ParamObject}->GetParam( Param => "ticket" ) ) { - $Self->Debug("Recebida URL com ticket"); - my $retorno = $Self->{LayoutObject}->Redirect( OP => "Action=QueuesPanel", ); - $retorno =~ s/public/customer/g; - $Self->Debug( "Redirect feito: " . $retorno ); - return $retorno; - } - - ## Se tiver parametro para tentar autenticar, repassa ao CAS com gateway - if ( $Self->{ParamObject}->GetParam( Param => "autenticar" ) ) { - my $url = - $Self->{ConfigObject}->Get('Customer::AuthModule::CAS::CASUrl') - . "/login?gateway=true&service=" - . "https://" - . $ENV{SERVER_NAME} - . $ENV{SCRIPT_NAME} - . "?Action=QueuesPanelPublic"; - $Self->Debug("Recebida tentativa de autenticar via url $url"); - return $Self->{LayoutObject}->Redirect( ExtURL => $url, ); - } - ## - - $Self->{UrlAtendimento} = '/otrs/public.pl?Action=NewTicketWizardPublic;QueueID='; - - $Data{"QueueJS"} = $Self->BuildQueuesJS(); - - $Self->Debug( $Data{"QueueJS"} ); - - $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); - my $msgChooseService = $Self->{Config}->{"MessageChooseQueuePublic"}; - $Data{MsgChooseQueue} = $msgChooseService; - - # build output - my $Output = - $Self->{LayoutObject}->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("New ticket") ); - - $Output .= $Self->{LayoutObject}->Output( - Data => \%Data, - TemplateFile => 'QueuesPanel', - ); - $Output .= $Self->{LayoutObject}->CustomerFooter(); - return $Output; -} - -sub BuildQueuesJS { - my ( $Self, %Param ) = @_; - - # Get queues - my %Queues = (); - - $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); - while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { - $Queues{ $Row[0] } = $Row[1]; - } - - my $result = - '$(document).ready(function() {' . "\n\t" - . ' $("#columns").hColumns({' - . "\n\t\t" - . ' nodeSource: function(node_id, callback) {' . "\n"; - - for my $queue ( keys %Queues ) { - $result = $result . $Self->BuildQueueJS( Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue ); - } - - $result = $result . $Self->BuildTopQueuesJS( Queues => \%Queues ); - - $result = $result . "\n\t}});\n});"; - - return $result; -} - -sub BuildTopQueuesJS { - my ( $Self, %Param ) = @_; - my %Queues = %{ $Param{"Queues"} }; - - my @topQueues = grep { index( $Queues{$_}, '::' ) == -1 } keys %Queues; - - my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; - for my $queue (@topQueues) { - - if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "folder" },' . "\n"; - } - else { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "link", url: "' - . $Self->{UrlAtendimento} - . $queue . '" },' . "\n"; - } - } - - $result = $result . "\t\t\t]);\n\t\t}\n"; - - return $result; -} - -sub BuildQueueJS { - my ( $Self, %Param ) = @_; - my %Queues = %{ $Param{"Queues"} }; - my $BaseQueue = $Param{"Queue"}; - my $BaseQueueID = $Param{"QueueID"}; - - # Get subqueues - my @subqueues = grep { index( $Queues{$_}, $BaseQueue . "::" ) >= 0 } keys %Queues; - my $level = () = $BaseQueue =~ /::/g; - $level = $level + 1; - - # Remove subsubqueues - @subqueues = grep { ( () = $Queues{$_} =~ /::/g ) == $level } @subqueues; - - # When there are no subqueues, there is no need to create a JS - if ( !@subqueues ) { - return; - } - - my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; - - for my $queue (@subqueues) { - if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "folder" }, ' . "\n"; - } - else { - $result = $result - . "\t\t\t\t" - . '{ id: ' - . $queue - . ', label: "' - . $Self->LastQueue( $Queues{$queue} ) - . '", type: "link", url: "' - . $Self->{UrlAtendimento} - . $queue . '" }, ' . "\n"; - } - } - - $result = $result . "\t\t\t]);\n\t\t}\n"; - - return $result; -} - -sub LastQueue { - my $Self = shift; - my $queue = shift; - my @parts = split( "::", $queue ); - return $parts[-1]; -} - -sub Debug { - my $Self = shift; - my $msg = shift; - - #print STDERR "\n\nDEBUG => \n$msg\n\n"; -} - -1; diff --git a/Kernel/Output/HTML/Standard/NewTicketWizard.dtl b/Kernel/Output/HTML/Standard/NewTicketWizard.dtl deleted file mode 100644 index 836767b..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizard.dtl +++ /dev/null @@ -1,65 +0,0 @@ -# -- -# Kernel/Output/HTML/Standard/NewTicketWizard.dtl - template for new ticket wizard -# Copyright (C) (2014) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- - -
-$Data{"MsgChooseService"} -
-
- -
- $Text{"Service"}: -
-
- - $Data{"ServiceStrg"} -
-
- -
-
-
- - -$Text{"The following maintenances are in progress"} -
-
-
    - -
  1. $Data{"Message"} ($Text{"Started at: "} $Data{"StartDate"})
  2. - -
- - -
- - - - \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizard.tt b/Kernel/Output/HTML/Standard/NewTicketWizard.tt new file mode 100644 index 0000000..f93adf8 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizard.tt @@ -0,0 +1,65 @@ +# -- +# Kernel/Output/HTML/Standard/NewTicketWizard.tt - template for new ticket wizard +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- + +
+[% Data.MsgChooseService %] +
+
+ +
+ [% Translate("Service") | html %]: +
+
+ + [% Data.ServiceStrg %] +
+
+ +
+
+
+ +[% RenderBlockStart("MaintenancesPanel") %] +[% Translate("The following maintenances are in progress") | html %] +
+
+
    +[% RenderBlockStart("MaintenanceLine") %] +
  1. [% Data.Message %] ([% Translate("Started at: ") | html %] [% Data.StartDate %])
  2. +[% RenderBlockEnd("MaintenanceLine") %] +
+[% RenderBlockEnd("MaintenancesPanel") %] + +
+ +[% WRAPPER JSOnDocumentComplete %] + +[% END %] \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardPublic.dtl b/Kernel/Output/HTML/Standard/NewTicketWizardPublic.dtl deleted file mode 100644 index 43b9452..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizardPublic.dtl +++ /dev/null @@ -1,62 +0,0 @@ -# -- -# Kernel/Output/HTML/Standard/NewTicketWizard.dtl - template for new ticket wizard -# Copyright (C) (2014) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- - -
-$Data{"MsgChooseService"} -
-
- -
- $Text{"Service"}: -
- $Data{"ServiceStrg"} -
-
- -
-
-
- - -$Text{"The following maintenances are in progress"} -
-
-
    - -
  1. $Data{"Message"} ($Text{"Started at: "} $Data{"StartDate"})
  2. - -
- - -
- - - - diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardPublic.tt b/Kernel/Output/HTML/Standard/NewTicketWizardPublic.tt new file mode 100644 index 0000000..8cdac89 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizardPublic.tt @@ -0,0 +1,65 @@ +# -- +# Kernel/Output/HTML/Standard/NewTicketWizard.tt - template for new ticket wizard +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- + +
+[% Data.MsgChooseService %] +
+
+ +
+ [% Translate("Service") | html %]: +
+ [% Data.ServiceStrg %] +
+
+ +
+
+
+ +[% RenderBlockStart("MaintenancesPanel") %] +[% Translate("The following maintenances are in progress") | html %] +
+
+
    +[% RenderBlockStart("MaintenanceLine") %] +
  1. [% Data.Message %] ([% Translate("Started at: ") | html %] [% Data.StartDate %])
  2. +[% RenderBlockEnd("MaintenanceLine") %] +
+[% RenderBlockEnd("MaintenancesPanel") %] + +
+ +[% WRAPPER JSOnDocumentComplete %] + +[% END %] diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.dtl b/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.dtl deleted file mode 100644 index 475f5e5..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.dtl +++ /dev/null @@ -1,47 +0,0 @@ -# -- -# NewTicketWizardServiceForm.dtl - provides HTML form for NewTicketWizardServiceForm -# Copyright (C) 2014 UFSC -# -- -# 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. -# -- - - -
-

$Text{"Service forms"}

- - -
-
- -
- - - - - - - - - - - - - - - - - - - -
$Text{"Service"}
- $Text{"No data found."} -
$QData{"LevelSpace"}$QData{"Name", "80"}
-
- -
-
-
-
- \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.tt b/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.tt new file mode 100644 index 0000000..f639696 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizardServiceForm.tt @@ -0,0 +1,50 @@ +# -- +# NewTicketWizardServiceForm.tt - provides HTML form for NewTicketWizardServiceForm +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- + +[% RenderBlockStart("Overview") %] +
+

[% Translate("Service forms") | html %]

+ + +
+
+[% RenderBlockStart("OverviewList") %] +
+ + + + + + + + +[% RenderBlockStart("NoDataFoundMsg") %] + + + +[% RenderBlockEnd("NoDataFoundMsg") %] +[% RenderBlockStart("OverviewListRow") %] + + + +[% RenderBlockEnd("OverviewListRow") %] + +
[% Translate("Service") | html %]
+ [% Translate("No data found.") | html %] +
[% Data.LevelSpace | html %][% Data.Name | truncate(80) | html %]
+
+[% RenderBlockEnd("OverviewList") %] +
+
+
+
+[% RenderBlockEnd("Overview") %] \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.dtl b/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.dtl deleted file mode 100644 index f5e44af..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.dtl +++ /dev/null @@ -1,51 +0,0 @@ -# -- -# NewTicketWizardServiceForm.dtl - provides HTML form for NewTicketWizardServiceForm -# Copyright (C) 2014 UFSC -# -- -# 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. -# -- - - - -

$Text{"Edit Service"} : $QData{"Name"}

- - -
- -
- - - - -
- - -
- -
-
- - -
- -
-
- - -
- -
-
- -
- - $Text{"or"} - $Text{"Cancel"} -
-
-
- -
-
diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.tt b/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.tt new file mode 100644 index 0000000..2329ef5 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizardServiceFormEdit.tt @@ -0,0 +1,54 @@ +# -- +# NewTicketWizardServiceForm.tt - provides HTML form for NewTicketWizardServiceForm +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- + + +[% RenderBlockStart("HeaderEdit") %] +

[% Translate("Edit Service") | html %] : [% Data.Name | html %]

+[% RenderBlockEnd("HeaderEdit") %] + +
+ +
+ + + + +
+ + +
+ +
+
+ + +
+ +
+
+ + +
+ +
+
+ +
+ + [% Translate("or") | html %] + [% Translate("Cancel") | html %] +
+
+
+ +
+
diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.dtl b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.dtl deleted file mode 100644 index a3ec5cb..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.dtl +++ /dev/null @@ -1,17 +0,0 @@ -# -- -# Kernel/Output/HTML/Standard/NewTicketWizard.dtl - template for new ticket wizard -# Copyright (C) (2013) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -
-

$Text{"Your ticket has been registered with the number: "}$Data{"TicketNumber"}

-
- -
- $Text{"Click here to open another ticket"} -
- - \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.tt b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.tt new file mode 100644 index 0000000..8a451a7 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreated.tt @@ -0,0 +1,20 @@ +# -- +# Kernel/Output/HTML/Standard/NewTicketWizard.tt - template for new ticket wizard +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- +
+

[% Translate("Your ticket has been registered with the number: ") | html %][% Data.TicketNumber %]

+
+ +
+ [% Translate("Click here to open another ticket") | html %] +
+[% WRAPPER JSOnDocumentComplete %] +[% END %] \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.dtl b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.dtl deleted file mode 100644 index fab04f2..0000000 --- a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.dtl +++ /dev/null @@ -1,18 +0,0 @@ -# -- -# Kernel/Output/HTML/Standard/NewTicketWizard.dtl - template for new ticket wizard -# Copyright (C) (2013) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) -# -- -# 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. -# -- -
-

$Text{"Your ticket has been registered with the number: "}$Data{"TicketNumber"}

-
- -
- $Text{"Click here to open another ticket"} -
- - - \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.tt b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.tt new file mode 100644 index 0000000..fa53da1 --- /dev/null +++ b/Kernel/Output/HTML/Standard/NewTicketWizardTicketCreatedPublic.tt @@ -0,0 +1,21 @@ +# -- +# Kernel/Output/HTML/Standard/NewTicketWizard.tt - template for new ticket wizard +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# +# -- +# 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. +# -- +
+

[% Translate("Your ticket has been registered with the number: ") | html %][% Data.TicketNumber %]

+
+ +
+ [% Translate("Click here to open another ticket") | html %] +
+ +[% WRAPPER JSOnDocumentComplete %] +[% END %] \ No newline at end of file diff --git a/Kernel/Output/HTML/Standard/QueuesPanel.dtl b/Kernel/Output/HTML/Standard/QueuesPanel.dtl deleted file mode 100644 index 58a9481..0000000 --- a/Kernel/Output/HTML/Standard/QueuesPanel.dtl +++ /dev/null @@ -1,29 +0,0 @@ -# -- -# Kernel/Output/HTML/Standard/QueuesPanel.dtl - overview -# Copyright (C) (2014) (Rodrigo Gonçalves) (rodrigo.g@ufsc.br) -# -- -# $Id: writing-otrs-application.xml,v 1.1 2010/08/13 08:59:28 mg Exp $ -# -- -# 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. -# -- -
-
$Data{"MsgChooseQueue"}
- -
- - -
- -
$Data{"QueueComments"}
-
- - - - - - - \ No newline at end of file diff --git a/Kernel/System/ServiceForm.pm b/Kernel/System/ServiceForm.pm index 2431a5a..cf3c5b8 100644 --- a/Kernel/System/ServiceForm.pm +++ b/Kernel/System/ServiceForm.pm @@ -1,6 +1,9 @@ # -- # Kernel/System/ServiceForm.pm - core module -# Copyright (C) (2013) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -11,11 +14,11 @@ package Kernel::System::ServiceForm; use strict; use warnings; use utf8; -use Kernel::System::Service; -use Kernel::System::Type; -use Kernel::System::YAML; -use Data::Dumper; -use Kernel::System::DynamicField; + +our @ObjectDependencies = ( +"Kernel::System::DB", +"Kernel::System::Log"); + sub new { my ( $Type, %Param ) = @_; @@ -24,18 +27,6 @@ sub new { my $Self = {%Param}; bless( $Self, $Type ); - # check needed objects - for ( - qw(DBObject LayoutObject LogObject QueueObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # required objects - return $Self; } @@ -49,8 +40,10 @@ sub GetServiceForm { my ( $Self, %Param ) = @_; + my $DBObject = $Kernel::OM->Get("Kernel::System::DB"); + # get service form from db - $Self->{DBObject}->Prepare( + $DBObject->Prepare( SQL => 'SELECT service_id, introduction, form, form_schema FROM service_form WHERE service_id = ?', Bind => [ \$Param{ServiceID} ], Limit => 1, @@ -58,7 +51,7 @@ sub GetServiceForm { # fetch the result my %ServiceData; - while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { + while ( my @Row = $DBObject->FetchrowArray() ) { $ServiceData{ServiceID} = $Row[0]; $ServiceData{Introduction} = $Row[1]; $ServiceData{Form} = $Row[2]; @@ -77,9 +70,11 @@ Saves a service form. sub SaveServiceForm { my ( $Self, %Param ) = @_; + my $DBObject = $Kernel::OM->Get("Kernel::System::DB"); + for my $Argument (qw(ServiceID Introduction)) { if ( !$Param{$Argument} ) { - $Self->{LogObject}->Log( + $Kernel::OM->Get("Kernel::System::Log")->Log( Priority => 'error', Message => "Need $Argument!", ); @@ -91,12 +86,12 @@ sub SaveServiceForm { my $update = ($serviceForm{ServiceID}); if ($update) { - $Self->{DBObject}->Do(SQL => 'UPDATE service_form SET introduction=?,form=?,form_schema=? where service_id=?', + $DBObject->Do(SQL => 'UPDATE service_form SET introduction=?,form=?,form_schema=? where service_id=?', Bind => [ \$Param{Introduction}, \$Param{Form}, \$Param{Schema}, \$Param{ServiceID} ]); } else { - $Self->{DBObject}->Do(SQL => 'INSERT INTO service_form(service_id,introduction,form,form_schema) VALUES (?,?,?,?)', + $DBObject->Do(SQL => 'INSERT INTO service_form(service_id,introduction,form,form_schema) VALUES (?,?,?,?)', Bind => [ \$Param{ServiceID}, \$Param{Introduction}, \$Param{Form}, \$Param{Schema} ]); diff --git a/Kernel/System/TicketWizard.pm b/Kernel/System/TicketWizard.pm index c20b12a..6294b9d 100644 --- a/Kernel/System/TicketWizard.pm +++ b/Kernel/System/TicketWizard.pm @@ -1,6 +1,9 @@ # -- # Kernel/System/TicketWizard.pm - core module -# Copyright (C) (2013) (Rodrigo Goncalves) (rodrigo.g@ufsc.br) +# +# Copyright (C) SeTIC - UFSC - http://setic.ufsc.br/ +# Version 01/12/2015 - Support for OTRS 4.0.3 +# # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (AGPL). If you @@ -11,11 +14,21 @@ package Kernel::System::TicketWizard; use strict; use warnings; use utf8; -use Kernel::System::Service; -use Kernel::System::Type; -use Kernel::System::YAML; -use Data::Dumper; -use Kernel::System::DynamicField; + +our @ObjectDependencies = ( +"Kernel::System::Web::Request", +"Kernel::System::DB", +"Kernel::Output::HTML::Layout", +"KerneL::System::Log", +"KerneL::System::Ticket", +"KerneL::System::Type", +"Kernel::System::YAM", +"Kernel::Config", +"Kernel::System::DynamicField", +"Kernel::System::Service", +"Kernel::System::ServiceForm", +"Kernel::System::SystemAddress" ); + sub new { my ( $Type, %Param ) = @_; @@ -24,23 +37,6 @@ sub new { my $Self = {%Param}; bless( $Self, $Type ); - # check needed objects - for ( - qw(DBObject LayoutObject LogObject QueueObject ConfigObject) - ) - { - if ( !$Self->{$_} ) { - $Self->{LayoutObject}->FatalError( Message => "Got no $_!" ); - } - } - - # required objects - $Self->{YAMLObject} = Kernel::System::YAML->new(%Param); - $Self->{ServiceObject} = Kernel::System::Service->new(%Param); - $Self->{TypeObject} = Kernel::System::Type->new(%Param); - $Self->{TicketObject} = Kernel::System::Ticket->new(%Param); - $Self->{DynamicFieldObject} = Kernel::System::DynamicField->new(%Param); - return $Self; } @@ -52,7 +48,7 @@ Returns fields structure for new ticket form wizard public sub GetBasicFieldsOptionsPublic { my ( $Self, %Param ) = @_; - return $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicFormPublic}; + return $Kernel::OM->Get("Kernel::Config")->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicFormPublic}; } =head @@ -63,7 +59,7 @@ Returns fields schema for new ticket wizard public sub GetBasicFieldsSchemaPublic { my ( $Self, %Param ) = @_; - return $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicSchemaPublic}; + return $Kernel::OM->Get("Kernel::Config")->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicSchemaPublic}; } @@ -75,7 +71,7 @@ Returns fields structure for new ticket form wizard sub GetBasicFieldsOptions { my ( $Self, %Param ) = @_; - return $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicForm}; + return $Kernel::OM->Get("Kernel::Config")->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicForm}; } =head @@ -86,7 +82,7 @@ Returns fields schema for new ticket wizard sub GetBasicFieldsSchema { my ( $Self, %Param ) = @_; - return $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicSchema}; + return $Kernel::OM->Get("Kernel::Config")->Get("Ticket::Frontend::Customer::NewTicketWizard")->{BasicSchema}; } =head @@ -113,14 +109,12 @@ sub ReplaceOTRSValues { sub GetOTRSServicesData { my ( $Self, %Param ) = @_; - my $services = $Self->{ServiceObject}; + my $services = $Kernel::OM->Get("Kernel::System::Service"); - my %serviceList = $services->ServiceList( Valid => 1, UserID => $Self->{ConfigObject}->Get('CustomerPanelUserID') ); + my %serviceList = $services->ServiceList( Valid => 1, UserID => $Kernel::OM->Get("Kernel::Config")->Get('CustomerPanelUserID') ); my $serviceNames = ""; my $serviceIDs = ""; - ###print STDERR "\n\n\n Servicos: " . Dumper(\%serviceList) . "\n\n\n"; - foreach ( sort { ( $serviceList{$a} cmp $serviceList{$b} ) } keys %serviceList ) { $serviceNames .= "\"$serviceList{$_}\","; $serviceIDs .= "$_,"; @@ -132,7 +126,7 @@ sub GetOTRSServicesData { sub GetOTRSTypesData { my ( $Self, %Param ) = @_; - my $ticketObject = $Self->{TicketObject}; + my $ticketObject = $Kernel::OM->Get("Kernel::System::Ticket"); my %typeList = $ticketObject->TicketTypeList( UserID => $Param{UserID} ); my $typeNames = ""; @@ -156,13 +150,12 @@ sub ReplaceOTRSDynamicFields { my $schema = $Param{Schema}; my $options = $Param{Options}; - my $dfields = $Self->{DynamicFieldObject}; + my $dfields = $Kernel::OM->Get("Kernel::System::DynamicField"); my @dfieldList = @{ $dfields->DynamicFieldListGet( Valid => 1 ) }; foreach (@dfieldList) { my $campo = $_; - #Debug("campo", $campo); my $name = $campo->{Name}; my $config = $campo->{Config}; my $type = $campo->{FieldType}; @@ -178,11 +171,6 @@ sub ReplaceOTRSDynamicFields { return ( $schema, $options ); } -sub Debug { - my ( $id, $value ) = @_; - ###print STDERR "\n\n $id =" . Dumper($value) . "\n"; -} - sub GetDynamicFieldValues { my ( $Self, %Param ) = @_; my $config = $Param{ConfigDF}; @@ -198,7 +186,6 @@ sub GetDynamicFieldValues { $dfValues = substr($dfValues, 0, -1); $dfLabels = substr($dfLabels, 0, -1); - Debug( "dfvalues", $dfValues ); return ( $dfValues, $dfLabels ); } diff --git a/NewTicketWizard.sopm b/NewTicketWizard.sopm index 5d9f42f..78b29f9 100755 --- a/NewTicketWizard.sopm +++ b/NewTicketWizard.sopm @@ -1,31 +1,14 @@ NewTicketWizard - 1.4.2 - 3.x.x + 1.5.0 + 4.0.3 SeTIC http://www.setic.ufsc.br - Free - Assistente de chamados - - Versão 1.0.0 - Inicial - Versão 1.0.1 - Ajusta listagem de servicos do Service forms, correcao no formulario de edicao de servico - Versão 1.0.2 - Ajuste na hierarquia de servicos - Versão 1.0.9 - Primeira versao para producao - Versão 1.1.1 - Suporte para abertura pública de tickets. - Versão 1.1.2 - Suporte para múltiplos domínios. - Versão 1.1.3 - Link para abrir segundo chamado na tela de finalização da abertura - Versão 1.1.4 - Aumento na fonte do botao de enviar - Versão 1.2.6 - Painel de navegação de filas - Versão 1.2.9 - Publicacao de manutencoes em progresso - Versão 1.3.0 - Suporte para detecção e auto-encaminhamento em modo autenticado/não autenticado - Versão 1.4.1 - Suporte para definir via URL o serviço selecionado - Versão 1.4.2 - Ajuste nas traduções - - - Módulo instalado com sucesso! - New Ticket Wizard - New Ticket Wizard module installed successfully! + GPLv2 + NewTicket Wizard Module + Support for OTRS 4.0.3, QueuesPanel Module Separation + New Ticket Wizard module installed successfully! ? ? @@ -34,28 +17,22 @@ - - - - - - - - - - - + + + + + + - @@ -73,13 +50,6 @@ - - - - - - - diff --git a/db_schema.sql b/db_schema.sql deleted file mode 100644 index 1b44a6b..0000000 --- a/db_schema.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE TABLE service_form(service_id int primary key, introduction text, form text, form_schema text); \ No newline at end of file diff --git a/var/httpd/htdocs/js/thirdparty/hColumns/jquery.hcolumns.min.js b/var/httpd/htdocs/js/thirdparty/hColumns/jquery.hcolumns.min.js deleted file mode 100755 index 3638cc9..0000000 --- a/var/httpd/htdocs/js/thirdparty/hColumns/jquery.hcolumns.min.js +++ /dev/null @@ -1,8 +0,0 @@ -// hColumns by bu , BSD License - -(function(b){var k={nodeSource:function(){return window.alert("dummy source, you need to create a node source")},noContentString:"There is no node here",searchPlaceholderString:"Search...",searchable:!1,customNodeTypeIndicator:{},customNodeTypeHandler:{}},l={folder:function(a,d,c){a.nodeSource(c.id,function(d,c){return d?b.error(d):a.columnView._addColumnList(c,a.columnView)})},link:function(b,d,c){return window.open(c.url)}},m={folder:"icon-chevron-right",link:"icon-globe"},h={init:function(a){var d= -b.extend(k,a),c=b.extend(l,d.customNodeTypeHandler),f=b.extend(m,d.customNodeTypeIndicator);return this.each(function(){var a=b(this),g=a.data("columnView");h.settings=d;d.columnView=h;d.handlers=c;d.indicators=f;d.container_node=this;g||(a.data("hColumn",d),a.addClass("column-view-container"),b("
").addClass("column-view-composition").appendTo(a),a.on("click",".column ul li:not('.search')",d.columnView._entryClick),d.nodeSource(null,function(a,c){return a?b.error(a):d.columnView._addColumnList(c)}))})}, -_entryClick:function(){var a=b(this).parents(".column-view-container").data("hColumn"),d=b(this).parents(".column-view-container"),c=b(this).parents(".column"),f=b(this).parents(".column").index(),e=b(this).data("node-type"),g=b(this).data("node-data");b(d).find(".column-view-composition .column:gt("+f+")").remove();c.find(".active").removeClass("active");b(this).addClass("active");return a.handlers[e](a,this,g)},_addColumnList:function(a,d){var c=d?d:this,f=b("
    ");if(0===a.length)return f= -b("

    ").text(d.settings.noContentString),c._addColumn(f,c);c.settings.searchable&&c._addColumnSearch(f);for(var e=0;e').on("keyup","input",function(a){var c=b(this).val();2<=c.length?b(this).closest("li").siblings().each(function(){""!==c&&-1===b(this).data("node-data").label.toLowerCase().indexOf(c.toLowerCase())?b(this).hide():b(this).show()}):b(this).closest("li").siblings().show()}).appendTo(a)},_addColumn:function(a,d){var c=b("
    ").addClass("column");c.append(a);b(d.settings.container_node).find(".column-view-composition").append(c);b(d.settings.container_node).scrollLeft(b(".column-view-composition").width())}}; -b.fn.hColumns=function(a){if(h[a])return h[a].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof a&&a)b.error("Method "+a+" does not exist on jQuery.hColumns");else return h.init.apply(this,arguments)}})(jQuery); diff --git a/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns-intro.css b/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns-intro.css deleted file mode 100755 index 897cec4..0000000 --- a/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns-intro.css +++ /dev/null @@ -1,85 +0,0 @@ -body { - background: #f5f5f5; - font-family: "Arial", sans-serif; -} - -.container { - padding: 2em; -} - -h1 { - color: #000; - font-size: 2em; - - margin: 0.75em 0; -} - -h1 small { - color: #ccc; - font-size: 0.5em; -} - -img { - margin: 20px; -} - -h2 { - margin: 1em 0; - - font-size: 1.25em; - color: #999; -} - -ol { - margin-left: 2em; - - list-style: upper-roman; -} - -ol li { - margin: 20px; -} - -.code-block { - border: 1px solid #ccc; - background: #fff; - - margin: 1em; - padding: 1em; -} - -.code-block strong { - display: block; - - margin: 1em; - font-weight: 700; -} - -.code-block strong.minor { - font-weight: 400; - color: #666; -} - -.code-block pre { - padding: 10px; - - font-family: monospace; -} - -.code-block p { - padding: 0 30px; - - margin: 10px 0; - - font-size: 13px; -} - -.code-block ol li { - font-size: 13px; - margin: 5px; - line-height: 20px; -} - -.column-view-container { - margin: 1em; -} diff --git a/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns.css b/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns.css deleted file mode 100644 index bbd3015..0000000 --- a/var/httpd/htdocs/skins/Customer/default/css/hColumns/hcolumns.css +++ /dev/null @@ -1,120 +0,0 @@ -.ChooseQueue { - border-style: solid; - border-width: 1px; - padding: 5px; - margin-top: 5px; - margin-left: 10px; -} - -/* column view container */ -.column-view-container { - width: 100%; - height: 400px; - padding: 0; - border: 1px solid #ccc; - background: #FFF; - display: block; - overflow-x: auto; - overflow-y: hidden; -} - -/* the composition div for colums */ -.column-view-composition { - display: table; - white-space: nowrap; -} - -/**/ -.column { - display: table-cell; - border-right: 1px solid #999; -} - -.column:last-child { - border-right: 0; -} - -.column:only-child { - border-right: 1px solid #999; -} - -/* for error messages */ -.column > p { - margin: 10px; - color: #666; -} - -/* for column listing */ -.column ul { - margin: 0; - padding: 0; - height: 400px; - width: 250px; - overflow-y: auto; - list-style: none; -} - -.column ul li { - position: relative; - margin: 0; - padding: 10px 20px 10px 10px; - overflow: hidden; - -o-text-overflow: ellipsis; /* pour Opera 9 */ - text-overflow: ellipsis; /* pour le reste du monde */ -} - -.column ul li:hover { - cursor: pointer; -} - -.column ul li i { - position: absolute; - top: 9px; - right: 5px; -} - -.column ul li:hover, .column ul li.active { - background: #999999; - color: #FFFFFF; -} - -.column ul li:hover a, .column ul li.active a { - color: #FFFFFF; -} - -.column ul li.search { - margin: 0; - padding: 5px; -} - -.column ul li.search input { - width: 100%; - margin: 0; -} - - -/* icon type, could be replace with FontAwesome */ -[class^="icon-"], [class*=" icon-"] { - display: inline-block; - width: 14px; - height: 14px; - margin-top: 1px; - *margin-right: .3em; - line-height: 14px; - vertical-align: text-top; - background-image: url("../img/glyphicons-halflings.png"); - background-position: 14px 14px; - background-repeat: no-repeat; -} - -.icon-chevron-right { - background-position: -456px -72px; -} - -.icon-globe { - background-position: -336px -144px; -} - -.icon-file { - background-position: -23px -24px; -} diff --git a/var/httpd/htdocs/skins/Customer/default/css/hColumns/reset.css b/var/httpd/htdocs/skins/Customer/default/css/hColumns/reset.css deleted file mode 100644 index af94440..0000000 --- a/var/httpd/htdocs/skins/Customer/default/css/hColumns/reset.css +++ /dev/null @@ -1,48 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} \ No newline at end of file diff --git a/var/httpd/htdocs/skins/Customer/default/images/hColumns/demo.png b/var/httpd/htdocs/skins/Customer/default/images/hColumns/demo.png deleted file mode 100644 index bd4b7ea..0000000 Binary files a/var/httpd/htdocs/skins/Customer/default/images/hColumns/demo.png and /dev/null differ diff --git a/var/httpd/htdocs/skins/Customer/default/images/hColumns/glyphicons-halflings.png b/var/httpd/htdocs/skins/Customer/default/images/hColumns/glyphicons-halflings.png deleted file mode 100644 index a996999..0000000 Binary files a/var/httpd/htdocs/skins/Customer/default/images/hColumns/glyphicons-halflings.png and /dev/null differ -- libgit2 0.21.2