* Let moderators see name changes for deleted users on the user name change requests index and show pages. Before they could see name changes for deleted users on user profiles, but not on the user name changes index. * Let members see previous names on profile pages. Before they could see previous names on the user name changes index, but not on profile pages (ref: #4382).
150 lines
4.2 KiB
Ruby
150 lines
4.2 KiB
Ruby
class UserPresenter
|
|
attr_reader :user
|
|
|
|
def initialize(user)
|
|
@user = user
|
|
end
|
|
|
|
def name
|
|
user.pretty_name
|
|
end
|
|
|
|
def join_date
|
|
user.created_at.strftime("%Y-%m-%d")
|
|
end
|
|
|
|
def ban_reason
|
|
if user.is_banned?
|
|
"#{user.recent_ban.reason}; expires #{user.recent_ban.expires_at} (#{user.bans.count} bans total)"
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def permissions
|
|
permissions = []
|
|
|
|
if user.can_approve_posts?
|
|
permissions << "approve posts"
|
|
end
|
|
|
|
if user.can_upload_free?
|
|
permissions << "unrestricted uploads"
|
|
end
|
|
|
|
permissions.join(", ")
|
|
end
|
|
|
|
def posts_for_saved_search_category(category)
|
|
Post.tag_match("search:#{category}").limit(10)
|
|
end
|
|
|
|
def uploads
|
|
Post.tag_match("user:#{user.name}").limit(6)
|
|
end
|
|
|
|
def has_uploads?
|
|
user.post_upload_count > 0
|
|
end
|
|
|
|
def favorites
|
|
Post.tag_match("ordfav:#{user.name}").limit(6)
|
|
end
|
|
|
|
def has_favorites?
|
|
user.favorite_count > 0
|
|
end
|
|
|
|
def upload_count(template)
|
|
template.link_to(user.post_upload_count, template.posts_path(:tags => "user:#{user.name}"))
|
|
end
|
|
|
|
def deleted_upload_count(template)
|
|
template.link_to(user.posts.deleted.count, template.posts_path(:tags => "status:deleted user:#{user.name}"))
|
|
end
|
|
|
|
def favorite_count(template)
|
|
template.link_to(user.favorite_count, template.posts_path(tags: "ordfav:#{user.name}"))
|
|
end
|
|
|
|
def favorite_group_count(template)
|
|
template.link_to(user.favorite_group_count, template.favorite_groups_path(search: { creator_name: user.name }))
|
|
end
|
|
|
|
def comment_count(template)
|
|
template.link_to(user.comment_count, template.comments_path(:search => {:creator_id => user.id}, :group_by => "comment"))
|
|
end
|
|
|
|
def commented_posts_count(template)
|
|
count = CurrentUser.without_safe_mode { Post.fast_count("commenter:#{user.name}") }
|
|
count = "?" if count.nil?
|
|
template.link_to(count, template.posts_path(:tags => "commenter:#{user.name} order:comment_bumped"))
|
|
end
|
|
|
|
def post_version_count(template)
|
|
template.link_to(user.post_update_count, template.post_versions_path(:search => {:updater_id => user.id}))
|
|
end
|
|
|
|
def note_version_count(template)
|
|
template.link_to(user.note_update_count, template.note_versions_path(:search => {:updater_id => user.id}))
|
|
end
|
|
|
|
def noted_posts_count(template)
|
|
count = CurrentUser.without_safe_mode { Post.fast_count("noteupdater:#{user.name}") }
|
|
count = "?" if count.nil?
|
|
template.link_to(count, template.posts_path(:tags => "noteupdater:#{user.name} order:note"))
|
|
end
|
|
|
|
def wiki_page_version_count(template)
|
|
template.link_to(user.wiki_page_version_count, template.wiki_page_versions_path(:search => {:updater_id => user.id}))
|
|
end
|
|
|
|
def artist_version_count(template)
|
|
template.link_to(user.artist_version_count, template.artist_versions_path(:search => {:updater_id => user.id}))
|
|
end
|
|
|
|
def artist_commentary_version_count(template)
|
|
template.link_to(user.artist_commentary_version_count, template.artist_commentary_versions_path(:search => {:updater_id => user.id}))
|
|
end
|
|
|
|
def forum_post_count(template)
|
|
template.link_to(user.forum_post_count, template.forum_posts_path(:search => {:creator_id => user.id}))
|
|
end
|
|
|
|
def pool_version_count(template)
|
|
if PoolVersion.enabled?
|
|
template.link_to(user.pool_version_count, template.pool_versions_path(:search => {:updater_id => user.id}))
|
|
else
|
|
"N/A"
|
|
end
|
|
end
|
|
|
|
def appeal_count(template)
|
|
template.link_to(user.appeal_count, template.post_appeals_path(:search => {:creator_name => user.name}))
|
|
end
|
|
|
|
def flag_count(template)
|
|
template.link_to(user.flag_count, template.post_flags_path(:search => {:creator_name => user.name}))
|
|
end
|
|
|
|
def approval_count(template)
|
|
template.link_to(Post.where("approver_id = ?", user.id).count, template.posts_path(:tags => "approver:#{user.name}"))
|
|
end
|
|
|
|
def feedbacks(template)
|
|
positive = user.positive_feedback_count
|
|
neutral = user.neutral_feedback_count
|
|
negative = user.negative_feedback_count
|
|
|
|
template.link_to("positive:#{positive} neutral:#{neutral} negative:#{negative}", template.user_feedbacks_path(:search => {:user_id => user.id}))
|
|
end
|
|
|
|
def saved_search_labels
|
|
if CurrentUser.user.id == user.id
|
|
SavedSearch.labels_for(CurrentUser.user.id)
|
|
else
|
|
[]
|
|
end
|
|
end
|
|
end
|