Artikeltyp intern/extern anpassen

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
hschinnenburg
Znuny newbie
Posts: 65
Joined: 16 Nov 2015, 12:59
Znuny Version: 5.02.13

Artikeltyp intern/extern anpassen

Post by hschinnenburg »

Hallo,

leider passiert es häufiger, das die Artiekltypen wie z.B. Notiz-intern oder EMail-extern nicht korrekt gewählt werden.
Um nun zu verhindern, das der Kunde die interne Kommunikation mitbekommt, möchten wir gerne den Typ nachträglich noch anpassen können.
Gibt es dazu bereits eine Möglichkeit oder wie regelt ihr das ?
VG und Danke
Hendrik
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Artikeltyp intern/extern anpassen

Post by RStraub »

Aus Gründen der Revisionssicherheit ist das nicht vorgesehen. Ihr könntet dieses Ticket einem anderen Kunden (z.B. euch selbst) zuordnen, damit kann er es überhaupt nicht mehr im Webinterface sehen.

Ich selbst habe den Typ auch schon über die Datenbank geändert, war aber gar nicht glücklich damit und würde es auch niemandem empfehlen.
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
hschinnenburg
Znuny newbie
Posts: 65
Joined: 16 Nov 2015, 12:59
Znuny Version: 5.02.13

Re: Artikeltyp intern/extern anpassen

Post by hschinnenburg »

Danke schon mal für die schnelle Info.

Die Revisionssicherheit wäre ja nur gefährdet, wenn wir den Eintrag löschen würden.
Es wäre halt nur prima, wenn es die Funktion gäbe, falsch eingetragene Kommentare vom Kunden wegzublenden.
Dies würde auch reichen.
vg
HS
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: Artikeltyp intern/extern anpassen

Post by Rooobaaat »

hschinnenburg wrote: Die Revisionssicherheit wäre ja nur gefährdet, wenn wir den Eintrag löschen würden.
Es wäre halt nur prima, wenn es die Funktion gäbe, falsch eingetragene Kommentare vom Kunden wegzublenden.
Dies würde auch reichen.
vg
HS
Gibt es nicht... Und Revisionssicher wäre das nicht, wenn man Informationen im Nachhinein verändern kann.

Quelle:
https://de.wikipedia.org/wiki/Revisionssicherheit
.....
Wesentliches Merkmal revisionssicherer Archivsysteme ist, dass die Informationen wieder auffindbar, nachvollziehbar, unveränderbar und verfälschungssicher archiviert sind.
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
Znuny Version: various
Real Name: Daniel Obée
Location: Berlin

Re: Artikeltyp intern/extern anpassen

Post by Daniel Obee »

Es spräche aber nichts dagegen, die Sichtbarkeit ändern zu können, solange diese Änderung historisiert wird. Revisionssicher heißt ja nicht "statisch".
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Re: Artikeltyp intern/extern anpassen

Post by schulmann »

Daniel Obee wrote:Es spräche aber nichts dagegen, die Sichtbarkeit ändern zu können, solange diese Änderung historisiert wird.
Es wäre dann aber nicht nachvollziehbar ob der Kunde den Artikel gelesen hat.
Znuny6/Debian/ESXi
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

Zum Thema "Revisionssicherheit" ... die Schwachstelle ist wie immer bei diesem Thema der Admin!

Bei uns entwickelt sich auch gerade etwas hin in die Richtung "Artikeltyp intern/extern anpassen" ... fände diese Funktion (unter Einbeziehung der beiden Einwände von Daniel Obee und schulmann) durchaus nützlich!
LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

... tja wie ich bereits vorhergesehen habe muss jetzt eine Möglichkeit her einen Artikel vom Typ "extern" auf den Typ "intern" zu ändern...

Generic Agent gibt zu dem Thema ja leider auch nichts her, also muss irgendwie ein Button eingebaut werden mit dem die Agenten

- einen Artikel des Typs "Notiz extern" (article_type_id=10) umwandeln können zu einem Artikel des Typs "Notiz intern" (article_type_id=9):

Code: Select all

UPDATE `otrsdb`.`article` SET `article_type_id`=9 WHERE  `id`=1337;
- einen Artikel des Typs "E-Mail extern" (article_type_id=1) umwandeln können zu einem Artikel des Typs "E-Mail intern" (article_type_id=2):

Code: Select all

UPDATE `otrsdb`.`article` SET `article_type_id`=2 WHERE  `id`=1337;
Ich habe herausgefunden wie man einen Button oben in der "Hauptnavigation" einbaut... aber wie kriegt man hier einen weiteren Button dazu?
intext.png
Ich habe den Button jetzt mit Firebug an die Stelle gesetzt wo ich ihn gerne hätte - die Frage wie das zu realisieren ist bleibt :lol:

Kann jemand helfen?
You do not have the required permissions to view the files attached to this post.
LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Artikeltyp intern/extern anpassen

Post by RStraub »

Huhu nd0,

möchtest du den Knopf generell - immer - global im Ticketzoom haben, oder nur in spezifischen Situationen?

Für letzteres hätte ich ein Modul. Unsere Anforderung war nämlich, in einem bestimmten Prozessschritt eine zusätzliche Optionen anzuzeigen. Das sähe dann so aus:

Code: Select all

package Kernel::Modules::AgentLeadActivityDialogsPost;

use strict;
use warnings;

our $ObjectManagerDisabled = 1;
use Kernel::System::VariableCheck qw(:all);

sub new {
    my ( $Type, %Param ) = @_;

    # allocate new hash for object
    my $Self = {%Param};
    bless( $Self, $Type );

    # check needed objects
    NEEDED:
    for my $Needed (qw(ParamObject DBObject LayoutObject LogObject ConfigObject)) {
        if ( !$Self->{$Needed} ) {
            $Self->{LayoutObject}->FatalError( Message => "Got no $Needed!" );
        }
    }
    return $Self;
}

### Ab hier wird's interessant

sub Run {
    my ( $Self, %Param ) = @_;

    # Early Returns
    return unless ($Self->{Action} eq 'AgentTicketZoom');
    my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
    my %Ticket = $TicketObject->TicketGet(
       TicketID      => $Self->{TicketID},
       DynamicFields => 1,
       UserID        => $Self->{UserID},
    );
    return unless ($Ticket{DynamicField_ProcessManagementProcessID} &&
                        $Ticket{DynamicField_ProcessManagementProcessID} eq 'Process-223afb371193757faff0785e76ea2e94');
    return unless ($Ticket{DynamicField_ProcessManagementActivityID} &&
                        $Ticket{DynamicField_ProcessManagementActivityID} eq 'Activity-72cff829a2da4933ca7cfe15159ed509');

    # Now we are sure to be in the right step and process.
    # Here we want to add a dynamic (but fake) activitydialog

    # Need the query for last-id, because AddJSOnDocumentComplete is triggered
    # once per iframe. Each Article is an iframe so... only do it once
    my $Link = "/otrs/index.pl?Action=AgentTicketBZT&TicketID=$Self->{TicketID}&ResponseID=8&ReplyAll=&ArticleID=12925";
    $Self->{LayoutObject}->AddJSOnDocumentComplete( Code => <<"EOF");
    var lastchild = \$("#DynamicFieldsWidget ul li:last-child");
    if (lastchild.attr('id') != 'custom_last') {
       \$("#DynamicFieldsWidget ul").append('<li id="custom_last"><a title="Test" class="AsPopup PopupType_TicketAction" href="$Link">Klick mich! Hier Hier!</a></li>');
    }
EOF
    return 1;
}

1;

In der $Link Variable kannst du dann dein eigenes Modul aufrufen in dem in der DB rumgepfuscht wird (pfui, böse!).
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

Hallo RStraub :-)

"nur in spezifischen Situationen" wäre natürlich toll ... also, dass mir der Button nur angezeigt wird, wenn es sich um eine E-Mail EXTERN oder eine Notiz EXTERN handelt ...

Hab jetzt das Buch "PERL 5 FÜR DUMMIES" vor mir liegen und werde mir das über die Karnevalstage mal einverleiben ... vielleicht kann ich dann mit deinem Quellcode mehr anfangen. Verstehe ich richtig, dass das ein "neues" Modul ist/wird wenn ich das einbaue - korrekt? :?

Vielen Dank mal wieder!

Der nd0
LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Artikeltyp intern/extern anpassen

Post by RStraub »

Ja, das an sich ist schon ein Modul (vom Typ Post, d.h. manipuliert eine Seite nachdem sie durch's Template gejagt wurde).

Durch den Link der darin gesetzt ist ruft man dann nochmal ein anderes Modul auf, das sich um die Logik kümmern würde (ArtikelTyp ändern).
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

Tjaaa ... also das Buch "PERL 5 FÜR DUMMIES" hat mich nicht sonderlich weitergebracht. Da wo es für mich interessant wird hört das Buch nämlich auf (muss leider auch dazu sagen ist eine Ausgabe von 1996 :shock: )


Hab mich dann weitergehend mal mit dem Developer Guide für OTRS 4 auseinandergesetzt und bin schon am Hinzufügen des HelloWorld-Moduls gescheitert ... https://otrs.github.io/doc/manual/devel ... -otrs.html

/e: Achja, und steh ich wieder auf dem Schlauch oder warum werden in deinem Script die beiden Abfragen (jeweils) zwei mal durchgeführt?
RStraub wrote:

Code: Select all

return unless ($Ticket{DynamicField_ProcessManagementProcessID} &&
                        $Ticket{DynamicField_ProcessManagementProcessID} eq 'Process-223afb371193757faff0785e76ea2e94');
    return unless ($Ticket{DynamicField_ProcessManagementActivityID} &&
                        $Ticket{DynamicField_ProcessManagementActivityID} eq 'Activity-72cff829a2da4933ca7cfe15159ed509');
LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Artikeltyp intern/extern anpassen

Post by RStraub »

Wo scheiterst du denn ?

Die Abfragen führ ich nicht zweimal durch, der Teil vor dem "&&" prüft ob die Variable überhaupt da ist (!= NULL), da sonst unschöne Fehler geworfen werden wenn ich versuche NULL mit einem String zu vergleichen.
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

Au - ja ich stand wieder auf dem Schlauch ;-) Jetzt wo du's sagst: Logisch!

Also, ich scheitere im Grunde schon am Anfang:
First of all we must build the directory /Hello World for the module in the developer directory. In this directory, all directories existent in OTRS can be created. Each module should at least contain the following directories:
Wo befindet sich denn das "developer directory"? :? Ich bin dann mal davon ausgegangen, dass damit der Ordner "Custom" in "/opt/otrs/" gemeint war. Dort habe ich dann die folgende Struktur angelegt:

Kernel/
Kernel/Config
Kernel/Config/Files
Kernel/Language
Kernel/Modules
Kernel/Output
Kernel/Output/HTML
Kernel/Output/HTML/Standard
Kernel/System

Innerhalb dieser Struktur habe ich dann wie im Developer Manual beschrieben alle Dateien zum HelloWorld-Modul erstellt ... danach RebuildConfig, DeleteCache und natürlich vorher die Permissions angepasst (Dateien wurden von mir in WinSCP erstellt) ... es tut sich nichts :/

/e: In "/opt/otrs/Custom/Kernel/Modules" befinden sich auch schon eine pm-Dateien die ich während diverser Anpassungen dort abgelegt habe ... DAS funktioniert ja wiederum alles :(
LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Artikeltyp intern/extern anpassen

Post by RStraub »

Könntest du dazu einen eigenen Thread aufmachen? Möchte den hier ungern hijacken.

Das mit dem Custom Ordner ist schonmal ganz richtig, nur OTRS scannt einige bestimmte Ordner nicht ab. Dazu gehört u.a. auch ~otrs/Kernel/Config/Files.

D.h. deine ganzen .xml Dateien zur Registrierung des Moduls müssen in den Original-Pfad rein. Danach sollte (bis auf ggf. die Übersetzung) das Modul sichtbar sein.

Cache Rebuild ist nicht unbedingt nötigt, es reicht meistens wenn du nach einer Anpassung der .xml in der Weboberfläche nur die SysConfig aufrufst - dann wird alles neu eingelesen (falls fehlerfrei).
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
nd0
Znuny expert
Posts: 232
Joined: 24 Mar 2015, 16:53
Znuny Version: 5.0.14
Location: Colonia

Re: Artikeltyp intern/extern anpassen

Post by nd0 »

LIVE: OTRS 5.0.14 || Debian || MySQL/LDAP
TEST: OTRS 5.0.14 || Debian || MySQL/LDAP
Post Reply