app/views/users/_user.html.haml
-# Context:
-# user (User)
-# name (boolean, default false),
-# link (boolean, default true)
-# avatar (boolean or integer, default false)
-# classes (string, default none)
= cached_fragment(disabled:false, resource:User, id:user.id, v:9, key:[user.login.updated_at, user.updated_at, *local_assigns.values_at(:name, :avatar, :karma, :classes, :link), can?(:read, user)]) do
:ruby
show_avatar = !!local_assigns.fetch(:avatar, true)
show_name = local_assigns.fetch(:name, !show_avatar)
show_karma = local_assigns.fetch(:karma, show_name)
show_tooltip = !!local_assigns.fetch(:tooltip, true)
avatar_size = local_assigns.fetch(:avatar, nil)
wrap_link = !!local_assigns.fetch(:link, true)
classes = local_assigns.fetch(:classes, nil)
link_target = (can?(:read, user) && wrap_link) ? user : nil
avatar_options = avatar_size.kind_of?(Integer) ? { size:avatar_size } : {}
link_options = show_tooltip ? user_tooltip_options(user) : {}
%div[user]{ class:classes }<>
- body = capture do
- if show_avatar
%img.avatar{ src:user.login.gravatar_url(avatar_options) }<>
- if show_name
.name>
= user.first_name
- if show_karma
%span.karma
= surround '(', ')' do
= number_with_delimiter user.karma
= user_karma_symbol
- if link_target
= link_to link_target, link_options do
= body
- else
= body