A webmail client. Forked from https://git.sr.ht/~migadu/alps
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

132 lines
3.3 KiB

  1. {{template "head.html"}}
  2. <h1>alps</h1>
  3. <p>
  4. <a href="/mailbox/{{.Mailbox.Name | pathescape}}?page={{.MailboxPage}}">
  5. Back
  6. </a>
  7. </p>
  8. <h2>
  9. {{if .Message.Envelope.Subject}}
  10. {{.Message.Envelope.Subject}}
  11. {{else}}
  12. (No subject)
  13. {{end}}
  14. </h2>
  15. <form method="post" action="/message/{{.Mailbox.Name | pathescape}}/move">
  16. <input type="hidden" name="uids" value="{{.Message.Uid}}">
  17. <label for="move-to">Move to:</label>
  18. <select name="to" id="move-to">
  19. {{range .Mailboxes}}
  20. <option {{if eq .Name $.Mailbox.Name}}selected{{end}}>{{.Name}}</option>
  21. {{end}}
  22. </select>
  23. <input type="submit" value="Move">
  24. </form>
  25. <form method="post" action="/message/{{.Mailbox.Name | pathescape}}/delete">
  26. <input type="hidden" name="uids" value="{{.Message.Uid}}">
  27. <input type="submit" value="Delete">
  28. </form>
  29. {{if .Flags}}
  30. <form method="post" action="/message/{{.Mailbox.Name | pathescape}}/flag">
  31. <input type="hidden" name="uids" value="{{.Message.Uid}}">
  32. <p>Flags:</p>
  33. {{range $name, $has := .Flags}}
  34. {{if ismutableflag $name}}
  35. <input type="checkbox" name="flags" id="flag-{{$name}}"
  36. value="{{$name}}" {{if $has}}checked{{end}}>
  37. <label for="flag-{{$name}}">{{$name | formatflag}}</label>
  38. <br>
  39. {{else}}
  40. {{if $has}}
  41. <input type="hidden" name="flags" value="{{$name}}">
  42. {{end}}
  43. {{end}}
  44. {{end}}
  45. <input type="submit" value="Set flags">
  46. </form>
  47. {{end}}
  48. {{define "addr-list"}}
  49. {{range $i, $addr := .}}
  50. {{if $i}},{{end}}
  51. {{.PersonalName}}
  52. &lt;<a href="/compose?to={{.Address}}">{{.Address}}</a>&gt;
  53. {{end}}
  54. {{end}}
  55. <ul>
  56. <li>
  57. <strong>Date</strong>: {{.Message.Envelope.Date | formatdate}}
  58. </li>
  59. <li>
  60. <strong>From</strong>: {{template "addr-list" .Message.Envelope.From}}
  61. </li>
  62. <li>
  63. <strong>To</strong>: {{template "addr-list" .Message.Envelope.To}}
  64. </li>
  65. {{if .Message.Envelope.Cc}}
  66. <li>
  67. <strong>Cc</strong>: {{template "addr-list" .Message.Envelope.Cc}}
  68. </li>
  69. {{end}}
  70. {{if .Message.Envelope.Bcc}}
  71. <li>
  72. <strong>Bcc</strong>: {{template "addr-list" .Message.Envelope.Bcc}}
  73. </li>
  74. {{end}}
  75. </ul>
  76. {{define "message-part-tree"}}
  77. {{/* nested templates can't access the parent's context */}}
  78. {{$ = index . 0}}
  79. {{with index . 1}}
  80. <a
  81. {{if .IsText}}
  82. href="{{$.Message.URL}}?part={{.PathString}}"
  83. {{else}}
  84. href="{{$.Message.URL}}/raw?part={{.PathString}}"
  85. {{end}}
  86. >
  87. {{if eq $.Part.PathString .PathString}}<strong>{{end}}
  88. {{.String}}
  89. {{if eq $.Part.PathString .PathString}}</strong>{{end}}
  90. </a>
  91. {{if .Children}}
  92. <ul>
  93. {{range .Children}}
  94. <li>{{template "message-part-tree" (tuple $ .)}}</li>
  95. {{end}}
  96. </ul>
  97. {{end}}
  98. {{end}}
  99. {{end}}
  100. <p>Parts:</p>
  101. {{template "message-part-tree" (tuple $ .Message.PartTree)}}
  102. <hr>
  103. {{if .View}}
  104. <p>
  105. {{if .Message.HasFlag "\\Draft"}}
  106. <a href="{{.Message.URL}}/edit?part={{.Part.PathString}}">Edit draft</a>
  107. {{else}}
  108. <a href="{{.Message.URL}}/reply?part={{.Part.PathString}}">Reply</a> &middot;
  109. <a href="{{.Message.URL}}/forward?part={{.Part.PathString}}">Forward</a>
  110. {{end}}
  111. </p>
  112. {{.View}}
  113. {{else}}
  114. <p>Can't preview this message part.</p>
  115. <a href="{{.Message.URL}}/raw?part={{.Part.PathString}}">Download</a>
  116. {{end}}
  117. {{template "foot.html"}}