diff options
author | Jannis M. Hoffmann <jannis@fehcom.de> | 2023-03-04 18:11:23 +0100 |
---|---|---|
committer | Jannis M. Hoffmann <jannis@fehcom.de> | 2023-03-04 18:11:23 +0100 |
commit | 9aee03308b838cda11b2fdc9dc7bd0605e5545ec (patch) | |
tree | 82ea62bc2824b09aff53f5c30ef22c74508be82a /templates/webmail/readmail.html.ep | |
parent | 15dd7ef72ff101a8886a9a0c8e9b27c9963a9a38 (diff) |
better handling of mime_maintype in readmail
Diffstat (limited to 'templates/webmail/readmail.html.ep')
-rw-r--r-- | templates/webmail/readmail.html.ep | 114 |
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> |