ShowRelations

Vor einiger Zeit wurde mir von Usern angetragen, dass sie gerne eine Übersicht ihrer Tickets mit den Abhängigkeiten der Tickets zu anderen Tickets sehen wollen und zwar als eine Art Tabelle. Da zu diesem Zeitpunkt von RT 3.8 noch nicht zu hören oder sehen war, haben wir uns dem Thema zugewendet und ein kleines File namens ShowRelations gebaut.

Da dieses Modul übergreiffend eingesetzt werden soll, haben wir es als ein weiteren Menüpunkt in die Search Results eingebaut, damit kann man jetzt also aus jeder Suche direkt in die Relationsübersicht umschalten.

Fangen wir aber mal weiter vorne an. Das Grundproblem lag in der Struktur, wie wir in diversen Abteilungen arbeiten. Ein kleines Beispiel:

  1. Ein User hat ein Problem und wendet sich an seinen Superuser -> Ticket #1
  2. Der Superuser kann das Problem nicht lösen oder es stellt sich raus, dass es ein Bug ist und er eröffnent ein SubTicket in der entsprechenden Queue der IT -> Ticket #2 (depended on by Ticket #1)
  3. Die IT überprüft das Problem und gibt es ggf. an die Software Abteilung weiter -> Ticket #3 (depended on by Ticket #2)

Dieser Prozess wiederholt sich im allgemeinen sehr, sehr häufig und in der IT wie auch bei den Superusern liegen nach einiger Zeit eine Menge an Tickets in den Queues, welche “pending” vom übergeordneten Ticket sind. Damit die User hier nicht die Übersicht über den Fortgang verlieren wurde die Ansicht geschaffen, die es dem jeweiligen User ermöglicht auf einen Blick alle Abhängigkeiten aller Tickets zu sehen.

Nach vielen Überlegungen und etlichen Mails an die Maillingliste sind wir auf das wesentliche Stückchen Code im Reminder Code gestoßen, welches uns es binnen weniger Minuten ermöglichte genau das zu bauen.

Ausgangsbasis

Als Basis für ShowRelations dient jede Form der Suche, also die Ansicht einer Queue z.B.

Jetzt sind wir an dem Punkt wo das Link AddOn aus dem RT 3.8 leider nicht wirklich hilfreich ist, denn hier müsste man dann jedes Ticket öffnen um die Abhängigkeiten zu anderen Tickets zu sehen. Unser kleines Modul stellt aber diese in einer Tabelle im Bezug zu unserer Suche dar.

Das Ergebnis

ShowRelations Ergebnis zu der Suche von oben.

Der Code

Da ich zu “faul” war ein “sauberes” Callback für den Tab Bereich zu schreiben, habe ich es einfach in eine lokale Kopie der Tabs kopiert.

vi /opt/rt3/local/html/Ticket/Elements/Tabs

(ist eine Kopie von /opt/rt3/share/html/Ticket/Elements/Tabs)

Hier sucht man einfach nach Show Results und fügt den folgenden Teil danach ein:

  $tabs->{"ii"} = { path      => "Search/Relations.html$args",
                   title     => loc('Show Relations'),
                   };
  if ($current_tab =~  "Search/Relations.html") {
    $current_tab = "Search/Relations.html$args";
  }

Damit haben wir unseren neuen Menüpunkt gebaut. Jetzt brauchen wir noch das eigentliche “ShowRelations” Modul, welches unter /opt/rt3/local/html/Search/ als Relations.html abgespeichert werden muss.

Download: ShowRelations

Mit deiner Unterschrift in den Bundestag!