"Fossies" - the Fresh Open Source Software Archive

Member "RT-Extension-Assets-1.05/html/Asset/Elements/TSVExport" (15 Oct 2014, 4122 Bytes) of package /linux/misc/RT-Extension-Assets-1.05.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 %# BEGIN BPS TAGGED BLOCK {{{
    2 %#
    3 %# COPYRIGHT:
    4 %#
    5 %# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
    6 %#                                          <sales@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 $Collection
   50 $Format
   51 $PreserveNewLines => 0
   52 </%ARGS>
   53 <%ONCE>
   54 my $no_html = HTML::Scrubber->new( deny => '*' );
   55 </%ONCE>
   56 <%INIT>
   57 require HTML::Entities;
   58 
   59 $r->content_type('application/vnd.ms-excel');
   60 
   61 my $DisplayFormat = $m->comp('/Elements/ScrubHTML', Content => $Format);
   62 
   63 my @Format = $m->comp('/Elements/CollectionAsTable/ParseFormat', Format => $DisplayFormat);
   64 
   65 my @columns;
   66 
   67 my $should_loc = { map { $_ => 1 } qw(Status) };
   68 
   69 my $col_entry = sub {
   70     my $col = shift;
   71     # in tsv output, "#" is often a comment character but we use it for "id"
   72     delete $col->{title}
   73         if $col->{title} and $col->{title} =~ /^\s*#\s*$/;
   74     return {
   75         header => Encode::encode_utf8(loc($col->{title} || $col->{attribute})),
   76         map    => $m->comp(
   77             "/Elements/ColumnMap",
   78             Class => "RT__Asset",
   79             Name  => $col->{attribute},
   80             Attr  => 'value'
   81         ),
   82         should_loc => $should_loc->{$col->{attribute}},
   83     }
   84 };
   85 
   86 if ($PreserveNewLines) {
   87     my $col = [];
   88     push @columns, $col;
   89     for (@Format) {
   90         if ($_->{title} eq 'NEWLINE') {
   91             $col = [];
   92             push @columns, $col;
   93         }
   94         else {
   95             push @$col, $col_entry->($_);
   96         }
   97     }
   98 }
   99 else {
  100     push @columns, [map { $_->{attribute}
  101                           ? $col_entry->($_)
  102                           : () } @Format];
  103 }
  104 
  105 for (@columns) {
  106     $m->out(join("\t", map { $_->{header} } @$_)."\n");
  107 }
  108 
  109 my $ii = 0;
  110 while (my $row = $Collection->Next) {
  111     for my $col (@columns) {
  112         $m->out(join("\t", map {
  113             my $val = ProcessColumnMapValue($_->{map}, Arguments => [$row, $ii++], Escape => 0);
  114             $val = loc($val) if $_->{should_loc};
  115             # remove tabs from all field values, they screw up the tsv
  116             $val = '' unless defined $val;
  117             $val =~ s/(?:\n|\r)//g; $val =~ s{\t}{    }g;
  118             $val = $no_html->scrub($val);
  119             $val = HTML::Entities::decode_entities($val);
  120             Encode::encode_utf8($val);
  121         } @$col)."\n");
  122     }
  123 }
  124 $m->abort();
  125 
  126 </%INIT>