Only show linked elements when they are loaded and not failed
[Sone.git] / src / main / resources / templates / include / viewReply.html
1 <div id="reply-<% reply.id|html>" class="reply<%if !reply.sone.local><%if reply.new> new<%/if><%/if>">
2         <a name="reply-<% reply.id|html>"></a>
3         <div class="reply-time hidden"><% reply.time|html></div>
4         <div class="reply-author hidden"><% reply.sone.id|html></div>
5         <div class="reply-author-local hidden"><% reply.sone.local></div>
6         <%include include/soneMenu.html class=="sone-reply-menu" sone=reply.sone>
7         <div class="avatar reply-avatar">
8                 <%ifnull !reply.sone.profile.avatar>
9                         <% reply.sone.profile.avatar|image-link max-width==36 max-height==36 mode==enlarge title=="Avatar Image">
10                 <%else>
11                         <img src="/WebOfTrust/GetIdenticon?identity=<% reply.sone.id|html>&amp;width=72&height=72" width="36" height="36" alt="Avatar Image" />
12                 <%/if>
13         </div>
14         <div class="inner-part">
15                 <div>
16                         <div class="author profile-link"><a href="viewSone.html?sone=<% reply.sone.id|html>"><% reply.sone.niceName|html></a></div>
17                         <% reply.text|html|store key==originalText text==true>
18                         <% reply.text|parse sone=reply.sone|store key==parsedText>
19                         <% parsedText|render|store key==renderedText text==true>
20                         <% parsedText|shorten length=preferences.charactersPerPost cut-off-length=preferences.postCutOffLength|render|store key==shortText text==true>
21                         <div class="reply-text raw-text<%if !raw> hidden<%/if>"><% originalText></div>
22                         <div class="reply-text text<%if raw> hidden<%/if><%if !shortText|match key=renderedText> hidden<%/if>"><% renderedText></div>
23                         <div class="reply-text short-text<%if raw> hidden<%/if><%if shortText|match key=renderedText> hidden<%/if>"><% shortText></div>
24                         <%if !shortText|match value=renderedText><%if !raw><a class="expand-reply-text" href="viewPost.html?post=<% reply.postId|html>&amp;raw=true"><%= View.Post.ShowMore|l10n|html></a><%/if><%/if>
25                         <%if !shortText|match value=renderedText><%if !raw><a class="shrink-reply-text hidden"><%= View.Post.ShowLess|l10n|html></a><%/if><%/if>
26                         <% parsedText|linked-elements sone=reply.sone|store key==linkedElements>
27                         <% foreach linkedElements linkedElement>
28                                 <%if !linkedElement.loading>
29                                         <%if !linkedElement.failed>
30                                                 <% first>
31                                                         <div class="linked-elements">
32                                                 <%/first>
33                                                 <% linkedElement|render-linked-element>
34                                                 <% last>
35                                                         </div>
36                                                 <%/last>
37                                         <%/if>
38                                 <%/if>
39                         <%/foreach>
40                 </div>
41                 <div class="reply-status-line status-line">
42                         <div class="time"><% reply.time|date format=="MMM d, yyyy, HH:mm:ss"></div>
43                         <span class='separator'>·</span>
44                         <div class="permalink permalink-author"><a href="sone://<%reply.sone.id|html>">[<%= View.Post.PermalinkAuthor|l10n|html>]</a></div>
45                         <%if ! originalText|match value=renderedText>
46                                 <span class='separator'>·</span>
47                                 <div class="show-reply-source"><a href="viewPost.html?post=<% post.id|html>&amp;raw=<%if raw>false<%else>true<%/if>"><%= View.Post.ShowSource|l10n|html></a></div>
48                         <%/if>
49                         <div class="likes<%if reply.likes.size|match value==0> hidden<%/if>">
50                                 <span class='separator'>·</span>
51                                 <span title="<% reply.likes.soneNames|html>">↑<span class="like-count"><% reply.likes.size></span></span>
52                         </div>
53                         <%ifnull ! currentSone>
54                                 <span class='separator'>·</span>
55                                 <form class="like like-reply<%if reply.liked> hidden<%/if>" action="like.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="type" value="reply" />
59                                         <input type="hidden" name="reply" value="<% reply.id|html>" />
60                                         <button type="submit" value="1"><%= View.Post.LikeLink|l10n|html></button>
61                                 </form>
62                                 <form class="unlike unlike-reply<%if ! reply.liked> hidden<%/if>" action="unlike.html" method="post">
63                                         <input type="hidden" name="formPassword" value="<% formPassword|html>" />
64                                         <input type="hidden" name="returnPage" value="<% request.uri|html>" />
65                                         <input type="hidden" name="type" value="reply" />
66                                         <input type="hidden" name="reply" value="<% reply.id|html>" />
67                                         <button type="submit" value="1"><%= View.Post.UnlikeLink|l10n|html></button>
68                                 </form>
69                                 <%if !reply.sone.current>
70                                         <%ifnull !reply.sone.trust>
71                                                 <span class='separator'>·</span>
72                                                 <form class="trust reply-trust<%if reply.sone.trust.assigned> hidden<%/if>" action="trust.html" method="post">
73                                                         <input type="hidden" name="formPassword" value="<% formPassword|html>" />
74                                                         <input type="hidden" name="returnPage" value="<% request.uri|html>" />
75                                                         <input type="hidden" name="sone" value="<% reply.sone.id|html>" />
76                                                         <button type="submit" title="<%= View.Trust.Tooltip.Trust|l10n|html>">✓</button>
77                                                 </form>
78                                                 <form class="distrust reply-distrust<%if reply.sone.trust.assigned> hidden<%/if>" action="distrust.html" method="post">
79                                                         <input type="hidden" name="formPassword" value="<% formPassword|html>" />
80                                                         <input type="hidden" name="returnPage" value="<% request.uri|html>" />
81                                                         <input type="hidden" name="sone" value="<% reply.sone.id|html>" />
82                                                         <button type="submit" title="<%= View.Trust.Tooltip.Distrust|l10n|html>">✗</button>
83                                                 </form>
84                                                 <form class="untrust reply-untrust<%if !reply.sone.trust.assigned> hidden<%/if>" action="untrust.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="sone" value="<% reply.sone.id|html>" />
88                                                         <button type="submit" title="<%= View.Trust.Tooltip.Untrust|l10n|html>">↶</button>
89                                                 </form>
90                                         <%/if>
91                                 <%/if>
92                         <%/if>
93                         <%if reply.sone.local>
94                                 <span class='separator'>·</span>
95                                 <form class="delete delete-reply" action="deleteReply.html" method="post">
96                                         <input type="hidden" name="formPassword" value="<% formPassword|html>" />
97                                         <input type="hidden" name="returnPage" value="<% request.uri|html>" />
98                                         <input type="hidden" name="reply" value="<% reply.id|html>" />
99                                         <button type="submit"><%= View.Post.Reply.DeleteLink|l10n|html></button>
100                                 </form>
101                         <%/if>
102                 </div>
103         </div>
104 </div>