X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fhtml%2FREST%2F1.0%2Fsearch%2Fticket;h=bd3d63fe73058929b9883f352af6e35007337047;hp=0990fd69bb837b6417be68d9c261d476048b33a2;hb=fc6209f398899f0211cfcedeb81a3cd65e04a941;hpb=9c68254528b6f2c7d8c1921b452fa56064783782 diff --git a/rt/html/REST/1.0/search/ticket b/rt/html/REST/1.0/search/ticket index 0990fd69b..bd3d63fe7 100644 --- a/rt/html/REST/1.0/search/ticket +++ b/rt/html/REST/1.0/search/ticket @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -22,7 +22,9 @@ %# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software -%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. %# %# %# CONTRIBUTION SUBMISSION POLICY: @@ -57,10 +59,10 @@ my $status = "200 Ok"; my $tickets = new RT::Tickets $session{CurrentUser}; # Parse and validate any field specifications. -my $field = '[a-zA-Z][a-zA-Z0-9_-]*'; +my $field = '[a-zA-Z](?:[a-zA-Z0-9_-]|\s+)*'; my (%fields, @fields); if ($fields) { - $format = "l"; + $format ||= "l"; unless ($fields =~ /^(?:$field,)*$field$/) { $status = "400 Bad Request"; $output = "Invalid field specification: $fields"; @@ -115,14 +117,28 @@ my @output; while (my $ticket = $tickets->Next) { $n++; + my $id = $ticket->Id; if ($format eq "i") { - $output .= "ticket/" . $ticket->Id . "\n"; + $output .= "ticket/" . $id . "\n"; } elsif ($format eq "s") { - $output .= $ticket->Id . ": ". $ticket->Subject . "\n"; + if ($fields) { + my $result = $m->comp("/REST/1.0/Forms/ticket/default", id => $id, format => $format, fields => \%fields); + my ($notes, $order, $key_values, $errors) = @$result; + # If it's the first time through, add our header + if ($n == 1) { + $output .= join("\t",@$order)."\n"; + } + # Cut off the annoying ticket/ before the id; + $key_values->{'id'} = $id; + $output .= join("\t", map {$key_values->{$_}} @$order)."\n"; + + + } else { + $output .= $ticket->Id . ": ". $ticket->Subject . "\n"; + } } else { - my $id = $ticket->Id; my $d = $m->comp("/REST/1.0/Forms/ticket/default", id => $id, format => $format, fields => \%fields); my ($c, $o, $k, $e) = @$d; push @output, [ $c, $o, $k ]; @@ -138,4 +154,5 @@ OUTPUT: $m->out("RT/". $RT::VERSION . " " . $status ."\n\n"); $m->out($output ); +return();