* Add migration, update badgeachievements model and admin view to set flag on badges * Show multiple badges on profile * update factory * badge model validation * safe navigation to badge? * add null: false to migratrion
34 lines
1.8 KiB
Text
34 lines
1.8 KiB
Text
<div class="crayons-card crayons-card--secondary">
|
|
<header class="crayons-card__header">
|
|
<h3 class="crayons-subtitle-3"><%= t("views.badges.heading") %></h3>
|
|
</header>
|
|
|
|
<div class="crayons-card__body">
|
|
<div class="grid gap-4 grid-cols-3 s:grid-cols-4 m:grid-cols-2 align-center items-center js-profile-badges">
|
|
<% achievements.group_by(&:badge_id).each_with_index do |(badge_id, badge_achievements), i| %>
|
|
<% achievement = badge_achievements.first %>
|
|
<div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-<%= achievement.badge_id %>', overlay: true})"
|
|
title="<%= achievement.badge_title %>"
|
|
class="js-profile-badge <% if i >= limit %>hidden<% end %> relative">
|
|
<img src="<%= optimized_image_url(achievement.badge_image_url, width: 180) %>"
|
|
alt="<%= achievement.badge_title %>"
|
|
class="mx-auto max-w-75 h-auto align-middle"
|
|
style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1;"
|
|
loading="lazy" />
|
|
<% if badge_achievements.length > 1 %><div class="badge-indicator" title="<%= t("views.badges.indicator", user: @user.name, number: badge_achievements.length) %>"><%= badge_achievements.length %></div><% end %>
|
|
</div>
|
|
|
|
<div id="badge-<%= achievement.badge_id %>" class="hidden">
|
|
<%= render partial: "badges/badge_detail", locals: { badge: achievement.badge } %>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<% if limit > 1 && count > limit %>
|
|
<button type="button"
|
|
class="crayons-btn crayons-btn--ghost-brand crayons-btn--s w-100 js-profile-badges-trigger">
|
|
<%= t("views.badges.all", count: count) %>
|
|
</button>
|
|
<% end %>
|
|
</div>
|
|
</div>
|