Files
once-campfire/app/views/messages/_message.html.erb
T
Jeremy Daer 7ea05e18f8 Link URLs only in a message's text
auto_link finds URLs and email addresses with regular expressions over
the rendered html, which can't tell an attribute value from text, so it
could put a link inside an attribute. Hand it each text node on its own,
escaped, after the final sanitize, so links only ever land between tags.

Bump the presentation cache versions so nothing rendered the old way is
served again.
2026-10-15 18:42:06 -07:00

35 lines
1.8 KiB
ERB

<%# Be sure to check/update messages/_template.html.erb when changing this file %>
<%# Bump this version when the message presentation filters change what they emit. Editing this line changes the template digest, which busts BOTH this fragment cache and the collection cache that keys on this partial's digest (helper Ruby changes alone don't). %>
<% cache [ message_fragment_cache_key(message), "presentation-v8" ] do %>
<%= message_tag message do %>
<h2 class="message__day-separator"><%= local_datetime_tag message.created_at, style: :date %></h2>
<figure class="avatar message__avatar">
<%= avatar_tag message.creator %>
</figure>
<turbo-frame id="<%= dom_id(message, :edit) %>">
<div class="message__body">
<div class="message__body-content">
<div class="message__meta">
<h3 class="message__heading">
<span class="message__author" title="<%= message.creator.title %>">
<strong data-reply-target="author"><%= message.creator.name %></strong>
</span>
<%= link_to message_timestamp(message, class: "message__timestamp"), room_at_message_path(message.room, message), target: "_top",
class: "message__permalink" %>
<span class="message__room">
<%= link_to room_display_name(message.room, for_user: nil), room_at_message_path(message.room, message), target: "_top", data: { reply_target: "link" } %>
</span>
</h3>
<%= render "messages/actions", message: message, url: room_at_message_url(message.room, message) %>
</div>
<%= render "messages/presentation", message: message %>
<%= render "messages/boosts/boosts", message: message %>
</div>
</div>
</turbo-frame>
<% end %>
<% end %>