impress/app/helpers/closet_hangers_helper.rb

87 lines
2.4 KiB
Ruby
Raw Normal View History

2011-07-20 12:16:22 -07:00
require 'cgi'
2011-07-12 17:03:04 -07:00
module ClosetHangersHelper
def closet_hanger_verb(owned, positive=true)
ClosetHanger.verb(closet_hanger_subject, owned, positive)
2011-07-22 14:55:05 -07:00
end
2011-07-20 12:16:22 -07:00
def send_neomail_url(user)
"http://www.neopets.com/neomessages.phtml?type=send&recipient=#{CGI.escape @user.neopets_username}"
end
2011-07-22 14:55:05 -07:00
def closet_hanger_subject
public_perspective? ? @user.name : :you
end
2011-07-30 16:45:28 -07:00
def hangers_group_visibility_field_name(owned)
owned ? :owned_closet_hangers_visibility : :wanted_closet_hangers_visibility
end
def closet_visibility_choices(*args)
2011-07-30 16:45:28 -07:00
ClosetVisibility.levels.map do |level|
[level.send(*args), level.id]
2011-07-30 16:45:28 -07:00
end
end
2011-07-30 19:47:06 -07:00
def closet_visibility_descriptions(subject='these items')
content = ''
ClosetVisibility.levels.each do |level|
2011-07-30 19:47:06 -07:00
content << content_tag(:li, level.description(subject), 'data-id' => level.id)
end
content_tag :ul, content.html_safe, :class => 'visibility-descriptions'
end
2011-07-29 07:52:04 -07:00
# Do we have either unlisted hangers that are owned/wanted, or non-empty
# owned/wanted lists?
def has_hangers?(owned)
# If we have unlisted hangers of this type, pass.
return true if @unlisted_closet_hangers_by_owned.has_key?(owned)
# Additionally, if we have no lists of this type, fail.
lists = @closet_lists_by_owned[owned]
return false unless lists
# If any of those lists are non-empty, pass.
lists.each do |list|
return true unless list.hangers.empty?
end
# Otherwise, all of the lists are empty. Fail.
return false
end
def has_lists?(owned)
@closet_lists_by_owned.has_key?(owned)
end
def link_to_add_closet_list(content, options)
owned = options.delete(:owned)
path = new_user_closet_list_path current_user,
:closet_list => {:hangers_owned => owned}
link_to(content, path, options)
end
def public_perspective?
@public_perspective
end
2011-07-22 14:55:05 -07:00
2011-07-29 07:52:04 -07:00
def render_closet_lists(lists)
if lists
render :partial => 'closet_lists/closet_list', :collection => lists,
:locals => {:show_controls => !public_perspective?}
end
end
def render_unlisted_closet_hangers(owned)
2011-07-30 16:45:28 -07:00
hangers_content = render :partial => 'closet_hanger',
:collection => @unlisted_closet_hangers_by_owned[owned],
:locals => {:show_controls => !public_perspective?}
2011-07-22 14:55:05 -07:00
end
def unlisted_hangers_count(owned)
hangers = @unlisted_closet_hangers_by_owned[owned]
hangers ? hangers.size : 0
end
2011-07-12 17:03:04 -07:00
end