1 <div id="post-<% post.id|html>" class="post<%if loop.last> last<%/if><%if !post.sone.local><%if post.new> new<%/if><%/if>">
2 <a name="post-<% post.id|html>"></a>
3 <div class="post-time hidden"><% post.time|html></div>
4 <div class="post-author hidden"><% post.sone.id|html></div>
5 <div class="post-author-local hidden"><% post.sone.local></div>
6 <%include include/soneMenu.html class=="sone-post-menu" sone=post.sone>
7 <div class="avatar post-avatar" >
9 <%ifnull !post.sone.profile.avatar>
10 <%post.sone.profile.avatar|image-link max-width==48 max-height==48 mode==enlarge title=="Avatar Image">
12 <img src="/WebOfTrust/GetIdenticon?identity=<% post.sone.id|html>&width=96&height=96" width="48" height="48" alt="Avatar Image" />
15 <img src="images/sone-avatar.png" width="48" height="48" alt="Avatar Image" />
18 <div class="inner-part">
19 <div<%if !post.loaded> class="hidden"<%/if>>
20 <div class="author profile-link"><a href="viewSone.html?sone=<% post.sone.id|html>"><% post.sone.niceName|html></a></div>
21 <%if post.recipientId.present>
22 <span class="recipient-to">→</span>
23 <%if !post.recipient.present>
24 <div class="recipient profile-link"><a href="viewSone.html?sone=<% post.recipientId.get|html>"><%= View.Post.UnknownAuthor|l10n|html></a></div>
26 <div class="recipient profile-link"><a href="viewSone.html?sone=<% post.recipientId.get|html>"><% post.recipient.get.niceName|html></a></div>
29 <% post.text|html|store key==originalText text==true>
30 <% post.text|parse sone=post.sone|store key==parsedText>
31 <% parsedText|render|store key==renderedText text==true>
32 <% parsedText|shorten length=preferences.charactersPerPost cut-off-length=preferences.postCutOffLength|render|store key==shortText text==true>
33 <div class="post-text raw-text<%if !raw> hidden<%/if>"><% originalText></div>
34 <div class="post-text text<%if raw> hidden<%/if><%if !shortText|match key=renderedText> hidden<%/if>"><% renderedText></div>
35 <div class="post-text short-text<%if raw> hidden<%/if><%if shortText|match key=renderedText> hidden<%/if>"><% shortText></div>
36 <%if !shortText|match value=renderedText><%if !raw><a class="expand-post-text" href="viewPost.html?post=<% post.id|html>&raw=true"><%= View.Post.ShowMore|l10n|html></a><%/if><%/if>
37 <%if !shortText|match value=renderedText><%if !raw><a class="shrink-post-text hidden"><%= View.Post.ShowLess|l10n|html></a><%/if><%/if>
38 <% parsedText|linked-elements sone=post.sone|store key==linkedElements>
39 <% foreach linkedElements linkedElement>
40 <%if !linkedElement.loading>
41 <%if !linkedElement.failed>
43 <div class="linked-elements">
45 <% linkedElement|render-linked-element>
53 <div class="post-status-line status-line<%if !post.loaded> hidden<%/if>">
54 <div class="bookmarks">
55 <form class="unbookmark<%if !post.bookmarked> hidden<%/if>" action="unbookmark.html" method="post">
56 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
57 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
58 <input type="hidden" name="post" value="<% post.id|html>" />
59 <button type="submit" title="<%= View.Post.Bookmarks.PostIsBookmarked|l10n|html>">★</button>
61 <form class="bookmark<%if post.bookmarked> hidden<%/if>" action="bookmark.html" method="post">
62 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
63 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
64 <input type="hidden" name="post" value="<% post.id|html>" />
65 <button type="submit" title="<%= View.Post.Bookmarks.PostIsNotBookmarked|l10n|html>">☆</button>
68 <span class='separator'>·</span>
69 <div class="time"><a href="viewPost.html?post=<% post.id|html>"><% post.time|date format=="MMM d, yyyy, HH:mm:ss"></a></div>
70 <span class='separator'>·</span>
71 <div class="permalink permalink-post"><a href="post://<%post.id|html>">[<%= View.Post.Permalink|l10n|html>]</a></div>
72 <span class='separator'>·</span>
73 <div class="permalink permalink-author"><a href="sone://<%post.sone.id|html>">[<%= View.Post.PermalinkAuthor|l10n|html>]</a></div>
74 <%if ! originalText|match value=renderedText>
75 <span class='separator'>·</span>
76 <div class="show-source"><a href="viewPost.html?post=<% post.id|html>&raw=<%if raw>false<%else>true<%/if>"><%= View.Post.ShowSource|l10n|html></a></div>
78 <div class="likes<%if post.likes.size|match value==0> hidden<%/if>">
79 <span class='separator'>·</span>
80 <span title="<% post.likes.soneNames|html>">↑<span class="like-count"><% post.likes.size></span></span>
82 <%ifnull ! currentSone>
83 <span class='separator'>·</span>
84 <form class="like like-post<%if post.liked> hidden<%/if>" action="like.html" method="post">
85 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
86 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
87 <input type="hidden" name="type" value="post" />
88 <input type="hidden" name="post" value="<% post.id|html>" />
89 <button type="submit" value="1"><%= View.Post.LikeLink|l10n|html></button>
91 <form class="unlike unlike-post<%if ! post.liked> hidden<%/if>" action="unlike.html" method="post">
92 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
93 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
94 <input type="hidden" name="type" value="post" />
95 <input type="hidden" name="post" value="<% post.id|html>" />
96 <button type="submit" value="1"><%= View.Post.UnlikeLink|l10n|html></button>
98 <%if !post.sone.current>
99 <%ifnull !post.sone.trust>
100 <span class='separator'>·</span>
101 <form class="trust post-trust<%if post.sone.trust.assigned> hidden<%/if>" action="trust.html" method="post">
102 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
103 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
104 <input type="hidden" name="sone" value="<% post.sone.id|html>" />
105 <button type="submit" title="<%= View.Trust.Tooltip.Trust|l10n|html>">✓</button>
107 <form class="distrust post-distrust<%if post.sone.trust.assigned> hidden<%/if>" action="distrust.html" method="post">
108 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
109 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
110 <input type="hidden" name="sone" value="<% post.sone.id|html>" />
111 <button type="submit" title="<%= View.Trust.Tooltip.Distrust|l10n|html>">✗</button>
113 <form class="untrust post-untrust<%if !post.sone.trust.assigned> hidden<%/if>" action="untrust.html" method="post">
114 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
115 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
116 <input type="hidden" name="sone" value="<% post.sone.id|html>" />
117 <button type="submit" title="<%= View.Trust.Tooltip.Untrust|l10n|html>">↶</button>
122 <%if post.sone.local>
123 <span class='separator'>·</span>
124 <form class="delete delete-post" action="deletePost.html" method="post">
125 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
126 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
127 <input type="hidden" name="post" value="<% post.id|html>" />
128 <button type="submit"><%= View.Post.DeleteLink|l10n|html></button>
132 <div<%if post.loaded> class="hidden"<%/if>>
133 <%= View.Post.NotDownloaded|l10n|html>
135 <div class="replies">
136 <%foreach post.replies reply>
137 <%include include/viewReply.html>
139 <%ifnull ! currentSone>
140 <div class="create-reply">
141 <form method="post" action="createReply.html">
142 <input type="hidden" name="formPassword" value="<% formPassword|html>" />
143 <input type="hidden" name="returnPage" value="<% request.uri|html>" />
144 <input type="hidden" name="post" value="<% post.id|html>" />
146 <select name="sender" title="<%= View.UpdateStatus.Text.ChooseSenderIdentity|l10n|html>">
147 <%foreach localSones localSone|sort>
148 <option value="<% localSone.id|html>"<%if localSone.current> selected="selected"<%/if>><% localSone.niceName|html></option>
152 <div class="select-sender"><button type="button" title="<%= View.UpdateStatus.Text.ChooseSenderIdentity|l10n|html>">+</button></div>
153 <textarea class="rip-out reply-input" name="text"></textarea>
154 <button type="submit"><%= View.Post.SendReply|l10n|html></button>