summaryrefslogtreecommitdiff
path: root/httemplate/view/cust_msg.html
blob: d2b043c929e2b2834d06c80df976976081c66fc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<& /elements/header-popup.html &>
<STYLE>
P.pre {
  font-family: monospace;
  height: auto;
  width: auto;
  display: block;
  white-space: pre-wrap;
  text-align: left;
  border: 1px solid #7e0079
}
</STYLE>
  
<TABLE>
<TR><TD>From:</TD><TD><% $cust_msg->env_from %></TD></TR>
<TR><TD>To:</TD><TD><% $env_to %></TD></TR>
% if ( $date ) {
<TR><TD><% $label{$cust_msg->status} %></TD><TD><% $date %></TD></TR>
% }
% if ( $cust_msg->error ) {
<TR><TD>Error:</TD><TD><% encode_entities($cust_msg->error) %></TD></TR>
% }
<& /elements/menubar.html,
  { 'newstyle' => 1,
    'url_base' => $cgi->self_url . ';part=',
    'selected' => $selected_index,
  },
  map { $partnames[$_] => $_ } (0 .. scalar(@parts) - 1),
&>
</TABLE>
<DIV STYLE="text-align:center">
% if ( $selected_part->isa('MIME::Entity') ) {
%   my $type = $selected_part->mime_type;
%   if ( $type =~ /^text/ ) {
%#<TEXTAREA style="font-family:monospace" readonly=1 cols=80 rows=20>
  <P CLASS="pre"><% encode_entities( $selected_part->bodyhandle->as_string ) %></P>
%   } else { # show a download link
%     my $url = $fsurl . "view/cust_msg_part.html?$custmsgnum+$selected_index";
  <A HREF="<% $url %>">
    <DIV STYLE="display: inline-block; padding: 4px; border: 2px solid #00c">
%     if ( $type =~ /^image\/\w+$/ ) {
      <IMG SRC="<% $url %>">
%     } else {
      <FONT SIZE="+1">Download <% $partnames[$selected_index] %></FONT>
%     }
  </A>
%   }
% } elsif ($selected_part->isa('MIME::Head')) {
  <P CLASS="pre"><% encode_entities( $cust_msg->header ) %></P>
% }
</DIV>

<& /elements/footer.html &>
<%init>

my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied" unless $curuser->access_right('View email logs');

my ($custmsgnum) = $cgi->keywords;
$custmsgnum =~ /^(\d+)$/ or die "illegal custmsgnum";
my $cust_msg = qsearchs('cust_msg', { 'custmsgnum' => $custmsgnum });
my $date = '';
$date = time2str('%Y-%m-%d %T', $cust_msg->_date) if ( $cust_msg->_date );
my @to = map { encode_entities($_->format) }
          Email::Address->parse($cust_msg->env_to);
my $env_to = join('</TD></TR><TR><TD></TD><TD>', @to);

my %label = (
  'sent'   => 'Sent:',
  'failed' => 'Attempted: ',
  'prepared' => 'Not sent',
);

my $partname = sub {
  my %friendly_name = ( 'text/plain' => 'Text', 'text/html' => 'HTML' );
  my $part = shift;
  $part->head->recommended_filename
  || $friendly_name{$part->mime_type}
  || $part->mime_type;
};

my @parts = $cust_msg->parts;
my @partnames = map { &{$partname}($_) } @parts;
push @parts, $cust_msg->entity->head;
push @partnames, mt('Header');

my $selected_part;
my $selected_index = 0;
if ( $cgi->param('part') =~ /^(\d+)$/ ) {
  $selected_index = $1 if $1 < scalar(@parts);
}
$selected_part = $parts[$selected_index];
$cgi->delete('part'); # for self_url

</%init>