Formularfelder nach Qeue-Auswahl darstellen - Customer

Hilfe zu Znuny Problemen aller Art
Locked
DasaTech
Znuny newbie
Posts: 3
Joined: 22 Mar 2012, 11:28
Znuny Version: 31200

Formularfelder nach Qeue-Auswahl darstellen - Customer

Post by DasaTech »

Hallo an Euch,

ich weiss, das Problem wurde schon mehrmals in verschiedenen Varianten hier im Forum (im Englischen wie auch im Deutschen) behandelt. Ich habe mir nun einige Tage um die Ohren gehauen, um auch für mich auf eine funktionierende Lösung zu kommen. Dazu habe ich diverse Threads dazu gelesen, Code ausprobiert, umgeschrieben und so weiter. Ich komme einfach nicht weiter.

Zusätzlich bin ich ein OTRS Neuling und hatte zuvor nicht geschnallt, dass es die FreeTextFields ab der V 3.1 nicht mehr gibt und an deren Stelle die DynamicFields getreten sind. Letztendlich habe ich auch einen HowTo Thread im Englischen Forum dazu gefunden:

viewtopic.php?f=60&t=8032

Hier wird zwar bei Threadbeginn noch mit FreeTextFeldern herumgemacht....aber später im Thread hat sich dann jemand (vielen Dank dafür) dazu aufgerafft, die veränderten Bedingungen unter 3.1 aufzugreifen und den Code anzupassen.

Das ist auch alles irgendwie ganz OK erklärt, doch trotzdem funzt der Code bei mir überhaupt nicht. Mag sein, dass ich noch einen Denkfehler drin habe - daher schreibe ich jetzt mal hier. Vielleicht ist ja jemand dabei, der den Plan diesbezüglich in der Tasche hat.

Wie im Titel beschrieben geht es um die individuelle Anzeige von dynamischen Feldern je nach Qeue-Auswahl im CUSTOMER Bereich.

Version bei mir: 3.1.2

Habe zu Testzwecken 4 Hauptqeues und 1 Unterqeue:

Altglas
Kunststoff
Kunststoff::ASA
Metalle
Postmaster

Folgende Code wird im "CustomerTicketMessage.dtl" hier rein gepackt:

Code: Select all

<!--dtl:js_on_document_complete-->
<script type="text/javascript">//<![CDATA[
    $('#TypeID').bind('change', function (Event) {
        // make sure the ticket is not yet created on queue change
        $('input#Expand').val(1);
        Core.Form.Validate.DisableValidation($(this).closest('form'));
        $(this).closest('form').submit();
    });
	
----->HIER HALT KOMMT DER CODE BEI MIR REIN<-----	

//]]></script>
<!--dtl:js_on_document_complete-->
Und das ist der Code den ich bisher aus dem benannten Thread auf meine Umgebung angepasst habe und wie beschrieben einfüge:

Code: Select all

function nonetext() {
   document.compose.Subject.value = "";
   document.compose.RichText.value = "";
   document.getElementById('DynamicField_Glastyp').style.display = 'none';
   document.getElementById('LabelDynamicField_Glastyp').style.display = 'none';
   document.getElementById('DynamicField_Kunststofftyp').style.display = 'none';
   document.getElementById('LabelDynamicField_Kunststofftyp').style.display = 'none';
   document.getElementById('DynamicField_Metalltyp').style.display = 'none';
   document.getElementById('LabelDynamicField_Metalltyp').style.display = 'none';
}

switch ($('#Dest').val() ) {
   case  "1\|\|Altglas": // need to slash escape the pipes
      nonetext();
      document.getElementById('DynamicField_Glastyp').style.display = 'block';
      document.getElementById('LabelDynamicField_Glastyp').style.display = 'block';
	  document.getElementById('DynamicField_Glastyp').className = 'Validate_Required';
   break;
   case  "2\|\|Kunststoff": // need to slash escape the pipes
      nonetext();
      document.getElementById('DynamicField_Kunststofftyp').style.display = 'block';
      document.getElementById('LabelDynamicField_Kunststofftyp').style.display = 'block';
      document.getElementById('DynamicField_Kunststofftyp').className = 'Validate_Required';
   break;
   case  "3\|\|Metalle": // need to slash escape the pipes
      nonetext();
      document.getElementById('DynamicField_Metalltyp').style.display = 'block';
      document.getElementById('LabelDynamicField_Metalltyp').style.display = 'block';
      document.getElementById('DynamicField_Metalltyp').className = 'Validate_Required';
   break;
   
    default:
      nonetext();
}
Nun passiert dort aber beim Aufruf eines neues Customer-Tickets - genaugenommen - NIX.

Ich habe schon probiert unter SysConfig unter --TICKETS-- ---> Frontend::Customer::Ticket::ViewNew####DynamicFields die Felder einzutragen. Na OK. Dann erscheinen Sie ohnehin im Template - aber stetig. Das ist ja nicht das Ziel.

Wenn ich diesen Code zur DynamicField Anzeige aus dem Template hole:

Code: Select all

<!-- dtl:block:DynamicField -->
                <div class="Row Row_DynamicField_$QData{"Name"}">
                    $Data{"Label"}
                    <div class="Field">
                        $Data{"Field"}
                    </div>
                    <div class="Clear"></div>
                </div>
<!-- dtl:block:DynamicField -->
Dann zeigt er diese Felder nicht an. Logisch. Und ich kann einzelne Felder mit:

Code: Select all

<!-- dtl:block:DynamicField_Kunststofftyp -->
               <div class="Row Row_DynamicField_$QData{"Name"}">
                    $Data{"Label"}
                    <div class="Field">
                        $Data{"Field"}
                    </div>
                    <div class="Clear"></div>
                </div>
<!-- dtl:block:DynamicField_Kunststofftyp -->
Ausgeben lassen. Allerdings ohne Abhängigkeiten. OK. Vielleicht könnte man das auch irgendwie mit IF-Abfragen lösen. Doch warum das rad neu erfinden, wenn es diesen Code (anfangs benannt) gibt, der ja auch recht komfortabel zu sein scheint.

Aber warum funzt der bei mir nicht? Ich wäre über Tipps, Lösungsvoschläge oder Hinweise sehr dankbar....

Beste Grüße aus der Eifel

:-)
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: Formularfelder nach Qeue-Auswahl darstellen - Customer

Post by MasterM1 »

Das würde mich auch interessieren habe es nach der Anleitung im Englischen versucht aber es funktioniert bei mir nicht. Ich würde die Ansicht gerne auch für die Agenten ne nach ausgewälter Queue sollten nur bestimmte DynamicFields angezeigt werden. Ich weiss es gibt ein kostenpflichtiges Modul, das aber leider unser Budget sprengt.
Locked