X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FSearch%2FElements%2FBuildFormatString;h=66fd1476396aace4868ab76c9768d3c5e8ba7342;hb=0ea23112cfa0d82738b0f08d60d90579721b7524;hp=972851160148bb26c254c67424d011de0cce3087;hpb=b4b0c7e72d7eaee2fbfc7022022c9698323203dd;p=freeside.git diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString index 972851160..66fd14763 100644 --- a/rt/share/html/Search/Elements/BuildFormatString +++ b/rt/share/html/Search/Elements/BuildFormatString @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# 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., 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: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,12 +43,12 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <%ARGS> $Format => RT->Config->Get('DefaultSearchResultFormat') -%cfqueues => () +%queues => () $Face => undef $Size => undef @@ -69,8 +69,16 @@ $CurrentDisplayColumns => undef # it -- and it grows per request. # All the things we can display in the format string by default -my @fields = qw( +# referenced by their ColumnMap keys +my @fields = ( + qw( id QueueName Subject + ), + + $m->comp('/Elements/CustomerFields', 'Names'), #freeside + $m->comp('/Elements/ServiceFields', 'Names'), #freeside + + qw( Status ExtendedStatus UpdateStatus Type @@ -86,6 +94,7 @@ my @fields = qw( LastUpdated LastUpdatedRelative Told ToldRelative Due DueRelative + WillResolve WillResolveRelative Resolved ResolvedRelative RefersTo ReferredToBy @@ -96,22 +105,20 @@ my @fields = qw( Bookmark NEWLINE + NBSP + ) ); # 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 %cfqueues) { +foreach my $id (keys %queues) { # Gotta load up the $queue object, since queues get stored by name now. my $id my $queue = RT::Queue->new($session{'CurrentUser'}); $queue->Load($id); - unless ($queue->id) { - # XXX TODO: This ancient code dates from a former developer - # we have no idea what it means or why cfqueues are so encoded. - $id =~ s/^.'*(.*).'*$/$1/; - $queue->Load($id); - } - $CustomFields->LimitToQueue($queue->Id); + $CustomFields->LimitToQueue($queue->Id) if $queue->Id; } $CustomFields->LimitToGlobal; @@ -124,29 +131,18 @@ $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]; - if ($index) { + if ( defined($index) ) { delete $seen[$index]; my @temp = @seen; @seen = (); @@ -232,13 +228,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 ); }