mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-09 00:00:12 +09:00
15f56134e7
Files are posted as a message's own attachment, and the composer puts none in the rich text: it permits only mentions and link embeds. The server still keeps any attachment whose signed id resolves, a blob included, and Action Text's blob partial links to a representation URL that makes the preview on the first request, without the limits the POST has, and on every request while it fails. The app's own partial shows an image's preview only if it was already made, and otherwise the file's name and size, as it does for a file that isn't an image. The cached presentation's version goes up, since Action Text renders the partial by name and the template digest doesn't see it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bj8KnxpTf9sj2Ysa8aLAVa
35 lines
1.8 KiB
Plaintext
35 lines
1.8 KiB
Plaintext
<%# 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, "presentation-v4" ] 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 %>
|