Commit fc96bff19a6aebfedbd24fa2bbc58eb34af58cb1
1 parent
058af795
Exists in
master
Detecção e reencaminhamento automático para modo autenticado.
Mensagem customizada para interface pública, para sugerir o idUFSC.
Showing
6 changed files
with
237 additions
and
152 deletions
Show diff stats
Kernel/Config/Files/NewTicketWizard.xml
| @@ -522,6 +522,17 @@ | @@ -522,6 +522,17 @@ | ||
| 522 | <String Regex="">Escolha o local para o qual deseja atendimento</String> | 522 | <String Regex="">Escolha o local para o qual deseja atendimento</String> |
| 523 | </Setting> | 523 | </Setting> |
| 524 | </ConfigItem> | 524 | </ConfigItem> |
| 525 | + | ||
| 526 | + <ConfigItem Name="Ticket::Frontend::Customer::QueuesPanel###MessageChooseQueue" | ||
| 527 | + Required="0" Valid="1"> | ||
| 528 | + <Description Lang="en">Message to let the user choose a queue.</Description> | ||
| 529 | + <Description Lang="pt_BR">Mensagem para o usuário selecionar uma fila.</Description> | ||
| 530 | + <Group>Ticket</Group> | ||
| 531 | + <SubGroup>Frontend::Customer::QueuesPanel</SubGroup> | ||
| 532 | + <Setting> | ||
| 533 | + <String Regex="">Escolha o local para o qual deseja atendimento</String> | ||
| 534 | + </Setting> | ||
| 535 | + </ConfigItem> | ||
| 525 | 536 | ||
| 526 | 537 | ||
| 527 | </otrs_config> | 538 | </otrs_config> |
| 528 | \ No newline at end of file | 539 | \ No newline at end of file |
Kernel/Modules/NewTicketWizard.pm
| @@ -109,7 +109,7 @@ sub BuildServices { | @@ -109,7 +109,7 @@ sub BuildServices { | ||
| 109 | Max => 200 | 109 | Max => 200 |
| 110 | ); | 110 | ); |
| 111 | 111 | ||
| 112 | - print STDERR "\n\n\n Combo " . $retorno . "\n\n\n"; | 112 | + $Self->Debug( "\n\n\n Combo " . $retorno . "\n\n\n" ); |
| 113 | return $retorno; | 113 | return $retorno; |
| 114 | 114 | ||
| 115 | } | 115 | } |
| @@ -298,7 +298,7 @@ sub GetFormJSON { | @@ -298,7 +298,7 @@ sub GetFormJSON { | ||
| 298 | 298 | ||
| 299 | my ( $schema, $fields, $introduction ) = $Self->GetForm( ServiceForm => \%serviceForm, QueueID => $QueueID ); | 299 | my ( $schema, $fields, $introduction ) = $Self->GetForm( ServiceForm => \%serviceForm, QueueID => $QueueID ); |
| 300 | 300 | ||
| 301 | - print STDERR "[{" . $schema . "}, {" . $fields . "}, \"" . $introduction . "\"]"; | 301 | + $Self->Debug( "[{" . $schema . "}, {" . $fields . "}, \"" . $introduction . "\"]" ); |
| 302 | 302 | ||
| 303 | return $Self->{LayoutObject}->Attachment( | 303 | return $Self->{LayoutObject}->Attachment( |
| 304 | ContentType => 'application/json; charset=' . $Self->{LayoutObject}->{Charset}, | 304 | ContentType => 'application/json; charset=' . $Self->{LayoutObject}->{Charset}, |
| @@ -358,10 +358,10 @@ sub GetQueueID() { | @@ -358,10 +358,10 @@ sub GetQueueID() { | ||
| 358 | 358 | ||
| 359 | # Check if queueID was sent | 359 | # Check if queueID was sent |
| 360 | my $QueueID = $Self->{ParamObject}->GetParam( Param => "QueueID" ); | 360 | my $QueueID = $Self->{ParamObject}->GetParam( Param => "QueueID" ); |
| 361 | - print STDERR "\n\nBSUCANDO $QueueID FILA\n\n"; | 361 | + $Self->Debug( "\n\nBSUCANDO $QueueID FILA\n\n"); |
| 362 | 362 | ||
| 363 | if ($QueueID) { | 363 | if ($QueueID) { |
| 364 | - print STDERR "\n\nRecebida fila $QueueID\n\n"; | 364 | + $Self->Debug( "\n\nRecebida fila $QueueID\n\n" ); |
| 365 | my %Queue = $Self->{QueueObject}->QueueGet( ID => $QueueID ); | 365 | my %Queue = $Self->{QueueObject}->QueueGet( ID => $QueueID ); |
| 366 | return ( $Queue{"Name"}, $QueueID ); | 366 | return ( $Queue{"Name"}, $QueueID ); |
| 367 | } | 367 | } |
| @@ -373,7 +373,7 @@ sub GetQueueID() { | @@ -373,7 +373,7 @@ sub GetQueueID() { | ||
| 373 | my $QueueDefault = $ConfigTicket->{"QueueDefault"}; | 373 | my $QueueDefault = $ConfigTicket->{"QueueDefault"}; |
| 374 | 374 | ||
| 375 | # Checks if there is a field for the queue | 375 | # Checks if there is a field for the queue |
| 376 | - print STDERR Dumper($ConfigTicketWizard); | 376 | + $Self->Debug( Dumper($ConfigTicketWizard) ); |
| 377 | 377 | ||
| 378 | my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; | 378 | my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; |
| 379 | my $QueueField = $ConfigTicketWizard->{"QueueField"}; | 379 | my $QueueField = $ConfigTicketWizard->{"QueueField"}; |
| @@ -409,7 +409,7 @@ sub CreateTicket { | @@ -409,7 +409,7 @@ sub CreateTicket { | ||
| 409 | my ( $Queue, $QueueID ) = $Self->GetQueueID(%Param); | 409 | my ( $Queue, $QueueID ) = $Self->GetQueueID(%Param); |
| 410 | $Data{QueueID} = $QueueID; | 410 | $Data{QueueID} = $QueueID; |
| 411 | 411 | ||
| 412 | - print STDERR "\n\nFila achada: " . $Queue . "\n\n"; | 412 | + $Self->Debug( "\n\nFila achada: " . $Queue . "\n\n" ); |
| 413 | 413 | ||
| 414 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); | 414 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::CustomerTicketMessage"); |
| 415 | 415 | ||
| @@ -510,7 +510,7 @@ sub Debug { | @@ -510,7 +510,7 @@ sub Debug { | ||
| 510 | my $Self = shift; | 510 | my $Self = shift; |
| 511 | my $msg = shift; | 511 | my $msg = shift; |
| 512 | 512 | ||
| 513 | - print STDERR "\n\nDEBUG => \n$msg\n\n"; | 513 | + #print STDERR "\n\nDEBUG => \n$msg\n\n"; |
| 514 | } | 514 | } |
| 515 | 515 | ||
| 516 | 1; | 516 | 1; |
Kernel/Modules/NewTicketWizardPublic.pm
| @@ -265,10 +265,10 @@ sub GetQueueID() { | @@ -265,10 +265,10 @@ sub GetQueueID() { | ||
| 265 | 265 | ||
| 266 | # Check if queueID was sent | 266 | # Check if queueID was sent |
| 267 | my $QueueID = $Self->{ParamObject}->GetParam(Param => "QueueID"); | 267 | my $QueueID = $Self->{ParamObject}->GetParam(Param => "QueueID"); |
| 268 | - print STDERR "\n\nBSUCANDO $QueueID FILA\n\n"; | 268 | + $Self->Debug( "\n\nBSUCANDO $QueueID FILA\n\n"); |
| 269 | 269 | ||
| 270 | if ($QueueID) { | 270 | if ($QueueID) { |
| 271 | - print STDERR "\n\nRecebida fila $QueueID\n\n"; | 271 | + $Self->Debug( "\n\nRecebida fila $QueueID\n\n" ); |
| 272 | my %Queue = $Self->{QueueObject}->QueueGet(ID => $QueueID); | 272 | my %Queue = $Self->{QueueObject}->QueueGet(ID => $QueueID); |
| 273 | return ($Queue{"Name"}, $QueueID); | 273 | return ($Queue{"Name"}, $QueueID); |
| 274 | } | 274 | } |
| @@ -284,7 +284,7 @@ sub GetQueueID() { | @@ -284,7 +284,7 @@ sub GetQueueID() { | ||
| 284 | 284 | ||
| 285 | my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; | 285 | my $QueuePrefix = $ConfigTicketWizard->{"QueuePrefix"}; |
| 286 | my $QueueField = $ConfigTicketWizard->{"QueueField"}; | 286 | my $QueueField = $ConfigTicketWizard->{"QueueField"}; |
| 287 | - $Self->{LogObject}->Log( Priority => 'info', Message => "Searching queue for - $QueuePrefix ($QueueField)!" ); | 287 | + $Self->Debug( "Searching queue for - $QueuePrefix ($QueueField)!" ); |
| 288 | 288 | ||
| 289 | my %QueueListID = $Self->{QueueObject}->QueueList( Valid => 1 ); | 289 | my %QueueListID = $Self->{QueueObject}->QueueList( Valid => 1 ); |
| 290 | my %QueueList = reverse $Self->{QueueObject}->QueueList( Valid => 1 ); | 290 | my %QueueList = reverse $Self->{QueueObject}->QueueList( Valid => 1 ); |
| @@ -294,13 +294,12 @@ sub GetQueueID() { | @@ -294,13 +294,12 @@ sub GetQueueID() { | ||
| 294 | if ( $QueuePrefix && $QueueField ) { | 294 | if ( $QueuePrefix && $QueueField ) { |
| 295 | my $QueueSelected = $Self->{ParamObject}->GetParam( Param => $QueueField ); | 295 | my $QueueSelected = $Self->{ParamObject}->GetParam( Param => $QueueField ); |
| 296 | my $QueueName = "$QueuePrefix $QueueSelected"; | 296 | my $QueueName = "$QueuePrefix $QueueSelected"; |
| 297 | - $Self->{LogObject} | ||
| 298 | - ->Log( Priority => 'info', Message => "Searching queue for - $QueuePrefix ($QueueField) - [$QueueName]!" ); | 297 | + $Self->Debug( "Searching queue for - $QueuePrefix ($QueueField) - [$QueueName]!" ); |
| 299 | 298 | ||
| 300 | if ( $QueueList{$QueueName} ) { | 299 | if ( $QueueList{$QueueName} ) { |
| 301 | $QueueID = $QueueList{$QueueName}; | 300 | $QueueID = $QueueList{$QueueName}; |
| 302 | $Queue = $QueueName; | 301 | $Queue = $QueueName; |
| 303 | - $Self->{LogObject}->Log( Priority => 'info', Message => "Custom queue found - $QueueName ($QueueID)!" ); | 302 | + $Self->Debug( "Custom queue found - $QueueName ($QueueID)!" ); |
| 304 | } | 303 | } |
| 305 | 304 | ||
| 306 | } | 305 | } |
| @@ -452,4 +451,11 @@ sub CreateTicket { | @@ -452,4 +451,11 @@ sub CreateTicket { | ||
| 452 | 451 | ||
| 453 | } | 452 | } |
| 454 | 453 | ||
| 454 | +sub Debug { | ||
| 455 | + my $Self = shift; | ||
| 456 | + my $msg = shift; | ||
| 457 | + | ||
| 458 | + #print STDERR "\n\nDEBUG => \n$msg\n\n"; | ||
| 459 | +} | ||
| 460 | + | ||
| 455 | 1; | 461 | 1; |
Kernel/Modules/QueuesPanel.pm
| @@ -17,8 +17,6 @@ use Data::Dumper; | @@ -17,8 +17,6 @@ use Data::Dumper; | ||
| 17 | 17 | ||
| 18 | sub new { | 18 | sub new { |
| 19 | my ( $Type, %Param ) = @_; | 19 | my ( $Type, %Param ) = @_; |
| 20 | - | ||
| 21 | - | ||
| 22 | 20 | ||
| 23 | # allocate new hash for object | 21 | # allocate new hash for object |
| 24 | my $Self = {%Param}; | 22 | my $Self = {%Param}; |
| @@ -42,122 +40,146 @@ sub new { | @@ -42,122 +40,146 @@ sub new { | ||
| 42 | sub Run { | 40 | sub Run { |
| 43 | my ( $Self, %Param ) = @_; | 41 | my ( $Self, %Param ) = @_; |
| 44 | my %Data = (); | 42 | my %Data = (); |
| 45 | - | 43 | + |
| 46 | $Self->{UrlAtendimento} = '/otrs/customer.pl?Action=NewTicketWizard;QueueID='; | 44 | $Self->{UrlAtendimento} = '/otrs/customer.pl?Action=NewTicketWizard;QueueID='; |
| 47 | 45 | ||
| 48 | $Data{"QueueJS"} = $Self->BuildQueuesJS(); | 46 | $Data{"QueueJS"} = $Self->BuildQueuesJS(); |
| 49 | - | ||
| 50 | - $Self->Debug($Data{"QueueJS"}); | 47 | + |
| 48 | + $Self->Debug( $Data{"QueueJS"} ); | ||
| 51 | 49 | ||
| 52 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); | 50 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); |
| 53 | - my $msgChooseService = $Self->{Config}->{"MessageChooseQueuePublic"}; | 51 | + my $msgChooseService = $Self->{Config}->{"MessageChooseQueue"}; |
| 54 | $Data{MsgChooseQueue} = $msgChooseService; | 52 | $Data{MsgChooseQueue} = $msgChooseService; |
| 55 | 53 | ||
| 56 | - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) ) { | ||
| 57 | - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { | ||
| 58 | - } | ||
| 59 | - elsif ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { | ||
| 60 | - } | ||
| 61 | - } | ||
| 62 | - else { | ||
| 63 | - | ||
| 64 | - # build output | ||
| 65 | - my $Output = | ||
| 66 | - $Self->{LayoutObject} | ||
| 67 | - ->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("Queues panel") ); | ||
| 68 | - | ||
| 69 | - $Output .= $Self->{LayoutObject}->Output( | ||
| 70 | - Data => \%Data, | ||
| 71 | - TemplateFile => 'QueuesPanel', | ||
| 72 | - ); | ||
| 73 | - $Output .= $Self->{LayoutObject}->CustomerFooter(); | ||
| 74 | - return $Output; | ||
| 75 | - } | 54 | + # build output |
| 55 | + my $Output = | ||
| 56 | + $Self->{LayoutObject}->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("Queues panel") ); | ||
| 57 | + | ||
| 58 | + $Output .= $Self->{LayoutObject}->Output( | ||
| 59 | + Data => \%Data, | ||
| 60 | + TemplateFile => 'QueuesPanel', | ||
| 61 | + ); | ||
| 62 | + $Output .= $Self->{LayoutObject}->CustomerFooter(); | ||
| 63 | + return $Output; | ||
| 76 | } | 64 | } |
| 77 | 65 | ||
| 78 | sub BuildQueuesJS { | 66 | sub BuildQueuesJS { |
| 79 | my ( $Self, %Param ) = @_; | 67 | my ( $Self, %Param ) = @_; |
| 80 | - | 68 | + |
| 81 | # Get queues | 69 | # Get queues |
| 82 | my %Queues = (); | 70 | my %Queues = (); |
| 83 | - | 71 | + |
| 84 | $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); | 72 | $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); |
| 85 | while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { | 73 | while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { |
| 86 | - $Queues{$Row[0]} = $Row[1]; | 74 | + $Queues{ $Row[0] } = $Row[1]; |
| 87 | } | 75 | } |
| 88 | 76 | ||
| 89 | - my $result = '$(document).ready(function() {' . "\n\t". ' $("#columns").hColumns({' . "\n\t\t" . ' nodeSource: function(node_id, callback) {' . "\n"; | ||
| 90 | - | ||
| 91 | - for my $queue (keys %Queues) { | ||
| 92 | - $result = $result . $Self->BuildQueueJS(Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue); | 77 | + my $result = |
| 78 | + '$(document).ready(function() {' . "\n\t" | ||
| 79 | + . ' $("#columns").hColumns({' | ||
| 80 | + . "\n\t\t" | ||
| 81 | + . ' nodeSource: function(node_id, callback) {' . "\n"; | ||
| 82 | + | ||
| 83 | + for my $queue ( keys %Queues ) { | ||
| 84 | + $result = $result . $Self->BuildQueueJS( Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue ); | ||
| 93 | } | 85 | } |
| 94 | - | ||
| 95 | - $result = $result . $Self->BuildTopQueuesJS(Queues => \%Queues); | ||
| 96 | - | 86 | + |
| 87 | + $result = $result . $Self->BuildTopQueuesJS( Queues => \%Queues ); | ||
| 88 | + | ||
| 97 | $result = $result . "\n\t}});\n});"; | 89 | $result = $result . "\n\t}});\n});"; |
| 98 | - | ||
| 99 | - return $result; | 90 | + |
| 91 | + return $result; | ||
| 100 | } | 92 | } |
| 101 | 93 | ||
| 102 | sub BuildTopQueuesJS { | 94 | sub BuildTopQueuesJS { |
| 103 | my ( $Self, %Param ) = @_; | 95 | my ( $Self, %Param ) = @_; |
| 104 | - my %Queues = %{$Param{"Queues"}}; | 96 | + my %Queues = %{ $Param{"Queues"} }; |
| 105 | 97 | ||
| 106 | - my @topQueues = grep { index($Queues{$_},'::') == -1 } keys %Queues; | 98 | + my @topQueues = grep { index( $Queues{$_}, '::' ) == -1 } keys %Queues; |
| 107 | 99 | ||
| 108 | my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; | 100 | my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; |
| 109 | for my $queue (@topQueues) { | 101 | for my $queue (@topQueues) { |
| 110 | - | ||
| 111 | - if (grep { index($Queues{$_}, $Queues{$queue} . "::") >= 0} keys %Queues) { | ||
| 112 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "folder" },' . "\n"; | ||
| 113 | - } else { | ||
| 114 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "link", url: "' . $Self->{UrlAtendimento} . $queue . '" },' . "\n"; | 102 | + |
| 103 | + if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { | ||
| 104 | + $result = $result | ||
| 105 | + . "\t\t\t\t" | ||
| 106 | + . '{ id: ' | ||
| 107 | + . $queue | ||
| 108 | + . ', label: "' | ||
| 109 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 110 | + . '", type: "folder" },' . "\n"; | ||
| 111 | + } | ||
| 112 | + else { | ||
| 113 | + $result = $result | ||
| 114 | + . "\t\t\t\t" | ||
| 115 | + . '{ id: ' | ||
| 116 | + . $queue | ||
| 117 | + . ', label: "' | ||
| 118 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 119 | + . '", type: "link", url: "' | ||
| 120 | + . $Self->{UrlAtendimento} | ||
| 121 | + . $queue . '" },' . "\n"; | ||
| 115 | } | 122 | } |
| 116 | } | 123 | } |
| 117 | - | 124 | + |
| 118 | $result = $result . "\t\t\t]);\n\t\t}\n"; | 125 | $result = $result . "\t\t\t]);\n\t\t}\n"; |
| 119 | - | ||
| 120 | - return $result; | 126 | + |
| 127 | + return $result; | ||
| 121 | } | 128 | } |
| 122 | 129 | ||
| 123 | sub BuildQueueJS { | 130 | sub BuildQueueJS { |
| 124 | my ( $Self, %Param ) = @_; | 131 | my ( $Self, %Param ) = @_; |
| 125 | - my %Queues = %{$Param{"Queues"}}; | ||
| 126 | - my $BaseQueue = $Param{"Queue"}; | 132 | + my %Queues = %{ $Param{"Queues"} }; |
| 133 | + my $BaseQueue = $Param{"Queue"}; | ||
| 127 | my $BaseQueueID = $Param{"QueueID"}; | 134 | my $BaseQueueID = $Param{"QueueID"}; |
| 128 | 135 | ||
| 129 | # Get subqueues | 136 | # Get subqueues |
| 130 | - my @subqueues = grep { index($Queues{$_}, $BaseQueue . "::") >= 0} keys %Queues; | 137 | + my @subqueues = grep { index( $Queues{$_}, $BaseQueue . "::" ) >= 0 } keys %Queues; |
| 131 | my $level = () = $BaseQueue =~ /::/g; | 138 | my $level = () = $BaseQueue =~ /::/g; |
| 132 | $level = $level + 1; | 139 | $level = $level + 1; |
| 133 | - | 140 | + |
| 134 | # Remove subsubqueues | 141 | # Remove subsubqueues |
| 135 | - @subqueues = grep { (() = $Queues{$_} =~ /::/g) == $level} @subqueues; | ||
| 136 | - | 142 | + @subqueues = grep { ( () = $Queues{$_} =~ /::/g ) == $level } @subqueues; |
| 143 | + | ||
| 137 | # When there are no subqueues, there is no need to create a JS | 144 | # When there are no subqueues, there is no need to create a JS |
| 138 | - if (! @subqueues) { | 145 | + if ( !@subqueues ) { |
| 139 | return; | 146 | return; |
| 140 | } | 147 | } |
| 141 | - | 148 | + |
| 142 | my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; | 149 | my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; |
| 143 | - | ||
| 144 | - for my $queue (@subqueues) { | ||
| 145 | - if (grep {index($Queues{$_}, $Queues{$queue} . "::") >= 0} keys %Queues) { | ||
| 146 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "folder" }, ' . "\n"; | ||
| 147 | - } else { | ||
| 148 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "link", url: "' . $Self->{UrlAtendimento} . $queue . '" }, ' . "\n"; | ||
| 149 | - } | 150 | + |
| 151 | + for my $queue (@subqueues) { | ||
| 152 | + if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { | ||
| 153 | + $result = $result | ||
| 154 | + . "\t\t\t\t" | ||
| 155 | + . '{ id: ' | ||
| 156 | + . $queue | ||
| 157 | + . ', label: "' | ||
| 158 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 159 | + . '", type: "folder" }, ' . "\n"; | ||
| 160 | + } | ||
| 161 | + else { | ||
| 162 | + $result = $result | ||
| 163 | + . "\t\t\t\t" | ||
| 164 | + . '{ id: ' | ||
| 165 | + . $queue | ||
| 166 | + . ', label: "' | ||
| 167 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 168 | + . '", type: "link", url: "' | ||
| 169 | + . $Self->{UrlAtendimento} | ||
| 170 | + . $queue . '" }, ' . "\n"; | ||
| 171 | + } | ||
| 150 | } | 172 | } |
| 151 | - | 173 | + |
| 152 | $result = $result . "\t\t\t]);\n\t\t}\n"; | 174 | $result = $result . "\t\t\t]);\n\t\t}\n"; |
| 153 | - | ||
| 154 | - return $result; | 175 | + |
| 176 | + return $result; | ||
| 155 | } | 177 | } |
| 156 | 178 | ||
| 157 | sub LastQueue { | 179 | sub LastQueue { |
| 158 | - my $Self = shift; | 180 | + my $Self = shift; |
| 159 | my $queue = shift; | 181 | my $queue = shift; |
| 160 | - my @parts = split("::", $queue); | 182 | + my @parts = split( "::", $queue ); |
| 161 | return $parts[-1]; | 183 | return $parts[-1]; |
| 162 | } | 184 | } |
| 163 | 185 | ||
| @@ -165,7 +187,7 @@ sub Debug { | @@ -165,7 +187,7 @@ sub Debug { | ||
| 165 | my $Self = shift; | 187 | my $Self = shift; |
| 166 | my $msg = shift; | 188 | my $msg = shift; |
| 167 | 189 | ||
| 168 | - print STDERR "\n\nDEBUG => \n$msg\n\n"; | 190 | + #print STDERR "\n\nDEBUG => \n$msg\n\n"; |
| 169 | } | 191 | } |
| 170 | 192 | ||
| 171 | 1; | 193 | 1; |
Kernel/Modules/QueuesPanelPublic.pm
| @@ -17,8 +17,6 @@ use Data::Dumper; | @@ -17,8 +17,6 @@ use Data::Dumper; | ||
| 17 | 17 | ||
| 18 | sub new { | 18 | sub new { |
| 19 | my ( $Type, %Param ) = @_; | 19 | my ( $Type, %Param ) = @_; |
| 20 | - | ||
| 21 | - | ||
| 22 | 20 | ||
| 23 | # allocate new hash for object | 21 | # allocate new hash for object |
| 24 | my $Self = {%Param}; | 22 | my $Self = {%Param}; |
| @@ -42,122 +40,169 @@ sub new { | @@ -42,122 +40,169 @@ sub new { | ||
| 42 | sub Run { | 40 | sub Run { |
| 43 | my ( $Self, %Param ) = @_; | 41 | my ( $Self, %Param ) = @_; |
| 44 | my %Data = (); | 42 | my %Data = (); |
| 45 | - | 43 | + |
| 44 | + ## Se recebeu o ticket, significa que usuario já está autenticado | ||
| 45 | + if ( $Self->{ParamObject}->GetParam( Param => "ticket" ) ) { | ||
| 46 | + $Self->Debug("Recebida URL com ticket"); | ||
| 47 | + my $retorno = $Self->{LayoutObject}->Redirect( OP => "Action=QueuesPanel", ); | ||
| 48 | + $retorno =~ s/public/customer/g; | ||
| 49 | + $Self->Debug( "Redirect feito: " . $retorno ); | ||
| 50 | + return $retorno; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + ## Se tiver parametro para tentar autenticar, repassa ao CAS com gateway | ||
| 54 | + if ( $Self->{ParamObject}->GetParam( Param => "autenticar" ) ) { | ||
| 55 | + my $url = | ||
| 56 | + $Self->{ConfigObject}->Get('Customer::AuthModule::CAS::CASUrl') | ||
| 57 | + . "/login?gateway=true&service=" | ||
| 58 | + . "https://" | ||
| 59 | + . $ENV{SERVER_NAME} | ||
| 60 | + . $ENV{SCRIPT_NAME} | ||
| 61 | + . "?Action=QueuesPanelPublic"; | ||
| 62 | + $Self->Debug("Recebida tentativa de autenticar via url $url"); | ||
| 63 | + return $Self->{LayoutObject}->Redirect( ExtURL => $url, ); | ||
| 64 | + } | ||
| 65 | + ## | ||
| 66 | + | ||
| 46 | $Self->{UrlAtendimento} = '/otrs/public.pl?Action=NewTicketWizardPublic;QueueID='; | 67 | $Self->{UrlAtendimento} = '/otrs/public.pl?Action=NewTicketWizardPublic;QueueID='; |
| 47 | 68 | ||
| 48 | $Data{"QueueJS"} = $Self->BuildQueuesJS(); | 69 | $Data{"QueueJS"} = $Self->BuildQueuesJS(); |
| 49 | - | ||
| 50 | - $Self->Debug($Data{"QueueJS"}); | 70 | + |
| 71 | + $Self->Debug( $Data{"QueueJS"} ); | ||
| 51 | 72 | ||
| 52 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); | 73 | $Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::Customer::QueuesPanel"); |
| 53 | my $msgChooseService = $Self->{Config}->{"MessageChooseQueuePublic"}; | 74 | my $msgChooseService = $Self->{Config}->{"MessageChooseQueuePublic"}; |
| 54 | $Data{MsgChooseQueue} = $msgChooseService; | 75 | $Data{MsgChooseQueue} = $msgChooseService; |
| 55 | 76 | ||
| 56 | - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) ) { | ||
| 57 | - if ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "CreateTicket" ) { | ||
| 58 | - } | ||
| 59 | - elsif ( $Self->{ParamObject}->GetParam( Param => "Subaction" ) eq "GetFormJSON" ) { | ||
| 60 | - } | ||
| 61 | - } | ||
| 62 | - else { | ||
| 63 | - | ||
| 64 | - # build output | ||
| 65 | - my $Output = | ||
| 66 | - $Self->{LayoutObject} | ||
| 67 | - ->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("New ticket") ); | ||
| 68 | - | ||
| 69 | - $Output .= $Self->{LayoutObject}->Output( | ||
| 70 | - Data => \%Data, | ||
| 71 | - TemplateFile => 'QueuesPanel', | ||
| 72 | - ); | ||
| 73 | - $Output .= $Self->{LayoutObject}->CustomerFooter(); | ||
| 74 | - return $Output; | ||
| 75 | - } | 77 | + # build output |
| 78 | + my $Output = | ||
| 79 | + $Self->{LayoutObject}->CustomerHeader( Title => $Self->{LayoutObject}->{LanguageObject}->Get("New ticket") ); | ||
| 80 | + | ||
| 81 | + $Output .= $Self->{LayoutObject}->Output( | ||
| 82 | + Data => \%Data, | ||
| 83 | + TemplateFile => 'QueuesPanel', | ||
| 84 | + ); | ||
| 85 | + $Output .= $Self->{LayoutObject}->CustomerFooter(); | ||
| 86 | + return $Output; | ||
| 76 | } | 87 | } |
| 77 | 88 | ||
| 78 | sub BuildQueuesJS { | 89 | sub BuildQueuesJS { |
| 79 | my ( $Self, %Param ) = @_; | 90 | my ( $Self, %Param ) = @_; |
| 80 | - | 91 | + |
| 81 | # Get queues | 92 | # Get queues |
| 82 | my %Queues = (); | 93 | my %Queues = (); |
| 83 | - | 94 | + |
| 84 | $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); | 95 | $Self->{DBObject}->Prepare( SQL => "SELECT id, name FROM queue WHERE valid_id = 1 ORDER BY name ASC", ); |
| 85 | while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { | 96 | while ( my @Row = $Self->{DBObject}->FetchrowArray() ) { |
| 86 | - $Queues{$Row[0]} = $Row[1]; | 97 | + $Queues{ $Row[0] } = $Row[1]; |
| 87 | } | 98 | } |
| 88 | 99 | ||
| 89 | - my $result = '$(document).ready(function() {' . "\n\t". ' $("#columns").hColumns({' . "\n\t\t" . ' nodeSource: function(node_id, callback) {' . "\n"; | ||
| 90 | - | ||
| 91 | - for my $queue (keys %Queues) { | ||
| 92 | - $result = $result . $Self->BuildQueueJS(Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue); | 100 | + my $result = |
| 101 | + '$(document).ready(function() {' . "\n\t" | ||
| 102 | + . ' $("#columns").hColumns({' | ||
| 103 | + . "\n\t\t" | ||
| 104 | + . ' nodeSource: function(node_id, callback) {' . "\n"; | ||
| 105 | + | ||
| 106 | + for my $queue ( keys %Queues ) { | ||
| 107 | + $result = $result . $Self->BuildQueueJS( Queues => \%Queues, Queue => $Queues{$queue}, QueueID => $queue ); | ||
| 93 | } | 108 | } |
| 94 | - | ||
| 95 | - $result = $result . $Self->BuildTopQueuesJS(Queues => \%Queues); | ||
| 96 | - | 109 | + |
| 110 | + $result = $result . $Self->BuildTopQueuesJS( Queues => \%Queues ); | ||
| 111 | + | ||
| 97 | $result = $result . "\n\t}});\n});"; | 112 | $result = $result . "\n\t}});\n});"; |
| 98 | - | ||
| 99 | - return $result; | 113 | + |
| 114 | + return $result; | ||
| 100 | } | 115 | } |
| 101 | 116 | ||
| 102 | sub BuildTopQueuesJS { | 117 | sub BuildTopQueuesJS { |
| 103 | my ( $Self, %Param ) = @_; | 118 | my ( $Self, %Param ) = @_; |
| 104 | - my %Queues = %{$Param{"Queues"}}; | 119 | + my %Queues = %{ $Param{"Queues"} }; |
| 105 | 120 | ||
| 106 | - my @topQueues = grep { index($Queues{$_},'::') == -1 } keys %Queues; | 121 | + my @topQueues = grep { index( $Queues{$_}, '::' ) == -1 } keys %Queues; |
| 107 | 122 | ||
| 108 | my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; | 123 | my $result = "\t\tif (node_id === null) { \n\t\t\treturn callback(null, [\n"; |
| 109 | for my $queue (@topQueues) { | 124 | for my $queue (@topQueues) { |
| 110 | - | ||
| 111 | - if (grep { index($Queues{$_}, $Queues{$queue} . "::") >= 0} keys %Queues) { | ||
| 112 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "folder" },' . "\n"; | ||
| 113 | - } else { | ||
| 114 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "link", url: "' . $Self->{UrlAtendimento} . $queue . '" },' . "\n"; | 125 | + |
| 126 | + if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { | ||
| 127 | + $result = $result | ||
| 128 | + . "\t\t\t\t" | ||
| 129 | + . '{ id: ' | ||
| 130 | + . $queue | ||
| 131 | + . ', label: "' | ||
| 132 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 133 | + . '", type: "folder" },' . "\n"; | ||
| 134 | + } | ||
| 135 | + else { | ||
| 136 | + $result = $result | ||
| 137 | + . "\t\t\t\t" | ||
| 138 | + . '{ id: ' | ||
| 139 | + . $queue | ||
| 140 | + . ', label: "' | ||
| 141 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 142 | + . '", type: "link", url: "' | ||
| 143 | + . $Self->{UrlAtendimento} | ||
| 144 | + . $queue . '" },' . "\n"; | ||
| 115 | } | 145 | } |
| 116 | } | 146 | } |
| 117 | - | 147 | + |
| 118 | $result = $result . "\t\t\t]);\n\t\t}\n"; | 148 | $result = $result . "\t\t\t]);\n\t\t}\n"; |
| 119 | - | ||
| 120 | - return $result; | 149 | + |
| 150 | + return $result; | ||
| 121 | } | 151 | } |
| 122 | 152 | ||
| 123 | sub BuildQueueJS { | 153 | sub BuildQueueJS { |
| 124 | my ( $Self, %Param ) = @_; | 154 | my ( $Self, %Param ) = @_; |
| 125 | - my %Queues = %{$Param{"Queues"}}; | ||
| 126 | - my $BaseQueue = $Param{"Queue"}; | 155 | + my %Queues = %{ $Param{"Queues"} }; |
| 156 | + my $BaseQueue = $Param{"Queue"}; | ||
| 127 | my $BaseQueueID = $Param{"QueueID"}; | 157 | my $BaseQueueID = $Param{"QueueID"}; |
| 128 | 158 | ||
| 129 | # Get subqueues | 159 | # Get subqueues |
| 130 | - my @subqueues = grep { index($Queues{$_}, $BaseQueue . "::") >= 0} keys %Queues; | 160 | + my @subqueues = grep { index( $Queues{$_}, $BaseQueue . "::" ) >= 0 } keys %Queues; |
| 131 | my $level = () = $BaseQueue =~ /::/g; | 161 | my $level = () = $BaseQueue =~ /::/g; |
| 132 | $level = $level + 1; | 162 | $level = $level + 1; |
| 133 | - | 163 | + |
| 134 | # Remove subsubqueues | 164 | # Remove subsubqueues |
| 135 | - @subqueues = grep { (() = $Queues{$_} =~ /::/g) == $level} @subqueues; | ||
| 136 | - | 165 | + @subqueues = grep { ( () = $Queues{$_} =~ /::/g ) == $level } @subqueues; |
| 166 | + | ||
| 137 | # When there are no subqueues, there is no need to create a JS | 167 | # When there are no subqueues, there is no need to create a JS |
| 138 | - if (! @subqueues) { | 168 | + if ( !@subqueues ) { |
| 139 | return; | 169 | return; |
| 140 | } | 170 | } |
| 141 | - | 171 | + |
| 142 | my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; | 172 | my $result = "\t\tif (node_id === " . $BaseQueueID . ") { \n\t\t\treturn callback(null, [\n"; |
| 143 | - | ||
| 144 | - for my $queue (@subqueues) { | ||
| 145 | - if (grep {index($Queues{$_}, $Queues{$queue} . "::") >= 0} keys %Queues) { | ||
| 146 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "folder" }, ' . "\n"; | ||
| 147 | - } else { | ||
| 148 | - $result = $result . "\t\t\t\t" . '{ id: ' . $queue . ', label: "' . $Self->LastQueue($Queues{$queue}) . '", type: "link", url: "' . $Self->{UrlAtendimento} . $queue . '" }, ' . "\n"; | ||
| 149 | - } | 173 | + |
| 174 | + for my $queue (@subqueues) { | ||
| 175 | + if ( grep { index( $Queues{$_}, $Queues{$queue} . "::" ) >= 0 } keys %Queues ) { | ||
| 176 | + $result = $result | ||
| 177 | + . "\t\t\t\t" | ||
| 178 | + . '{ id: ' | ||
| 179 | + . $queue | ||
| 180 | + . ', label: "' | ||
| 181 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 182 | + . '", type: "folder" }, ' . "\n"; | ||
| 183 | + } | ||
| 184 | + else { | ||
| 185 | + $result = $result | ||
| 186 | + . "\t\t\t\t" | ||
| 187 | + . '{ id: ' | ||
| 188 | + . $queue | ||
| 189 | + . ', label: "' | ||
| 190 | + . $Self->LastQueue( $Queues{$queue} ) | ||
| 191 | + . '", type: "link", url: "' | ||
| 192 | + . $Self->{UrlAtendimento} | ||
| 193 | + . $queue . '" }, ' . "\n"; | ||
| 194 | + } | ||
| 150 | } | 195 | } |
| 151 | - | 196 | + |
| 152 | $result = $result . "\t\t\t]);\n\t\t}\n"; | 197 | $result = $result . "\t\t\t]);\n\t\t}\n"; |
| 153 | - | ||
| 154 | - return $result; | 198 | + |
| 199 | + return $result; | ||
| 155 | } | 200 | } |
| 156 | 201 | ||
| 157 | sub LastQueue { | 202 | sub LastQueue { |
| 158 | - my $Self = shift; | 203 | + my $Self = shift; |
| 159 | my $queue = shift; | 204 | my $queue = shift; |
| 160 | - my @parts = split("::", $queue); | 205 | + my @parts = split( "::", $queue ); |
| 161 | return $parts[-1]; | 206 | return $parts[-1]; |
| 162 | } | 207 | } |
| 163 | 208 | ||
| @@ -165,7 +210,7 @@ sub Debug { | @@ -165,7 +210,7 @@ sub Debug { | ||
| 165 | my $Self = shift; | 210 | my $Self = shift; |
| 166 | my $msg = shift; | 211 | my $msg = shift; |
| 167 | 212 | ||
| 168 | - print STDERR "\n\nDEBUG => \n$msg\n\n"; | 213 | + #print STDERR "\n\nDEBUG => \n$msg\n\n"; |
| 169 | } | 214 | } |
| 170 | 215 | ||
| 171 | 1; | 216 | 1; |
NewTicketWizard.sopm
| 1 | <?xml version="1.0" encoding="utf-8" ?> | 1 | <?xml version="1.0" encoding="utf-8" ?> |
| 2 | <otrs_package version="1.0"> | 2 | <otrs_package version="1.0"> |
| 3 | <Name>NewTicketWizard</Name> | 3 | <Name>NewTicketWizard</Name> |
| 4 | - <Version>1.2.10</Version> | 4 | + <Version>1.3.0</Version> |
| 5 | <Framework>3.x.x</Framework> | 5 | <Framework>3.x.x</Framework> |
| 6 | <Vendor>SeTIC</Vendor> | 6 | <Vendor>SeTIC</Vendor> |
| 7 | <URL>http://www.setic.ufsc.br</URL> | 7 | <URL>http://www.setic.ufsc.br</URL> |
| @@ -17,7 +17,8 @@ | @@ -17,7 +17,8 @@ | ||
| 17 | Versão 1.1.3 - Link para abrir segundo chamado na tela de finalização da abertura | 17 | Versão 1.1.3 - Link para abrir segundo chamado na tela de finalização da abertura |
| 18 | Versão 1.1.4 - Aumento na fonte do botao de enviar | 18 | Versão 1.1.4 - Aumento na fonte do botao de enviar |
| 19 | Versão 1.2.6 - Painel de navegação de filas | 19 | Versão 1.2.6 - Painel de navegação de filas |
| 20 | - Versão 1.2.9 - Publicacao de manutencoes em progresso | 20 | + Versão 1.2.9 - Publicacao de manutencoes em progresso |
| 21 | + Versão 1.3.0 - Suporte para detecção e auto-encaminhamento em modo autenticado/não autenticado | ||
| 21 | 22 | ||
| 22 | </Description> | 23 | </Description> |
| 23 | <IntroInstall Type="post" Lang="pt-br" Title="Obrigado">Módulo instalado com sucesso!</IntroInstall> | 24 | <IntroInstall Type="post" Lang="pt-br" Title="Obrigado">Módulo instalado com sucesso!</IntroInstall> |