import rt 3.8.8
[freeside.git] / rt / share / html / Elements / CollectionAsTable / Row
1 %# BEGIN BPS TAGGED BLOCK {{{
2 %# 
3 %# COPYRIGHT:
4 %# 
5 %# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
6 %#                                          <jesse@bestpractical.com>
7 %# 
8 %# (Except where explicitly superseded by other copyright notices)
9 %# 
10 %# 
11 %# LICENSE:
12 %# 
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
16 %# from www.gnu.org.
17 %# 
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.
22 %# 
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.
28 %# 
29 %# 
30 %# CONTRIBUTION SUBMISSION POLICY:
31 %# 
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.)
37 %# 
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.
46 %# 
47 %# END BPS TAGGED BLOCK }}}
48 <%ARGS>
49 $i => undef
50 @Format => undef
51 $record => undef
52 $maxitems => undef
53 $Depth => undef
54 $Warning => undef
55 $ColumnMap => {}
56 $Class     => 'RT__Ticket'
57 $Classes => ''
58 </%ARGS>
59 <%init>
60 $m->out(  '<tr class="' . $Classes . ' '
61         . ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' ) . '" >'
62         . "\n" );
63 use HTML::Entities;
64 my $item;
65 foreach my $column (@Format) {
66     if ( defined $column->{title} && $column->{title} eq 'NEWLINE' ) {
67         while ( $item < $maxitems ) {
68             $m->out(qq{<td class="collection-as-table">&nbsp;</td>\n});
69             $item++;
70         }
71         $item = 0;
72         $m->out( '</tr>' . "\n" );
73         $m->out(  '<tr class="'
74                 . ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' )
75                 . '" >'
76                 . "\n" );
77         next;
78     }
79
80     my $class = $column->{class} ? encode_entities( $column->{class}, q{'"&<>} ) : 'collection-as-table';
81     $m->out(qq{<td class="$class" });
82
83     my %attrs;
84     foreach my $attr (qw(style align)) {
85         if ( defined $column->{ $attr } ) {
86             $attrs{ $attr } = $column->{ $attr };
87             next;
88         }
89
90         # if it's not defined then use column map
91         my $col = $column->{'attribute'} || $column->{'last_attribute'};
92         unless ( exists $ColumnMap->{$col}{$attr} ) {
93             next unless $col;
94
95             $ColumnMap->{$col}{$attr} = $m->comp(
96                 "/Elements/ColumnMap",
97                 Class => $Class,
98                 Name  => $col,
99                 Attr  => $attr,
100             );
101         }
102         $attrs{ $attr } = ProcessColumnMapValue(
103             $ColumnMap->{$col}{$attr},
104             Arguments => [$record, $i],
105             Escape => 0,
106         );
107     }
108
109     $attrs{colspan} = $column->{span};
110     $item += ($attrs{'colspan'} || 1);
111
112     my @out;
113     foreach my $subcol ( @{ $column->{output} } ) {
114         my ($col) = ($subcol =~ /^__(.*?)__$/);
115         unless ( $col ) {
116             push @out, $subcol;
117             next;
118         }
119
120         unless ( exists $ColumnMap->{$col}{'value'} ) {
121             $ColumnMap->{$col}{'value'} = $m->comp(
122                 "/Elements/ColumnMap",
123                 Class => $Class,
124                 Name  => $col,
125                 Attr  => 'value'
126             );
127         }
128
129         push @out, ProcessColumnMapValue(
130             $ColumnMap->{$col}{'value'},
131             Arguments => [$record, $i],
132         );
133     }
134     s/\n/<br \/>/gs for @out;
135
136     $m->out( $_ .'="'. $m->interp->apply_escapes( $attrs{$_} => 'h' ) .'"' )
137         foreach grep $attrs{$_}, qw(align style colspan);
138
139     $m->out('>');
140     $m->out(@out) if @out;
141     $m->out( '</td>' . "\n" );
142 }
143 $m->out('</tr>');
144 </%init>