Admin log set to track crashing

This commit is contained in:
2026-03-08 06:01:59 -04:00
parent 6f85b8c931
commit 082371d728
4 changed files with 72 additions and 48 deletions

View File

@@ -7,42 +7,57 @@ module CommunityLanding
data = {}
# Top contributors
data[:contributors] = if s.contributors_enabled
User
.joins(:posts)
.where(posts: { created_at: s.contributors_days.days.ago.. })
.where.not(username: %w[system discobot])
.where(active: true, staged: false)
.group("users.id")
.order("COUNT(posts.id) DESC")
.limit(s.contributors_count)
.select("users.*, COUNT(posts.id) AS post_count")
data[:contributors] = begin
if s.contributors_enabled
User
.joins(:posts)
.where(posts: { created_at: s.contributors_days.days.ago.. })
.where.not(username: %w[system discobot])
.where(active: true, staged: false)
.group("users.id")
.order("COUNT(posts.id) DESC")
.limit(s.contributors_count)
.select("users.*, COUNT(posts.id) AS post_count")
end
rescue => e
Rails.logger.warn("[CommunityLanding] contributors fetch failed: #{e.message}")
nil
end
# Public groups — optionally filtered by selected names
data[:groups] = if s.groups_enabled
selected = s.groups_selected.presence
scope = Group
.where(visibility_level: Group.visibility_levels[:public])
.where(automatic: false)
data[:groups] = begin
if s.groups_enabled
selected = s.groups_selected.presence
scope = Group
.where(visibility_level: Group.visibility_levels[:public])
.where(automatic: false)
if selected
names = selected.split("|").map(&:strip).reject(&:empty?)
scope = scope.where(name: names) if names.any?
if selected
names = selected.split("|").map(&:strip).reject(&:empty?)
scope = scope.where(name: names) if names.any?
end
scope.limit(s.groups_count)
end
scope.limit(s.groups_count)
rescue => e
Rails.logger.warn("[CommunityLanding] groups fetch failed: #{e.message}")
nil
end
# Trending topics
data[:topics] = if s.topics_enabled
Topic
.listable_topics
.where(visible: true)
.where("topics.created_at > ?", 30.days.ago)
.order(posts_count: :desc)
.limit(s.topics_count)
.includes(:category, :user)
data[:topics] = begin
if s.topics_enabled
Topic
.listable_topics
.where(visible: true)
.where("topics.created_at > ?", 30.days.ago)
.order(posts_count: :desc)
.limit(s.topics_count)
.includes(:category, :user)
end
rescue => e
Rails.logger.warn("[CommunityLanding] topics fetch failed: #{e.message}")
nil
end
# Aggregate stats
@@ -53,13 +68,18 @@ module CommunityLanding
chat_count = 0
end
data[:stats] = {
members: User.real.count,
topics: Topic.listable_topics.count,
posts: Post.where(user_deleted: false).count,
likes: Post.sum(:like_count),
chats: chat_count,
}
data[:stats] = begin
{
members: User.real.count,
topics: Topic.listable_topics.count,
posts: Post.where(user_deleted: false).count,
likes: Post.sum(:like_count),
chats: chat_count,
}
rescue => e
Rails.logger.warn("[CommunityLanding] stats fetch failed: #{e.message}")
{ members: 0, topics: 0, posts: 0, likes: 0, chats: 0 }
end
data
end

View File

@@ -128,7 +128,7 @@ module CommunityLanding
def render_hero
hero_card = @s.hero_card_enabled rescue true
hero_img_first = @s.hero_image_first rescue false
hero_bg_img = @s.hero_background_image_url.presence
hero_bg_img = (@s.hero_background_image_url.presence rescue nil)
hero_border = @s.hero_border_style rescue "none"
hero_min_h = @s.hero_min_height rescue 0
site_name = @s.title
@@ -197,7 +197,7 @@ module CommunityLanding
html << "<div class=\"cl-hero__creators#{align_class}\">\n"
html << "<h3 class=\"cl-hero__creators-title\">#{e(creators_title)}</h3>\n" if show_title
top3.each_with_index do |user, idx|
avatar_url = user.avatar_template.gsub("{size}", "120")
avatar_url = user.avatar_template.to_s.gsub("{size}", "120")
activity_count = user.attributes["post_count"].to_i rescue 0
rank_color = rank_colors[idx]
count_prefix = show_count_label && count_label.present? ? "#{e(count_label)} " : ""
@@ -217,8 +217,8 @@ module CommunityLanding
html << "</div>\n"
hero_image_urls_raw = @s.hero_image_urls.presence
hero_video = @s.hero_video_url.presence rescue nil
hero_image_urls_raw = (@s.hero_image_urls.presence rescue nil)
hero_video = (@s.hero_video_url.presence rescue nil)
blur_attr = (@s.hero_video_blur_on_hover rescue true) ? " data-blur-hover=\"true\"" : ""
has_images = false

View File

@@ -10,15 +10,15 @@ module CommunityLanding
# CSS custom properties for accent colors, gradients, backgrounds
def color_overrides
accent = hex(@s.accent_color) || "#d4a24e"
accent_hover = hex(@s.accent_hover_color) || "#c4922e"
dark_bg = hex(@s.dark_bg_color) || "#06060f"
light_bg = hex(@s.light_bg_color) || "#faf6f0"
stat_icon = hex(@s.stat_icon_color) || accent
about_bg_img = @s.about_background_image_url.presence
app_g1 = hex(@s.app_cta_gradient_start) || accent
app_g2 = hex(@s.app_cta_gradient_mid) || accent_hover
app_g3 = hex(@s.app_cta_gradient_end) || accent_hover
accent = (hex(@s.accent_color) rescue nil) || "#d4a24e"
accent_hover = (hex(@s.accent_hover_color) rescue nil) || "#c4922e"
dark_bg = (hex(@s.dark_bg_color) rescue nil) || "#06060f"
light_bg = (hex(@s.light_bg_color) rescue nil) || "#faf6f0"
stat_icon = (hex(@s.stat_icon_color) rescue nil) || accent
about_bg_img = (@s.about_background_image_url.presence rescue nil)
app_g1 = (hex(@s.app_cta_gradient_start) rescue nil) || accent
app_g2 = (hex(@s.app_cta_gradient_mid) rescue nil) || accent_hover
app_g3 = (hex(@s.app_cta_gradient_end) rescue nil) || accent_hover
stat_icon_bg = hex(@s.stat_icon_bg_color.presence) rescue nil
stat_counter = hex(@s.stat_counter_color.presence) rescue nil
video_btn_bg = hex(@s.hero_video_button_color.presence) rescue nil