1 %# BEGIN BPS TAGGED BLOCK {{{
5 %# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
6 %# <jesse@bestpractical.com>
8 %# (Except where explicitly superseded by other copyright notices)
13 %# This work is made available to you under the terms of Version 2 of
14 %# the GNU General Public License. A copy of that license should have
15 %# been provided with this software, but in any event can be snarfed
18 %# This work is distributed in the hope that it will be useful, but
19 %# WITHOUT ANY WARRANTY; without even the implied warranty of
20 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 %# General Public License for more details.
23 %# You should have received a copy of the GNU General Public License
24 %# along with this program; if not, write to the Free Software
25 %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26 %# 02110-1301 or visit their web page on the internet at
27 %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
30 %# CONTRIBUTION SUBMISSION POLICY:
32 %# (The following paragraph is not intended to limit the rights granted
33 %# to you to modify and distribute this software under the terms of
34 %# the GNU General Public License and is only of importance to you if
35 %# you choose to contribute your changes and enhancements to the
36 %# community by submitting them to Best Practical Solutions, LLC.)
38 %# By intentionally submitting any modifications, corrections or
39 %# derivatives to this work, or any other work intended for use with
40 %# Request Tracker, to Best Practical Solutions, LLC, you confirm that
41 %# you are the copyright holder for those contributions and you grant
42 %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
43 %# royalty-free, perpetual, license to use, copy, create derivative
44 %# works based on those contributions, and sublicense and distribute
45 %# those contributions and any derivatives thereof.
47 %# END BPS TAGGED BLOCK }}}
59 $SelectDisplayColumns => undef
60 $CurrentDisplayColumns => undef
65 $Format = $RT::DefaultSearchResultFormat;
69 # All the things we can display in the format string by default
114 my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'});
115 foreach my $id (keys %cfqueues) {
116 # What does this _do_? What are the keys to cfqueues
117 $id =~ s/^.'*(.*).'*$/$1/;
118 # Gotta load up the $queue object, since queues get stored by name now.
119 my $queue = RT::Queue->new($session{'CurrentUser'});
121 $CustomFields->LimitToQueue($queue->Id);
123 $CustomFields->LimitToGlobal;
125 while ( my $CustomField = $CustomFields->Next ) {
126 push @fields, "CustomField.{" . $CustomField->Name . "}";
131 my @format = split( /,\s*/, $Format );
132 foreach my $field (@format) {
134 $field =~ s/'(.*)'/$1/;
135 my ( $prefix, $suffix );
136 if ( $field =~ m/(.*)__(.*)__(.*)/ ) {
141 $field = "<blank>" if !$field;
142 $column{Prefix} = $prefix;
143 $column{Suffix} = $suffix;
144 $field =~ s/\s*(.*)\s*/$1/;
145 $column{Column} = $field;
146 push @seen, \%column;
150 my $index = $CurrentDisplayColumns;
151 my $column = $seen[$index];
153 delete $seen[$index];
156 foreach my $element (@temp) {
157 next unless $element;
158 push @seen, $element;
163 if ( defined $SelectDisplayColumns ) {
164 my $selected = $SelectDisplayColumns;
166 if (ref($selected) eq 'ARRAY') {
167 @columns = @$selected;
169 push @columns, $selected;
171 foreach my $col (@columns) {
173 $column{Column} = $col;
175 if ( $Face eq "Bold" ) {
176 $column{Prefix} .= "<b>";
177 $column{Suffix} .= "</b>";
179 if ( $Face eq "Italic" ) {
180 $column{Prefix} .= "<i>";
181 $column{Suffix} .= "</i>";
184 $column{Prefix} .= "<" . $m->interp->apply_escapes( $Size, 'h' ) . ">";
185 $column{Suffix} .= "</" . $m->interp->apply_escapes( $Size, 'h' ) . ">";
187 if ( $Link eq "Display" ) {
189 "<a HREF=\"" . $RT::WebPath . "/Ticket/Display.html?id=__id__\">";
190 $column{Suffix} .= "</a>";
192 elsif ( $Link eq "Take" ) {
193 $column{Prefix} .= "<a HREF=\"" . $RT::WebPath
194 . "/Ticket/Display.html?Action=Take&id=__id__\">";
195 $column{Suffix} .= "</a>";
199 $column{Suffix} .= "/TITLE:" . $m->interp->apply_escapes( $Title, 'h' );
201 push @seen, \%column;
206 my $index = $CurrentDisplayColumns;
207 if ( defined $index && ( $index - 1 ) >= 0 ) {
208 my $column = $seen[$index];
209 $seen[$index] = $seen[ $index - 1 ];
210 $seen[ $index - 1 ] = $column;
211 $CurrentDisplayColumns = $index - 1;
215 my $index = $CurrentDisplayColumns;
216 if ( defined $index && ( $index + 1 ) < scalar @seen ) {
217 my $column = $seen[$index];
218 $seen[$index] = $seen[ $index + 1 ];
219 $seen[ $index + 1 ] = $column;
220 $CurrentDisplayColumns = $index + 1;
226 foreach my $field (@seen) {
229 $row .= $field->{Prefix} if $field->{Prefix};
230 $row .= "__" . ($field->{Column} =~ m/\(/ ? $field->{Column} # func, don't escape
231 : $m->interp->apply_escapes( $field->{Column}, 'h' )) . "__"
232 unless ( $field->{Column} eq "<blank>" );
233 $row .= $field->{Suffix} if $field->{Suffix};
235 push( @format_string, $row );
238 $Format = join(",\n", @format_string);
241 return($Format, \@fields, \@seen);