%# 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| %>