From 03870c8fda3909d8aeb9d7120bc1debc3935f1c3 Mon Sep 17 00:00:00 2001 From: mark Date: Wed, 27 Oct 2010 01:49:29 +0000 Subject: [PATCH] RT ticket creation export to multiple queues, RT#10363 --- FS/FS/part_export/rt_ticket.pm | 94 +++++++++++++++++++++++++++++++---------- httemplate/edit/part_export.cgi | 20 +++++++-- 2 files changed, 89 insertions(+), 25 deletions(-) diff --git a/FS/FS/part_export/rt_ticket.pm b/FS/FS/part_export/rt_ticket.pm index 87a06dcfd..534924eb0 100644 --- a/FS/FS/part_export/rt_ticket.pm +++ b/FS/FS/part_export/rt_ticket.pm @@ -14,6 +14,7 @@ my %templates; my %queues; my %template_select = ( type => 'select', + freeform => 1, option_label => sub { $templates{$_[0]}; }, @@ -29,39 +30,85 @@ my %template_select = ( }, ); +my %queue_select = ( + type => 'select', + freeform => 1, + option_label => sub { + $queues{$_[0]}; + }, + option_values => sub { + %queues = (0 => '', FS::TicketSystem->queues()); + sort {$queues{$a} cmp $queues{$b}} keys %queues; + }, +); + tie my %options, 'Tie::IxHash', ( - 'queue' => { - label => 'Queue', - type => 'select', - option_label => sub { - $queues{$_[0]}; - }, - option_values => sub { - %queues = FS::TicketSystem->queues(); - sort {$queues{$a} cmp $queues{$b}} keys %queues; - }, + 'insert_queue' => { + before => ' + + + + ' }, 'insert_template' => { - label => 'Insert', - %template_select + before => ' +', }, - 'replace_template' => { - label => 'Replace', - %template_select + 'delete_queue' => { + before => ' + ', }, 'delete_template' => { - label => 'Delete', - %template_select + before => ' +', + }, + 'replace_queue' => { + before => ' + ', + }, + 'replace_template' => { + before => ' +', + }, + 'suspend_queue' => { + before => ' + ', }, 'suspend_template' => { - label => 'Suspend', - %template_select + before => ' +', + }, + 'unsuspend_queue' => { + before => ' + ', }, 'unsuspend_template' => { - label => 'Unsuspend', - %template_select + before => ' +
QueueTemplate
New service', + %queue_select, + after => '', + %template_select, + after => '
Delete', + %queue_select, + after => '', + %template_select, + after => '
Modify', + %queue_select, + after => '', + %template_select, + after => '
Suspend', + %queue_select, + after => '', + %template_select, + after => '
Unsuspend', + %queue_select, + after => '', + %template_select, + after => '
+', }, 'requestor' => { + freeform => 0, label => 'Requestor', 'type' => 'select', option_label => sub { @@ -92,6 +139,9 @@ sub _export_ticket { my $msgnum = $self->option($action.'_template'); return if !$msgnum; + my $queue = $self->option($action.'_queue'); + return if !$queue; + my $msg_template = FS::msg_template->by_key($msgnum); return "Template $msgnum not found\n" if !$msg_template; @@ -121,7 +171,7 @@ sub _export_ticket { my $err_or_ticket = FS::TicketSystem->create_ticket( '', #session should already exist - 'queue' => $self->option('queue'), + 'queue' => $queue, 'subject' => $msg{'subject'}, 'requestor' => $requestor, 'message' => $msg{'html_body'}, diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 8b697e142..a2fad56a3 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -77,7 +77,16 @@ my $widget = new HTML::Widgets::SelectLayers( ? $optinfo->{default} : '' ); - $html .= qq!$label!; + # 'freeform': disables table formatting of options. Instead, each + # option can define "before" and "after" strings which are inserted + # around the selector. + my $freeform = $optinfo->{freeform}; + if ( $freeform ) { + $html .= $optinfo->{before} || ''; + } + else { + $html .= qq!$label!; + } if ( $type eq 'select' ) { my $size = defined($optinfo->{size}) ? " SIZE=" . $optinfo->{size} : ''; my $multi = defined($optinfo->{multi}) ? ' MULTIPLE' : ''; @@ -108,7 +117,7 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= qq!'; } elsif ( $type eq 'text' ) { - $html .= qq!'; } elsif ( $type eq 'checkbox' ) { $html .= qq!{after} || ''; + } + else { + $html .= ''; + } } $html .= ''; -- 2.11.0