Files
aperonight/app/views/components/_event_item.html.erb
kbe ef3f05661e feat: Complete hybrid image upload system with URL compatibility
- Add hybrid image system supporting both file uploads and URL images
- Implement Active Storage for file uploads while preserving existing URL functionality
- Update Event model with both has_one_attached :image and image_url virtual attribute
- Create tabbed interface in event forms for upload/URL selection
- Add JavaScript preview functionality for both upload and URL inputs
- Fix promotion code validation issue in tests using distinct() to prevent duplicates
- Update all views to use hybrid display methods prioritizing uploads over URLs
- Update seeds file to use image_url attribute for compatibility
- Ensure backward compatibility with existing events using URL images

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 01:06:12 +02:00

22 lines
1.1 KiB
Plaintext
Executable File

<%= link_to event_path(event.slug, event), class: "group block p-4 rounded-lg border border-slate-200 dark:border-slate-700 hover:border-purple-300 dark:hover:border-purple-600 hover:shadow-md transition-all duration-200" do %>
<div class="flex items-center space-x-4">
<div class="w-16 h-16 bg-slate-200 dark:bg-slate-700 rounded-lg overflow-hidden flex-shrink-0">
<% if event.has_image? %>
<% if event.image.attached? %>
<%= image_tag event.event_image_variant(:small), alt: event.name, class: "w-full h-full object-cover" %>
<% else %>
<%= image_tag event.image_url, alt: event.name, class: "w-full h-full object-cover" %>
<% end %>
<% end %>
</div>
<div class="flex-1 min-w-0">
<h3 class="text-lg font-semibold text-slate-900 dark:text-slate-100 group-hover:text-purple-600 dark:group-hover:text-purple-400 transition-colors duration-200">
<%= event.name %>
</h3>
<p class="text-sm text-slate-600 dark:text-slate-400">
<%= l(event.start_time, format: :short) %>
</p>
</div>
</div>
<% end %>