aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/public/message.html
blob: 343f79ebf732118df46cecddfd4bbfe69421885d (plain) (blame)
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{{template "head.html"}}

<h1>koushin</h1>

<p>
	<a href="/mailbox/{{.Mailbox.Name | pathescape}}?page={{.MailboxPage}}">
		Back
	</a>
</p>

<h2>
	{{if .Message.Envelope.Subject}}
		{{.Message.Envelope.Subject}}
	{{else}}
		(No subject)
	{{end}}
</h2>

<form method="post" action="{{.Message.Uid}}/move">
	<label for="move-to">Move to:</label>
	<select name="to" id="move-to">
		{{range .Mailboxes}}
			<option {{if eq .Name $.Mailbox.Name}}selected{{end}}>{{.Name}}</option>
		{{end}}
	</select>
	<input type="submit" value="Move">
</form>

<form method="post" action="{{.Message.Uid}}/delete">
	<input type="submit" value="Delete">
</form>

{{if .Flags}}
	<form method="post" action="{{.Message.Uid}}/flag">
		<p>Flags:</p>
		{{range $name, $has := .Flags}}
			{{if ismutableflag $name}}
				<input type="checkbox" name="flags" id="flag-{{$name}}"
					value="{{$name}}" {{if $has}}checked{{end}}>
				<label for="flag-{{$name}}">{{$name | formatflag}}</label>
				<br>
			{{else}}
				{{if $has}}
					<input type="hidden" name="flags" value="{{$name}}">
				{{end}}
			{{end}}
		{{end}}
		<input type="submit" value="Set flags">
	</form>
{{end}}

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

<ul>
	<li>
		<strong>Date</strong>: {{.Message.Envelope.Date | formatdate}}
	</li>
	<li>
		<strong>From</strong>: {{template "addr-list" .Message.Envelope.From}}
	</li>
	<li>
		<strong>To</strong>: {{template "addr-list" .Message.Envelope.To}}
	</li>
	{{if .Message.Envelope.Cc}}
		<li>
			<strong>Cc</strong>: {{template "addr-list" .Message.Envelope.Cc}}
		</li>
	{{end}}
	{{if .Message.Envelope.Bcc}}
		<li>
			<strong>Bcc</strong>: {{template "addr-list" .Message.Envelope.Bcc}}
		</li>
	{{end}}
</ul>

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

<p>Parts:</p>

{{template "message-part-tree" (tuple $ .Message.PartTree)}}

<hr>

{{if .Body}}
	<p><a href="{{.Message.Uid}}/reply?part={{.PartPath}}">Reply</a></p>
	{{if .IsHTML}}
		<!-- TODO: add a src fallback -->
		<!-- allow-same-origin is required to resize the frame with its content -->
		<!-- allow-popups is required for target="_blank" links -->
		<iframe id="email-frame" srcdoc="{{.Body}}" sandbox="allow-same-origin allow-popups"></iframe>
	{{else}}
		<pre>{{.Body}}</pre>
	{{end}}
{{else}}
	<p>Can't preview this message part.</p>
	<a href="{{.Message.Uid}}/raw?part={{.PartPath}}">Download</a>
{{end}}

{{template "foot.html"}}