aboutsummaryrefslogblamecommitdiff
path: root/themes/alps/message.html
blob: 74e2d0b72e6e93e4248f029e6d0ff4a4dcf245a3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
                          
                         
                          
 






                                                                    
                                                            
                                
                                                        















                                                                                                      
                       

                            

                          








































































                                                                                                                                 
                                                                                                                                                                    
                      

                                                                                                                                                                    





                     


































                                                                              









                                                                                  




                                                                      
 




                                                                     
               

             


                                      
                                                           
          
                                           



                                                       

                                                     






                                                       
                 
                                                            
            



                                               
                                                                             



             

                        
{{template "head.html" .}}
{{template "nav.html" .}}
{{template "util.html" .}}

{{define "message-part-tree"}}
	{{/* nested templates can't access the parent's context */}}
	{{$ = index . 0}}
	{{with index . 1}}
		<a
      class="nav-link"
			{{if .IsText}}
				href="?part={{.PathString}}"
			{{else}}
        href="{{$.Message.URL}}raw?part={{.PathString}}"
			{{end}}
		>
			{{if eq $.Part.PathString .PathString}}<strong>{{end}}
			{{.String}}
			{{if eq $.Part.PathString .PathString}}</strong>{{end}}
		</a>
		{{if gt (len .Children) 0}}
		<ul class="nav flex-column">
			{{range .Children}}
				<li class="nav-item">{{template "message-part-tree" (tuple $ .)}}</li>
			{{end}}
		</ul>
		{{end}}
	{{end}}
{{end}}

<div class="page-wrap">
  {{ $current := .Mailbox }}
  {{ template "aside" . }}
  <div class="container">
    <main class="message">
      <section class="actions">
        <div class="actions-wrap">
          <div class="actions-message">
            {{$back := printf "%v?page=%v" .Mailbox.URL .MailboxPage}}
            <a href="{{$back}}" class="button-link">« Back</a>

            {{ if and (ne .Mailbox.Name "Archive") (ne .Mailbox.Name "Drafts") (ne .Mailbox.Name "Sent") }}
            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="to" value="Archive">
              <input type="hidden" name="next" value="{{$back}}">
              <button>Archive</button>
            </form>
            {{ end }}

            {{ if and (ne .Mailbox.Name "INBOX") (ne .Mailbox.Name "Sent") (ne .Mailbox.Name "Drafts") }}
            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="to" value="INBOX">
              <button>
              {{ if (eq .Mailbox.Name "Junk") }}
              Not Spam
              {{ else }}
              Move to Inbox
              {{ end }}
              </button>
            </form>
            {{ end }}

            {{ if or (eq .Mailbox.Name "INBOX") (eq .Mailbox.Name "Trash") }}
            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="next" value="{{$back}}">
              <input type="hidden" name="to" value="Junk">
              <button>Report Spam</button>
            </form>
            {{ end }}

            {{ if or (eq .Mailbox.Name "Trash") (eq .Mailbox.Name "Junk") }}
            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/delete">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="next" value="{{$back}}">
              <button>Delete Permanently</button>
            </form>
            {{ else }}
            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="next" value="{{$back}}">
              <input type="hidden" name="to" value="Trash">
              <button>Delete</button>
            </form>
            {{ end }}

            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/flag">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <input type="hidden" name="action" value="remove">
              <input type="hidden" name="flags" value="\Seen">
              <input type="hidden" name="next" value="{{$back}}">
              <button>Mark&nbsp;Unread</button>
            </form>

            <form class="action-group" method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
              <input type="hidden" name="uids" value="{{.Message.Uid}}">
              <select class="action-group" name="to">
                {{range .Mailboxes}}
                  <option value="{{.Name}}" {{if eq .Name $.Mailbox.Name}}selected>Move to...{{else}}>{{.Name}}{{ end }}</option>
                {{end}}
              </select>
              <button class="action-group" type="submit">Move</button>
            </form>

            <span class="followups">
              {{if .Message.HasFlag "\\Draft"}}
                <a class="action-group button-link" href="{{.Message.URL}}/edit{{if .Message.TextPart}}?part={{.Message.TextPart.PathString}}{{end}}">Edit draft</a>
              {{else}}
                <a class="action-group button-link" href="{{.Message.URL}}/reply{{if .Message.TextPart}}?part={{.Message.TextPart.PathString}}{{end}}">Reply</a>
                <a class="action-group button-link" href="{{.Message.URL}}/forward{{if .Message.TextPart}}?part={{.Message.TextPart.PathString}}{{end}}">Forward</a>
              {{end}}
            </span>
          </div>
        </div>
      </section>

      <div class="message-header">
        <table>
          <tr>
            <th colspan="2">
              <h1>
               {{if .Message.Envelope.Subject}}
                  {{.Message.Envelope.Subject}}
                {{else}}
                  (No subject)
                {{end}}
              </h1>
            </th>
          </tr>
          <tr>
            <th>From:</th>
            <td>{{template "addr-list" .Message.Envelope.From}}</td>
          </tr>
          <tr>
            <th>Date:</th>
            <td>{{.Message.Envelope.Date | formatdate}}</td>
          </tr>
          <tr>
            <th>To:</th><td>{{template "addr-list" .Message.Envelope.To}}</td>
          </tr>
          {{if .Message.Envelope.Cc}}
          <tr>
            <th>Cc:</th><td>{{template "addr-list" .Message.Envelope.Cc}}</td>
          </tr>
          {{end}}
          {{if .Message.Envelope.Bcc}}
          <tr>
            <th>Bcc:</th>
            <td>{{template "addr-list" .Message.Envelope.Bcc}}</td>
          </tr>
          {{ end }}
          {{if and .Extra.HasRemoteResources (not .Extra.RemoteResourcesAllowed)}}
          <tr class="remote-content">
            <td colspan="2">
              This message contains remote content, such as external images.
              <a href="?part={{.Part.PathString}}&allow-remote-resources=1">
                Load remote content »
              </a>
            </td>
          </tr>
          {{end}}
        </table>
        <section class="parts">
          {{template "message-part-tree" (tuple $ .Message.PartTree)}}
        </section>
      </div>

      {{define "addr-list"}}
        {{range $i, $addr := .}}
          {{if $i}},{{end}}
          <strong>{{.PersonalName}}</strong>
          &lt;<a href="/compose?to={{.Address}}">{{.Address}}</a>&gt;
        {{end}}
      {{end}}

      {{ $html := .Message.HTMLPart }}
      {{ $text := .Message.TextPart }}
      <div class="tabs">
        {{/* https://github.com/golang/go/issues/31103 */}}
        <a
          href="?part={{$text.PathString}}"
          {{ if eq $text.PathString .Part.PathString }}
          class="active"
          {{ end }}
        >Plain text</a>
        {{ if and $html $text }}
        {{ if ne $html.PathString $text.PathString }}
        <a
          href="?part={{$html.PathString}}"
          {{ if eq $html.PathString .Part.PathString }}
          class="active"
          {{ end }}
        >HTML</a>
        {{ end }}
        {{ end }}
        <a href="{{.Message.URL}}/raw?plain=1">Raw email</a>
      </div>
      {{if .View}}
        {{.View}}
      {{else}}
        <p>Can't preview this message part.</p>
        <a href="{{.Message.URL}}/raw?part={{.Part.PathString}}">Download</a>
      {{end}}
    </main>
  </div>
</div>

{{template "foot.html"}}