<%# Originally timestamps were not displayed to increase security of traffic correlation. Then decided that displaying minute, not seconds mitigates the risk somewhat. However, haven't found a nice way to display the timestamps without making message list ugly. So make timestamps available in source html only. %> <% encrypted_messages = {} %> <%# sort hash by keys %> <% @message_daygroups.sort.reverse.each do |day, message_refs| %>
<%= day.in_time_zone(current_user.timezone).strftime('%F') %>
<% message_refs.sort_by{|msg| msg.created_at}.reverse.each do |message_ref| %> <% cssclass = [] %> <% cssclass.push message_ref.direction == 'sent' ? 'sent' : 'received' %> <% if message_ref.message.body[/-----BEGIN/] %> <% cssclass.push 'encrypted' %> <% else %> <% cssclass.push 'plaintext' %> <% end %>
<%=message_ref.created_at.in_time_zone(current_user.timezone).strftime('%H:%M') %>
<%= message_ref.message.body.split("\r\n").collect{ |line| h line}.join("
").html_safe %> <% if cssclass.include?('encrypted') %>
<%= link_to("Copy", "#pgp_message_copy_#{message_ref.id}") %>
<% encrypted_messages[message_ref.id] = message_ref.message.body %> <%end%>
<%# The above message is printed on one long line in the source code with no newline chars. This allows copying PGP messages correctly while using the break-word styling in Firefox. Chrome doesn't have the copy problem that Firefox has. %> <% end %>
<%# daygroup %> <% end %> <%# These modals rendered at bottom of page instead of loop above just to make code and html tidier %> <% encrypted_messages.each do |id, body| %> <%end%>