Commit 229c50a291b9bc7149885cdcc9a06337d60c9fd9

Authored by Rodrigo Gonçalves
1 parent c97e028e
Exists in master

Versao 1.0.3

.project 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<projectDescription>
  3 + <name>otrs-agents-per-queue</name>
  4 + <comment></comment>
  5 + <projects>
  6 + <project>otrs</project>
  7 + </projects>
  8 + <buildSpec>
  9 + <buildCommand>
  10 + <name>org.epic.perleditor.perlbuilder</name>
  11 + <arguments>
  12 + </arguments>
  13 + </buildCommand>
  14 + </buildSpec>
  15 + <natures>
  16 + <nature>org.epic.perleditor.perlnature</nature>
  17 + </natures>
  18 +</projectDescription>
... ...
CreateOpm.sh 0 → 100755
... ... @@ -0,0 +1,5 @@
  1 +#!/bin/bash
  2 +LOCAL="$PWD"
  3 +cd /opt/otrs/bin
  4 +./otrs.PackageManager.pl -a build -p "$LOCAL"/AgentsPerQueue.sopm -o "$LOCAL"/
  5 +cd $LOCAL
... ...
Kernel/Config/Files/AgentsPerQueue.xml 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<otrs_config init="Application" version="1.0">
  3 +
  4 +
  5 + <!-- Módulo Matriz -->
  6 + <ConfigItem Name="Frontend::Module###AgentsPerQueue" Required="0" Valid="1">
  7 + <Description Translatable="1">FrontendModuleRegistration for AgentsPerQueue module.</Description>
  8 + <Group>Framework</Group>
  9 + <SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
  10 + <Setting>
  11 + <FrontendModuleReg>
  12 + <Description>Module for publishing agents per queue matrix</Description>
  13 + <NavBarName>Service</NavBarName>
  14 + <NavBar>
  15 + <Description Translatable="1">Agents per queue matrix</Description>
  16 + <Name Translatable="1">Agents per queue matrix</Name>
  17 + <Link>Action=AgentsPerQueue</Link>
  18 + <NavBar>Service</NavBar>
  19 + <Type></Type>
  20 + <Prio>8200</Prio>
  21 + </NavBar>
  22 + <Loader>
  23 + </Loader>
  24 + </FrontendModuleReg>
  25 + </Setting>
  26 + </ConfigItem>
  27 +
  28 +</otrs_config>
... ...
Kernel/Language/pt_BR_AgentsPerQueue.pm 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +# --
  2 +# Kernel/Modules/pt_BR_AgentsPerQueue.pm - frontend module for showing agents per queue matrix
  3 +# Translations
  4 +#
  5 +# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br)
  6 +# --
  7 +# This software comes with ABSOLUTELY NO WARRANTY. For details, see
  8 +# the enclosed file COPYING for license information (AGPL). If you
  9 +# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
  10 +# --
  11 +package Kernel::Language::pt_BR_AgentsPerQueue;
  12 +
  13 +use strict;
  14 +use warnings;
  15 +
  16 +sub Data {
  17 + my $Self = shift;
  18 +
  19 + $Self->{Translation}->{'Queues per agent'} = 'Filas por agente';
  20 + $Self->{Translation}->{'Queues'} = 'Filas';
  21 + $Self->{Translation}->{'Paths'} = 'Encaminhamentos';
  22 + $Self->{Translation}->{'Agents per queue matrix'} = 'Agentes por fila';
  23 +
  24 +
  25 +
  26 +
  27 + return 1;
  28 +}
  29 +1;
0 30 \ No newline at end of file
... ...
Kernel/Modules/AgentsPerQueue.pm 0 → 100644
... ... @@ -0,0 +1,146 @@
  1 +# --
  2 +# Kernel/Modules/AgentsPerQueue.pm - frontend module for displaying the agents per queue matrix panel
  3 +# Copyright (C) 2014 (Rodrigo Goncalves) (rodrigo.g@ufsc.br)
  4 +# --
  5 +# This software comes with ABSOLUTELY NO WARRANTY. For details, see
  6 +# the enclosed file COPYING for license information (AGPL). If you
  7 +# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
  8 +# --
  9 +package Kernel::Modules::AgentsPerQueue;
  10 +
  11 +use strict;
  12 +use warnings;
  13 +
  14 +use Kernel::System::VariableCheck qw(:all);
  15 +use Data::Dumper;
  16 +
  17 +sub new {
  18 + my ( $Type, %Param ) = @_;
  19 +
  20 + # allocate new hash for object
  21 + my $Self = {%Param};
  22 + bless( $Self, $Type );
  23 +
  24 + # check needed objects
  25 + for (
  26 + qw(ParamObject DBObject LayoutObject LogObject ConfigObject)
  27 + )
  28 + {
  29 + if ( !$Self->{$_} ) {
  30 + $Self->{LayoutObject}->FatalError( Message => "Got no $_!" );
  31 + }
  32 + }
  33 +
  34 + # needed objects
  35 +
  36 + return $Self;
  37 +}
  38 +
  39 +sub Run {
  40 + my ( $Self, %Param ) = @_;
  41 + my %Data = ();
  42 +
  43 + # load data
  44 + my %matrix = $Self->GetQueuesPerAgent();
  45 +
  46 + # build output
  47 + my $Output =
  48 + $Self->{LayoutObject}->Header( Title => $Self->{LayoutObject}->{LanguageObject}->Get("Queues per agent") );
  49 + $Output .= $Self->{LayoutObject}->NavigationBar();
  50 +
  51 + my $id = 1;
  52 +
  53 + # include each agent
  54 + foreach my $agent ( sort keys %matrix ) {
  55 + $Self->{LayoutObject}->Block(
  56 + Name => 'QueuesPerAgent',
  57 + Data => { ID => $id, Agent => $agent, Queues => $matrix{$agent}{"Manage"}, Paths => $matrix{$agent}{"Path"} },
  58 + );
  59 + $id += 1;
  60 + }
  61 +
  62 + $Output .= $Self->{LayoutObject}->Output(
  63 + Data => \%Data,
  64 + TemplateFile => 'AgentsPerQueue',
  65 + );
  66 + $Output .= $Self->{LayoutObject}->Footer();
  67 + return $Output;
  68 +
  69 +}
  70 +
  71 +sub GetQueuesPerAgent {
  72 + my ( $Self, %Param ) = @_;
  73 + my %result = ();
  74 +
  75 + my $SQL = "SELECT type, user, queue from vw_user_queues order by user,queue, type";
  76 +
  77 + # get queues
  78 + $Self->{DBObject}->Prepare(
  79 + SQL => $SQL,
  80 + Bind => [ ]
  81 + );
  82 +
  83 + my $queues = "";
  84 + my $queuesPath = "";
  85 +
  86 + my $lastAgent = "";
  87 + my $lastQueue = "";
  88 + my $lastType = "";
  89 + my $queue = "";
  90 + my $type = "";
  91 + my $agent = "";
  92 +
  93 + # for each user/queue
  94 + while ( my @row = $Self->{DBObject}->FetchrowArray() ) {
  95 +
  96 + # current line data
  97 + $type = $row[0];
  98 + $agent = $row[1];
  99 + $queue = $row[2];
  100 +
  101 + # if agent changed from last row (or is first line)
  102 + if ($agent ne $lastAgent) {
  103 + if ($lastAgent ne "") {
  104 + # if agent changed, save the previous agent data and reset the variables
  105 + $result{$lastAgent}{"Manage"} = $queues;
  106 + $result{$lastAgent}{"Path"} = $queuesPath;
  107 + $queues = "";
  108 + $queuesPath = "";
  109 + $lastQueue = "";
  110 + $lastType = "";
  111 + }
  112 + } else {
  113 + # same agent, add line break to the last queue type
  114 + if ($lastType eq "Manage") {
  115 + $queues = $queues . "<BR/>"
  116 + } else {
  117 + $queuesPath = $queuesPath . "<BR/>"
  118 + }
  119 + }
  120 +
  121 + # if the same queue appears in manage and path, ignore the path clause
  122 + if (($type eq "Path") and ($lastQueue eq $queue)) {
  123 +
  124 + } elsif ($type eq "Manage") {
  125 + $queues = $queues . $queue;
  126 + } elsif ($type eq "Path") {
  127 + $queuesPath = $queuesPath . $queue;
  128 + }
  129 +
  130 + # data for next loop
  131 + $lastType = $type;
  132 + $lastQueue = $queue;
  133 + $lastAgent = $agent;
  134 + }
  135 +
  136 + if (($queues ne "") or ($queuesPath ne "")) {
  137 + $result{$agent}{"Manage"} = $queues;
  138 + $result{$agent}{"Path"} = $queuesPath;
  139 + }
  140 +
  141 + print STDERR Dumper(%result);
  142 +
  143 + return %result;
  144 +}
  145 +
  146 +1;
... ...
Kernel/Output/HTML/Standard/AgentsPerQueue.dtl 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +# --
  2 +# ResponsibilityMatrix.dtl - provides HTML for ResponsibilityMatrix
  3 +# Copyright (C) 2014 Rodrigo Gonçalves (rodrigo.g@ufsc.br)
  4 +#
  5 +# This software comes with ABSOLUTELY NO WARRANTY. For details, see
  6 +# the enclosed file COPYING for license information (AGPL). If you
  7 +# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
  8 +# --
  9 +# Autor: Rodrigo Gonçalves
  10 +# Data.: 04/08/2014 - versão inicial
  11 +#
  12 +
  13 +<div class="MainBox ARIARoleMain LayoutFixedSidebar SidebarFirst"><h1>$Text{"Queues per agent"}</h1></div>
  14 +<table class="DataTable SpacingTop" style="width: 80%; margin-left: 10%; margin-bottom: 50px;">
  15 +<thead>
  16 +<tr>
  17 +<th ROWSPAN="1" style="text-align: center; vertical-align: middle">$Text{"ID"}</th>
  18 +<th ROWSPAN="1" style="text-align: center; vertical-align: middle">$Text{"Agent"}</th>
  19 +<th ROWSPAN="1" style="text-align: center; vertical-align: middle">$Text{"Paths"}</th>
  20 +<th ROWSPAN="1" style="text-align: center; vertical-align: middle">$Text{"Queues"}</th>
  21 +</tr>
  22 +</thead>
  23 +<tbody>
  24 +<!-- dtl:block:QueuesPerAgent -->
  25 +<tr><td>$Data{"ID"}</td><td>$Data{"Agent"}</td>
  26 +<td>
  27 +<div style="width:100%; max-height:200px; overflow:auto">$Data{"Paths"}</div>
  28 +</td>
  29 +<td>
  30 +<div style="width:100%; max-height:200px; overflow:auto">$Data{"Queues"}</div>
  31 +</td>
  32 +</tr>
  33 +<!-- dtl:block:QueuesPerAgent -->
  34 +</tbody>
  35 +</table>
0 36 \ No newline at end of file
... ...
unit_test.sh 0 → 100755
... ... @@ -0,0 +1,2 @@
  1 +#!/bin/sh
  2 +#Nothing to do for now.... /opt/otrs/bin/otrs.UnitTest.pl -n Responsibility
... ...