X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FSearch%2FElements%2FBuildFormatString;h=de2c2b9204b3f20ee8ac2ff30f3773424b462ba3;hb=de9d037528895f7151a9aead6724ce2df95f9586;hp=a39287bff6fa746ccca0ad624e1b65d905b17f07;hpb=f3c4966ed1f6ec3db7accd6dcdd3a5a3821d72a7;p=freeside.git diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString index a39287bff..de2c2b920 100644 --- a/rt/share/html/Search/Elements/BuildFormatString +++ b/rt/share/html/Search/Elements/BuildFormatString @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -94,6 +94,7 @@ my @fields = ( LastUpdated LastUpdatedRelative Told ToldRelative Due DueRelative + WillResolve WillResolveRelative Resolved ResolvedRelative RefersTo ReferredToBy @@ -108,14 +109,18 @@ my @fields = ( ) ); # loc_qw +# This callback will only run once and will be removed in 4.4 +# If you want to add a new item to @fields, use the Default callback below. $m->callback( CallbackOnce => 1, CallbackName => 'SetFieldsOnce', Fields => \@fields ); my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'}); foreach my $id (keys %queues) { - # Gotta load up the $queue object, since queues get stored by name now. my $id + # Gotta load up the $queue object, since queues get stored by name now. my $queue = RT::Queue->new($session{'CurrentUser'}); $queue->Load($id); - $CustomFields->LimitToQueue($queue->Id) if $queue->Id; + next unless $queue->Id; + $CustomFields->LimitToQueue($queue->Id); + $CustomFields->SetContextObject( $queue ) if keys %queues == 1; } $CustomFields->LimitToGlobal; @@ -128,28 +133,16 @@ $m->callback( Fields => \@fields, ARGSRef => \%ARGS ); my ( @seen); $Format ||= RT->Config->Get('DefaultSearchResultFormat'); -my @format = split( /,\s*/, $Format ); +my @format = $m->comp('/Elements/CollectionAsTable/ParseFormat', Format => $Format); foreach my $field (@format) { - my %column = (); - $field =~ s/'(.*)'/$1/; - my ( $prefix, $suffix ); - if ( $field =~ m/(.*)__(.*)__(.*)/ ) { - $prefix = $1; - $suffix = $3; - $field = $2; - } - $field = "" if !$field; - $column{Prefix} = $prefix; - $column{Suffix} = $suffix; - $field =~ s/\s*(.*)\s*/$1/; - $column{Column} = $field; - push @seen, \%column; + # "title" is for columns like NEWLINE, which doesn't have "attribute" + $field->{Column} = $field->{attribute} || $field->{title} || ''; + push @seen, $field; } if ( $RemoveCol ) { # we do this regex match to avoid a non-numeric warning - my ($index) = $CurrentDisplayColumns =~ /^(\d+)/; - my $column = $seen[$index]; + my ($index) = ($CurrentDisplayColumns // '') =~ /^(\d+)/; if ( defined($index) ) { delete $seen[$index]; my @temp = @seen; @@ -182,8 +175,14 @@ elsif ( $AddCol ) { $column{Suffix} .= ""; } if ($Size) { - $column{Prefix} .= "<" . $m->interp->apply_escapes( $Size, 'h' ) . ">"; - $column{Suffix} .= "interp->apply_escapes( $Size, 'h' ) . ">"; + if ( $Size eq 'Large' ) { + $column{Prefix} .= ''; + $column{Suffix} .= ''; + } + else { + $column{Prefix} .= "<" . $m->interp->apply_escapes( $Size, 'h' ) . ">"; + $column{Suffix} .= "interp->apply_escapes( $Size, 'h' ) . ">"; + } } if ( $Link eq "Display" ) { $column{Prefix} .= q{}; @@ -214,7 +213,7 @@ elsif ( $AddCol ) { } } elsif ( $ColUp ) { - my $index = $CurrentDisplayColumns; + my ($index) = ($CurrentDisplayColumns // '') =~ /^(\d+)/; if ( defined $index && ( $index - 1 ) >= 0 ) { my $column = $seen[$index]; $seen[$index] = $seen[ $index - 1 ]; @@ -223,7 +222,7 @@ elsif ( $ColUp ) { } } elsif ( $ColDown ) { - my $index = $CurrentDisplayColumns; + my ($index) = ($CurrentDisplayColumns // '') =~ /^(\d+)/; if ( defined $index && ( $index + 1 ) < scalar @seen ) { my $column = $seen[$index]; $seen[$index] = $seen[ $index + 1 ]; @@ -236,13 +235,18 @@ elsif ( $ColDown ) { my @format_string; foreach my $field (@seen) { next unless $field; - my $row = "'"; - $row .= $field->{'Prefix'} if defined $field->{'Prefix'}; - $row .= "__" . ($field->{'Column'} =~ m/\(/ ? $field->{'Column'} # func, don't escape - : $m->interp->apply_escapes( $field->{'Column'}, 'h' )) . "__" - unless ( $field->{'Column'} eq "" ); - $row .= $field->{'Suffix'} if defined $field->{'Suffix'}; - $row .= "'"; + my $row = ""; + if ( $field->{'original_string'} ) { + $row = $field->{'original_string'}; + } + else { + $row .= $field->{'Prefix'} if defined $field->{'Prefix'}; + $row .= "__$field->{'Column'}__" + unless ( $field->{'Column'} eq "" ); + $row .= $field->{'Suffix'} if defined $field->{'Suffix'}; + $row =~ s!([\\'])!\\$1!g; + $row = "'$row'"; + } push( @format_string, $row ); }