I'm trying to develop a GUI solution for the customre to be capable of select a sub-queue based on selected queue when creates a new ticket.
Subqueue selected will be stored as queue for created ticket. It's to create easy and short queue/subqueue selection menu.
I've develop in CusomerTicketMessage.dtl a new label for SubQueue:
Edit: Removing
Code: Select all
<!-- dtl:block:SubQueue -->
Code: Select all
<!-- dtl:block:SubQueue -->
<div>
<label for="SubQueueID" class="Mandatory">
<span class="Marker">*</span>
$Text{"SubQueue"}
</label>
$Data{"SubQueueStrg"}
<div id="DestError" class="TooltipErrorMessage" ><p>$Text{"This field is required."}</p></div>
<div id="DestServerError" class="TooltipErrorMessage NoJavaScriptMessage$QData{"SubQueueInvalid"}" ><p>$Text{"This field is required."}</p></div>
<div class="Clear"></div>
</div><!--dtl:js_on_document_complete-->
<script type="text/javascript">//<![CDATA[
$('#SubQueueID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewCustomerTicket'), 'AJAXUpdate', 'SubQueueID', ['TypeID', 'PriorityID', 'ServiceID', 'SLAID', $Data{"DynamicFieldNamesStrg"}]);
});
//]]></script>
<!--dtl:js_on_document_complete-->
<!-- dtl:block:SubQueue -->
Code: Select all
sub _GetSubQueue {
my ( $Self, %Param ) = @_;
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "_GetSubQueue"
);
my %Result = ();
if (defined($_[1])) {
my $Queue = $_[1];
my @elems = split(/\|\|/,$Queue);
my $QName = $elems[-1];
my $QId = $elems[0];
my %Queues = $Self->{QueueObject}->QueueList( Valid => 1 );
my $QueueName = $Queues{$QId} . "::" ;
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "_GetSubQueue [" . $QId . "] [" . $QueueName . "]"
);
while ((my $Key, my $Value) = each(%Queues)){
# Filter
if ( index($Value, $QueueName) == 0 ) {
$Value =~ s/^$QueueName//g;
$Value =~ s/::/ - /g;
$Result{$Key} = $Value;
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "_GetSubQueue [" . $Key . "] [" . $Value . "]"
);
}
}
if (defined($Queue)) {
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "_GetSubQueue " . $Queue
);
}
}
return \%Result;
}
Code: Select all
my $SubQueues = $Self->_GetSubQueue($Param{ToSelected});
$Param{SubQueueStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $SubQueues,
Name => 'SubQueueID',
SelectedID => $Param{SubQueueID},
PossibleNone => 0,
TreeView => $TreeView,
Translation => 0,
);
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "_MaskNew SubQueues: " . $SubQueues . "Param: " . $Param{SubQueueStrg}
);
Code: Select all
{
Name => 'SubQueueID',
Data => $SubQueues,
SelectedID => $GetParam{SubQueueID},
PossibleNone => 1,
Translation => 0,
TreeView => $TreeView,
Max => 100,
},
Code: Select all
AJAXUpdate SubQueues: HASH(0x7fa97b55b030)Param: <select id="SubQueueID" name="SubQueueID">
<option value="74">SubQueue001</option>
<option value="76">SubQueue002</option>
<option value="157">SubQueue003</option>
<option value="75">SubQueue004</option>
</select> <a href="#" title="$Text{"Show Tree Selection"}" class="ShowTreeSelection">$Text{"Show Tree Selection"}</a>
I think I've forget some comunication between the layers, and if there is another solution or a workaround could be very helpful!
I'm new in perl and, of course in OTRS framework

Thanks in advance,
Ricardo.