How To freetext für bestimmte Warteschlangen für Kunden zeig

Howto's zu OTRS Themen. Keine neuen Topics mit Fragen in diesem Forum!
User avatar
crythias
Moderator
Posts: 9920
Joined: 04 May 2010, 18:38
OTRS Version?: 4.0.x
Location: SouthWest Florida, USA
Contact:

How To freetext für bestimmte Warteschlangen für Kunden zeig

Postby crythias » 10 Aug 2012, 00:11

Original viewtopic.php?f=60&t=8032 (Englisch)

Dieser Beitrag hat mehr als 9000 Treffer in Englisch. Ich hoffe, sie übersetzt auch zu Ihnen.

Was bedeutet das tun? Er zeigt Dinge wie FreeTextFields, Kunden auf der Warteschlange wählen sie basiert. Es ist Client-Seite und setzt auf CSS-Elemente zu verstecken. Auch zeigt dieser Code, den Sie, wie Sie den Körper auf der Basis der Warteschlange zu ändern.

Bearbeiten Kernel/Output/HTML/Standard (oder Ihr Thema! Empfohlen!)/CustomerTicketMessage.dtl

Wir werden die JS und CSS zu verwenden, um hide / show Inhalt.

Code: Select all

<script type="text/javascript">
    Core.Customer.InitFocus();
//über zwei Zeilen sind schon da
    switch ($('#Dest').val() ) { //Hier wird die Queue ist relevant (Dest = Queue)
    case  "3\|\|Junk": // müssen die Rohre (pipes? ||) Schrägstrich zu entkommen
      document.compose.RichText.value = "Das ist Junk<br/>und Zeile 2"; // nur, wenn Sie den Körper ändern wollen. zerstört, wenn Benutzereingaben Queue Änderungen
      document.getElementById('TicketFreeText1').style.display = 'block';
      document.getElementById('LabelTicketFreeText1').style.display = 'block';
    break;
    default:
      document.compose.RichText.value = $('#Dest').val(); //entfernen Sie diese. nur debuggen. Queue zeigt Informationen
      document.getElementById('TicketFreeText1').style.display = 'none';
      document.getElementById('LabelTicketFreeText1').style.display = 'none';
    }
// die folgenden beiden Zeilen sind die bestehenden beiden letzten Zeilen von CustomerTicketMessage.dtl
</script>
<!-- dtl:js_on_document_complete -->


HINWEIS: wenn die freien Text Felder müssen ausgefüllt werden, gibt es zusätzliche Arbeit zu tun, aber das ist ein Workaround, wenn Sie nur auf bestimmten Warteschlangen anzeigen möchten.

Übrigens ich sollte wohl fügte hinzu, dass wenn Sie sich auf viele verschiedene Queues zu tun sind, werden Sie wahrscheinlich wollen eine Funktion, die style.display = 'none' für alle Ihre TicketFreeText, bevor Sie die Dinge zu zeigen.

Code: Select all

<script type="text/javascript">
    Core.Customer.InitFocus();
//above two lines are already there
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';
}
    switch ($('#Dest').val() ) { //this is where the queue is relevant (Dest = Queue)
    case  "3\|\|Junk": // need to slash escape the pipes
      document.compose.RichText.value = "This is junk<br/>and line 2"; // only if you want to change the body. destroys user input if queue changes
      nonetext(); // This clears all the ticketfreetext listed before showing what you want
      document.getElementById('TicketFreeText1').style.display = 'block';
      document.getElementById('LabelTicketFreeText1').style.display = 'block';
    break;
   case "5\|\|AnotherQueue": //Don't forget to slash escape BOTH pipes.
      document.compose.RichText.value = "This is another queue<br/>and line 2"; // only if you want to change the body. destroys user input if queue changes
      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('TicketFreeText1').style.display = 'none';
      document.getElementById('LabelTicketFreeText1').style.display = 'none';

Für die neuen DynamicFields, können Sie "DynamicField_FieldName"

Wenn Sie ein Feld, um dann erforderlich, wenn gezeigt werden soll, müssen Sie eine Klasse, um es hinzuzufügen, aber machen Sie nicht zwingend in das Feld SysConfig:

Code: Select all

      document.getElementById('DynamicField_TicketFreeText1').className = 'Validate_Required';


Die Erlaubnis erteilt zu Moderatoren für die Grammatik zu bearbeiten.
OTRS 4.0.x (private/testing/public) on Linux with MySQL database. Also on github.
Please edit your signature to include your OTRS version, Operating System, and database type.
Click Subscribe Topic below to get notifications. Consider amending your topic title to include [SOLVED] if it is so.
Need help? Before you ask

Return to “Howto's”

Who is online

Users browsing this forum: No registered users and 1 guest