diff options
Diffstat (limited to 'rt/html/Search/Elements/BuildFormatString')
-rw-r--r-- | rt/html/Search/Elements/BuildFormatString | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/rt/html/Search/Elements/BuildFormatString b/rt/html/Search/Elements/BuildFormatString new file mode 100644 index 000000000..e5e131b6c --- /dev/null +++ b/rt/html/Search/Elements/BuildFormatString @@ -0,0 +1,215 @@ +%# {{{ BEGIN BPS TAGGED BLOCK +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC +%# <jesse@bestpractical.com> +%# +%# (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., 675 Mass Ave, Cambridge, MA 02139, USA. +%# +%# +%# 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 +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# 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 => undef +%cfqueues => undef +</%args> +<%init> + +unless ($Format) { + $Format = $RT::DefaultSearchResultFormat; +} + +my @fields = ( + "QueueName", "OwnerName", + "id", "Status", + "Subject", "ExtendedStatus", + "Priority", "InitialPriority", + "FinalPriority", "EffectiveId", + "Type", "TimeWorked", + "TimeLeft", "TimeEstimated", + "Requestors", "Cc", + "AdminCc", "StartsRelative", + "StartedRelative", "CreatedRelative", + "LastUpdatedRelative", "ToldRelative", + "DueRelative", "ResolvedRelative", + "Starts", "Started", + "Created", "CreatedBy", + "LastUpdated", "LastUpdatedBy", + "Told", "Due", + "Resolved", "NEWLINE", + "RefersTo", "ReferredToBy", + "DependsOn", "DependedOnBy", + "MemberOf", "Members", + "Parents", "Children", + "-", +); + +my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'}); +foreach (keys %cfqueues) { + my $id = $_; + $id =~ s/^.'*(.*).'*$/$1/; + # 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); +} +$CustomFields->LimitToGlobal; + +while ( my $CustomField = $CustomFields->Next ) { + my $queuestr; + if ($CustomField->QueueObj && $CustomField->QueueObj->Id != 0) { + $queuestr = $CustomField->QueueObj->Name . "."; + } + push @fields, "CustomField." . $queuestr . "{" . $CustomField->Name . "}"; +} + +my ( @seen); + +my @format = split( /,\s*/, $Format ); +foreach my $field (@format) { + my %column = (); + $field =~ s/'(.*)'/$1/; + my ( $prefix, $suffix ); + if ( $field =~ m/(.*)__(.*)__(.*)/ ) { + $prefix = $1; + $suffix = $3; + $field = $2; + } + $field = "<blank>" if !$field; + $column{Prefix} = $prefix; + $column{Suffix} = $suffix; + $field =~ s/\s*(.*)\s*/$1/; + $column{Column} = $field; + push @seen, \%column; +} + +if ( $ARGS{"RemoveCol"} ) { + my $index = $ARGS{'CurrentDisplayColumns'}; + my $column = $seen[$index]; + if ($index) { + delete $seen[$index]; + my @temp = @seen; + @seen = (); + foreach my $element (@temp) { + next unless $element; + push @seen, $element; + } + } +} +elsif ( $ARGS{"AddCol"} ) { + if ( defined $ARGS{'SelectDisplayColumns'} ) { + my $selected = $ARGS{'SelectDisplayColumns'}; + my @columns; + if (ref($selected) eq 'ARRAY') { + @columns = @$selected; + } else { + push @columns, $selected; + } + foreach my $col (@columns) { + my %column = (); + $column{Column} = $fields[ $col ]; + + if ( $ARGS{Face} eq "Bold" ) { + $column{Prefix} .= "<B>"; + } + if ( $ARGS{Face} eq "Italic" ) { + $column{Prefix} .= "<I>"; + } + if ( $ARGS{Size} ) { + $column{Prefix} .= "<" . $ARGS{Size} . ">"; + } + if ( $ARGS{Link} eq "Display" ) { + $column{Prefix} .= "<A HREF=\"".$RT::WebPath."/Ticket/Display.html?id=__id__\">"; + } + elsif ( $ARGS{Link} eq "Take" ) { + $column{Prefix} .= + "<A HREF=\"".$RT::WebPath."/Ticket/Display.html?Action=Take&id=__id__\">"; + } + + my $suffix; + if ( $ARGS{'Link'} eq "Display" || $ARGS{'Link'} eq "Take" ) { + $column{Suffix} .= "</a>"; + } + if ( $ARGS{Size} ) { + $column{Suffix} .= "</" . $ARGS{Size} . ">"; + } + if ( $ARGS{Face} eq "Italic" ) { + $column{Suffix} .= "</I>"; + } + if ( $ARGS{Face} eq "Bold" ) { + $column{Suffix} .= "</B>"; + } + if ( $ARGS{Title} ) { + $column{Suffix} .= "/TITLE:" . $ARGS{Title}; + } + push @seen, \%column; + } + } +} +elsif ( $ARGS{"ColUp"} ) { + my $index = $ARGS{'CurrentDisplayColumns'}; + if ( defined $index && ( $index - 1 ) >= 0 ) { + my $column = $seen[$index]; + $seen[$index] = $seen[ $index - 1 ]; + $seen[ $index - 1 ] = $column; + $ARGS{CurrentDisplayColumns} = $index - 1; + } +} +elsif ( $ARGS{"ColDown"} ) { + my $index = $ARGS{'CurrentDisplayColumns'}; + if ( defined $index && ( $index + 1 ) < scalar @seen ) { + my $column = $seen[$index]; + $seen[$index] = $seen[ $index + 1 ]; + $seen[ $index + 1 ] = $column; + $ARGS{CurrentDisplayColumns} = $index + 1; + } +} + +$Format = ""; +foreach my $field (@seen) { + next unless $field; + $Format .= ", \n" if $Format; + $Format .= "'"; + $Format .= $field->{Prefix}; + $Format .= "__" . $field->{Column} . "__" if ( $field->{Column} ne "<blank>" ) ; + $Format .= $field->{Suffix}; + $Format .= "'"; +} +return($Format, \@fields, \@seen); + +</%init> + |