Ticket Formular abhängig von der Queue (AgentPhoneTicket)

Hilfe zu OTRS Problemen aller Art
Post Reply
Misfitz
Znuny newbie
Posts: 43
Joined: 22 Feb 2012, 16:21
Znuny Version: 3_3_3
Real Name: Patrick Veit
Company: Ametras mobility

Ticket Formular abhängig von der Queue (AgentPhoneTicket)

Post by Misfitz »

Hallo,

ich habe versucht diesen Code für die Queues einzufügen, aber leider ohne Erfolg.

OTRS blendet mir die FreeText Felder nicht aus.

Mein vorhaben ist:

Ein Agent soll bei auswählen der Queues verschiedene FreeText Felder angezeigt bekommen. Die anderen FreeText Felder sollen komplett ausgeblendet werden. Leider habe ich keine Ahnung von der Materie :-(

Hier im Forum ist eine Anleitung aber die funktioniert bei mir leider auch nicht.

Code: Select all

<script type="text/javascript">//<![CDATA[
    $('#Dest').bind('change', function (Event) {
        Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'Dest', ['NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'TicketFreeText1', 'TicketFreeText2', 'TicketFreeText3', 'TicketFreeText4', 'TicketFreeText5', 'TicketFreeText6', 'TicketFreeText7', 'TicketFreeText8', 'TicketFreeText9', 'TicketFreeText10', 'TicketFreeText11', 'TicketFreeText12', 'TicketFreeText13', 'TicketFreeText14', 'TicketFreeText15', 'TicketFreeText16', 'To', 'Cc', 'Bcc']);
		function nonetext() {
    // you should only add lines in here that A) you have defined in SysConfig and B) that you will show ... somewhen (in the switch/case) but not all the time.
          document.getElementById('TicketFreeText1').style.display = 'none';
          document.getElementById('LabelTicketFreeText1').style.display = 'none';
          document.getElementById('TicketFreeText2').style.display = 'none';
          document.getElementById('LabelTicketFreeText2').style.display = 'none';
          document.getElementById('TicketFreeText3').style.display = 'none';
          document.getElementById('LabelTicketFreeText3').style.display = 'none';
          document.getElementById('TicketFreeText4').style.display = 'none';
          document.getElementById('LabelTicketFreeText4').style.display = 'none';
		  document.getElementById('TicketFreeText5').style.display = 'none';
          document.getElementById('LabelTicketFreeText5').style.display = 'none';
          document.getElementById('TicketFreeText6').style.display = 'none';
          document.getElementById('LabelTicketFreeText6').style.display = 'none';
          document.getElementById('TicketFreeText7').style.display = 'none';
          document.getElementById('LabelTicketFreeText7').style.display = 'none';
          document.getElementById('TicketFreeText8').style.display = 'none';
          document.getElementById('LabelTicketFreeText8').style.display = 'none';
		  document.getElementById('TicketFreeText9').style.display = 'none';
          document.getElementById('LabelTicketFreeText9').style.display = 'none';
          document.getElementById('TicketFreeText10').style.display = 'none';
          document.getElementById('LabelTicketFreeText10').style.display = 'none';
          document.getElementById('TicketFreeText11').style.display = 'none';
          document.getElementById('LabelTicketFreeText11').style.display = 'none';
          document.getElementById('TicketFreeText12').style.display = 'none';
          document.getElementById('LabelTicketFreeText12').style.display = 'none';
    }
	
	switch ($('#Dest').val() ) { //this is where the queue is relevant (Dest = Queue)
        case  "2\|\|Meine Queue": // need to slash escape the pipes
          nonetext(); // This clears all the ticketfreetext listed before showing what you want
          document.getElementById('TicketFreeText3').style.display = 'block';
          document.getElementById('LabelTicketFreeText3').style.display = 'block';
        break;
    #   case "3\|\|Eine andere Queue": //Don't forget to slash escape BOTH pipes.
    #      nonetext(); // This clears all the ticketfreetext listed before showing what you want
    #      document.getElementById('TicketFreeText2').style.display = 'block';
    #      document.getElementById('LabelTicketFreeText2').style.display = 'block';
    #      document.getElementById('TicketFreeText3').style.display = 'block';
    #      document.getElementById('LabelTicketFreeText3').style.display = 'block';
    #      document.getElementById('TicketFreeText4').style.display = 'block';
    #      document.getElementById('LabelTicketFreeText4').style.display = 'block';
    #   break;
    #    default:
    #      document.compose.RichText.value = $('#Dest').val(); //remove this. debug only. shows queue information
    #      document.getElementById('TicketFreeText3').style.display = 'none';
    #      document.getElementById('LabelTicketFreeText3').style.display = 'none';
	
	});
//]]></script>
Ich verstehe diesen Code so, dass bei der Auswahl für ein Neues PhoneTicket dem Agenten alle Freetextfelder der Sysconfig angezeigt werden ausser wenn er die Queue ID 2\|\|Meine Queue auswählt wird Ihm das FreeText Feld 3 nicht angezeigt. Aber in diesem Fall wird bei der Queueauswahl nicht mal mehr die Eingabemaske refresht.

Kann mir hier jemand behilflich sein. Danke.

Ich verzweifle fast!!!
Misfitz
Znuny newbie
Posts: 43
Joined: 22 Feb 2012, 16:21
Znuny Version: 3_3_3
Real Name: Patrick Veit
Company: Ametras mobility

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by Misfitz »

Hallo,

also nun habe ich es soweit gebracht, dass ein paar Freetextfelder ausgeblendet werden. Jedoch weiss ich leider nicht warum!

Code: Select all

<script type="text/javascript">//<![CDATA[
    $('#TypeID').bind('change', function (Event) {
        Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'TypeID', ['NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'TicketFreeText1', 'TicketFreeText2', 'TicketFreeText3', 'TicketFreeText4', 'TicketFreeText5', 'TicketFreeText6', 'TicketFreeText7', 'TicketFreeText8', 'TicketFreeText9', 'TicketFreeText10', 'TicketFreeText11', 'TicketFreeText12', 'TicketFreeText13', 'TicketFreeText14', 'TicketFreeText15', 'TicketFreeText16', 'To', 'Cc', 'Bcc']);
    switch ($('#TypeID').val() ) {
        case "3":
                        document.getElementById('TicketFreeText1').style.display = 'block';
			document.getElementById('LabelTicketFreeText1').style.display = 'block';
			document.getElementById('TicketFreeText2').style.display = 'block';
			document.getElementById('LabelTicketFreeText2').style.display = 'block';
			document.getElementById('TicketFreeText6').style.display = 'block';
			document.getElementById('LabelTicketFreeText6').style.display = 'block';
		case "4":
			document.getElementById('TicketFreeText3').style.display = 'block';
			document.getElementById('LabelTicketFreeText3').style.display = 'block';
		case "5":
			document.getElementById('TicketFreeText5').style.display = 'block';
			document.getElementById('LabelTicketFreeText5').style.display = 'block';
		break;
        default:
		document.getElementById('TicketFreeText1').style.display = 'none';
        document.getElementById('LabelTicketFreeText1').style.display = 'none';
		document.getElementById('TicketFreeText2').style.display = 'none';
		document.getElementById('LabelTicketFreeText2').style.display = 'none';
		document.getElementById('TicketFreeText6').style.display = 'none';
		document.getElementById('LabelTicketFreeText6').style.display = 'none';
		document.getElementById('TicketFreeText7').style.display = 'none';
		document.getElementById('LabelTicketFreeText7').style.display = 'none';
		document.getElementById('TicketFreeText8').style.display = 'none';
		document.getElementById('LabelTicketFreeText8').style.display = 'none';
		document.getElementById('TicketFreeText9').style.display = 'none';
		document.getElementById('LabelTicketFreeText9').style.display = 'none';
		document.getElementById('TicketFreeText10').style.display = 'none';
		document.getElementById('LabelTicketFreeText10').style.display = 'none';
		document.getElementById('TicketFreeText11').style.display = 'none';
		document.getElementById('LabelTicketFreeText11').style.display = 'none';
		document.getElementById('TicketFreeText12').style.display = 'none';
		document.getElementById('LabelTicketFreeText12').style.display = 'none';
    }   
	});
//]]></script>
<!--dtl:js_on_document_complete-->
Gehe ich richtig der Annahme, dass bei diesem Beispiel wenn die ID 3 ausgewählt wird, die Freitextfelder 1,2,6 ausgeblendet werden sollen??

Code: Select all

        case "3":
                        document.getElementById('TicketFreeText1').style.display = 'block';
			document.getElementById('LabelTicketFreeText1').style.display = 'block';
			document.getElementById('TicketFreeText2').style.display = 'block';
			document.getElementById('LabelTicketFreeText2').style.display = 'block';
			document.getElementById('TicketFreeText6').style.display = 'block';
			document.getElementById('LabelTicketFreeText6').style.display = 'block';
Diese sollten dann aber wieder sichtbar sein, wenn ID 4 ausgewählt wird. Das ist aber leider nicht der Fall.

Kann mir das bitte einer zu meinem Verständins erklären?
Misfitz
Znuny newbie
Posts: 43
Joined: 22 Feb 2012, 16:21
Znuny Version: 3_3_3
Real Name: Patrick Veit
Company: Ametras mobility

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by Misfitz »

Hallo an alle die es Interessiert,

hab den Fehler gefunden, ich hatte bei den Casefällen das "break;" vergessen.

So funktioniert das soweit, aber ich habe nun das Problem, dass wenn ich die ID switchen möchte erst auf die "-" klicken muss damit er alle Felder ausblendet und anschliessend meine gewünschte ID anklicken kann, damit er mir nur die bestimmten FreeTextfelder anzeigt.

Kann mir da vll jemand helfen?

Hier nochmal der Code:

Code: Select all

<script type="text/javascript">//<![CDATA[
    $('#TypeID').bind('change', function (Event) {
        Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'TypeID', ['NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'TicketFreeText1', 'TicketFreeText2', 'TicketFreeText3', 'TicketFreeText4', 'TicketFreeText5', 'TicketFreeText6', 'TicketFreeText7', 'TicketFreeText8', 'TicketFreeText9', 'TicketFreeText10', 'TicketFreeText11', 'TicketFreeText12', 'TicketFreeText13', 'TicketFreeText14', 'TicketFreeText15', 'TicketFreeText16', 'To', 'Cc', 'Bcc']);
    function nonetext() {
      document.getElementById('TicketFreeText1').style.display = 'none';
      document.getElementById('LabelTicketFreeText1').style.display = 'none';
      document.getElementById('TicketFreeText2').style.display = 'none';
      document.getElementById('LabelTicketFreeText2').style.display = 'none';
      document.getElementById('TicketFreeText3').style.display = 'none';
      document.getElementById('LabelTicketFreeText3').style.display = 'none';
      document.getElementById('TicketFreeText4').style.display = 'none';
      document.getElementById('LabelTicketFreeText4').style.display = 'none';
	  document.getElementById('TicketFreeText5').style.display = 'none';
      document.getElementById('LabelTicketFreeText5').style.display = 'none';
      document.getElementById('TicketFreeText6').style.display = 'none';
      document.getElementById('LabelTicketFreeText6').style.display = 'none';
      document.getElementById('TicketFreeText7').style.display = 'none';
      document.getElementById('LabelTicketFreeText7').style.display = 'none';
      document.getElementById('TicketFreeText8').style.display = 'none';
      document.getElementById('LabelTicketFreeText8').style.display = 'none';
	  document.getElementById('TicketFreeText9').style.display = 'none';
      document.getElementById('LabelTicketFreeText9').style.display = 'none';
      document.getElementById('TicketFreeText10').style.display = 'none';
      document.getElementById('LabelTicketFreeText10').style.display = 'none';
      document.getElementById('TicketFreeText11').style.display = 'none';
      document.getElementById('LabelTicketFreeText11').style.display = 'none';
      document.getElementById('TicketFreeText12').style.display = 'none';
      document.getElementById('LabelTicketFreeText12').style.display = 'none';
}
	switch ($('#TypeID').val() ) {
        case "3":
            document.getElementById('TicketFreeText1').style.display = 'block';
			document.getElementById('LabelTicketFreeText1').style.display = 'block';
			document.getElementById('TicketFreeText2').style.display = 'block';
			document.getElementById('LabelTicketFreeText2').style.display = 'block';
			document.getElementById('TicketFreeText6').style.display = 'block';
			document.getElementById('LabelTicketFreeText6').style.display = 'block';
		break;
		case "4":
			document.getElementById('TicketFreeText3').style.display = 'block';
			document.getElementById('LabelTicketFreeText3').style.display = 'block';
		break;
		case "5":
			document.getElementById('TicketFreeText5').style.display = 'block';
			document.getElementById('LabelTicketFreeText5').style.display = 'block';
		break;
        default:
		document.getElementById('TicketFreeText1').style.display = 'none';
        document.getElementById('LabelTicketFreeText1').style.display = 'none';
		document.getElementById('TicketFreeText2').style.display = 'none';
		document.getElementById('LabelTicketFreeText2').style.display = 'none';
		document.getElementById('TicketFreeText3').style.display = 'none';
		document.getElementById('LabelTicketFreeText3').style.display = 'none';
		document.getElementById('TicketFreeText4').style.display = 'none';
		document.getElementById('LabelTicketFreeText4').style.display = 'none';
		document.getElementById('TicketFreeText5').style.display = 'none';
        document.getElementById('LabelTicketFreeText5').style.display = 'none';
        document.getElementById('TicketFreeText6').style.display = 'none';
        document.getElementById('LabelTicketFreeText6').style.display = 'none';
        document.getElementById('TicketFreeText7').style.display = 'none';
        document.getElementById('LabelTicketFreeText7').style.display = 'none';
        document.getElementById('TicketFreeText8').style.display = 'none';
        document.getElementById('LabelTicketFreeText8').style.display = 'none';
		document.getElementById('TicketFreeText9').style.display = 'none';
        document.getElementById('LabelTicketFreeText9').style.display = 'none';
        document.getElementById('TicketFreeText10').style.display = 'none';
        document.getElementById('LabelTicketFreeText10').style.display = 'none';
        document.getElementById('TicketFreeText11').style.display = 'none';
        document.getElementById('LabelTicketFreeText11').style.display = 'none';
        document.getElementById('TicketFreeText12').style.display = 'none';
        document.getElementById('LabelTicketFreeText12').style.display = 'none';
    }   
	});
//]]></script>
swerny
Znuny newbie
Posts: 20
Joined: 17 Oct 2008, 16:44
Znuny Version: 2.4.9

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by swerny »

Hmm...vielleicht versteh ich Dich jetzt falsch, aber warum benutzt Du nicht die Einstellungen hier:

Config Einstellungen: Ticket -> Frontend::Agent::Ticket::ViewCompose

Da kannst Du für jedes Freetext-Feld einstellen:

Angezeigte Ticket-Frei-Text-Felder. Mögliche Einstellungen: 0 = Deaktiviert, 1 = Aktiviert, 2 = Aktiviert und Pflichtfeld.
Produktivsystem: OpenSuSE 11.2, Apache/2.2.13, MySQL 5.0.51, OTRS 2.4.9
Testsystem: OpenSuSE 11.4, OTRS 3.0.9
Misfitz
Znuny newbie
Posts: 43
Joined: 22 Feb 2012, 16:21
Znuny Version: 3_3_3
Real Name: Patrick Veit
Company: Ametras mobility

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by Misfitz »

Hallo,

danke für Deine Antwort, aber Du verstehst mich falsch.

Dieses Script bewirkt, dass wenn Du eine Queue auswählst, nur Freetextfelder angezeigt werden, die Du auch für diese Queue verwenden kannst.

Beispiel:

- 10 Freetextfelder
- In Queue 1 sollen aber nur Freetext3, Freetext4 ausgewählt werden dürfen.
- In Queue 2 dagegen, brauchen wir mehr Informationen, also müssen zusätzlich noch Freetext5, Freetext6 und Freetext7 ausgewählt werden.
- In Queue 3 (nur ein simples Telefoninformationsticket), brauchen wir nur Freetext1.

Und mit dem Code ist das nun möglich. Die Freetextfelder, die Du für eine bestimmte Queue nicht verwenden möchtest, werden komplett ausgeblendet.

Ich hoffe ich habe es nun besser erklärt.

PS:
Gibt noch ein Problem bei dem Code. Wenn ich nun die Queues auswähle werden alle Freetextfelder angezeigt, erst wenn ich "-" in der Queue anklicke und auswähle werden die Freetextfelder ausgeblendet. Dann refresht er auch, wenn ich dann eine andere Queue auswähle. Hat jemand hierfür noch einen Tip, z.B. wenn der Agent die Emailadresse ("von Kundenkontakt") eingibt, sollen die Felder ausgeblendet werden, bis die Queue ausgewählt wird.
MasterM1
Znuny newbie
Posts: 7
Joined: 31 Jul 2011, 10:25
Znuny Version: Live 3.0.11 Test 3.1
Real Name: Mario Kehl

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by MasterM1 »

Hallo, bei funktioniert das gar nicht, kannst du mir auf die Sprünge helfen wo muss ich in der Sysconfg was einstellen, damit der Code im Template funktioniert? Danke
Misfitz
Znuny newbie
Posts: 43
Joined: 22 Feb 2012, 16:21
Znuny Version: 3_3_3
Real Name: Patrick Veit
Company: Ametras mobility

Re: Ticket Formular abhängig von der Queue (AgentPhoneTicket

Post by Misfitz »

Die FreeTextKeys und FreeTextFelder müssen in der SysConfig vorhanden sein.

Ticket -> Core::TicketFreeText

hier müssen alle FreeTextFelder und Keys die Du benötigst angelegt sein.
Post Reply