asciinema.org/app/presenters/user_page_presenter.rb

77 lines
1.5 KiB
Ruby
Raw Normal View History

class UserPagePresenter
PER_PAGE = 15
2014-07-05 12:59:42 +00:00
attr_reader :user, :current_user, :policy, :page, :per_page
def self.build(user, current_user, page = nil, per_page = nil)
2014-07-05 12:59:42 +00:00
policy = Pundit.policy(current_user, user)
new(user.decorate, current_user, policy, page || 1, per_page || PER_PAGE)
end
2014-07-05 12:59:42 +00:00
def initialize(user, current_user, policy, page, per_page)
@user = user
@current_user = current_user
2014-07-05 12:59:42 +00:00
@policy = policy
@page = page
@per_page = per_page
end
def title
2014-10-17 12:11:43 +00:00
"#{user.display_name}'s profile".html_safe
end
def user_full_name
user.full_name
end
def user_joined_at
user.joined_at
end
def user_avatar_image_tag
user.avatar_image_tag
end
def show_settings?
2014-07-05 12:59:42 +00:00
policy.update?
end
def asciicast_count_text(h)
2014-10-17 12:11:43 +00:00
if current_users_profile?
if user.asciicast_count > 0
count = h.pluralize(user.asciicast_count, 'asciicast')
"You have recorded #{count}"
else
2014-10-17 15:28:22 +00:00
"Record your first asciicast"
2014-10-17 12:11:43 +00:00
end
else
if user.asciicast_count > 0
count = h.pluralize(user.asciicast_count, 'asciicast')
"#{count} by #{user.display_name}"
else
"#{user.display_name} hasn't recorded anything yet"
end
end
end
2014-02-12 19:51:01 +00:00
def user_username
user.username
end
def asciicasts
@asciicasts ||= get_asciicasts
end
def current_users_profile?
current_user && current_user == user
end
private
def get_asciicasts
PaginatingDecorator.new(user.paged_asciicasts(page, per_page))
end
end