DynamicField anhand des Pending Reminder Wertes setzen

Hilfe zu Znuny Problemen aller Art
Locked
Anthrazz
Znuny newbie
Posts: 13
Joined: 26 May 2014, 12:03
Znuny Version: 4.0.5

DynamicField anhand des Pending Reminder Wertes setzen

Post by Anthrazz »

Hallo,

ich würde gerne für die 2 Dynamischen Felder des EventTicket Calendar die Zeit automatisch setzen und entfernen. Soweit ich gesehen habe bietet das OTRS keine Funktion die Dynamischen Felder auf einen Variablen Wert per Generic Agent zu setzen. Ich hatte versucht die Felder per JavaScript automatisch im Warten Dialog zu setzen aber dies hat leider zu einem Fehler geführt weil JQuery erst am Ende der Seite geladen wird.

Kennt jemand eine gute Lösung für das Problem.
Anthrazz
Znuny newbie
Posts: 13
Joined: 26 May 2014, 12:03
Znuny Version: 4.0.5

Re: DynamicField anhand des Pending Reminder Wertes setzen

Post by Anthrazz »

Ich konnte das Problem nun doch per Javascript lösen.

Dazu wird die DTL Template Datei Kernel/Output/HTML/Standard/AgentTicketActionCommon.dtl nach Custom/Kernel/Output/HTML/Standard/AgentTicketActionCommon.dtl kopiert und angepasst.

Am Anfang der Datei wird der Block <!-- dtl:block:HeaderAgentTicketPending --> angepasst:

Code: Select all

<!-- dtl:block:HeaderAgentTicketPending -->
$Text{"Set Pending"}:
<script type="text/javascript">
        function CopyPendingTimeToTicketCalendarBoxes() {
                // get Pending Time Values
                var PendingDay = $('#Day').val();
                var PendingMonth = $('#Month').val()-1;
                var PendingYear = $('#Year').val();
                var PendingHour = $('#Hour').val();
                var PendingMinute = $('#Minute').val();

                // calculate time for TicketCalenderEndTime
                var TicketCalendarEndTime = new Date(PendingYear, PendingMonth, PendingDay, PendingHour, PendingMinute, 0);
                TicketCalendarEndTime.setMinutes(TicketCalendarEndTime.getMinutes() + 30); // add 30 minutes

                // set TicketCalendarStart and EndTime and Checkboxes
                $('#DynamicField_TicketCalendarStartTimeDay').val( PendingDay );
                $('#DynamicField_TicketCalendarStartTimeMonth').val( PendingMonth+1 );
                $('#DynamicField_TicketCalendarStartTimeYear').val( PendingYear );
                $('#DynamicField_TicketCalendarStartTimeHour').val( PendingHour );
                $('#DynamicField_TicketCalendarStartTimeMinute').val( PendingMinute );
                $('#DynamicField_TicketCalendarEndTimeDay').val( TicketCalendarEndTime.getDate() );
                $('#DynamicField_TicketCalendarEndTimeMonth').val( TicketCalendarEndTime.getMonth()+1 );
                $('#DynamicField_TicketCalendarEndTimeYear').val( TicketCalendarEndTime.getFullYear() );
                $('#DynamicField_TicketCalendarEndTimeHour').val( TicketCalendarEndTime.getHours() );
                $('#DynamicField_TicketCalendarEndTimeMinute').val( TicketCalendarEndTime.getMinutes() );
                $('#DynamicField_TicketCalendarStartTimeUsed').prop('checked', true);
                $('#DynamicField_TicketCalendarEndTimeUsed').prop('checked', true);
        }
</script>
<!-- dtl:block:HeaderAgentTicketPending -->
Und am Ende der Datei wird der Block <!--dtl:js_on_document_complete--> angepasst:

Code: Select all

<!--dtl:js_on_document_complete-->
<script type="text/javascript">//<![CDATA[
    Core.Agent.TicketAction.Init();
//]]>  
        if ( typeof CopyPendingTimeToTicketCalendarBoxes == 'function' ) {
                $('#Day').bind('change', function() { CopyPendingTimeToTicketCalendarBoxes(); } );
                $('#Month').bind('change', function() { CopyPendingTimeToTicketCalendarBoxes(); } );
                $('#Year').bind('change', function() { CopyPendingTimeToTicketCalendarBoxes(); } );
                $('#Hour').bind('change', function() { CopyPendingTimeToTicketCalendarBoxes(); } );
                $('#Minute').bind('change', function() { CopyPendingTimeToTicketCalendarBoxes(); } );
        }
</script>
<!--dtl:js_on_document_complete-->
Die JS Funktion im oberen Block wird nur ausgegeben wenn man auf der Warten Dialog Seite ist und im 2. JS Block wird geprüft ob es die Funktion gibt und entsprechend mit jQuery auf eine Änderung der "Warten bis" Boxen gewartet.
Locked