summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorJannis M. Hoffmann <jannis@fehcom.de>2023-03-04 18:11:23 +0100
committerJannis M. Hoffmann <jannis@fehcom.de>2023-03-04 18:11:23 +0100
commit9aee03308b838cda11b2fdc9dc7bd0605e5545ec (patch)
tree82ea62bc2824b09aff53f5c30ef22c74508be82a /templates
parent15dd7ef72ff101a8886a9a0c8e9b27c9963a9a38 (diff)
better handling of mime_maintype in readmail
Diffstat (limited to 'templates')
-rw-r--r--templates/webmail/readmail.html.ep114
1 files changed, 74 insertions, 40 deletions
diff --git a/templates/webmail/readmail.html.ep b/templates/webmail/readmail.html.ep
index b5b48a1..e1f299d 100644
--- a/templates/webmail/readmail.html.ep
+++ b/templates/webmail/readmail.html.ep
@@ -1,68 +1,102 @@
% layout 'mainlayout';
+
% my $mail_fmt = begin
- % my ($category, $value) = @_;
- % if (ref $value eq 'ARRAY' && $value->@*) {
+% my ($category, $value) = @_;
+% if (ref $value eq 'ARRAY' && $value->@*) {
<dt> <%= uc l $category %> </dt>
- % for ($value->@*) {
+% for ($value->@*) {
<dd>
- %= $_->{name} ? qq("$_->{name}" <$_->{address}>) : "$_->{address}"
+%= $_->{display_name} ? qq("$_->{display_name}" <$_->{address}>) : "$_->{address}"
</dd>
- % }
- % }
+% }
+% }
% end
-<div class="jwm-base">
-
- <h1>Read Mail</h1>
-
- <dl class="jwm-mail-header">
- <dt> <%= uc l 'subject' %> </dt>
- <dd> <%= $msg->{head}{subject} %> </dd>
-
- %= $mail_fmt->(from => $msg->{head}{from})
- %= $mail_fmt->(to => $msg->{head}{to})
- %= $mail_fmt->(cc => $msg->{head}{cc})
- %= $mail_fmt->(bcc => $msg->{head}{bcc})
- <dt> <%= uc l 'date' %> </dt>
- <dd> <%= $msg->{head}{date} %> </dd>
+% my $format_mail = begin
+% my ($msg) = @_;
+% my $body = $msg->{body};
+% my $content_type = to_mime_type $msg->{head}{mime};
- % my $content_type = $msg->{head}{mime}{content_maintype} . '/' . $msg->{head}{mime}{content_subtype};
- <dt> <%= uc l 'content-type' %> </dt>
- <dd> <%= $content_type %> </dd>
- </dl>
+ <div clas="jwm-mail">
-% my $body = $msg->{body};
+ <dl class="jwm-mail-header">
+ <dt> <%= uc l 'subject' %> </dt>
+ <dd> <%= $msg->{head}{subject} %> </dd>
+%= $mail_fmt->(from => $msg->{head}{from})
+%= $mail_fmt->(to => $msg->{head}{to})
+%= $mail_fmt->(cc => $msg->{head}{cc})
+%= $mail_fmt->(bcc => $msg->{head}{bcc})
+ <dt> <%= uc l 'date' %> </dt>
+ <dd> <%= $msg->{head}{date} %> </dd>
+ <dt> <%= uc l 'content-type' %> </dt>
+ <dd> <%= $content_type %> </dd>
+ </dl>
% if ($content_type eq 'multipart/alternative') {
-% for (reverse @{$body->{parts}}) {
- <div class=jwm-mail-body>
-% my $x = mime_render($_->{head}{content_maintype}.'/'.$_->{head}{content_subtype}, $_->{body});
- %== $x;
- </div>
-% last if $x;
+% my $end;
+% for (reverse $body->{parts}->@*) {
+% if (!$end) {
+ <div class="jwm-mail-body <%= to_mime_type($_->{head}) eq 'text/plain' ? 'jwm-mail-body-text-plain' : '' %>" >
+% my $x = mime_render(to_mime_type($_->{head}), $_->{body});
+%== $x;
+ </div>
+% $end = 1 if $x;
+% }
+% else {
+ <details class="jwm-mail-body <%= to_mime_type($_->{head}) eq 'text/plain' ? 'jwm-mail-body-text-plain' : '' %>" >
+ <summary>
+%= to_mime_type $_->{head}
+ </summary>
+%== mime_render(to_mime_type($_->{head}), $_->{body})
+ </details>
+% }
% }
% }
% elsif ($msg->{head}{mime}{content_maintype} eq 'multipart') {
-% for (@{$body->{parts}}) {
- <div class=jwm-mail-body>
- %== mime_render($_->{head}{content_maintype}.'/'.$_->{head}{content_subtype}, $_->{body});
- </div>
+% for ($body->{parts}->@*) {
+% if ( !$_->{head}{content_disposition}
+% || lc $_->{head}{content_disposition} eq 'none'
+% || lc $_->{head}{content_disposition} eq 'inline') {
+ <div class="jwm-mail-body <%= to_mime_type($_->{head}) eq 'text/plain' ? 'jwm-mail-body-text-plain' : '' %>" >
+%== mime_render(to_mime_type($_->{head}), $_->{body}) // "Can not render mime-part of type <code>$_->{head}{content_maintype}/$_->{head}{content_subtype}</code>."
+ </div>
+% }
+% elsif (lc $_->{head}{content_disposition} eq 'attachment') {
+ <p>
+ Attachment <%= $_->{head}{filename} %> of type
+%= to_mime_type $_->{head}
+ </p>
+% }
+% else {
+% die "unknown Content-Disposition '$_->{head}{content_disposition}'"
+% }
% }
% }
% elsif ($msg->{head}{mime}{content_maintype} eq 'message') {
-% die "not implemented"
+% die "not implemented" unless $msg->{head}{mime}{content_subtype} eq 'rfc822';
+ <p>not implemented</p>
% }
% else {
- <div class=jwm-mail-body>
- %== mime_render($content_type, $body);
- </div>
+ <div class="jwm-mail-body <%= $content_type eq 'text/plain' ? 'jwm-mail-body-text-plain' : '' %>" >
+%== mime_render($content_type, $body) // $content_type
+ </div>
% }
+ </div>
+% end
+
+
+<div class="jwm-base">
+
+ <h1>Read Mail</h1>
+
+%= $format_mail->($msg)
+
<nav>
<a href="javascript:history.back()" class="pure-button">
- %= l 'back'
+%= l 'back'
</a>
</nav>